From 68f94e9c123265b3316cf5dba494059160f0b933 Mon Sep 17 00:00:00 2001 From: Tu Dinh Date: Sun, 30 May 2021 06:34:03 +0200 Subject: [PATCH] support different light/dark tray icons --- VietTypeATL/LanguageBarHandlers.cpp | 31 +++++++++++++++++++----- VietTypeATL/VietTypeATL.rc | Bin 9674 -> 10106 bytes VietTypeATL/VietTypeATL.vcxproj | 9 ++++--- VietTypeATL/VietTypeATL.vcxproj.filters | 15 +++++++++--- VietTypeATL/resource.h | Bin 2536 -> 2806 bytes VietTypeATL/resources/ED.ico | Bin 0 -> 322 bytes VietTypeATL/resources/{E.ico => EL.ico} | Bin 294 -> 294 bytes VietTypeATL/resources/VD.ico | Bin 0 -> 386 bytes VietTypeATL/resources/{V.ico => VL.ico} | Bin 354 -> 354 bytes VietTypeATL/resources/XD.ico | Bin 0 -> 330 bytes VietTypeATL/resources/{X.ico => XL.ico} | Bin 302 -> 302 bytes VietTypeATL/resources/logo.ico | Bin 4729 -> 4443 bytes 12 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 VietTypeATL/resources/ED.ico rename VietTypeATL/resources/{E.ico => EL.ico} (90%) create mode 100644 VietTypeATL/resources/VD.ico rename VietTypeATL/resources/{V.ico => VL.ico} (92%) create mode 100644 VietTypeATL/resources/XD.ico rename VietTypeATL/resources/{X.ico => XL.ico} (90%) diff --git a/VietTypeATL/LanguageBarHandlers.cpp b/VietTypeATL/LanguageBarHandlers.cpp index 055f1af..427ba37 100644 --- a/VietTypeATL/LanguageBarHandlers.cpp +++ b/VietTypeATL/LanguageBarHandlers.cpp @@ -187,6 +187,21 @@ static HRESULT OnMenuSelectAll(_In_ UINT id, _In_ EngineController* controller) return S_OK; } +static DWORD GetSystemLightTheme() { + CRegKey key; + DWORD light = 0; + LSTATUS err = key.Open(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", KEY_QUERY_VALUE); + if (err == ERROR_SUCCESS) { + err = key.QueryDWORDValue(L"SystemUsesLightTheme", light); + if (err != ERROR_SUCCESS) { + light = 0; + } + } else { + light = 0; + } + return light; +} + //////////////////////////////////////////////////////////////////////////////// // RefreshableButton //////////////////////////////////////////////////////////////////////////////// @@ -261,12 +276,14 @@ HRESULT IndicatorButton::GetIcon(__RPC__deref_out_opt HICON* hicon) { DBG_DPRINT(L"%s", L"cannot obtain instance"); return E_FAIL; } + + DWORD light = GetSystemLightTheme(); if (_controller->GetBlocked() == EngineController::BlockedKind::Blocked) { - *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(IDI_ICONX), IMAGE_ICON, 16, 16, 0)); + *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(light ? IDI_ICONXL : IDI_ICONXD), IMAGE_ICON, 16, 16, 0)); } else if (_controller->IsEnabled()) { - *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(IDI_ICONV), IMAGE_ICON, 16, 16, 0)); + *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(light ? IDI_ICONVL : IDI_ICONVD), IMAGE_ICON, 16, 16, 0)); } else { - *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(IDI_ICONE), IMAGE_ICON, 16, 16, 0)); + *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(light ? IDI_ICONEL : IDI_ICONED), IMAGE_ICON, 16, 16, 0)); } return *hicon ? S_OK : E_FAIL; } @@ -322,12 +339,14 @@ HRESULT LangBarButton::GetIcon(__RPC__deref_out_opt HICON* hicon) { DBG_DPRINT(L"%s", L"cannot obtain instance"); return E_FAIL; } + + DWORD light = GetSystemLightTheme(); if (_controller->GetBlocked() == EngineController::BlockedKind::Blocked) { - *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(IDI_ICONX), IMAGE_ICON, 16, 16, 0)); + *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(light ? IDI_ICONXL : IDI_ICONXD), IMAGE_ICON, 16, 16, 0)); } else if (_controller->IsEnabled()) { - *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(IDI_ICONV), IMAGE_ICON, 16, 16, 0)); + *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(light ? IDI_ICONVL : IDI_ICONVD), IMAGE_ICON, 16, 16, 0)); } else { - *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(IDI_ICONE), IMAGE_ICON, 16, 16, 0)); + *hicon = static_cast(LoadImage(Globals::DllInstance, MAKEINTRESOURCE(light ? IDI_ICONEL : IDI_ICONED), IMAGE_ICON, 16, 16, 0)); } return *hicon ? S_OK : E_FAIL; } diff --git a/VietTypeATL/VietTypeATL.rc b/VietTypeATL/VietTypeATL.rc index c4f612f39f8bbf39ddfc20ea1eacbeaa1eb7cce7..0af30e90e7301ac6ca1f47417f05b4dc8d5c898e 100644 GIT binary patch delta 110 zcmX@*{mXB|6kbM`$%=fb%&rVBlk<618GWEUA0SVeISeSO$d?XO1L1*W(}8M0ya=#d iDwu}w!FqWk78S)vFCMR<4+;M1& diff --git a/VietTypeATL/VietTypeATL.vcxproj b/VietTypeATL/VietTypeATL.vcxproj index e41a1c0..6305304 100644 --- a/VietTypeATL/VietTypeATL.vcxproj +++ b/VietTypeATL/VietTypeATL.vcxproj @@ -369,10 +369,13 @@ - + + - - + + + + diff --git a/VietTypeATL/VietTypeATL.vcxproj.filters b/VietTypeATL/VietTypeATL.vcxproj.filters index 53ba591..59de434 100644 --- a/VietTypeATL/VietTypeATL.vcxproj.filters +++ b/VietTypeATL/VietTypeATL.vcxproj.filters @@ -216,13 +216,22 @@ Resource Files - + Resource Files - + Resource Files - + + Resource Files + + + Resource Files + + + Resource Files + + Resource Files diff --git a/VietTypeATL/resource.h b/VietTypeATL/resource.h index 2f1de656515a699ae0c5515fe5b15be1656c514e..720b45c7c9d897638f6e87bf9f53a60982a338eb 100644 GIT binary patch delta 139 zcmaDM{7rO28S7*%wlro}2A9bfS@fBW7z`#mGD}Xrz{&#@^8tx58ckMYmj;UPF@n_q v`G!moK3E>8#~7|B0&b28k{C>#DM)PdJ+=#sKtmW=#V6Nsifq2c!N&*ynHeR& delta 87 zcmew+`a*a^8SCT=tbCI%vFJ=L;9_I6oGi$u${05JB8x7N&%$iTU@+N{S#ok2YZ_w& glBoG)Lk`u=KiH2j0+m<-m55I6;S$;Wf|HLC0Gsg{IRF3v diff --git a/VietTypeATL/resources/ED.ico b/VietTypeATL/resources/ED.ico new file mode 100644 index 0000000000000000000000000000000000000000..3bce053c6a5edadf716281c6a9e88a8196bb1d35 GIT binary patch literal 322 zcmZQzU<5*5UIq~0)nQ~{5Cbwg1N_{1xum#2VxAr@K|opnggMxNr2Oaqi9qVJr;B5V zMeou{2eS@2h`6plxoveynReiwbBs?Te?r|+nKl!LM~Aor%1x@*HqO-7dTptez%^x`1!H821D{Ow zF-Pr}57~I4{$I}bj9g+l{mWCvXwSnZ8YV7T`~5T5l!^Hpn7Sr3%YL|aagRaL39HNp0RX>`d# Qp!XR(UHx3vIVCg!06ss0LjV8( literal 0 HcmV?d00001 diff --git a/VietTypeATL/resources/E.ico b/VietTypeATL/resources/EL.ico similarity index 90% rename from VietTypeATL/resources/E.ico rename to VietTypeATL/resources/EL.ico index 1141b3c0b4376e2e1781f169d2259e8aaab308f4..8a0593338ecb09d4ddf9f0792a755a284cd018e5 100644 GIT binary patch delta 23 acmZ3+w2X<5fq@YSd3hN?fOjLG1S0?ef=2}S@Tasqk) diff --git a/VietTypeATL/resources/VD.ico b/VietTypeATL/resources/VD.ico new file mode 100644 index 0000000000000000000000000000000000000000..0ac48849a6757637231211ed028b3456f2a651a4 GIT binary patch literal 386 zcmV-|0e$`e0096201XWQ000004Qv4b02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|5C8xG z5C{eU001BJ|6u?C0W(QNK~y-6rIX7}0znW(uecdqGCK*zuh3tRM^IKmG(jVOI2gjp z9TCDusEIC^!4=WvaWPexqX^i~k?E-9Au>42%EQ%R3T-en8RJCii^J7@!mt*`&+zhikrpcU$12HXUY zZ93@M`5n1pOQ8}^fY$)xO6;?$#2&d~tE@@cAv0^|+(s+&b#k#y$YsCr7Q%MgmYf1h g^8?_*&VTa10kK96kpKVy07*qoM6N<$f{2ZtNB{r; literal 0 HcmV?d00001 diff --git a/VietTypeATL/resources/V.ico b/VietTypeATL/resources/VL.ico similarity index 92% rename from VietTypeATL/resources/V.ico rename to VietTypeATL/resources/VL.ico index ac512b1b8008e07728f15250eabfc5585c10035c..21152a647c2082400e0f15de0f96030b61642453 100644 GIT binary patch delta 23 acmaFF^oWU%fq@YSd3hN?fOjKb2qOS3ZUYnm delta 23 acmaFF^oWU%fq@YS1q48}0>ehW5JmtlIs+~M diff --git a/VietTypeATL/resources/XD.ico b/VietTypeATL/resources/XD.ico new file mode 100644 index 0000000000000000000000000000000000000000..370598c58dc2dbdce96c61d15819294f02bad797 GIT binary patch literal 330 zcmZQzU<5*5UIq~0HDP365Cbwg1N_{1xum#2VxAr@K|opnggMxNr2Oaqi9qVNr;B5V zMeou{zFAC;0Qbg(wWjPYVdK zQeK=RcTn)dTm>WZ<9v&R7oRwHtdeK7?iux7%d!`9y!F4l@t6ASp1qT8-rE1=|HWfn W?QY7)=Ij9m1B0ilpUXO@geCy+Gk|jd literal 0 HcmV?d00001 diff --git a/VietTypeATL/resources/X.ico b/VietTypeATL/resources/XL.ico similarity index 90% rename from VietTypeATL/resources/X.ico rename to VietTypeATL/resources/XL.ico index 913aff464394d255b35b9f02d5bdad8897e0bf79..51cb412e8537781e87be5c73c2b39e11bc9e4859 100644 GIT binary patch delta 23 acmZ3-w2q07fq@YSd3hN?fOjLG0wVw<76Nzx delta 23 acmZ3-w2q07fq@YS1q48}0>ef=1x5fQ;sTNY diff --git a/VietTypeATL/resources/logo.ico b/VietTypeATL/resources/logo.ico index 695f97485625b1f337236e38df585b10da8916d8..0ed68070c9e6b0df37a3ddc0990e905f005ef888 100644 GIT binary patch literal 4443 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 Qox2u5@&JFA{I7-h9}I2xX#fBK literal 4729 zcmai1WmuEz|9_~Fk`s{zK?ed76Hyw8fpj?2TBNeSta7LXD~NJ~386OkN< z91c!I>G<91oBxadb)6Txp54#0XLo!*^@Si32nI1SLg2~^6_Y@aBLqQk_@A)|DFji0 z4;$N`F$?&PB!?hg-alg_G6>RuK@bA*XWR##4 z=QL5OhTsZjgczy7yAaRL**)-c7fn@VW0}OVRK;Wx1GvT{M}NVW`^*ZF>d2B}I0cu1 z&|f56<*X^re^Df=7Z=_(E}3!`P`UIyM<@oBFM8i$i>_l9JKxbxT=oC@xOmomVP7MV zggtSvKrFXBb{8AiF;Dh0NIq%k5_A$$a1eZYs~69#0x{A@3q2bx#ks)3NlK=__+uvF z19m9^aucr2c5>V-bTBKDIvN!!_c=$bbxHc0maQw;R)~*0Z6pFEpi(_kjN4#LRKG|c z%>Zt<9a&@!xJ%nNp!F+_U(C4H(Ijyp%21cnAoo^_()9h4kco9E{O0+B$vy5u7xqjC z1L2G|OR;`C3HoTVP^F&hp|_QV)Wn`$${lZS*eCD(5|o5bzIMer!?72)JFl<;u@nLsleE z)IGU8sqC>$@^Y81m18u|+wAC|F3oHiaQ2X2>!c5iLqSgK!tYx zRH!yx`HrvweCP?wx$DbX#b&gxS$ymzJ3hXma-8O!_*-Yny9?tSFW`HD|JA0fOtq=< zRMj=cX%(+@OXF~|yZXdeF{?klf)Bs^`&EALc;bw6qFt-m{M>=s9Qg}l;cik{MMWq3 zS+d2wjh{g~P3ftgt?`Wfl8$`(TGTyWGNqPcJ3oGqD^=i%Osgew$N58ZX`9@G*EGuv z|NZ)PMTS0GJ1RPwQmc%)0Zk{gc08{b3f*HXM$n8qvfzCKLqf`}>+RWKP+W0M-8Uj8 zJe+KIZ*O*P&f?3N!MtQ--KHS|KD@re7S%gF&D7f3YQQ&oJ}7@^V1NR*k>1qQ6nHQ+ zG$f~>kUH*&C#$M@J2P{>-O@9}KOg{gE3X{4QA0`B$7qG0_T|DPCo@Da{y6$;Wm_hH zU2OwRckH=8KhK57<2yS$c_VnKNEa3sJ}fL)Gf*wP7Rz)<8C`qnk$Ycq#OKz)L(W0M zc94>g;Fe#mDu3_E$w@GV@)txA-uHR!+#Q=P0tjvg$Stn%QaK~p_q&qIT{eY`O)_ve zBlo#Mak}pZazrB0-NU1ysi|*sbMv1bV#Zb0c;}qK@$qviR3f7*tE&;F)oT1HXs&&y zC)&7vs z<%C4un5PI-NEjl9_lg>?<@O4ddRw(+baQvpY;+S>PC2z0g1XSK(y}z5*?etMP57)V z4RD&LPkgsix8m1ciBRUKV5PC^q!FB=0(T&bxi1+zL|8sN%uy-A2xubWR0Nn0xG;=i zdwc%*`T1?HU#sAK&1+dzJ}4?}z%hNxkdldsv5EY*Nf?w>9_wIMV|q1MfoH?#u=Kg8 ztvH+49Vd^C$N(gvk{2W>1tVsMo7+PeP zu(lKUW?8&rK55q7kGqGscZRzQr@%~3PL>>`MRm@)2ZV$;%5X~N>1JzRuED!OejW4E zH6E17$;rcwV<#u_TYem^b2>m9Qc%ymTM1mj!NK|>tkkgZ1oaYZlXs&Jh=ho8N z8U-c@8{*|?mg(`(0wXdCbz-qw2jwosn}-LOjt<$S$9w~Xhi}&;r=8Ptb2+ri-W@>C zMhAiwuCUSBvB4M^7{K(V)iaZdujW0IS&%v`&r-`>R?g7b>!>i|))Sz@{%S{`=qdW$ z{sR)c;5qMaNIVJ(`T;>??7tv^jvROB3Odbut9ZUZk9)8ofFh=nP351JkSmL03>%M3IoiSgH?`0=AST{xia z zMQ(QXVZFRS+GO%3 zzRQYBO7a6)TbvlMYtXx5*N{~kQ0@|E$W&Kb%M`21m{M%V!NJi-*oM4BF)g{%{v>5Hn_BUz{Z$iP+xyHh3lGy?oS}D2}?QLz)($-dOC-mLHLaoF= zT3T90QSt8DsXW+qXLmPnRzOKehLisA@bFuJoR5!>xVU)F@v&U2YH=qN*=mDE^KvH} z+1ThI*$2cEik&PhEHYBV6Zu8ppFV%S4B>D%wy01CGqsN8gM;>Ch(caoo@8ovmipK% zvwp}!GTXSthPr3Xo8)Cj#}T!D+xkwRx`swZ)uOZ#-}LIL0HmRz;p6Y$)YUaHF+soV z1**c%NlzK7q;#=o*Wh@2o3F30Z&8}BbxxF@|MuSK;SJ$1iviAfpnOHWTP zBPVzN!GmP&%eRe;Si-}@BUJdH!=t0Xz`$PO-m}HfFxthDMv;;A9W{GJ&Gw5KhYNUQ zVpUaDv4n+$33M7IOs{|L$*JMhvL{f4ZVOYhaS{4ICJ z9h9*Z+t3q#N3St$SieEzn`3jt>xUUpJm|i*^eo4cT2&@hlqHHe@k6n%Du-_x?SM}F z3zR)C|FoJ*niTvp+4O$i;CYF`?8oNASZo*Z%clHJ7yHS*tjCkjr6!4|lQ$;=+u|nI zS&j!ANj|kdS}(oHTvcDsFsga`IQP_2Ne4%dy`XYTI3;>$q#z3i?3Ra;d9-zO0ES+o zMUEi28i}o^XOgXWOff=zt^p#A=({Io^}2s+t~J!AZetM`kFl}w($AnWdjX29>}*YI zYi_-KISI=Mo3HZ0`%j&bZ=2oly0EDYAMc&dI)CHw?I9<(>aDRVCMJNXZIAcFfJfeU za>7kd^KtcEmer>UEk?X*Zf2q)XJcnCZfRkS?o*cIc5-uzuc;AHS63f?`!*Gp?x$}6 zN9y!>wo1v!41f5*CiW~oA%RZJvQ5d~{|0dZTT)jy5x{#m=W}vww!88F&J=S16>Uq*VEtT3TB*@7y7*48#Nev2$?T^!+Ej zGhU%UZ`j$@Rm&0^WP+|WCE?r`0@MfWGn5EcD0sRcP+MCIGy*a-G(=pxHnibm*E(lr zWwkb*djkUZb8>S7555cPR_yF^%K3kN4yighRb*vlF}k_A4L*>Sm9?|ARRWCa8?k8h zq~?p5LT&|c*3{Qm6czC;-^|U)(YkYo)}|}CsJoj7gRi$?NmSR=)Rf5ZEA`(#Iodnd zh8Ah5fBx>ywdA3`*(N6vw7K~TVJLZUzeI}$9FwG^Bos45pyHcCj(e%;Ejc(ifb%9R ztP%zaQBIPk5MOJ06*z~pg^i7qy*-(U$-(J~Y;JBY1cF&(M~B<3BxK>&zkmEdK3MD$ z0Zowt!fAttZe!KFXVRi_Dl3<%iok;o|rAt?>Ml!8mhXZKl$07vP! zIH<_c78ZA+CWE;X2J8lZDt8z!GBR+>**Z9=F?;A~z}|;{UR`DLn9P?a;41W}j}|-p zlZ%RqN|$>2+27y5%x#sImPY6!`qw85DnSvj*u1xIwf^;!-PzfZ3;IFTy{HG42;f2< zt{kW$HIrZ+n~;A*K4Fk(+*jV?BNp zRHof~jmE{r<>(L&hfm>feP9_kAAP1<_F}_;BW6le*WqwJ6qw#An%nyPeQmV!$yxr) zjEP+X+s4KQ{QP+XG}`$G4=1MpbL^6r%!?N;YYmEnWkxejJ=Kc4Z&xf>bUhGwILwo;{8jTxCy@x?m1 ztfC2Z@!l5k&g<&V2D~Y>b7p+3up2RS;gYocl9!N05ns9n9*;=b2tN2MPkkIJUb3G5 zKw*7BN{YX)Q6%|+wgNOZKJM_C^GW1@ow9WcrLxw9Qp?E2VQJ%Ys4_!f@?J8>_r^fh z2Mv^igW!3cDj0A}sAuzM2pho*^h;b^T*k;s_Af*tC6qPp2u|+RBv~kg&ZK}q@eHR+ zU2VO+nSFhIza5=8ySatWdk!rx^CcxGH?+0I)YXag6CQr?xkbmoU^G2ek-ByP#1GvH zmLM!Q$dSp5jp`+#Abj?TgE{We>3)fA6d6rprilzFnI66Xhkt{*f?bg8rywPxpE;Q2zokRoxIs8LxJd}8$J6HN zQYI02Q&2IlD&@$!8LTUf?e5(p0Xg_rcm@tVGD0oFN*fm+pZ3tn$w@qSe02rs$p;0y zxm_iCw<{#h&CV`UkSc#SWsV;R7GXVdv&wV`6qd4;%wF0#n3|hAa(QlA9Xai+y-V2M zuaL!S7uxkWHYp1*JHU@ZScV>QrtChkp@h?@X(=+tGOisFVQ)uAjSfLRRy{Z!aZFkd zw6wNfIX>p>wPozJ6)!uHt*@_FHGfYBx@*u7ySuyhtncu##!qXV2pQ9TaF^EB(<3Y| zFOQ-tjpLk=TDMst3NpY<7ur;mK$upU3Xn>m+tX81P_{M<^prq#Tq`6nQ_#@Eth_v( zT{l-(+h%hKBr^S>nPB8_&%1ZbA!7X)eMH3Emb#G_kVIT#jZh=^tP-kXgaVbSRd|2t;y?c!(U0r9fO1zl0H3#MqWDH&BNjen- z8hoJmedz8*2CQ{5VCC;e2?+_MKPX`^aRr5>las$b&Cl~O#{z${b#F2|qRiDG zbXD#tN??C?cQ+v^1=`Qg=RRFq6I{bKG&KC1M+xFeOG``PjB9to^=xggc1uPoa)DGA z#`=B}6BDnF`468y_5bsaFbF!J-=Pgv!W