From a3f8fd10ebeca7adc64dda8b746dfde731d8686e Mon Sep 17 00:00:00 2001 From: Ximi1970 Date: Mon, 4 Dec 2023 23:12:03 +0100 Subject: [PATCH] Add shortcut --- app/SysTray-X/SysTray-X-app/SysTray-X-app.pro | 8 +- .../SysTray-X-app/languages/SysTray-X.de.qm | Bin 8787 -> 9279 bytes .../SysTray-X-app/languages/SysTray-X.de.ts | 48 ++- .../SysTray-X-app/languages/SysTray-X.el.qm | Bin 9207 -> 9641 bytes .../SysTray-X-app/languages/SysTray-X.el.ts | 50 ++- .../languages/SysTray-X.en-US.qm | Bin 8117 -> 8501 bytes .../languages/SysTray-X.en-US.ts | 60 ++- .../SysTray-X-app/languages/SysTray-X.it.qm | Bin 8905 -> 9339 bytes .../SysTray-X-app/languages/SysTray-X.it.ts | 50 ++- .../SysTray-X-app/languages/SysTray-X.nl.qm | Bin 8603 -> 9061 bytes .../SysTray-X-app/languages/SysTray-X.nl.ts | 48 ++- .../languages/SysTray-X.pt-BR.qm | Bin 8591 -> 8989 bytes .../languages/SysTray-X.pt-BR.ts | 48 ++- .../SysTray-X-app/languages/SysTray-X.ru.qm | Bin 8658 -> 9062 bytes .../SysTray-X-app/languages/SysTray-X.ru.ts | 48 ++- .../SysTray-X-app/nativeeventfilter-x11.cpp | 168 ++++++++ .../SysTray-X-app/nativeeventfilter-x11.h | 90 ++++ .../SysTray-X-app/nativeeventfilterbase.cpp | 74 ++++ .../SysTray-X-app/nativeeventfilterbase.h | 97 +++++ app/SysTray-X/SysTray-X-app/preferences.cpp | 52 ++- app/SysTray-X/SysTray-X-app/preferences.h | 41 +- app/SysTray-X/SysTray-X-app/preferences.ui | 87 +++- .../SysTray-X-app/preferencesdialog.cpp | 83 +++- .../SysTray-X-app/preferencesdialog.h | 31 +- app/SysTray-X/SysTray-X-app/shortcut.cpp | 86 ++++ app/SysTray-X/SysTray-X-app/shortcut.h | 112 +++++ app/SysTray-X/SysTray-X-app/systrayx.cpp | 56 ++- app/SysTray-X/SysTray-X-app/systrayx.h | 13 + app/SysTray-X/SysTray-X-app/systrayxlink.cpp | 406 +++--------------- app/SysTray-X/SysTray-X-app/systrayxlink.h | 134 +----- webext/_locales/de/messages.json | 20 + webext/_locales/el/messages.json | 20 + webext/_locales/en-US/messages.json | 20 + webext/_locales/it/messages.json | 20 + webext/_locales/nl/messages.json | 20 + webext/_locales/pt-BR/messages.json | 20 + webext/_locales/ru/messages.json | 20 + webext/background.js | 12 +- webext/options.html | 25 ++ webext/options.js | 74 +++- 40 files changed, 1442 insertions(+), 699 deletions(-) create mode 100644 app/SysTray-X/SysTray-X-app/nativeeventfilter-x11.cpp create mode 100644 app/SysTray-X/SysTray-X-app/nativeeventfilter-x11.h create mode 100644 app/SysTray-X/SysTray-X-app/nativeeventfilterbase.cpp create mode 100644 app/SysTray-X/SysTray-X-app/nativeeventfilterbase.h create mode 100644 app/SysTray-X/SysTray-X-app/shortcut.cpp create mode 100644 app/SysTray-X/SysTray-X-app/shortcut.h diff --git a/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro b/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro index 99d6922..c2011c8 100644 --- a/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro +++ b/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro @@ -19,7 +19,7 @@ include( ../SysTray-X.pri ) QT += core gui unix:!macx: { contains(DEFINES,KDE_INTEGRATION) { - QT += dbus KNotifications + QT += dbus KNotifications x11extras } } @@ -147,6 +147,9 @@ win32: { SOURCES += \ main.cpp \ + nativeeventfilter-x11.cpp \ + nativeeventfilterbase.cpp \ + shortcut.cpp \ systrayxlink.cpp \ systrayxicon.cpp \ systrayx.cpp \ @@ -169,6 +172,9 @@ SOURCES += \ HEADERS += \ debug.h \ + nativeeventfilter-x11.h \ + nativeeventfilterbase.h \ + shortcut.h \ systrayxlink.h \ systrayxicon.h \ systrayx.h \ diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.qm index 8dade02bb7a95453f7e84ede53188b5a8968cc67..1d9ef5d56aa0d7d29d12743ae502e758270501dc 100644 GIT binary patch delta 1039 zcmb_adrVVz6#njQ@9k~xZmFBq&O!C_adRiX9Z+mDj)7)S?4JENa;L|Z;2e;aED{P5xFm)lqBCZ6i+m-yF)$qqZFL)*@=c9`nf+ z#M%F~96z|5xUVdCZ6he|x#h2W9UOAAs@6Ot`$ej!c|DL^rSpbX(> z?N+Rl#D#<@GrEC<=?R?=DBHeIH=c>|GMeqY;shNR^;M@s_!239 z>+4(2QAwdy%iF~Q?bgmP=WWcfKJLvSky1Zb%@|EKNG6w#>3EJ1m!%3m)GADa%vUN1 z_{t(HQk{`RyD{prj1=ZAM?R_%Mm>Q6K0dfH7iCNi$5R=rLk-H|=edmk{Pb&yX=FwX zZ9ct5BK`Pw5buTu?#KnVW0p?1C#&u1 z%w;HMX1ss!bM;QM7yBAM(N|3UPaNy~s57qX4ZBwle&cEaA4g`M^MP?_ka3TFx$+Jq Cvi?nAWVbfaW7J{Ckc9m9Wk?d4N31Zq6AdAv;^qaRsmj*}KjCz+#mR7G49` zQjJj!0^udzNXF%ee!!U*WWe;9vjxa6O63j*$X~AJjyP%6z3`SW&MILg_dJc%xh`&? zwhXW(@jAbQ;$`!3Q^~VwwQ1GN^;g*{$|cz z!qmho)$a)3G#~J^0(`12`MwWeRNY{~av(HJ_i8Pjhm;F7##zK7q+h6W5O+g`(EClL zT&aR@JsDWqLtGs+DA~LlS#wpCRe$eBBOT}K-@wY>Nz8Y=bfYXZ>6-M8v5)nrJV=JCah2@3QiFH z1nD|M`I#PRwAW8LV+@(w1K0=YxWWG^g9Ha zE4t`^ia01&Ha{VPZlkoJo_dTM{bdALn`r#5CQ^``V?a!@lAz&q-bshkd&&^$?bfS` RTj~>)TTx$FWz2R|_zV4!whI6N diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.ts index 7593aa9..79c89b2 100644 --- a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.ts +++ b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.ts @@ -433,21 +433,41 @@ + Shortcuts + Tastatürkürzel + + + + Current show / hide shortcut: + Aktuelle Tastenkombination zum Anzeigen / Verbergen + + + + New show / hide shortcut: + Neuer Tastenkombination zum Anzeigen / Verbergen + + + + Clear + Löschen + + + Debug Debug - + Display debug window Debug-Fenster anzeigen - + Save Speichern - + Cancel Annullieren @@ -458,20 +478,20 @@ Hauptfenster minimieren - - + + Open Image Bild öffnen - - + + Image Files (*.png *.jpg *.bmp) Bilddateien (*.png *.jpg *.bmp) - - + + Select application Anwendung auswählen @@ -479,27 +499,27 @@ SysTrayX - + &Show/Hide &Anzeigen/Verbergen - + &Preferences &Einstellungen - + &About &Über - + &Quit &Beenden - + Close Schließen diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.el.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.el.qm index cb18ac613da9c43e32234ad1a500c4455ae7d229..5cd9a42b7466ab7c93378a6cb48a17f107670298 100644 GIT binary patch delta 1034 zcmb_aYivtl7=BK_p3~EwvvwD|uXMAFq^L_)EWxC#G0a>OA(*WUMYMGZVR4zeWm6l5 z2{xC7*woDGK8lFBWFj##30ay+R4inSjMpst<)pf1M5so_9m6*6{t0Zv9{+IS!&9<%)wK=eRt+@FYS$Xhv+d=m&g z&Y3ry1R}0;qe{LI;38L+xs8Mk<6d;O15$$`>3I$iT&S?ldO`KIV%_Njfc}HxOvyc< z&o@O|?m<9N$#j7>pjR!sb%0PKbZXM|5b3eia|vnh3-`;up4(j$jL)okUf% zy61CA3)N=+b}CKbzw^F5E}(a^plV5=SY8Qqio6T!Gqrns7nYYNs)UyvM ztS^NvYTh(AQpn3BY599nzfm&n*#v}dm8SkWN0|(fvb>c*UU)#dSTKzU;-y#LpV6U4 zOM$d7=HwGmmYmwSn_`HOr_3b*VcTVUTQl8;M!A$D8{9kjrMHEIj|mz-xs`5< z9MtlTY{%qll~+7;7}vCee>iCH2<@nPM)r+b+aG~(e(kyoPV`4)r*>1xRdSN1lT!+a zV4JSRMR_X^>plmPX>ipNAYp~47qhD3WLCuPvuaky?yx5!ZGu1#Z?W659PTVJ)-y+A z%aAmJ{rKm_rNT$QK$h}kybq8e8Qy^8z zi^s8JB;|ieh|aLB{pWc10x`}rI;veUAc~#p_Ij(!YXdo}A%FEfKGf5@H9Na9OOCA< Fe*QyMV4qSD@2p(M87WQp2Pb-=e@V5U^c%co@KwD zcWB;-EEpRO1I7s$=eGlr7u>1^K+(Wm83dv{NIhc&7L6gzW&yAm9`_}{l>Ps76vI=s zmFjo!Jb4TVLntVU1hfilJnaJ*8HIVdKzJF-rf!kmB#vE3CZB%BB@bW=Ebke2-Ay3! zAd}Jd1Bi}iItot^P#QDxdzJ<{*7>#^P+zh6B_kwcV{5xF0&%76?Y0*Lwws;Vdl_JR z4QglxuuZo{G48~K3{IO@NY=^42FWibo!c2Cf3=R=<)l*xZ{5#0y+SqjJd@P9Ic~72 zhEzLwQy>wLEqwA6Z7X*1OO{eUPT*a_LmRIzk@%LwH~l{^4GtRT&$13QBn*z zL|#8WM)8gDK~D$3H=5FW{X`dSdc7wFusBRZ%jrIBRA^LxA_<~fIGaehE2V;OIz&0v z3;xw)5VH{G?xsOG*t(Y0y!LhCoog+0{ZjmBOQN-&iQ^N)lt!l{?fXQ0pCwmQJrL0^ z75(X<6e^{A&6_FBbJB;oH^kK-h4Q+HCr7rHpQPu}bKBJGQM94B#i4T4EZMgftbqZ)pDP#_tΧρησιμοποιήστε το παράθυρο διαλόγου Προτιμήσεις Thunderbird για να επιλέξετε λογαριασμούς και φακέλους - + + Clear + Αφαιρώ + + + Debug Αποσφαλμάτωση - + Display debug window Προβολή παραθύρου αποσφαλμάτωσης @@ -448,30 +453,45 @@ Εφαρμογή εκκίνησης - + + Shortcuts + Συντομεύσεις + + + + Current show / hide shortcut: + Τρέχουσα συντόμευση Εμφάνιση / Απόκρυψη + + + + New show / hide shortcut: + Νέα συντόμευση Εμφάνιση / Απόκρυψη + + + Save Αποθήκευση - + Cancel Άκυρο - - + + Open Image Άνοιγμα εικόνας - - + + Image Files (*.png *.jpg *.bmp) Αρχεία εικόνας (*.png *.jpg *.bmp) - - + + Select application επιλέξτε εφαρμογή @@ -479,27 +499,27 @@ SysTrayX - + &Show/Hide &Εμφάνιση/Απόκρυψη - + &Preferences &Προτιμήσεις - + &About &Σχετικά - + &Quit &Έξοδος - + Close Κλείσιμο diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.qm index 1e9625a4edbb5f08205bc99bbcc3207913bc8594..44869d154502c9b9d6cbdec547bafc68840b0aa2 100644 GIT binary patch delta 966 zcmb7?Ye*Df6o%i~-I<-)8E0+1teZ-kZCkL=b|Fh6$}Fo5Z)rkd7u(%fVN04>Q;3v8 z$+XPcvM4m{VkJbRX|>P=$sYwtce-IzNcbZoDa0+RqlG_%7(UK7bI$jk=RMzaF6vy; zkf_l{9-0(eX^MevuL|f2p$l&S3@^dX`vFA6fj!;>#4LbgzYa)9#hj=K04Brb*aL9q z;7UG9@ztN0&;pk~AJF^Yx^WHQ&tO$<3=pj#YhQ@Yg^`o73@}c@+K=Z*_a1f~w!sZi zWSr71ATotX-gz2`s$mv3eg$F|G0izufVPKu`g54T$~5*z9zd?wEH8LU@tLN)^$0Lg z(wuL+3&h{o4Ec@$8o$;!I0Q^+(YC8$0(uwJGs#JbC2VY1CizS@e!vFA+1bql#384# zZaYPNQ*a|=-^>@XcNS9@*3I_R1xP)U)AuI{NG=REZrTjWTY5Psf0b;$;L>as z$~SO3(pCcIPVU6Fbh7u8JN1cVEwx-r!5SLh7OrFWD;jHi@GWDmysdvQyBQFw_*&yP zioN`SBpQB%iw}JsBp4&#okFT{FNEY)s*|Dw)safxW(hSb$rFM?+jgom7aA^{Y@oU( z!|SLiWbU!yP2Uq5@_JF+`hn=HMQ2?FU^*n`{<=srStS;Q+JH(^pLn@`H4XWs_;TbS z;XM!sGtQFjHp%3vrdxAJi=WieUr{e*7ZN~ZujC)VWbY`TWvX0$NyT(TcgYov*U3qSQA({R zfo@}efaa}>H+~tMOCYhuKw`KfT6>v`_M!+1PsQM9vFUzqkrMpE$9LQm^vtIDNJl9Y zdc4?%0IbM^4<#t0os-rI6vIO~E7Y;?3e~vjL||MoF}+k#yxRg+)mKtxby|JJ9`ER0 z3AjrGsbih)8ul3SXCjMqMs@$UgC)yb_7C-pm@68)>96WIAJlO|A@47ZIz}^WzNP;S D)PD09 delta 677 zcmXAnZAcVR6o%iK-MKTnGdrVhu4`*X>qlAOM%MO)sD(xwnPy6n^dprtG@+z~NGTFg zOEgVOK`GL5QKTmO@Q1|G7X1hcCCI|QSY!jYG$S&pPW0<=&po{FbKi4EwvD8_kzx%8umT?UWq|eluZ|3O z%J%_c3Oo<*Q~icrxsiZ157`Z)G{1nHtV}?y#DVEP((~fXrFil=$hnj;ristjQD2&n8ny3;gDFEseL;MlPCfb+=GE)%?a9N6*sDZ>Pp7jUidC_yj~J$gZXuApC=z z`)7bs=$40@_X3ey<<~!75Lbm9%DO>3UL~Tqj@F|n>En&G_GV>IA=!k*D&=!ilzz6- z#SuSuM|m|GAkKPA=I$W&L-tw%AGed>fNH#_Q|vBv?XTlx*siAf40OJ#miz;Y@~hQD z^q;JqYE8!jN-#@PwlvfGBD6pi1#EO^v!M+HVk-k;y7cviVW!*79H+O-=gfMY?KZEU IiXIdH0x4Io(*OVf diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.ts index 3254cbb..603d9cf 100644 --- a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.ts +++ b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.ts @@ -438,21 +438,53 @@ + Shortcuts + Shortcuts + + + + Current show / hide shortcut: + Current Show / Hide shortcut + + + + New show / hide shortcut: + New Show / Hide shortcut + + + Shortcut + Shortcut + + + Current shortcut: + Current shortcut + + + New shortcut: + New shortcut + + + + Clear + Clear + + + Debug Debug - + Display debug window Display debug window - + Save Save - + Cancel Cancel @@ -463,20 +495,20 @@ Minimize to tray - - + + Open Image Open Image - - + + Image Files (*.png *.jpg *.bmp) Image Files (*.png *.jpg *.bmp) - - + + Select application Select application @@ -484,27 +516,27 @@ SysTrayX - + &Show/Hide &Show/Hide - + &Preferences &Preferences - + &About &About - + &Quit &Quit - + Close Close diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.qm index 64bc6af8791836b8209f6d6caf22fd8df55b687d..f6da2577b4f6dbbd1e2c365f61bd63bfbad180d8 100644 GIT binary patch delta 1033 zcma)4dq`7p6#nkEdv~{cy>o4@=5v`CF=#z#krgRJ%~fVrhV;Vb4HrJ>Zp$K5ie6e- zwz3x}MrsKWbfbqvRAdko6h_d4io(P{G%_W!u#OrL)F1tE?>U@ve&6}N@ArF<{%zrr zIE^;4F2Po1wL`Zr0O)Q)H?$5A1+cTf15z>AlO4eLMmP`ZfP`Gkw3q=*g4ekV(0kx@ zAE#I`785$)EnWfe@$lZb1{e-w(XuGOb`{yx?En*voQ!lJ@*?uPn}G=nu;XYFd=M8f zF7Xy%?q%HD&jL}mnfdhtG;oJ$$k|QA%*@l_FM!abNq$mD0MKOSJ*Akh+1hdph<&SR zt-lAvKhyLVod7g#T2o&?U^%0`92g=(tzkXmPINT0wjqh&x3MujNkH^{c0&*GFkNDO z$rSn3;q^@N27{Zuol0BSH*Cj&AQ0!`^j(Q$OEs6&P3i?NH+d@cV{17Ve}!b;YuBDpWM@a-S_$W@iUJBMInDh=)ynu}Ov2sl$noZqlNi$p;+v~8w2`v>FsGe>C7 zV|;0uL~e`5SFbzCoL)gFc~A691lNH|z}hG*`*DFxnJW~ux1kEw0pU_@E&(`&=U*Qa zzt2Kn#yNmmBK~*GamoD&58@Y1%i17B80O-_;VnMUqDd#&k+sF9xO%5Twfb>!c*tB&O7o za;vE;NQUb|rcZsd=mPfpfr+WARhy}gmyioTN)SRBw!qKRF>v&;o?^K`3EvT8)YV2O zQ?(e&=|z=6p}!vm2vR;09lxpyWRy}>rpglP1t?cW`!1?vQx+JVEJfiTTjD$+MUhK` zjzCdaxx?is@)yb@xf1k+f+>39Va`$Hjj|GcC`PJ#g2S0aGfPq&5Yi~{{#c8{yhKy delta 677 zcmXAndq`7Z7{;G-wsY~Ev$N)O&WQ^15@EDRTNX%~skO@7GAW3lGD03Z?LZK`~@tt40xC(B9~;m-o9o&+mP{Z+63APE#z){%DT3 zRGZzM`{R$A1&))a-6WDq-bnq&`cIb@3 z5D-4(jbfbkcr$02QAu_w7ZV`A=rnF`fc(`-ZeKE0(e6FWBv*@NTyG|+bDz0^h6+-> z#S4Br;l1G#Cuv%#mS4P#_HA>#L+qk!b9`1}G@yw5v8;`N^(lY*8_C%^_&Y`0iDrt| zYDURs9UpMD0(`xY-qA;N5yIesCBUK<;oS;a59=4}jlU^O$tqs7Q|^WdvHN?Fay%jS zttNx$sW4|d9aJuP*RqysYoYYuW)m%UN@L~(8tb(*J~2dkNwR$CD{+s>j)p40{7H5% zJfsxL=81oQ#1N>)Yqu{|AE=E)XGQn zpCUE2%J+g2^ca;jjWpk8qrZXz)*m(g46dZW&y@i2kF_*io}hI}DU4R8^vGJLRj1RY HV`{~}h8DAx diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.ts index 60deac1..4ca907c 100644 --- a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.ts +++ b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.ts @@ -423,12 +423,17 @@ Usa la finestra di dialogo delle preferenze in Thunderbird per selezionare account e cartelle - + + Clear + Rimuovi + + + Debug Debug - + Display debug window Mostra finestra di debug @@ -449,30 +454,45 @@ Applicazione di avvio - + + Shortcuts + Scorciatoie + + + + Current show / hide shortcut: + Scorciatoia corrente Mostra / Nascondi + + + + New show / hide shortcut: + Nuova scorciatoia Mostra / Nascondi + + + Save Salva - + Cancel Annulla - - + + Open Image Apri immagine - - + + Image Files (*.png *.jpg *.bmp) File immagine (*.png *.jpg *.bmp) - - + + Select application Selezionare l'applicazione @@ -480,27 +500,27 @@ SysTrayX - + &Show/Hide &Mostra/Nascondi - + &Preferences &Preferenze - + &About &Informazioni - + &Quit &Esci - + Close Chiudi diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.nl.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.nl.qm index d3b1f24a3c691abb0f5daf7aff88d465ebd8a488..93f80aab1538c2003b3ba5049ce1d9626a6b0278 100644 GIT binary patch delta 1064 zcmb_aX>1H(7=C7VXLfdHc2=)tt=4L*L=)?XiiV_8EiG1EMIuDILrWFATNT$L#8Fq3 zx)S%DAhFISgoef+SBS(Bbz~#`q0%BK!PAoPNBoh=H}5;&`+m>+JkK|~Gb7oX;|<1k zm7N`-m~Akv4gjXbFttnpl;sfne+4u^+;IbFZ$s*O6Ob?jePf~kbU|+F3P5^-+_Y_g zxzo>>a1FU7C|^tT&}@Jz00vNgnwuRgRGcCp%dm zBF!J112|7gyFO%6-9u^b8^XGlN&EB1)4hdKc==6F&nvL=U;P-!_akA2RG)?>Rjv#-+n zBqoXCc37W2yHAe;iZc5Z*;go@ilsoTQyKmJI1s&4nO1WG2*oZ`PH!ATk2figKHnw1 zCZ#d^5M|$1qkXFg)SzbEU&o)~lsalM2}FHWOPZfiR+hR;pbX)x`miQK`R8m|BO3r) zFI(g#WjjU9bUw_xIH>jd;^!UQ)CScWiEq>NR)Vgs+Jch-bcbW5wzT>pm1Nu1^o<1A zXO9Hww`qXAsj(l4WE2DL9^qJHy_DiWK6Lm|j$+J&uPxV6D)TrbE-|x2pXRS>GP}a> zEKVWh#W0ky*T*%3-EIU>%2jvayi05-wnx(4tw|5tkmJSEwH zPz2A@$AFlQ^vqx&Xc`CV25J5$GTf!xYTLE)`z~*h+)y zTLJ=FtxQ~`eSx#CDWuxVg?q^^w3s{UC41#8SKy#k=xja3II4wZ?s*c4b9LNELm7$Q z;sretkeqzK|1EOK(k#99C%K)W z{LFwnHKSYAj7_Tn+c2SU| + Shortcuts + Snelkoppelingen + + + + Current show / hide shortcut: + Huidige snelkoppeling Tonen / Verbergen + + + + New show / hide shortcut: + Nieuwe snelkoppeling Tonen / Verbergen + + + + Clear + Verwijderen + + + Debug Debug - + Display debug window Toon debug venster - + Save Bewaren - + Cancel Annnuleren @@ -462,20 +482,20 @@ Minimaliseer naar systeemvak - - + + Open Image Open afbeelding - - + + Image Files (*.png *.jpg *.bmp) Afbeeldingsbestanden (*.png *.jpg *.bmp) - - + + Select application Selecteer programma @@ -483,27 +503,27 @@ SysTrayX - + &Show/Hide &Tonen/Verbergen - + &Preferences &Opties - + &About O&ver - + &Quit &Afsluiten - + Close Sluiten diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.qm index 00c57cfd30f4f75cc3fed99306436b3b6853726c..1cd794cfcc9b7241477a29754b640945079f9714 100644 GIT binary patch delta 981 zcma))Ye-XJ7{~u-+c`ViIXkl~%jRV>G16#JWHbtrp`qp_yFgHemx0l2w9N~2k#1yG zc3D{%Rz_DTf)jhxewy3?|`Km;^9spW;N1w8G!g7m=Qe+fCD*cn*nJF za?%enHvWzYKIC{81I8rev|k0}Ey!Is78u)r{2dYAdym4bOu*WLWj&{WaUwSCPX+bFrc^g4*;Wm`b&X90$m6hh4iGvTrp-)qr6+R^|Ehly;#~y4y|1* zOJOvw2(1)SO64iyt$FNXcrJGC3<7aR$=IC)D66I99=b5wrAbqHZYz|W@@3k*C1oVX z@;o9{XJk{>A~k<@linpA>!YkqC$%nJ0wknL;Z4ujE-Lg|h^dRpHr|_l6fo7w4c5<$ z9rErZPTz7~j(q6nR6FI4*_55&GNqqpotkY5q`7GBj;TJIrf|sAww86{kDJdP*~>b? z{5*Oh-F2B?yn4jpyi}CRcf`+BoI5uH(LQD2&vP7#RVj(Ip$^e^m5Yr<bC4UnV7JD1rx-@S&Q~FY_8Cexlp!De;FKW?Q(@lqi(X zK?Z`TLJ7REBaig~=6>dW=1zVEDC4=8yTA8JhF4xxz&D~A@2>LuJ!^vYK!vZy?zC5| zD)$Vn{lT)TpewxA+^!V6kUvc0qvl^4|I>A(Pi(%Y=HESr9i_&6(K)nXM?-!{h``8Q R)1p5-p*IO}VMpv5`4`x{@5ulF delta 676 zcmXAnYe-XJ7{~wb+0JD<$8)^TX;ac=MAX7^m0&62qNSyhmqGNQ7Ae_<8f8dIQABE{ z&9n_=KK%c`=l{IdT^9=4Y#jHk zJ$ySd|BMn>A)p4~nYm4R0i3vKC!ZSTAPSIZZ$s3;dn~Ok-T;8!rhIahoavRJ*vkz78OH19zu$l)zHCNOc#$A_grS z0b&OH7UoR1P4bEJD#^z3DIxMpO6GTk$X{jr?o6tp-G7i}Hi|xeIFHng6Z}}Sk5sP+ zVlbWXbiqDD^rmWI=}LOHP74m{As|UYzTFDQoNzRMGhpcvdcKgHwL|EwC?}dBK|lEc zh^i7o?ruxdE`Qy|$=`E4v{hx^Yo$P3C0AdH^(m(eo zg-W@RHxr26zV29KaWGo>-zD|gF!y=9Km`;!ky Fe*wdjueAUG diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.ts index 5fd046f..9ac1a67 100644 --- a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.ts +++ b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.ts @@ -437,21 +437,41 @@ + Shortcuts + Atalhos + + + + Current show / hide shortcut: + Atual Mostrar / Ocultar atalho + + + + New show / hide shortcut: + Novo atalho Mostrar / Ocultar + + + + Clear + Remover + + + Debug Depuração - + Display debug window Mostrar janela de depuração - + Save Salvar - + Cancel Cancelar @@ -462,20 +482,20 @@ Minimizar para a tray - - + + Open Image Abrir imagem - - + + Image Files (*.png *.jpg *.bmp) Arquivo de imagem (*.png *.jpg *.bmp) - - + + Select application Selecione o aplicativo @@ -483,27 +503,27 @@ SysTrayX - + &Show/Hide &Exibir/Ocultar - + &Preferences &Preferências - + &About &Sobre - + &Quit &Sair - + Close Fechar diff --git a/app/SysTray-X/SysTray-X-app/languages/SysTray-X.ru.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.ru.qm index b3a19b5baeb5397134af87e2a8da401cb7cbbd9c..ae475d4223a61ee4adb449992f7d68e7dca60fa5 100644 GIT binary patch delta 992 zcmbVKYfMvj96h)F-`m^X%dNaBwH7KOnh-40Sw;xo$@j6xSsHey>JiJ7=X z;{!2Z5f@D`;@iX+#V00eaAw(uWxirEW;E&;AyIS$vkZ0a=oYh2`{0Lve*ee$o!>d< z-kX8ng3WG|c|=Q^qaiUDVp9YV?GVG2fEI(C`w}p8$lqQA96upzn*dU$VRB+TfH5e| z`UbE#QR>^tI`^NNdJ?5|^LZXZ>4kHEwHRd;$w2aB%-+()z9GyB&HzSa>{I2cOjb2JwphwsYK45IkW=K#^0me&FnXL~=}iapWF@1IE^OD8@e}#(+M#&W z)3mu>nV#X~d!@2!dI@RkmEF$+RNtZOeL`B-$I8Bi3mD%rrSt0^#@Z3PFO6*Y-tyz5 zcCt-Sx7wexu2-AV8NN}Zc0CIu~wNwi-tytS2oMUP(o83n{Y)awTC(Uzv~mS{t|so&}9 zrTxCR8MFFND0Hk6;2EMaH_e z^K=rl>;CN|IBoBZGHJ! delta 677 zcmXAnTS!z<6o&tEX3k~ioH@sFa>nB{R-;)FW@JqkNQyYoNTz01BtDdtfu^N|5IP7& z|g9_ged3-~aFZ!8?@E;$qn^ z$LHAnku@+LsRWE2FisZ%=237fe*%^~aP9p-)Hy6}Gy=1qA=zdHFb_V@DL~NvudY=1 zO7m&|0KT4kfY^kr+$dmH53-N-QhyjZ-b_HP#MX&RfZcS>GZe9qu32z%8KSA_nJHKEF)nj7$B=I)c8{pI9HL7>=2h!I8jv4;^Cz8`f_zMM_ zh~_)5*NstpANioK1K{(8lxuxNCklhR7Xc9#;rTK;H|-Vc)o+M{X+UgpQ|^|dV(;e= zaTSVvt7w2W*W~Ge$l}9vzd}wMuBT@olQ$I780$j0baI@Y z`?Y+AA%12^e$^Ww&O}S*`XIJIZnOm6Wsu=?#dudIqnfgGW#e~MC-+P3?YpjVYwH + Shortcuts + Сочетания + + + + Current show / hide shortcut: + Текущий ярлык Показать / Скрыть + + + + New show / hide shortcut: + Новый ярлык Показать / Скрыть + + + + Clear + Удалять + + + Debug Отладка - + Display debug window Показывать окно отладки - + Save Сохранить - + Cancel Отменить @@ -459,20 +479,20 @@ Свернуть в трей - - + + Open Image Открыть изображение - - + + Image Files (*.png *.jpg *.bmp) Файлы изображений (*.png *.jpg *.bmp) - - + + Select application выберите приложение @@ -480,27 +500,27 @@ SysTrayX - + &Show/Hide &Показать/Скрыть - + &Preferences &Настройки - + &About &О приложении - + &Quit &Выход - + Close Закрыть diff --git a/app/SysTray-X/SysTray-X-app/nativeeventfilter-x11.cpp b/app/SysTray-X/SysTray-X-app/nativeeventfilter-x11.cpp new file mode 100644 index 0000000..9e51395 --- /dev/null +++ b/app/SysTray-X/SysTray-X-app/nativeeventfilter-x11.cpp @@ -0,0 +1,168 @@ +#include "nativeeventfilter-x11.h" + + +/* + * System includes + */ + +/* + * Qt includes + */ +#include +#include + + +/* + * Define the statics + */ +const QVector< int > NativeEventFilterX11::m_special_modifiers = { 0, Mod2Mask, LockMask, ( Mod2Mask | LockMask ) }; +const int NativeEventFilterX11::m_valid_mods_mask = ShiftMask | ControlMask | Mod1Mask | Mod4Mask; + +/* + * Catch the key press + */ +bool NativeEventFilterX11::nativeEventFilter( const QByteArray& eventType, void* message, long* result ) +{ + Q_UNUSED( eventType ) + Q_UNUSED( result ) + + xcb_generic_event_t* generic_event = static_cast< xcb_generic_event_t* >( message ); + if( generic_event->response_type == XCB_KEY_PRESS ) + { + xcb_key_press_event_t key_press_event = *static_cast< xcb_key_press_event_t* >( message ); + + if( m_key_code_x11 == key_press_event.detail && + m_key_modifiers_x11 == key_press_event.state & NativeEventFilterX11::m_valid_mods_mask ) + { + activated(); + } + } + + return false; +} + + +/* + * Connect the shortcut key + */ +bool NativeEventFilterX11::connectShortcut( QKeySequence key_seq ) +{ + Qt::Key key_code = Qt::Key( key_seq[ 0 ] & static_cast< int >( ~Qt::KeyboardModifierMask ) ); + Qt::KeyboardModifiers key_modifiers = Qt::KeyboardModifiers( key_seq[ 0 ] & static_cast( Qt::KeyboardModifierMask ) ); + + return connectShortcut( key_code, key_modifiers ); +} + + +/* + * Connect the shortcut key + */ +bool NativeEventFilterX11::connectShortcut( Qt::Key key_code, Qt::KeyboardModifiers key_modifiers ) +{ + /* + * Convert the Qt key code to a X11 key code + */ + QString key_string; + switch( key_code ) + { + case Qt::Key_MediaLast : + case Qt::Key_MediaPrevious : + key_string = "XF86AudioPrev"; + break; + case Qt::Key_MediaNext : + key_string = "XF86AudioNext"; + break; + case Qt::Key_MediaPause : + case Qt::Key_MediaPlay : + case Qt::Key_MediaTogglePlayPause : + key_string = "XF86AudioPlay"; + break; + case Qt::Key_MediaRecord : + key_string = "XF86AudioRecord"; + break; + case Qt::Key_MediaStop : + key_string = "XF86AudioStop"; + break; + default : + key_string = QKeySequence( key_code ).toString(); + } + + KeySym key_sym = XStringToKeysym( key_string.toLocal8Bit().constData() ); + if( key_sym == NoSymbol ) + { + if( key_code <= 0xffff ) + { + // Bad conversion, use only the key + key_sym = key_code; + } + else + { + // Cannot decode the key + return false; + } + } + + /* + * Convert the Qt key modifiers to X11 key modifiers + */ + m_key_modifiers_x11 = 0; + if( key_modifiers & Qt::ShiftModifier ) + { + m_key_modifiers_x11 |= ShiftMask; + } + if( key_modifiers & Qt::ControlModifier ) + { + m_key_modifiers_x11 |= ControlMask; + } + if( key_modifiers & Qt::AltModifier ) + { + m_key_modifiers_x11 |= Mod1Mask; + } + if( key_modifiers & Qt::MetaModifier ) + { + m_key_modifiers_x11 |= Mod4Mask; + } + + /* + * Get the X11 display + */ + Display *display = QX11Info::display(); + + /* + * Get the final key code + */ + m_key_code_x11 = XKeysymToKeycode( display, key_sym ); + + /* + * Grab the key + */ + for( int special_mod : NativeEventFilterX11::m_special_modifiers ) + { + XGrabKey( display, m_key_code_x11, m_key_modifiers_x11 | special_mod, XDefaultRootWindow( display ), True, GrabModeAsync, GrabModeAsync ); + } + + XSync( display, False ); + + return true; +} + + +/* + * Disconnect the shortcut key + */ +bool NativeEventFilterX11::disconnectShortcut() +{ + Display* display = QX11Info::display(); + + /* + * Ungrab the key + */ + for( int special_mod : NativeEventFilterX11::m_special_modifiers ) + { + XUngrabKey( display, m_key_code_x11, m_key_modifiers_x11 | special_mod, XDefaultRootWindow( display ) ); + } + + XSync( display, False ); + + return true; +} diff --git a/app/SysTray-X/SysTray-X-app/nativeeventfilter-x11.h b/app/SysTray-X/SysTray-X-app/nativeeventfilter-x11.h new file mode 100644 index 0000000..0daf226 --- /dev/null +++ b/app/SysTray-X/SysTray-X-app/nativeeventfilter-x11.h @@ -0,0 +1,90 @@ +#ifndef NATIVEEVENTFILTERX11_H +#define NATIVEEVENTFILTERX11_H + +/* + * Local includes + */ +#include "nativeeventfilterbase.h" + +/* + * System includes + */ +#include + +/* + * Qt includes + */ + + +/** + * @brief The NativeEventFilterX11 class + */ +class NativeEventFilterX11 : public NativeEventFilterBase +{ + public: + + /** + * @brief nativeEventFilter. Set the native event filter to catch the key press. + * + * @param eventType Event type to handle. + * @param message Message to handle. + * @param result Result to handle. + * + * @return Result + */ + bool nativeEventFilter( const QByteArray& eventType, void* message, long* result ) override; + + protected: + + /** + * @brief connectShortcut. Connect the shortcut to the system. + * + * @param key_seq Key sequence to connect. + * + * @return Succeeded? + */ + bool connectShortcut( QKeySequence key_seq ); + + /** + * @brief connectShortcut. Connect the shortcut to the system. + * + * @param key_code Qt key code to connect. + * @param key_modifiers Qt key modifiers to connect. + * + * @return Succeeded? + */ + bool connectShortcut( Qt::Key key_code, Qt::KeyboardModifiers key_modifiers ); + + /** + * @brief disconnectShortcut. Disconnect the shortcut. + * + * @return Succeeded? + */ + bool disconnectShortcut(); + + private: + + /** + * @brief m_key_modifiers_x11. Storage for the X11 key modifiers. + */ + int m_key_modifiers_x11; + + /** + * @brief m_key_code_x11. Storage for the X11 key code. + */ + KeyCode m_key_code_x11; + + /** + * @brief m_special_modifiers. Storage for the special modifiers. + */ + static const QVector< int > m_special_modifiers; + + /** + * @brief m_valid_mods_mask. Storage for the valid modifiers mask. + */ + static const int m_valid_mods_mask; +}; + +SINGLETON( NativeEventFilterX11 ) + +#endif // NATIVEEVENTFILTERX11_H diff --git a/app/SysTray-X/SysTray-X-app/nativeeventfilterbase.cpp b/app/SysTray-X/SysTray-X-app/nativeeventfilterbase.cpp new file mode 100644 index 0000000..887fc62 --- /dev/null +++ b/app/SysTray-X/SysTray-X-app/nativeeventfilterbase.cpp @@ -0,0 +1,74 @@ +#include "nativeeventfilterbase.h" + +/* + * Local includes + */ +#include "shortcut.h" + +/* + * System includes + */ + +/* + * Qt includes + */ +#include +#include + + +/* + * Constructor + */ +NativeEventFilterBase::NativeEventFilterBase() +{ + /* + * Install the new filter + */ + qApp->eventDispatcher()->installNativeEventFilter( this ); +} + + +/* + * Destructor + */ +NativeEventFilterBase::~NativeEventFilterBase() +{ + if( qApp && qApp->eventDispatcher() ) + { + /* + * Remove the filter + */ + qApp->eventDispatcher()->removeNativeEventFilter( this ); + } +} + + +/* + * Send the activate signal + */ +void NativeEventFilterBase::activated() +{ + emit m_shortcut->activated(); +} + + +/* + * Set the shortcut key + */ +bool NativeEventFilterBase::setShortcut( Shortcut* shortcut ) +{ + m_shortcut = shortcut; + + return connectShortcut( m_shortcut->getKeyCode(), m_shortcut->getKeyModifiers() ); +} + + +/* + * Unset the shortcut key + */ +bool NativeEventFilterBase::unsetShortcut() +{ + m_shortcut = nullptr; + + return disconnectShortcut(); +} diff --git a/app/SysTray-X/SysTray-X-app/nativeeventfilterbase.h b/app/SysTray-X/SysTray-X-app/nativeeventfilterbase.h new file mode 100644 index 0000000..5f5ab2d --- /dev/null +++ b/app/SysTray-X/SysTray-X-app/nativeeventfilterbase.h @@ -0,0 +1,97 @@ +#ifndef NATIVEEVENTFILTERBASE_H +#define NATIVEEVENTFILTERBASE_H + +/* + * Local includes + */ + +/* + * System includes + */ + +/* + * Qt includes + */ +#include +#include +#include + +/* + * Predefines + */ +class Shortcut; + + +/** + * @brief The NativeEventFilterBase class + */ +class NativeEventFilterBase : public QObject, public QAbstractNativeEventFilter +{ + Q_OBJECT + + public: + + /** + * @brief NativeEventFilterBase. Constructor, destructor. + */ + NativeEventFilterBase(); + ~NativeEventFilterBase(); + + /** + * @brief instance. Pointer to the instance. + * + * @return Pointer to the instance. + */ + static NativeEventFilterBase* instance(); + + /** + * @brief setShortcut. Set a shortcut. + * + * @param shortcut Shortcut to set. + */ + bool setShortcut( Shortcut* shortcut ); + + /** + * @brief unsetShortcut. Unset a shortcut. + */ + bool unsetShortcut(); + + protected: + + /** + * @brief connectShortcut. Connect the shortcut to the system. + * + * @param key_code The key code to connect. + * @param key_modifiers The modifiers to use. + * + * @return Succeeded? + */ + virtual bool connectShortcut( Qt::Key key_code, Qt::KeyboardModifiers key_modifiers ) = 0; + + /** + * @brief disconnectShortcut. Disconnect the shortcut. + * + * @return Succeeded? + */ + virtual bool disconnectShortcut() = 0; + + /** + * @brief activated. Shortcut has been activated. + */ + void activated(); + + private: + + /** + * @brief m_shortcut. Shortcut storage. + */ + Shortcut* m_shortcut; +}; + +#define SINGLETON( ClassName ) Q_GLOBAL_STATIC( ClassName, nativeEventFilterBase ) \ + NativeEventFilterBase* NativeEventFilterBase::instance()\ + {\ + return nativeEventFilterBase;\ + } + +#endif // NATIVEEVENTFILTERBASE_H diff --git a/app/SysTray-X/SysTray-X-app/preferences.cpp b/app/SysTray-X/SysTray-X-app/preferences.cpp index 6554f5b..d347be1 100644 --- a/app/SysTray-X/SysTray-X-app/preferences.cpp +++ b/app/SysTray-X/SysTray-X-app/preferences.cpp @@ -44,10 +44,8 @@ Preferences::Preferences( QObject *parent ) : QObject( parent ) /* * Initialize */ - m_app_pref_changed = false; - m_minimize_type = PREF_MINIMIZE_METHOD_1; - m_close_type = PREF_MINIMIZE_MAIN_CLOSE_CHILDREN_WINDOWS; + m_close_type = PREF_MINIMIZE_MAIN_TRAY_CLOSE_CHILDREN_WINDOWS; m_minimize_icon_type = PREF_MINIMIZE_TRAY_ICON; m_startup_type = PREF_START_DEFAULT; @@ -70,6 +68,7 @@ Preferences::Preferences( QObject *parent ) : QObject( parent ) m_number_size = 10; m_count_type = PREF_COUNT_UNREAD; m_startup_delay = 5; + m_api_count_method = false; m_number_alignment = 4; m_number_margins = QMargins(); m_new_indicator_type = PREF_NEW_INDICATOR_SHADE; @@ -91,27 +90,8 @@ Preferences::Preferences( QObject *parent ) : QObject( parent ) m_start_app_args = ""; m_close_app = ""; m_close_app_args = ""; -} - -/* - * Get the icon mime. - */ -bool Preferences::getAppPrefChanged() const -{ - return m_app_pref_changed; -} - - -/* - * Control the sending of preferences changes to the add-on - */ -void Preferences::setAppPrefChanged( bool state ) -{ - if( m_app_pref_changed != state ) - { - m_app_pref_changed = state; - } + m_show_hide_shortcut = QKeySequence(); } @@ -941,6 +921,32 @@ void Preferences::setApiCountMethod( bool state ) } +/* + * Get the show / hide shortcut key sequence. + */ +QKeySequence Preferences::getShowHideShortcut() const +{ + return m_show_hide_shortcut; +} + + +/* + * Set the show / hide shortcut key sequence. + */ +void Preferences::setShowHideShortcut( QKeySequence key_seq ) +{ + if( m_show_hide_shortcut != key_seq ) + { + m_show_hide_shortcut = key_seq; + + /* + * Tell the world the new preference + */ + emit signalShowHideShortcutChange(); + } +} + + /* * Get the debug state. */ diff --git a/app/SysTray-X/SysTray-X-app/preferences.h b/app/SysTray-X/SysTray-X-app/preferences.h index c3dc36a..1dcca66 100644 --- a/app/SysTray-X/SysTray-X-app/preferences.h +++ b/app/SysTray-X/SysTray-X-app/preferences.h @@ -13,6 +13,8 @@ #include #include #include +#include + /** * @brief The Preferences class. Class to hold the preferences. @@ -125,20 +127,6 @@ class Preferences : public QObject */ Preferences( QObject *parent = nullptr ); - /** - * @brief getAppPrefChanged. Control for sending changes to the add-on. - * - * @return The state - */ - bool getAppPrefChanged() const; - - /** - * @brief setAppPrefChanged. Control for sending changes to the add-on. - * - * @param state The state - */ - void setAppPrefChanged( bool state ); - /** * @brief setPlatformOs. Set the platform OS. * @@ -587,6 +575,16 @@ class Preferences : public QObject */ void setApiCountMethod( bool state ); + /** + * @brief getShowHideShortcut. Get the show / hide shortcut key sequence. + */ + QKeySequence getShowHideShortcut() const; + + /** + * @brief setShowHideShortcut. Set the show / hide shortcut key sequence. + */ + void setShowHideShortcut( QKeySequence key_seq ); + /** * @brief getDebug. Get the debug windows state. * @@ -769,16 +767,16 @@ class Preferences : public QObject void signalCloseAppArgsChange(); /** - * @brief signalApiCountMethodChange + * @brief signalApiCountMethodChange. Signal the api count method change. */ void signalApiCountMethodChange(); - private: - /** - * @brief m_app_pref_changed. Control for sending changes to the add-on. + * @brief signalShowHideShortcutChange. Signal the show / hide shortcut key sequence change. */ - bool m_app_pref_changed; + void signalShowHideShortcutChange(); + + private: /** * @brief m_platform_xx. Platform description. @@ -964,6 +962,11 @@ class Preferences : public QObject */ bool m_api_count_method; + /** + * @brief m_show_hide_shortcut. The show / hide shortcut key sequence. + */ + QKeySequence m_show_hide_shortcut; + /** * @brief m_debug. Display debug window. */ diff --git a/app/SysTray-X/SysTray-X-app/preferences.ui b/app/SysTray-X/SysTray-X-app/preferences.ui index d764434..5d9ed8b 100644 --- a/app/SysTray-X/SysTray-X-app/preferences.ui +++ b/app/SysTray-X/SysTray-X-app/preferences.ui @@ -6,7 +6,7 @@ 0 0 - 556 + 608 468 @@ -27,7 +27,7 @@ - 2 + 0 @@ -1133,6 +1133,79 @@ + + + Shortcuts + + + + + 11 + 10 + 571 + 58 + + + + + + + + + + + Current show / hide shortcut: + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + New show / hide shortcut: + + + + + + + + + + + + + + Clear + + + + + + + + Debug @@ -1217,13 +1290,13 @@ - - + + + - - - + + diff --git a/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp b/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp index 3e61e7b..904833d 100644 --- a/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp +++ b/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp @@ -137,6 +137,9 @@ PreferencesDialog::PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWi connect( m_ui->startBrowseButton, &QPushButton::clicked, this, &PreferencesDialog::slotStartAppSelect ); connect( m_ui->closeBrowseButton, &QPushButton::clicked, this, &PreferencesDialog::slotCloseAppSelect ); + connect( m_ui->showHideKeySequenceEdit, &QKeySequenceEdit::editingFinished, this, &PreferencesDialog::slotTruncateShowHideShortcut ); + connect( m_ui->clearShowHideShortcutPushButton, &QPushButton::clicked, this, &PreferencesDialog::slotClearShowHideShortcut ); + /* * Set number color */ @@ -180,6 +183,11 @@ PreferencesDialog::PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWi setCloseApp( m_pref->getCloseApp() ); setCloseAppArgs( m_pref->getCloseAppArgs() ); + /* + * Set the show / hide shortcut + */ + setShowHideShortcut( m_pref->getShowHideShortcut() ); + /* * Dialog on top */ @@ -540,6 +548,17 @@ void PreferencesDialog::setApiCountMethod( bool state ) } +/* + * Set the show / hide shortcut + */ +void PreferencesDialog::setShowHideShortcut( QKeySequence key_seq ) +{ + m_ui->currentShowHideShortcut->setText( key_seq.toString() ); + + m_ui->showHideKeySequenceEdit->setKeySequence( key_seq ); +} + + /* * Handle show dialog signal */ @@ -565,11 +584,6 @@ void PreferencesDialog::slotShowDialog() */ void PreferencesDialog::slotAccept() { - /* - * Settings changed by app - */ - m_pref->setAppPrefChanged( true ); - /* * Get all the selected values and store them in the preferences */ @@ -604,20 +618,22 @@ void PreferencesDialog::slotAccept() QString startApp = m_ui->startAppLineEdit->text(); m_pref->setStartApp( startApp ); - QString startAppArgs= m_ui->startAppArgsLineEdit->text(); + QString startAppArgs = m_ui->startAppArgsLineEdit->text(); m_pref->setStartAppArgs( startAppArgs ); QString closeApp = m_ui->closeAppLineEdit->text(); m_pref->setCloseApp( closeApp ); - QString closeAppArgs= m_ui->closeAppArgsLineEdit->text(); + QString closeAppArgs = m_ui->closeAppArgsLineEdit->text(); m_pref->setCloseAppArgs( closeAppArgs ); m_pref->setNumberColor( m_number_color ); + m_pref->setShowHideShortcut( m_ui->showHideKeySequenceEdit->keySequence() ); + m_pref->setDebug( m_ui->debugWindowCheckBox->isChecked() ); /* * Settings changed by app */ - m_pref->setAppPrefChanged( false ); + emit signalPreferencesChanged(); /* * Close it @@ -672,6 +688,8 @@ void PreferencesDialog::slotReject() setCloseApp( m_pref->getCloseApp() ); setCloseAppArgs( m_pref->getCloseAppArgs() ); + setShowHideShortcut( m_pref->getShowHideShortcut() ); + setDebug( m_pref->getDebug()); } @@ -957,6 +975,15 @@ void PreferencesDialog::slotStartupDelayChange() } +/* + * Handle the API count method change signal + */ +void PreferencesDialog::slotApiCountMethodChange() +{ + setApiCountMethod( m_pref->getApiCountMethod() ); +} + + /* * Handle the number alignment change */ @@ -1030,9 +1057,43 @@ void PreferencesDialog::slotCloseAppArgsChange() /* - * Handle the API count method change signal + * Handle the show / hide shortcut change signal */ -void PreferencesDialog::slotApiCountMethodChange() +void PreferencesDialog::slotShowHideShortcutChange() { - setApiCountMethod( m_pref->getApiCountMethod() ); + setShowHideShortcut( m_pref->getShowHideShortcut() ); +} + + +/* + * Handle the edit show / hide shortcut key field + */ +void PreferencesDialog::slotTruncateShowHideShortcut() +{ + QKeySequence key_seq = m_ui->showHideKeySequenceEdit->keySequence(); + + /* + * Workaround for a Qt5 bug in QKeySequenceEdit object, Meta/Win key is not handled correctly. + */ + int value = 0; + if( key_seq[ 0 ] == 16777299 && key_seq.count() > 1 ) + { + value = key_seq[ 1 ]; + } + else if( !(key_seq[ 0 ] == 16777299 && key_seq.count() == 1) ) + { + value = key_seq[ 0 ]; + } + + QKeySequence shortcut( value ); + m_ui->showHideKeySequenceEdit->setKeySequence( shortcut ); +} + + +/* + * Handle the clear show / hide shortcut push button + */ +void PreferencesDialog::slotClearShowHideShortcut() +{ + m_ui->showHideKeySequenceEdit->setKeySequence( QKeySequence() ); } diff --git a/app/SysTray-X/SysTray-X-app/preferencesdialog.h b/app/SysTray-X/SysTray-X-app/preferencesdialog.h index 67edba0..0ac2929 100644 --- a/app/SysTray-X/SysTray-X-app/preferencesdialog.h +++ b/app/SysTray-X/SysTray-X-app/preferencesdialog.h @@ -265,6 +265,13 @@ class PreferencesDialog : public QDialog */ void setApiCountMethod( bool state ); + /** + * @brief setShowHideShortcut. Set the show / hide shortcut. + * + * @param key_seq The shortcut key sequence. + */ + void setShowHideShortcut( QKeySequence key_seq ); + signals: /** @@ -279,6 +286,11 @@ class PreferencesDialog : public QDialog */ void signalUpdateSysTrayIcon(); + /** + * @brief signalPreferencesChanged. The preferences have been changed. + */ + void signalPreferencesChanged(); + public slots: /** @@ -356,6 +368,11 @@ class PreferencesDialog : public QDialog */ void slotStartupDelayChange(); + /** + * @brief slotApiCountMethodChange. Slot for handling the API count methid change. + */ + void slotApiCountMethodChange(); + /** * @brief slotShowNumberChange. Slot for handling show number state change. */ @@ -417,9 +434,9 @@ class PreferencesDialog : public QDialog void slotCloseAppArgsChange(); /** - * @brief slotApiCountMethodChange. Slot for handling the API count methid change. + * @brief slotShowHideShortcutChange. Slot for handling a show / hide shortcut change. */ - void slotApiCountMethodChange(); + void slotShowHideShortcutChange(); private slots: @@ -463,6 +480,16 @@ class PreferencesDialog : public QDialog */ void slotCloseAppSelect(); + /** + * @brief slotTruncateShowHideShortcut. Handle the edit show / hide shortcut key field. + */ + void slotTruncateShowHideShortcut(); + + /** + * @brief slotClearShowHideShortcut. Handle the clear show / hide shortcut button. + */ + void slotClearShowHideShortcut(); + private: /** diff --git a/app/SysTray-X/SysTray-X-app/shortcut.cpp b/app/SysTray-X/SysTray-X-app/shortcut.cpp new file mode 100644 index 0000000..87f021b --- /dev/null +++ b/app/SysTray-X/SysTray-X-app/shortcut.cpp @@ -0,0 +1,86 @@ +#include "shortcut.h" + +/* + * Local includes + */ +#include "nativeeventfilterbase.h" + + +/* + * Constructor + */ +Shortcut::Shortcut( QObject *parent ) + : QObject( parent ) +{ +} + + +/* + * Constructor with arguments + */ +Shortcut::Shortcut( QKeySequence key_seq, QObject *parent ) : + Shortcut( parent ) +{ + setShortcut( key_seq ); +} + + +/* + * Constructor with arguments + */ +Shortcut::Shortcut( Qt::Key key_code, Qt::KeyboardModifiers key_modifiers, QObject *parent ) : + Shortcut( parent ) +{ + setShortcut( key_code, key_modifiers ); +} + + +/* + * Destructor + */ +Shortcut::~Shortcut() +{ + NativeEventFilterBase::instance()->unsetShortcut(); +} + + +/* + * Set the shortcut + */ +bool Shortcut::setShortcut( QKeySequence key_seq ) +{ + Qt::Key key_code = Qt::Key( key_seq[ 0 ] & ~Qt::KeyboardModifierMask ); + Qt::KeyboardModifiers key_modifiers = Qt::KeyboardModifiers( key_seq[ 0 ] & Qt::KeyboardModifierMask); + + return setShortcut( key_code, key_modifiers ); +} + + +/* + * Set the shortcut + */ +bool Shortcut::setShortcut( Qt::Key key_code, Qt::KeyboardModifiers key_modifiers ) +{ + m_key_code = key_code; + m_key_modifiers = key_modifiers; + + return NativeEventFilterBase::instance()->setShortcut( this ); +} + + +/* + * Get the stored Qt key code + */ +Qt::Key Shortcut::getKeyCode() +{ + return m_key_code; +} + + +/* + * Get the stored Qt key modifiers + */ +Qt::KeyboardModifiers Shortcut::getKeyModifiers() +{ + return m_key_modifiers; +} diff --git a/app/SysTray-X/SysTray-X-app/shortcut.h b/app/SysTray-X/SysTray-X-app/shortcut.h new file mode 100644 index 0000000..3e64866 --- /dev/null +++ b/app/SysTray-X/SysTray-X-app/shortcut.h @@ -0,0 +1,112 @@ +#ifndef SHORTCUT_H +#define SHORTCUT_H + +/* + * Local includes + */ +#include "nativeeventfilterbase.h" + +/* + * Qt includes + */ +#include +#include + + +/** + * @brief The Shortcut class + */ +class Shortcut : public QObject +{ + Q_OBJECT + + private: + + /** + * @brief NativeEventFilterBase. Singleton friend class. + */ + friend class NativeEventFilterBase; + + public: + + /** + * @brief Shortcut. Constructor, destructor. + * + * @param parent Parent object. + */ + explicit Shortcut( QObject* parent = nullptr ); + ~Shortcut() override; + + /** + * @brief Shortcut Constructor with arguments. + * + * @param key_seq The Qt key sequence for the shortcut. + * @param parent The parent object. + */ + explicit Shortcut( QKeySequence key_seq, QObject* parent = nullptr ); + + /** + * @brief Shortcut. Constructor with arguments. + * + * @param keyCode The Qt key code for the shortcut. + * @param modifiers The Qt key modifiers for the shortcut. + * @param parent The parent object. + */ + explicit Shortcut( Qt::Key keyCode, Qt::KeyboardModifiers modifiers, QObject* parent = nullptr ); + + /** + * @brief getKeyCode. Get the stored key code. + * + * @return The key code. + */ + Qt::Key getKeyCode(); + + /** + * @brief getKeyModifiers. Get the stored key modifiers. + * + * @return The key modifiers. + */ + Qt::KeyboardModifiers getKeyModifiers(); + + private: + + /** + * @brief setShortcut. Set the shortcut. + * + * @param key_seq The Qt keysequence to use. + * + * @return Succeeded? + */ + bool setShortcut( QKeySequence key_seq ); + + /** + * @brief setShortcut. Set the shortcut. + * + * @param key_code The Qt key code to use. + * @param key_modifiers The Qt key modifiers to use. + * + * @return Succeeded? + */ + bool setShortcut( Qt::Key key_code, Qt::KeyboardModifiers key_modifiers ); + + signals: + + /** + * @brief activated. Signal send when activated. + */ + void activated(); + + private: + + /** + * @brief m_key_code. Storage for the key code. + */ + Qt::Key m_key_code; + + /** + * @brief m_key_modifiers. Storage for the key modifiers. + */ + Qt::KeyboardModifiers m_key_modifiers; +}; + +#endif // SHORTCUT_H diff --git a/app/SysTray-X/SysTray-X-app/systrayx.cpp b/app/SysTray-X/SysTray-X-app/systrayx.cpp index 6178c49..67741b7 100644 --- a/app/SysTray-X/SysTray-X-app/systrayx.cpp +++ b/app/SysTray-X/SysTray-X-app/systrayx.cpp @@ -9,6 +9,7 @@ #include "systrayxicon.h" #include "systrayxstatusnotifier.h" #include "windowctrl.h" +#include "shortcut.h" /* * Qt includes @@ -43,6 +44,8 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) m_new_mail = 0; m_locale = QString(); + m_show_hide_shortcut = nullptr; + /* * Setup preferences storage */ @@ -105,8 +108,6 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) #endif - connect( this, &SysTrayX::signalConsole, m_debug, &DebugWidget::slotConsole ); - /* * Connect preferences signals */ @@ -128,6 +129,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) connect( m_preferences, &Preferences::signalShowNumberChange, m_pref_dialog, &PreferencesDialog::slotShowNumberChange ); connect( m_preferences, &Preferences::signalShowNewIndicatorChange, m_pref_dialog, &PreferencesDialog::slotShowNewIndicatorChange ); connect( m_preferences, &Preferences::signalStartupDelayChange, m_pref_dialog, &PreferencesDialog::slotStartupDelayChange ); + connect( m_preferences, &Preferences::signalApiCountMethodChange, m_pref_dialog, &PreferencesDialog::slotApiCountMethodChange ); connect( m_preferences, &Preferences::signalCountTypeChange, m_pref_dialog, &PreferencesDialog::slotCountTypeChange ); connect( m_preferences, &Preferences::signalNumberColorChange, m_pref_dialog, &PreferencesDialog::slotNumberColorChange ); connect( m_preferences, &Preferences::signalNumberSizeChange, m_pref_dialog, &PreferencesDialog::slotNumberSizeChange ); @@ -139,37 +141,13 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) connect( m_preferences, &Preferences::signalStartAppArgsChange, m_pref_dialog, &PreferencesDialog::slotStartAppArgsChange ); connect( m_preferences, &Preferences::signalCloseAppChange, m_pref_dialog, &PreferencesDialog::slotCloseAppChange ); connect( m_preferences, &Preferences::signalCloseAppArgsChange, m_pref_dialog, &PreferencesDialog::slotCloseAppArgsChange ); - connect( m_preferences, &Preferences::signalApiCountMethodChange, m_pref_dialog, &PreferencesDialog::slotApiCountMethodChange ); + connect( m_preferences, &Preferences::signalShowHideShortcutChange, m_pref_dialog, &PreferencesDialog::slotShowHideShortcutChange ); connect( m_preferences, &Preferences::signalDebugChange, m_pref_dialog, &PreferencesDialog::slotDebugChange ); - connect( m_preferences, &Preferences::signalDefaultIconTypeChange, m_link, &SysTrayXLink::slotDefaultIconTypeChange ); - connect( m_preferences, &Preferences::signalDefaultIconDataChange, m_link, &SysTrayXLink::slotDefaultIconDataChange ); - connect( m_preferences, &Preferences::signalHideDefaultIconChange, m_link, &SysTrayXLink::slotHideDefaultIconChange ); - connect( m_preferences, &Preferences::signalIconTypeChange, m_link, &SysTrayXLink::slotIconTypeChange ); - connect( m_preferences, &Preferences::signalIconDataChange, m_link, &SysTrayXLink::slotIconDataChange ); - connect( m_preferences, &Preferences::signalMinimizeTypeChange, m_link, &SysTrayXLink::slotMinimizeTypeChange ); - connect( m_preferences, &Preferences::signalMinimizeIconTypeChange, m_link, &SysTrayXLink::slotMinimizeIconTypeChange ); - connect( m_preferences, &Preferences::signalStartupTypeChange, m_link, &SysTrayXLink::slotStartupTypeChange ); - connect( m_preferences, &Preferences::signalRestoreWindowPositionsChange, m_link, &SysTrayXLink::slotRestoreWindowPositionsChange ); - connect( m_preferences, &Preferences::signalCloseTypeChange, m_link, &SysTrayXLink::slotCloseTypeChange ); - connect( m_preferences, &Preferences::signalInvertIconChange, m_link, &SysTrayXLink::slotInvertIconChange ); - connect( m_preferences, &Preferences::signalShowNumberChange, m_link, &SysTrayXLink::slotShowNumberChange ); - connect( m_preferences, &Preferences::signalShowNewIndicatorChange, m_link, &SysTrayXLink::slotShowNewIndicatorChange ); - connect( m_preferences, &Preferences::signalStartupDelayChange, m_link, &SysTrayXLink::slotStartupDelayChange ); - connect( m_preferences, &Preferences::signalCountTypeChange, m_link, &SysTrayXLink::slotCountTypeChange ); - connect( m_preferences, &Preferences::signalNumberColorChange, m_link, &SysTrayXLink::slotNumberColorChange ); - connect( m_preferences, &Preferences::signalNumberSizeChange, m_link, &SysTrayXLink::slotNumberSizeChange ); - connect( m_preferences, &Preferences::signalNumberAlignmentChange, m_link, &SysTrayXLink::slotNumberAlignmentChange ); - connect( m_preferences, &Preferences::signalNumberMarginsChange, m_link, &SysTrayXLink::slotNumberMarginsChange ); - connect( m_preferences, &Preferences::signalNewIndicatorTypeChange, m_link, &SysTrayXLink::slotNewIndicatorTypeChange ); - connect( m_preferences, &Preferences::signalNewShadeColorChange, m_link, &SysTrayXLink::slotNewShadeColorChange ); - connect( m_preferences, &Preferences::signalStartAppChange, m_link, &SysTrayXLink::slotStartAppChange ); - connect( m_preferences, &Preferences::signalStartAppArgsChange, m_link, &SysTrayXLink::slotStartAppArgsChange ); - connect( m_preferences, &Preferences::signalCloseAppChange, m_link, &SysTrayXLink::slotCloseAppChange ); - connect( m_preferences, &Preferences::signalCloseAppArgsChange, m_link, &SysTrayXLink::slotCloseAppArgsChange ); - connect( m_preferences, &Preferences::signalApiCountMethodChange, m_link, &SysTrayXLink::slotApiCountMethodChange ); - connect( m_preferences, &Preferences::signalDebugChange, m_link, &SysTrayXLink::slotDebugChange ); + connect( m_pref_dialog, &PreferencesDialog::signalPreferencesChanged, m_link, &SysTrayXLink::slotPreferencesChanged ); + connect( m_preferences, &Preferences::signalHideDefaultIconChange, this, &SysTrayX::slotSelectIconObjectPref ); + connect( m_preferences, &Preferences::signalShowHideShortcutChange, this, &SysTrayX::slotShowHideShortcutChange ); connect( m_preferences, &Preferences::signalDebugChange, m_debug, &DebugWidget::slotDebugChange ); @@ -209,6 +187,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) /* m_preferences->setBrowserVersion( "115.1.0" ); // m_preferences->setBrowserVersion( "102.2.3" ); + slotLoadLanguage( "en-US" ); //slotLoadLanguage( "it" ); //slotLoadLanguage( "nl" ); @@ -217,11 +196,11 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) slotSelectIconObject( true ); slotMailCount( 10, 1 ); -*/ + // m_preferences->setStartApp( "/home/maxime/test.sh" ); // m_preferences->setStartAppArgs( "/home/maxime/startup.txt StartupString" ); // slotStartApp(); - +*/ } @@ -793,3 +772,16 @@ void SysTrayX::slotCloseApp() } } +void SysTrayX::slotShowHideShortcutChange() +{ + if( m_show_hide_shortcut != nullptr ) + { + disconnect( m_show_hide_shortcut, &Shortcut::activated, m_win_ctrl, &WindowCtrl::slotShowHide ); + + delete m_show_hide_shortcut; + m_show_hide_shortcut = nullptr; + } + + m_show_hide_shortcut = new Shortcut( m_preferences->getShowHideShortcut(), this ); + connect( m_show_hide_shortcut, &Shortcut::activated, m_win_ctrl, &WindowCtrl::slotShowHide ); +} diff --git a/app/SysTray-X/SysTray-X-app/systrayx.h b/app/SysTray-X/SysTray-X-app/systrayx.h index ca45918..acb9437 100644 --- a/app/SysTray-X/SysTray-X-app/systrayx.h +++ b/app/SysTray-X/SysTray-X-app/systrayx.h @@ -28,6 +28,9 @@ class WindowCtrl; class SysTrayXStatusNotifier; +class Shortcut; + + /** * @brief The SysTrayX class */ @@ -185,6 +188,11 @@ class SysTrayX : public QObject */ void slotVersion( QString version ); + /** + * @brief slotShowHideShortcutChange. Handle a show / hide shortcut change. + */ + void slotShowHideShortcutChange(); + private: /** @@ -254,6 +262,11 @@ class SysTrayX : public QObject * @brief m_locale. Storage for the current locale. */ QString m_locale; + + /** + * @brief m_show_hide_shortcut. Storage for the show / hide shortcut. + */ + Shortcut* m_show_hide_shortcut; }; #endif // SYSTRAYX_H diff --git a/app/SysTray-X/SysTray-X-app/systrayxlink.cpp b/app/SysTray-X/SysTray-X-app/systrayxlink.cpp index 314f7b6..28f28cc 100644 --- a/app/SysTray-X/SysTray-X-app/systrayxlink.cpp +++ b/app/SysTray-X/SysTray-X-app/systrayxlink.cpp @@ -796,6 +796,16 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref ) m_pref->setStartupDelay( startup_delay ); } + if( pref.contains( "apiCountMethod" ) && pref[ "apiCountMethod" ].isString() ) + { + bool api_count_method = pref[ "apiCountMethod" ].toString() == "true"; + + /* + * Store the new API cont method state + */ + m_pref->setApiCountMethod( api_count_method ); + } + if( pref.contains( "minimizeType" ) && pref[ "minimizeType" ].isString() ) { Preferences::MinimizeType minimize_type = static_cast< Preferences::MinimizeType >( pref[ "minimizeType" ].toString().toInt() ); @@ -896,14 +906,14 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref ) m_pref->setCloseAppArgs( args ); } - if( pref.contains( "apiCountMethod" ) && pref[ "apiCountMethod" ].isString() ) + if( pref.contains( "showHideShortcut" ) && pref[ "showHideShortcut" ].isString() ) { - bool api_count_method = pref[ "apiCountMethod" ].toString() == "true"; + QString shortcut = pref[ "showHideShortcut" ].toString(); /* - * Store the new API cont method state + * Store the new shortcut */ - m_pref->setApiCountMethod( api_count_method ); + m_pref->setShowHideShortcut( QKeySequence::fromString( shortcut ) ); } if( pref.contains( "debug" ) && pref[ "debug" ].isString() ) @@ -957,44 +967,46 @@ void SysTrayXLink::EncodePreferences( const Preferences& pref ) * Setup the preferences JSON */ QJsonObject prefObject; - prefObject.insert("debug", QJsonValue::fromVariant( QString( pref.getDebug() ? "true" : "false" ) ) ); - prefObject.insert("minimizeType", QJsonValue::fromVariant( QString::number( pref.getMinimizeType() ) ) ); - prefObject.insert("minimizeIconType", QJsonValue::fromVariant( QString::number( pref.getMinimizeIconType() ) ) ); - prefObject.insert("startupType", QJsonValue::fromVariant( QString::number( pref.getStartupType() ) ) ); - prefObject.insert("restorePositions", QJsonValue::fromVariant( QString( pref.getRestoreWindowPositions() ? "true" : "false" ) ) ); - prefObject.insert("closeType", QJsonValue::fromVariant( QString::number( pref.getCloseType() ) ) ); - prefObject.insert("defaultIconType", QJsonValue::fromVariant( QString::number( pref.getDefaultIconType() ) ) ); - prefObject.insert("defaultIconMime", QJsonValue::fromVariant( pref.getDefaultIconMime() ) ); - prefObject.insert("defaultIcon", QJsonValue::fromVariant( QString( pref.getDefaultIconData().toBase64() ) ) ); - prefObject.insert("hideDefaultIcon", QJsonValue::fromVariant( QString( pref.getHideDefaultIcon() ? "true" : "false" ) ) ); - prefObject.insert("iconType", QJsonValue::fromVariant( QString::number( pref.getIconType() ) ) ); - prefObject.insert("iconMime", QJsonValue::fromVariant( pref.getIconMime() ) ); - prefObject.insert("icon", QJsonValue::fromVariant( QString( pref.getIconData().toBase64() ) ) ); - prefObject.insert("invertIcon", QJsonValue::fromVariant( QString( pref.getInvertIcon() ? "true" : "false" ) ) ); - prefObject.insert("showNumber", QJsonValue::fromVariant( QString( pref.getShowNumber() ? "true" : "false" ) ) ); - prefObject.insert("showNewIndicator", QJsonValue::fromVariant( QString( pref.getShowNewIndicator() ? "true" : "false" ) ) ); - prefObject.insert("numberColor", QJsonValue::fromVariant( QString( pref.getNumberColor() ) ) ); - prefObject.insert("numberSize", QJsonValue::fromVariant( QString::number( pref.getNumberSize() ) ) ); - prefObject.insert("numberAlignment", QJsonValue::fromVariant( QString::number( pref.getNumberAlignment() ) ) ); + prefObject.insert( "debug", QJsonValue::fromVariant( QString( pref.getDebug() ? "true" : "false" ) ) ); + prefObject.insert( "minimizeType", QJsonValue::fromVariant( QString::number( pref.getMinimizeType() ) ) ); + prefObject.insert( "minimizeIconType", QJsonValue::fromVariant( QString::number( pref.getMinimizeIconType() ) ) ); + prefObject.insert( "startupType", QJsonValue::fromVariant( QString::number( pref.getStartupType() ) ) ); + prefObject.insert( "restorePositions", QJsonValue::fromVariant( QString( pref.getRestoreWindowPositions() ? "true" : "false" ) ) ); + prefObject.insert( "closeType", QJsonValue::fromVariant( QString::number( pref.getCloseType() ) ) ); + prefObject.insert( "defaultIconType", QJsonValue::fromVariant( QString::number( pref.getDefaultIconType() ) ) ); + prefObject.insert( "defaultIconMime", QJsonValue::fromVariant( pref.getDefaultIconMime() ) ); + prefObject.insert( "defaultIcon", QJsonValue::fromVariant( QString( pref.getDefaultIconData().toBase64() ) ) ); + prefObject.insert( "hideDefaultIcon", QJsonValue::fromVariant( QString( pref.getHideDefaultIcon() ? "true" : "false" ) ) ); + prefObject.insert( "iconType", QJsonValue::fromVariant( QString::number( pref.getIconType() ) ) ); + prefObject.insert( "iconMime", QJsonValue::fromVariant( pref.getIconMime() ) ); + prefObject.insert( "icon", QJsonValue::fromVariant( QString( pref.getIconData().toBase64() ) ) ); + prefObject.insert( "invertIcon", QJsonValue::fromVariant( QString( pref.getInvertIcon() ? "true" : "false" ) ) ); + prefObject.insert( "showNumber", QJsonValue::fromVariant( QString( pref.getShowNumber() ? "true" : "false" ) ) ); + prefObject.insert( "showNewIndicator", QJsonValue::fromVariant( QString( pref.getShowNewIndicator() ? "true" : "false" ) ) ); + prefObject.insert( "numberColor", QJsonValue::fromVariant( QString( pref.getNumberColor() ) ) ); + prefObject.insert( "numberSize", QJsonValue::fromVariant( QString::number( pref.getNumberSize() ) ) ); + prefObject.insert( "numberAlignment", QJsonValue::fromVariant( QString::number( pref.getNumberAlignment() ) ) ); QJsonObject marginsObject; - marginsObject.insert("left", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().left() ) ) ); - marginsObject.insert("top", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().top() ) ) ); - marginsObject.insert("right", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().right() ) ) ); - marginsObject.insert("bottom", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().bottom() ) ) ); + marginsObject.insert( "left", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().left() ) ) ); + marginsObject.insert( "top", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().top() ) ) ); + marginsObject.insert( "right", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().right() ) ) ); + marginsObject.insert( "bottom", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().bottom() ) ) ); - prefObject.insert("numberMargins", marginsObject ); - prefObject.insert("countType", QJsonValue::fromVariant( QString::number( pref.getCountType() ) ) ); - prefObject.insert("startupDelay", QJsonValue::fromVariant( QString::number( pref.getStartupDelay() ) ) ); - prefObject.insert("apiCountMethod", QJsonValue::fromVariant( QString( pref.getApiCountMethod() ? "true" : "false" ) ) ); + prefObject.insert( "numberMargins", marginsObject ); + prefObject.insert( "countType", QJsonValue::fromVariant( QString::number( pref.getCountType() ) ) ); + prefObject.insert( "startupDelay", QJsonValue::fromVariant( QString::number( pref.getStartupDelay() ) ) ); + prefObject.insert( "apiCountMethod", QJsonValue::fromVariant( QString( pref.getApiCountMethod() ? "true" : "false" ) ) ); - prefObject.insert("startApp", QJsonValue::fromVariant( pref.getStartApp() ) ); - prefObject.insert("startAppArgs", QJsonValue::fromVariant( pref.getStartAppArgs() ) ); - prefObject.insert("closeApp", QJsonValue::fromVariant( pref.getCloseApp() ) ); - prefObject.insert("closeAppArgs", QJsonValue::fromVariant( pref.getCloseAppArgs() ) ); + prefObject.insert( "startApp", QJsonValue::fromVariant( pref.getStartApp() ) ); + prefObject.insert( "startAppArgs", QJsonValue::fromVariant( pref.getStartAppArgs() ) ); + prefObject.insert( "closeApp", QJsonValue::fromVariant( pref.getCloseApp() ) ); + prefObject.insert( "closeAppArgs", QJsonValue::fromVariant( pref.getCloseAppArgs() ) ); + + prefObject.insert( "showHideShortcut", QJsonValue::fromVariant( pref.getShowHideShortcut().toString() ) ); QJsonObject preferencesObject; - preferencesObject.insert("preferences", prefObject ); + preferencesObject.insert( "preferences", prefObject ); /* * Store the new document @@ -1029,328 +1041,14 @@ void SysTrayXLink::slotLinkRead( QByteArray message ) */ void SysTrayXLink::slotPositions( QList< QPoint > positions ) { - sendPositions( positions ); + sendPositions( positions ); } /* - * Handle a restore window positions state change signal + * Handle a preferences changed signal */ -void SysTrayXLink::slotRestoreWindowPositionsChange() +void SysTrayXLink::slotPreferencesChanged() { - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the minimize type change signal - */ -void SysTrayXLink::slotMinimizeTypeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the minimize icon type change signal - */ -void SysTrayXLink::slotMinimizeIconTypeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a startup type change signal - */ -void SysTrayXLink::slotStartupTypeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a close type change signal - */ -void SysTrayXLink::slotCloseTypeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the default icon type change signal - */ -void SysTrayXLink::slotDefaultIconTypeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the default icon data change signal - */ -void SysTrayXLink::slotDefaultIconDataChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the hide default icon change signal - */ -void SysTrayXLink::slotHideDefaultIconChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the icon type change signal - */ -void SysTrayXLink::slotIconTypeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the icon data change signal - */ -void SysTrayXLink::slotIconDataChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a invert icon change signal - */ -void SysTrayXLink::slotInvertIconChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a show number state change signal - */ -void SysTrayXLink::slotShowNumberChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a show new indicator state change signal - */ -void SysTrayXLink::slotShowNewIndicatorChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the count type change signal - */ -void SysTrayXLink::slotCountTypeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a startup delay change signal - */ -void SysTrayXLink::slotStartupDelayChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a number color change signal - */ -void SysTrayXLink::slotNumberColorChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a number size change signal - */ -void SysTrayXLink::slotNumberSizeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a number alignment change signal - */ -void SysTrayXLink::slotNumberAlignmentChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a number margins change signal - */ -void SysTrayXLink::slotNumberMarginsChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the new indicator type change signal - */ -void SysTrayXLink::slotNewIndicatorTypeChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle the new shade color change signal - */ -void SysTrayXLink::slotNewShadeColorChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a start application change signal - */ -void SysTrayXLink::slotStartAppChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a start application arguments change signal - */ -void SysTrayXLink::slotStartAppArgsChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a close application change signal - */ -void SysTrayXLink::slotCloseAppChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a close application arguments change signal - */ -void SysTrayXLink::slotCloseAppArgsChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - - -/* - * Handle a API count method change signal - */ -void SysTrayXLink::slotApiCountMethodChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } -} - -/* - * Handle a debug state change signal - */ -void SysTrayXLink::slotDebugChange() -{ - if( m_pref->getAppPrefChanged() ) - { - sendPreferences(); - } + sendPreferences(); } diff --git a/app/SysTray-X/SysTray-X-app/systrayxlink.h b/app/SysTray-X/SysTray-X-app/systrayxlink.h index 459b69d..f27218f 100644 --- a/app/SysTray-X/SysTray-X-app/systrayxlink.h +++ b/app/SysTray-X/SysTray-X-app/systrayxlink.h @@ -268,145 +268,15 @@ class SysTrayXLink : public QObject public slots: - /** - * @brief slotDebugChange. Handle a change in debug state. - */ - void slotDebugChange(); - /** * @brief slotPositions. Slot for handling a window positions change. */ void slotPositions( QList< QPoint > positions ); /** - * @brief slotRestoreWindowPositionsChange. Handle a change in restore window positions state. + * @brief slotPreferencesChanged */ - void slotRestoreWindowPositionsChange(); - - /** - * @brief slotMinimizeTypeChange. Slot for handling minimize type change signals. - */ - void slotMinimizeTypeChange(); - - /** - * @brief slotMinimizeIconTypeChange. Slot for handling minimize icon type change signals. - */ - void slotMinimizeIconTypeChange(); - - /** - * @brief slotStartupTypeChange. Handle a change in startup type. - */ - void slotStartupTypeChange(); - - /** - * @brief slotCloseTypeChange. Slot for handling close type change signals. - */ - void slotCloseTypeChange(); - - /** - * @brief slotDefaultIconTypeChange. Slot for handling default icon type change signals. - */ - void slotDefaultIconTypeChange(); - - /** - * @brief slotDefaultIconDataChange. Slot for handling default icon data change signals. - */ - void slotDefaultIconDataChange(); - - /** - * @brief slotHideDefaultIconChange. Slot for handling hide default icon change signals. - */ - void slotHideDefaultIconChange(); - - /** - * @brief slotIconTypeChange. Slot for handling icon type change signals. - */ - void slotIconTypeChange(); - - /** - * @brief slotIconDataChange. Slot for handling icon data change signals. - */ - void slotIconDataChange(); - - /** - * @brief slotInvertIconChange. Slot for handling invert icon change signals. - */ - void slotInvertIconChange(); - - /** - * @brief slotShowNumberChange. Handle a change in show number state. - */ - void slotShowNumberChange(); - - /** - * @brief slotShowNewIndicatorChange. Handle a change in show new indicator state. - */ - void slotShowNewIndicatorChange(); - - /** - * @brief slotCountTypeChange. Slot for handling count type change signals. - */ - void slotCountTypeChange(); - - /** - * @brief slotStartupDelayChange. Handle a change in startup delay. - */ - void slotStartupDelayChange(); - - /** - * @brief slotNumberColorChange. Handle a change in number color. - */ - void slotNumberColorChange(); - - /** - * @brief slotNumberSizeChange. Handle a change in number size. - */ - void slotNumberSizeChange(); - - /** - * @brief slotNumberAlignmentChange. Handle a change in number alignment. - */ - void slotNumberAlignmentChange(); - - /** - * @brief slotNumberMarginsChange. Handle a change in number margins. - */ - void slotNumberMarginsChange(); - - /** - * @brief slotNewIndicatorTypeChange. Slot for handling new indicator type change signals. - */ - void slotNewIndicatorTypeChange(); - - /** - * @brief slotNewShadeColorChange. Handle a change in new shade color. - */ - void slotNewShadeColorChange(); - - /** - * @brief slotStartAppChange. Slot for handling start application change signals. - */ - void slotStartAppChange(); - - /** - * @brief slotStartAppArgsChange. Slot for handling start application arguments change signals. - */ - void slotStartAppArgsChange(); - - /** - * @brief slotCloseAppChange. Slot for handling close application change signals. - */ - void slotCloseAppChange(); - - /** - * @brief slotCloseAppArgsChange. Slot for handling close application arguments change signals. - */ - void slotCloseAppArgsChange(); - - /** - * @brief slotApiCountMethodChange. Slot for handling the API count method change signals. - */ - void slotApiCountMethodChange(); + void slotPreferencesChanged(); private slots: diff --git a/webext/_locales/de/messages.json b/webext/_locales/de/messages.json index 6897555..6c628e1 100644 --- a/webext/_locales/de/messages.json +++ b/webext/_locales/de/messages.json @@ -49,6 +49,11 @@ "description": "Tab for Mail options" }, + "tab_shortcuts": { + "message": "Tastatürkürzel", + "description": "Tab for Shortcuts options" + }, + "tab_debug": { "message": "Debug", "description": "Tab for Debug options" @@ -394,6 +399,21 @@ "description": "Title for Accounts options" }, + "shortcuts": { + "message": "Tastatürkürzel", + "description": "Title for Shortcuts options" + }, + + "shortcuts_showhide_shortcut": { + "message": "Tastenkombination Einblenden / Ausblenden: ", + "description": "Label for the show / hide shortcut edit box" + }, + + "shortcuts_clear_button": { + "message": "Löschen", + "description": "Clear" + }, + "debug": { "message": "Debug", "description": "Title for Debug options" diff --git a/webext/_locales/el/messages.json b/webext/_locales/el/messages.json index 9070200..7879664 100644 --- a/webext/_locales/el/messages.json +++ b/webext/_locales/el/messages.json @@ -49,6 +49,11 @@ "description": "Tab for Mail options" }, + "tab_shortcuts": { + "message": "Συντομεύσεις", + "description": "Tab for Shortcuts options" + }, + "tab_debug": { "message": "Αποσφαλμάτωση", "description": "Tab for Debug options" @@ -394,6 +399,21 @@ "description": "Title for Accounts options" }, + "shortcuts": { + "message": "Συντομεύσεις", + "description": "Title for Shortcuts options" + }, + + "shortcuts_showhide_shortcut": { + "message": "Συντόμευση Εμφάνιση / Απόκρυψη: ", + "description": "Label for the show / hide shortcut edit box" + }, + + "shortcuts_clear_button": { + "message": "Αφαιρώ", + "description": "Clear" + }, + "debug": { "message": "Αποσφαλμάτωση", "description": "Title for Debug options" diff --git a/webext/_locales/en-US/messages.json b/webext/_locales/en-US/messages.json index dcf9483..f4621ec 100644 --- a/webext/_locales/en-US/messages.json +++ b/webext/_locales/en-US/messages.json @@ -49,6 +49,11 @@ "description": "Tab for Mail options" }, + "tab_shortcuts": { + "message": "Shortcuts", + "description": "Tab for Shortcuts options" + }, + "tab_debug": { "message": "Debug", "description": "Tab for Debug options" @@ -394,6 +399,21 @@ "description": "Title for Accounts options" }, + "shortcuts": { + "message": "Shortcuts", + "description": "Title for Shortcuts options" + }, + + "shortcuts_showhide_shortcut": { + "message": "Shortcut Show / Hide: ", + "description": "Label for the show / hide shortcut edit box" + }, + + "shortcuts_clear_button": { + "message": "Clear", + "description": "Clear" + }, + "debug": { "message": "Debug", "description": "Title for Debug options" diff --git a/webext/_locales/it/messages.json b/webext/_locales/it/messages.json index 0ded23c..15cab54 100644 --- a/webext/_locales/it/messages.json +++ b/webext/_locales/it/messages.json @@ -49,6 +49,11 @@ "description": "Tab for Mail options" }, + "tab_shortcuts": { + "message": "Scorciatoie", + "description": "Tab for Shortcuts options" + }, + "tab_debug": { "message": "Debug", "description": "Tab for Debug options" @@ -394,6 +399,21 @@ "description": "Title for Accounts options" }, + "shortcuts": { + "message": "Scorciatoie", + "description": "Title for Shortcuts options" + }, + + "shortcuts_showhide_shortcut": { + "message": "Scorciatoia Mostra / Nascondi: ", + "description": "Label for the show / hide shortcut edit box" + }, + + "shortcuts_clear_button": { + "message": "Rimuovi", + "description": "Clear" + }, + "debug": { "message": "Debug", "description": "Title for Debug options" diff --git a/webext/_locales/nl/messages.json b/webext/_locales/nl/messages.json index 483251e..4af130b 100644 --- a/webext/_locales/nl/messages.json +++ b/webext/_locales/nl/messages.json @@ -49,6 +49,11 @@ "description": "Tab for Mail options" }, + "tab_shortcuts": { + "message": "Snelkoppelingen", + "description": "Tab for Shortcuts options" + }, + "tab_debug": { "message": "Debug", "description": "Tab for Debug options" @@ -394,6 +399,21 @@ "description": "Title for Accounts options" }, + "shortcuts": { + "message": "Snelkoppelingen", + "description": "Title for Shortcuts options" + }, + + "shortcuts_showhide_shortcut": { + "message": "Snelkoppeling Tonen / Verbergen: ", + "description": "Label for the show / hide shortcut edit box" + }, + + "shortcuts_clear_button": { + "message": "Verwijderen", + "description": "Clear" + }, + "debug": { "message": "Debug", "description": "Title for Debug options" diff --git a/webext/_locales/pt-BR/messages.json b/webext/_locales/pt-BR/messages.json index b1d5d8f..357f23c 100644 --- a/webext/_locales/pt-BR/messages.json +++ b/webext/_locales/pt-BR/messages.json @@ -49,6 +49,11 @@ "description": "Tab for Mail options" }, + "tab_shortcuts": { + "message": "Atalhos", + "description": "Tab for Shortcuts options" + }, + "tab_debug": { "message": "Depuração", "description": "Tab for Debug options" @@ -394,6 +399,21 @@ "description": "Title for Accounts options" }, + "shortcuts": { + "message": "Atalhos", + "description": "Title for Shortcuts options" + }, + + "shortcuts_showhide_shortcut": { + "message": "Atalho Mostrar / Ocultar: ", + "description": "Label for the show / hide shortcut edit box" + }, + + "shortcuts_clear_button": { + "message": "Remover", + "description": "Clear" + }, + "debug": { "message": "Depuração", "description": "Title for Debug options" diff --git a/webext/_locales/ru/messages.json b/webext/_locales/ru/messages.json index 8df3ec4..57f0e5a 100644 --- a/webext/_locales/ru/messages.json +++ b/webext/_locales/ru/messages.json @@ -49,6 +49,11 @@ "description": "Tab for Mail options" }, + "tab_shortcuts": { + "message": "Сочетания", + "description": "Tab for Shortcuts options" + }, + "tab_debug": { "message": "Отладка", "description": "Tab for Debug options" @@ -394,6 +399,21 @@ "description": "Title for Accounts options" }, + "shortcuts": { + "message": "Сочетания", + "description": "Title for Shortcuts options" + }, + + "shortcuts_showhide_shortcut": { + "message": "Ярлык Показать / Скрыть: ", + "description": "Label for the show / hide shortcut edit box" + }, + + "shortcuts_clear_button": { + "message": "Удалять", + "description": "Clear" + }, + "debug": { "message": "Отладка", "description": "Title for Debug options" diff --git a/webext/background.js b/webext/background.js index 8487927..6498edc 100644 --- a/webext/background.js +++ b/webext/background.js @@ -632,6 +632,7 @@ SysTrayX.Messaging = { "startAppArgs", "closeApp", "closeAppArgs", + "showHideShortcut", ]) .then( SysTrayX.Messaging.sendPreferencesStorage, @@ -674,6 +675,7 @@ SysTrayX.Messaging = { const startAppArgs = result.startAppArgs || ""; const closeApp = result.closeApp || ""; const closeAppArgs = result.closeAppArgs || ""; + const showHideShortcut = result.showHideShortcut || ""; // Send it to the app SysTrayX.Link.postSysTrayXMessage({ @@ -707,6 +709,7 @@ SysTrayX.Messaging = { startAppArgs, closeApp, closeAppArgs, + showHideShortcut, }, }); }, @@ -965,6 +968,13 @@ SysTrayX.Link = { }); } + const showHideShortcut = response["preferences"].showHideShortcut; + if (showHideShortcut !== undefined) { + await storage().set({ + showHideShortcut: showHideShortcut, + }); + } + const debug = response["preferences"].debug; if (debug) { await storage().set({ @@ -1023,7 +1033,7 @@ SysTrayX.Window = { async function start() { // Setup the link first SysTrayX.Link.init(); - + // Force close a window using a toolbar button browser.browserAction.disable(); diff --git a/webext/options.html b/webext/options.html index 7411397..7ea6912 100644 --- a/webext/options.html +++ b/webext/options.html @@ -32,6 +32,7 @@ + @@ -668,6 +669,30 @@ +
+
+

__MSG_shortcuts__

+ +
+
+ + + +
+
+ +
+ + +
+

__MSG_debug__

diff --git a/webext/options.js b/webext/options.js index 93bf747..33be871 100644 --- a/webext/options.js +++ b/webext/options.js @@ -322,6 +322,17 @@ SysTrayX.SaveOptions = { closeAppArgs: closeAppArgs, }); + // + // Save shortcuts + // + const showHideShortcutInput = document.getElementById("showHideShortcutInput"); + const showHideShortcut = showHideShortcutInput.value; + + // Store show / hide shortcut + await storage().set({ + showHideShortcut: showHideShortcut, + }); + // Mark add-on preferences changed await storage().set({ addonprefchanged: true, @@ -584,26 +595,36 @@ SysTrayX.RestoreOptions = { SysTrayX.RestoreOptions.onStartAppError ); - await storage() - .get("startAppArgs") - .then( - SysTrayX.RestoreOptions.setStartAppArgs, - SysTrayX.RestoreOptions.onStartAppArgsError - ); + await storage() + .get("startAppArgs") + .then( + SysTrayX.RestoreOptions.setStartAppArgs, + SysTrayX.RestoreOptions.onStartAppArgsError + ); - await storage() - .get("closeApp") - .then( - SysTrayX.RestoreOptions.setCloseApp, - SysTrayX.RestoreOptions.onCloseAppError - ); + await storage() + .get("closeApp") + .then( + SysTrayX.RestoreOptions.setCloseApp, + SysTrayX.RestoreOptions.onCloseAppError + ); - await storage() - .get("closeAppArgs") + await storage() + .get("closeAppArgs") + .then( + SysTrayX.RestoreOptions.setCloseAppArgs, + SysTrayX.RestoreOptions.onCloseAppArgsError + ); + + // + // Restore show / hide shortcut + // + await storage() + .get("showHideShortcut") .then( - SysTrayX.RestoreOptions.setCloseAppArgs, - SysTrayX.RestoreOptions.onCloseAppArgsError - ); + SysTrayX.RestoreOptions.setShowHideShortcut, + SysTrayX.RestoreOptions.onShowHideShortcutError + ); }, // @@ -1118,6 +1139,20 @@ SysTrayX.RestoreOptions = { console.log(`CloseAppArgs Error: ${error}`); }, + // + // Restore show / hide shortcut + // + setShowHideShortcut: function (result) { + const showHideShortcut = result.showHideShortcut || ""; + + const showHideShortcutInput = document.getElementById("showHideShortcutInput"); + showHideShortcutInput.value = showHideShortcut; + }, + + onShowHideShortcutError: function (error) { + console.log(`ShowHideShortcut Error: ${error}`); + }, + // // Restore filters callbacks // @@ -1367,6 +1402,11 @@ SysTrayX.StorageChanged = { closeAppArgs: changes[item].newValue, }); } + if (item === "showHideShortcut") { + SysTrayX.RestoreOptions.setShowHideShortcut({ + showHideShortcut: changes[item].newValue, + }); + } if (item === "filters") { SysTrayX.RestoreOptions.setFilters({