[EXPLORER] -Fix a parameter of OnCreateTaskbarPage(). Fix by Mark Jansen

-Implement showing the notification area preview images. CORE-10560

svn path=/trunk/; revision=70102
This commit is contained in:
Robert Naumann 2015-11-24 21:43:07 +00:00
parent ca255520d6
commit b59d06fa1d

View file

@ -2,6 +2,7 @@
* ReactOS Explorer * ReactOS Explorer
* *
* Copyright 2006 - 2007 Thomas Weidenmueller <w3seek@reactos.org> * Copyright 2006 - 2007 Thomas Weidenmueller <w3seek@reactos.org>
* 2015 Robert Naumann <gonzomdx@gmail.com>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -24,20 +25,19 @@ typedef struct _PROPSHEET_INFO
{ {
HWND hTaskbarWnd; HWND hTaskbarWnd;
HWND hStartWnd; HWND hStartWnd;
HWND hNotiWnd;
HWND hToolWnd;
HBITMAP hTaskbarBitmap; HBITMAP hTaskbarBitmap;
HBITMAP hTrayBitmap;
} PROPSHEET_INFO, *PPROPSHEET_INFO; } PROPSHEET_INFO, *PPROPSHEET_INFO;
static BOOL static BOOL
UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo)
{ {
HWND hwndLock, hwndHide, hwndGroup, hwndShowQL; HWND hwndLock, hwndHide, hwndGroup, hwndShowQL, hwndClock, hwndSeconds, hwndHideInactive;
HWND hwndBitmap; HWND hwndTaskbarBitmap, hwndTrayBitmap;
BOOL bLock, bHide, bGroup, bShowQL; BOOL bLock, bHide, bGroup, bShowQL, bShowClock, bShowSeconds, bHideInactive;
LPTSTR lpImageName = NULL; LPTSTR lpTaskBarImageName = NULL, lpTrayImageName = NULL;
BOOL bRet = FALSE; BOOL bRet = FALSE;
hwndLock = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_LOCK); hwndLock = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_LOCK);
@ -45,33 +45,42 @@ UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo)
hwndGroup = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_GROUP); hwndGroup = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_GROUP);
hwndShowQL = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_SHOWQL); hwndShowQL = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_SHOWQL);
if (hwndLock && hwndHide && hwndGroup && hwndShowQL) hwndClock = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_CLOCK);
hwndSeconds = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_SECONDS);
hwndHideInactive = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_HIDEICONS);
if (hwndLock && hwndHide && hwndGroup && hwndShowQL && hwndClock && hwndSeconds && hwndHideInactive)
{ {
bLock = (SendMessage(hwndLock, BM_GETCHECK, 0, 0) == BST_CHECKED); bLock = (SendMessage(hwndLock, BM_GETCHECK, 0, 0) == BST_CHECKED);
bHide = (SendMessage(hwndHide, BM_GETCHECK, 0, 0) == BST_CHECKED); bHide = (SendMessage(hwndHide, BM_GETCHECK, 0, 0) == BST_CHECKED);
bGroup = (SendMessage(hwndGroup, BM_GETCHECK, 0, 0) == BST_CHECKED); bGroup = (SendMessage(hwndGroup, BM_GETCHECK, 0, 0) == BST_CHECKED);
bShowQL = (SendMessage(hwndShowQL, BM_GETCHECK, 0, 0) == BST_CHECKED); bShowQL = (SendMessage(hwndShowQL, BM_GETCHECK, 0, 0) == BST_CHECKED);
if (bHide) bShowClock = (SendMessage(hwndClock, BM_GETCHECK, 0, 0) == BST_CHECKED);
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_AUTOHIDE); bShowSeconds = (SendMessage(hwndSeconds, BM_GETCHECK, 0, 0) == BST_CHECKED);
else if (bLock && bGroup && bShowQL) bHideInactive = (SendMessage(hwndHideInactive, BM_GETCHECK, 0, 0) == BST_CHECKED);
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_GROUP_QL);
else if (bLock && !bGroup && !bShowQL)
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_NOGROUP_NOQL);
else if (bLock && bGroup && !bShowQL)
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_GROUP_NOQL);
else if (bLock && !bGroup && bShowQL)
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_NOGROUP_QL);
else if (!bLock && !bGroup && !bShowQL)
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL);
else if (!bLock && bGroup && !bShowQL)
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_GROUP_NOQL);
else if (!bLock && !bGroup && bShowQL)
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_NOGROUP_QL);
else if (!bLock && bGroup && bShowQL)
lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_GROUP_QL);
if (lpImageName) if (bHide)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_AUTOHIDE);
else if (bLock && bGroup && bShowQL)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_GROUP_QL);
else if (bLock && !bGroup && !bShowQL)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_NOGROUP_NOQL);
else if (bLock && bGroup && !bShowQL)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_GROUP_NOQL);
else if (bLock && !bGroup && bShowQL)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_NOGROUP_QL);
else if (!bLock && !bGroup && !bShowQL)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL);
else if (!bLock && bGroup && !bShowQL)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_GROUP_NOQL);
else if (!bLock && !bGroup && bShowQL)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_NOGROUP_QL);
else if (!bLock && bGroup && bShowQL)
lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_GROUP_QL);
if (lpTaskBarImageName)
{ {
if (pPropInfo->hTaskbarBitmap) if (pPropInfo->hTaskbarBitmap)
{ {
@ -79,24 +88,86 @@ UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo)
} }
pPropInfo->hTaskbarBitmap = (HBITMAP)LoadImage(hExplorerInstance, pPropInfo->hTaskbarBitmap = (HBITMAP)LoadImage(hExplorerInstance,
lpImageName, lpTaskBarImageName,
IMAGE_BITMAP, IMAGE_BITMAP,
0, 0,
0, 0,
LR_DEFAULTCOLOR); LR_DEFAULTCOLOR);
if (pPropInfo->hTaskbarBitmap) if (pPropInfo->hTaskbarBitmap)
{ {
hwndBitmap = GetDlgItem(pPropInfo->hTaskbarWnd, hwndTaskbarBitmap = GetDlgItem(pPropInfo->hTaskbarWnd,
IDC_TASKBARPROP_TASKBARBITMAP); IDC_TASKBARPROP_TASKBARBITMAP);
if (hwndBitmap) if (hwndTaskbarBitmap)
{ {
SendMessage(hwndBitmap, SendMessage(hwndTaskbarBitmap,
STM_SETIMAGE, STM_SETIMAGE,
IMAGE_BITMAP, IMAGE_BITMAP,
(LPARAM)pPropInfo->hTaskbarBitmap); (LPARAM)pPropInfo->hTaskbarBitmap);
} }
} }
} }
if (bHideInactive)
{
/* FIXME: when the customize button is disabled, enable it. */
if(bShowClock)
{
/* FIXME: when the seconds checkbox is disabled, enable it. */
if(bShowSeconds)
lpTrayImageName = MAKEINTRESOURCE(IDB_SYSTRAYPROP_HIDE_SECONDS);
else
lpTrayImageName = MAKEINTRESOURCE(IDB_SYSTRAYPROP_HIDE_CLOCK);
}
else
{
/* FIXME: when the seconds checkbox is enabled, disable it it. */
lpTrayImageName = MAKEINTRESOURCE(IDB_SYSTRAYPROP_HIDE_NOCLOCK);
}
}
else
{
/* FIXME: when the customize button is enabled, disable it. */
if(bShowClock)
{
/* FIXME: when the seconds checkbox is disabled, enable it. */
if(bShowSeconds)
lpTrayImageName = MAKEINTRESOURCE(IDB_SYSTRAYPROP_SHOW_SECONDS);
else
lpTrayImageName = MAKEINTRESOURCE(IDB_SYSTRAYPROP_SHOW_CLOCK);
}
else
{
/* FIXME: when the seconds checkbox is enabled, disable it it. */
lpTrayImageName = MAKEINTRESOURCE(IDB_SYSTRAYPROP_SHOW_NOCLOCK);
}
}
if(lpTrayImageName)
{
if (pPropInfo->hTrayBitmap)
{
DeleteObject(pPropInfo->hTrayBitmap);
}
pPropInfo->hTrayBitmap = (HBITMAP)LoadImage(hExplorerInstance,
lpTrayImageName,
IMAGE_BITMAP,
0,
0,
LR_DEFAULTCOLOR);
if (pPropInfo->hTrayBitmap)
{
hwndTrayBitmap = GetDlgItem(pPropInfo->hTaskbarWnd,
IDC_TASKBARPROP_NOTIFICATIONBITMAP);
if (hwndTrayBitmap)
{
SendMessage(hwndTrayBitmap,
STM_SETIMAGE,
IMAGE_BITMAP,
(LPARAM)pPropInfo->hTrayBitmap);
}
}
}
} }
return bRet; return bRet;
@ -136,7 +207,7 @@ TaskbarPageProc(HWND hwndDlg,
switch (uMsg) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
OnCreateTaskbarPage(hwndDlg, (PPROPSHEET_INFO)lParam); OnCreateTaskbarPage(hwndDlg, (PPROPSHEET_INFO)((LPPROPSHEETPAGE)lParam)->lParam);
break; break;
case WM_COMMAND: case WM_COMMAND:
@ -146,6 +217,9 @@ TaskbarPageProc(HWND hwndDlg,
case IDC_TASKBARPROP_HIDE: case IDC_TASKBARPROP_HIDE:
case IDC_TASKBARPROP_GROUP: case IDC_TASKBARPROP_GROUP:
case IDC_TASKBARPROP_SHOWQL: case IDC_TASKBARPROP_SHOWQL:
case IDC_TASKBARPROP_HIDEICONS:
case IDC_TASKBARPROP_CLOCK:
case IDC_TASKBARPROP_SECONDS:
if (HIWORD(wParam) == BN_CLICKED) if (HIWORD(wParam) == BN_CLICKED)
{ {
UpdateTaskbarBitmap(pPropInfo); UpdateTaskbarBitmap(pPropInfo);
@ -178,6 +252,10 @@ TaskbarPageProc(HWND hwndDlg,
{ {
DeleteObject(pPropInfo->hTaskbarBitmap); DeleteObject(pPropInfo->hTaskbarBitmap);
} }
if (pPropInfo->hTrayBitmap)
{
DeleteObject(pPropInfo->hTrayBitmap);
}
break; break;
HandleDefaultMessage: HandleDefaultMessage: