X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fbase%2Fshell%2Fexplorer%2Ftrayprop.cpp;h=19738a085861e749a5b03f42a7b612ee109c602e;hp=b813263558fe2bfd3313a908fcb948d710822405;hb=b59d06fa1d874ed4a4bdd6fe756b5636f0f93f29;hpb=34c63e36da5969b2c1ba438634376cef2be1b3e9 diff --git a/reactos/base/shell/explorer/trayprop.cpp b/reactos/base/shell/explorer/trayprop.cpp index b813263558f..19738a08586 100644 --- a/reactos/base/shell/explorer/trayprop.cpp +++ b/reactos/base/shell/explorer/trayprop.cpp @@ -2,6 +2,7 @@ * ReactOS Explorer * * Copyright 2006 - 2007 Thomas Weidenmueller + * 2015 Robert Naumann * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -24,54 +25,62 @@ typedef struct _PROPSHEET_INFO { HWND hTaskbarWnd; HWND hStartWnd; - HWND hNotiWnd; - HWND hToolWnd; HBITMAP hTaskbarBitmap; + HBITMAP hTrayBitmap; } PROPSHEET_INFO, *PPROPSHEET_INFO; static BOOL UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) { - HWND hwndLock, hwndHide, hwndGroup, hwndShowQL; - HWND hwndBitmap; - BOOL bLock, bHide, bGroup, bShowQL; - LPTSTR lpImageName = NULL; + HWND hwndLock, hwndHide, hwndGroup, hwndShowQL, hwndClock, hwndSeconds, hwndHideInactive; + HWND hwndTaskbarBitmap, hwndTrayBitmap; + BOOL bLock, bHide, bGroup, bShowQL, bShowClock, bShowSeconds, bHideInactive; + LPTSTR lpTaskBarImageName = NULL, lpTrayImageName = NULL; BOOL bRet = FALSE; hwndLock = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_LOCK); hwndHide = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_HIDE); hwndGroup = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_GROUP); hwndShowQL = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_SHOWQL); + + 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) + if (hwndLock && hwndHide && hwndGroup && hwndShowQL && hwndClock && hwndSeconds && hwndHideInactive) { bLock = (SendMessage(hwndLock, BM_GETCHECK, 0, 0) == BST_CHECKED); bHide = (SendMessage(hwndHide, BM_GETCHECK, 0, 0) == BST_CHECKED); bGroup = (SendMessage(hwndGroup, BM_GETCHECK, 0, 0) == BST_CHECKED); bShowQL = (SendMessage(hwndShowQL, BM_GETCHECK, 0, 0) == BST_CHECKED); + + bShowClock = (SendMessage(hwndClock, BM_GETCHECK, 0, 0) == BST_CHECKED); + bShowSeconds = (SendMessage(hwndSeconds, BM_GETCHECK, 0, 0) == BST_CHECKED); + bHideInactive = (SendMessage(hwndHideInactive, BM_GETCHECK, 0, 0) == BST_CHECKED); if (bHide) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_AUTOHIDE); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_AUTOHIDE); else if (bLock && bGroup && bShowQL) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_GROUP_QL); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_GROUP_QL); else if (bLock && !bGroup && !bShowQL) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_NOGROUP_NOQL); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_NOGROUP_NOQL); else if (bLock && bGroup && !bShowQL) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_GROUP_NOQL); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_GROUP_NOQL); else if (bLock && !bGroup && bShowQL) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_NOGROUP_QL); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_LOCK_NOGROUP_QL); else if (!bLock && !bGroup && !bShowQL) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL); else if (!bLock && bGroup && !bShowQL) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_GROUP_NOQL); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_GROUP_NOQL); else if (!bLock && !bGroup && bShowQL) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_NOGROUP_QL); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_NOGROUP_QL); else if (!bLock && bGroup && bShowQL) - lpImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_GROUP_QL); + lpTaskBarImageName = MAKEINTRESOURCE(IDB_TASKBARPROP_NOLOCK_GROUP_QL); - if (lpImageName) + + if (lpTaskBarImageName) { if (pPropInfo->hTaskbarBitmap) { @@ -79,24 +88,86 @@ UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) } pPropInfo->hTaskbarBitmap = (HBITMAP)LoadImage(hExplorerInstance, - lpImageName, + lpTaskBarImageName, IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); if (pPropInfo->hTaskbarBitmap) { - hwndBitmap = GetDlgItem(pPropInfo->hTaskbarWnd, + hwndTaskbarBitmap = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_TASKBARBITMAP); - if (hwndBitmap) + if (hwndTaskbarBitmap) { - SendMessage(hwndBitmap, + SendMessage(hwndTaskbarBitmap, STM_SETIMAGE, IMAGE_BITMAP, (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; @@ -136,7 +207,7 @@ TaskbarPageProc(HWND hwndDlg, switch (uMsg) { case WM_INITDIALOG: - OnCreateTaskbarPage(hwndDlg, (PPROPSHEET_INFO)lParam); + OnCreateTaskbarPage(hwndDlg, (PPROPSHEET_INFO)((LPPROPSHEETPAGE)lParam)->lParam); break; case WM_COMMAND: @@ -146,6 +217,9 @@ TaskbarPageProc(HWND hwndDlg, case IDC_TASKBARPROP_HIDE: case IDC_TASKBARPROP_GROUP: case IDC_TASKBARPROP_SHOWQL: + case IDC_TASKBARPROP_HIDEICONS: + case IDC_TASKBARPROP_CLOCK: + case IDC_TASKBARPROP_SECONDS: if (HIWORD(wParam) == BN_CLICKED) { UpdateTaskbarBitmap(pPropInfo); @@ -178,61 +252,13 @@ TaskbarPageProc(HWND hwndDlg, { DeleteObject(pPropInfo->hTaskbarBitmap); } - break; - -HandleDefaultMessage: - default: - return FALSE; - } - - return FALSE; -} - -static INT_PTR CALLBACK -AdvancedSettingsPageProc(HWND hwndDlg, - UINT uMsg, - WPARAM wParam, - LPARAM lParam) -{ - switch (uMsg) - { - case WM_INITDIALOG: - CheckDlgButton(hwndDlg, IDC_TASKBARPROP_SECONDS, AdvancedSettings.bShowSeconds ? BST_CHECKED : BST_UNCHECKED); - break; - - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_TASKBARPROP_SECONDS: - if (HIWORD(wParam) == BN_CLICKED) - { - PropSheet_Changed(GetParent(hwndDlg), hwndDlg); - } - break; - } - break; - - case WM_NOTIFY: - { - LPNMHDR pnmh = (LPNMHDR)lParam; - - switch (pnmh->code) + if (pPropInfo->hTrayBitmap) { - case PSN_SETACTIVE: - break; - - case PSN_APPLY: - AdvancedSettings.bShowSeconds = IsDlgButtonChecked(hwndDlg, IDC_TASKBARPROP_SECONDS); - SaveSettingDword(szAdvancedSettingsKey, TEXT("ShowSeconds"), AdvancedSettings.bShowSeconds); - break; + DeleteObject(pPropInfo->hTrayBitmap); } - - break; - } - - case WM_DESTROY: break; +HandleDefaultMessage: default: return FALSE; } @@ -250,76 +276,17 @@ StartMenuPageProc(HWND hwndDlg, { case WM_INITDIALOG: break; - - case WM_DESTROY: - break; - - case WM_NOTIFY: - { - LPNMHDR pnmh = (LPNMHDR)lParam; - - switch (pnmh->code) - { - case PSN_SETACTIVE: - break; - - case PSN_APPLY: - break; - } - - break; - } - } - - return FALSE; -} - - -static INT_PTR CALLBACK -NotificationPageProc(HWND hwndDlg, - UINT uMsg, - WPARAM wParam, - LPARAM lParam) -{ - switch (uMsg) - { - case WM_INITDIALOG: - break; - - case WM_DESTROY: - break; - - case WM_NOTIFY: + + case WM_COMMAND: { - LPNMHDR pnmh = (LPNMHDR)lParam; - - switch (pnmh->code) + switch (LOWORD(wParam)) { - case PSN_SETACTIVE: - break; - - case PSN_APPLY: + case IDC_TASKBARPROP_STARTMENUCLASSICCUST: + ShowCustomizeClassic(hExplorerInstance, hwndDlg); break; } - break; } - } - - return FALSE; -} - - -static INT_PTR CALLBACK -ToolbarsPageProc(HWND hwndDlg, - UINT uMsg, - WPARAM wParam, - LPARAM lParam) -{ - switch (uMsg) - { - case WM_INITDIALOG: - break; case WM_DESTROY: break; @@ -344,7 +311,6 @@ ToolbarsPageProc(HWND hwndDlg, return FALSE; } - static VOID InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, @@ -366,7 +332,7 @@ DisplayTrayProperties(IN HWND hwndOwner) { PROPSHEET_INFO propInfo; PROPSHEETHEADER psh; - PROPSHEETPAGE psp[5]; + PROPSHEETPAGE psp[2]; WCHAR szCaption[256]; if (!LoadString(hExplorerInstance, @@ -390,9 +356,6 @@ DisplayTrayProperties(IN HWND hwndOwner) InitPropSheetPage(&psp[0], IDD_TASKBARPROP_TASKBAR, TaskbarPageProc, (LPARAM)&propInfo); InitPropSheetPage(&psp[1], IDD_TASKBARPROP_STARTMENU, StartMenuPageProc, (LPARAM)&propInfo); - InitPropSheetPage(&psp[2], IDD_TASKBARPROP_NOTIFICATION, NotificationPageProc, (LPARAM)&propInfo); - InitPropSheetPage(&psp[3], IDD_TASKBARPROP_TOOLBARS, ToolbarsPageProc, (LPARAM)&propInfo); - InitPropSheetPage(&psp[4], IDD_TASKBARPROP_ADVANCED, AdvancedSettingsPageProc, (LPARAM)&propInfo); PropertySheet(&psh); }