https://git.reactos.org/?p=reactos.git;a=commitdiff;h=6988b4e2c4cfd27cbe700…
commit 6988b4e2c4cfd27cbe70066c11b5f9a2112ecea9
Author: Miguel Almeida <miguelbarraalmeida(a)gmail.com>
AuthorDate: Sun Mar 2 19:56:30 2025 +0000
Commit: GitHub <noreply(a)github.com>
CommitDate: Sun Mar 2 20:56:30 2025 +0100
[EXPLORER] Add Show Desktop button to taskbar customization preview (#7727)
Use a 4D lookup table for the notification area settings preview, instead of many if
cases.
CORE-19738
---
base/shell/explorer/explorer.rc | 18 ++++++++++------
base/shell/explorer/res/bmp/184.bmp | Bin 0 -> 12554 bytes
base/shell/explorer/res/bmp/185.bmp | Bin 0 -> 12014 bytes
base/shell/explorer/res/bmp/186.bmp | Bin 0 -> 12014 bytes
base/shell/explorer/res/bmp/187.bmp | Bin 0 -> 12014 bytes
base/shell/explorer/res/bmp/188.bmp | Bin 0 -> 12554 bytes
base/shell/explorer/res/bmp/189.bmp | Bin 0 -> 12550 bytes
base/shell/explorer/resource.h | 18 ++++++++++------
base/shell/explorer/trayprop.cpp | 41 ++++++++++++++++++++++++------------
9 files changed, 51 insertions(+), 26 deletions(-)
diff --git a/base/shell/explorer/explorer.rc b/base/shell/explorer/explorer.rc
index c27464aebbc..8cafd263310 100644
--- a/base/shell/explorer/explorer.rc
+++ b/base/shell/explorer/explorer.rc
@@ -49,15 +49,21 @@ IDB_TASKBARPROP_LOCK_GROUP_NOQL BITMAP
"res/bmp/150.bmp"
IDB_TASKBARPROP_NOLOCK_GROUP_NOQL BITMAP "res/bmp/151.bmp"
IDB_TASKBARPROP_LOCK_NOGROUP_NOQL BITMAP "res/bmp/152.bmp"
IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL BITMAP "res/bmp/153.bmp"
-IDB_SYSTRAYPROP_SHOW_SECONDS BITMAP "res/bmp/154.bmp"
-IDB_SYSTRAYPROP_HIDE_SECONDS BITMAP "res/bmp/155.bmp"
+IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK BITMAP "res/bmp/154.bmp"
+IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK BITMAP "res/bmp/155.bmp"
IDB_STARTMENU BITMAP "res/bmp/158.bmp"
IDB_STARTPREVIEW BITMAP "res/bmp/170.bmp"
IDB_STARTPREVIEW_CLASSIC BITMAP "res/bmp/171.bmp"
-IDB_SYSTRAYPROP_HIDE_CLOCK BITMAP "res/bmp/180.bmp"
-IDB_SYSTRAYPROP_HIDE_NOCLOCK BITMAP "res/bmp/181.bmp"
-IDB_SYSTRAYPROP_SHOW_CLOCK BITMAP "res/bmp/182.bmp"
-IDB_SYSTRAYPROP_SHOW_NOCLOCK BITMAP "res/bmp/183.bmp"
+IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK BITMAP "res/bmp/180.bmp"
+IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK BITMAP "res/bmp/181.bmp"
+IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK BITMAP "res/bmp/182.bmp"
+IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK BITMAP "res/bmp/183.bmp"
+IDB_SYSTRAYPROP_SHOW_SECONDS_DESK BITMAP "res/bmp/184.bmp"
+IDB_SYSTRAYPROP_HIDE_SECONDS_DESK BITMAP "res/bmp/185.bmp"
+IDB_SYSTRAYPROP_HIDE_CLOCK_DESK BITMAP "res/bmp/186.bmp"
+IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK BITMAP "res/bmp/187.bmp"
+IDB_SYSTRAYPROP_SHOW_CLOCK_DESK BITMAP "res/bmp/188.bmp"
+IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK BITMAP "res/bmp/189.bmp"
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "explorer.exe.manifest"
diff --git a/base/shell/explorer/res/bmp/184.bmp b/base/shell/explorer/res/bmp/184.bmp
new file mode 100644
index 00000000000..866e364ab12
Binary files /dev/null and b/base/shell/explorer/res/bmp/184.bmp differ
diff --git a/base/shell/explorer/res/bmp/185.bmp b/base/shell/explorer/res/bmp/185.bmp
new file mode 100644
index 00000000000..7767600156d
Binary files /dev/null and b/base/shell/explorer/res/bmp/185.bmp differ
diff --git a/base/shell/explorer/res/bmp/186.bmp b/base/shell/explorer/res/bmp/186.bmp
new file mode 100644
index 00000000000..4499898262d
Binary files /dev/null and b/base/shell/explorer/res/bmp/186.bmp differ
diff --git a/base/shell/explorer/res/bmp/187.bmp b/base/shell/explorer/res/bmp/187.bmp
new file mode 100644
index 00000000000..f81efb188cc
Binary files /dev/null and b/base/shell/explorer/res/bmp/187.bmp differ
diff --git a/base/shell/explorer/res/bmp/188.bmp b/base/shell/explorer/res/bmp/188.bmp
new file mode 100644
index 00000000000..7ed2f228ea0
Binary files /dev/null and b/base/shell/explorer/res/bmp/188.bmp differ
diff --git a/base/shell/explorer/res/bmp/189.bmp b/base/shell/explorer/res/bmp/189.bmp
new file mode 100644
index 00000000000..62a0837fb5e
Binary files /dev/null and b/base/shell/explorer/res/bmp/189.bmp differ
diff --git a/base/shell/explorer/resource.h b/base/shell/explorer/resource.h
index 72b3456270b..d0253e7e9da 100644
--- a/base/shell/explorer/resource.h
+++ b/base/shell/explorer/resource.h
@@ -39,15 +39,21 @@
#define IDB_TASKBARPROP_NOLOCK_GROUP_NOQL 151
#define IDB_TASKBARPROP_LOCK_NOGROUP_NOQL 152
#define IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL 153
-#define IDB_SYSTRAYPROP_SHOW_SECONDS 154
-#define IDB_SYSTRAYPROP_HIDE_SECONDS 155
+#define IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK 154
+#define IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK 155
#define IDB_STARTMENU 158
#define IDB_STARTPREVIEW 170
#define IDB_STARTPREVIEW_CLASSIC 171
-#define IDB_SYSTRAYPROP_HIDE_CLOCK 180
-#define IDB_SYSTRAYPROP_HIDE_NOCLOCK 181
-#define IDB_SYSTRAYPROP_SHOW_CLOCK 182
-#define IDB_SYSTRAYPROP_SHOW_NOCLOCK 183
+#define IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK 180
+#define IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK 181
+#define IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK 182
+#define IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK 183
+#define IDB_SYSTRAYPROP_SHOW_SECONDS_DESK 184
+#define IDB_SYSTRAYPROP_HIDE_SECONDS_DESK 185
+#define IDB_SYSTRAYPROP_HIDE_CLOCK_DESK 186
+#define IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK 187
+#define IDB_SYSTRAYPROP_SHOW_CLOCK_DESK 188
+#define IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK 189
/*******************************************************************************\
|* Menu Resources *|
diff --git a/base/shell/explorer/trayprop.cpp b/base/shell/explorer/trayprop.cpp
index 99983402bc9..875334bf340 100644
--- a/base/shell/explorer/trayprop.cpp
+++ b/base/shell/explorer/trayprop.cpp
@@ -230,13 +230,14 @@ class CNotifySettingsPage : public
CPropertyPageImpl<CNotifySettingsPage>
private:
HBITMAP m_hbmpTray;
HWND m_hwndTaskbar;
+ static const WORD wImageIdLookupTable[2][2][2][2];
void _UpdateDialog()
{
BOOL bShowClock = IsDlgButtonChecked(IDC_TASKBARPROP_CLOCK);
BOOL bShowSeconds = IsDlgButtonChecked(IDC_TASKBARPROP_SECONDS);
BOOL bHideInactive = IsDlgButtonChecked(IDC_TASKBARPROP_HIDEICONS);
- UINT uImageId;
+ BOOL bShowDesktopButton = IsDlgButtonChecked(IDC_TASKBARPROP_DESKTOP);
HWND hwndCustomizeNotifyButton = GetDlgItem(IDC_TASKBARPROP_ICONCUST);
HWND hwndSeconds = GetDlgItem(IDC_TASKBARPROP_SECONDS);
@@ -246,19 +247,7 @@ private:
::EnableWindow(hwndSeconds, bShowClock);
if (!bShowSeconds)
CheckDlgButton(IDC_TASKBARPROP_SECONDS, BST_UNCHECKED);
-
- if (bHideInactive && bShowClock && bShowSeconds)
- uImageId = IDB_SYSTRAYPROP_HIDE_SECONDS;
- else if (bHideInactive && bShowClock && !bShowSeconds)
- uImageId = IDB_SYSTRAYPROP_HIDE_CLOCK;
- else if (bHideInactive && !bShowClock)
- uImageId = IDB_SYSTRAYPROP_HIDE_NOCLOCK;
- else if (!bHideInactive && bShowClock && bShowSeconds)
- uImageId = IDB_SYSTRAYPROP_SHOW_SECONDS;
- else if (!bHideInactive && bShowClock && !bShowSeconds)
- uImageId = IDB_SYSTRAYPROP_SHOW_CLOCK;
- else if (!bHideInactive && !bShowClock)
- uImageId = IDB_SYSTRAYPROP_SHOW_NOCLOCK;
+ UINT uImageId =
wImageIdLookupTable[bShowClock][bShowSeconds][bHideInactive][bShowDesktopButton];
SetBitmap(hwndTrayBitmap, &m_hbmpTray, uImageId);
}
@@ -324,6 +313,30 @@ public:
}
};
+const WORD CNotifySettingsPage::wImageIdLookupTable[2][2][2][2] =
+{
+ {
+ {
+ {IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK},
+ {IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK}
+ },
+ {
+ {IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK},
+ {IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK}
+ }
+ },
+ {
+ {
+ {IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_CLOCK_DESK},
+ {IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_CLOCK_DESK}
+ },
+ {
+ {IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK, IDB_SYSTRAYPROP_SHOW_SECONDS_DESK},
+ {IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK, IDB_SYSTRAYPROP_HIDE_SECONDS_DESK}
+ }
+ }
+};
+
static int CALLBACK
PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
{