From: Robert Naumann Date: Wed, 29 Mar 2017 18:37:06 +0000 (+0000) Subject: [EXPLORER] -implement showing the start menu preview X-Git-Tag: ReactOS-0.4.5~190 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=b295df005daf59d27711e8bd6ea19bcb487b8192;ds=sidebyside [EXPLORER] -implement showing the start menu preview svn path=/trunk/; revision=74243 --- diff --git a/reactos/base/shell/explorer/explorer.rc b/reactos/base/shell/explorer/explorer.rc index 158388eb1fa..cfcdb37c8f9 100644 --- a/reactos/base/shell/explorer/explorer.rc +++ b/reactos/base/shell/explorer/explorer.rc @@ -51,6 +51,7 @@ 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_STARTMENU BITMAP "res/bmp/158.bmp" +IDB_STARTPREVIEW BITMAP "res/bmp/171.bmp" // We don't have a proper preview image for the modern start menu yet. Use the classic one so far. 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" diff --git a/reactos/base/shell/explorer/trayprop.cpp b/reactos/base/shell/explorer/trayprop.cpp index 125896f2aeb..f10332ff01c 100644 --- a/reactos/base/shell/explorer/trayprop.cpp +++ b/reactos/base/shell/explorer/trayprop.cpp @@ -28,17 +28,18 @@ typedef struct _PROPSHEET_INFO HBITMAP hTaskbarBitmap; HBITMAP hTrayBitmap; + HBITMAP hStartBitmap; } PROPSHEET_INFO, *PPROPSHEET_INFO; static BOOL -UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) +UpdateBitmaps(PPROPSHEET_INFO pPropInfo) { - HWND hwndLock, hwndHide, hwndGroup, hwndShowQL, hwndClock, hwndSeconds, hwndHideInactive; - HWND hwndTaskbarBitmap, hwndTrayBitmap; - HWND hwndAdvancedButton; + HWND hwndLock, hwndHide, hwndGroup, hwndShowQL, hwndClock, hwndSeconds, hwndHideInactive, hwndModernStart, hwndClassicStart; + HWND hwndTaskbarBitmap, hwndTrayBitmap, hwndStartBitmap; + HWND hwndCustomizeNotifyButton, hwndCustomizeClassicStartButton, hwndCustomizeModernStartButton; BOOL bLock, bHide, bGroup, bShowQL, bShowClock, bShowSeconds, bHideInactive; - LPTSTR lpTaskBarImageName = NULL, lpTrayImageName = NULL; + LPTSTR lpTaskBarImageName = NULL, lpTrayImageName = NULL, lpStartImageName = NULL; BOOL bRet = FALSE; hwndLock = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_LOCK); @@ -50,7 +51,15 @@ UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) hwndSeconds = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_SECONDS); hwndHideInactive = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_HIDEICONS); - hwndAdvancedButton = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_ICONCUST); + hwndCustomizeNotifyButton = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_ICONCUST); + + hwndModernStart = GetDlgItem(pPropInfo->hStartWnd, IDC_TASKBARPROP_STARTMENU); + hwndClassicStart = GetDlgItem(pPropInfo->hStartWnd, IDC_TASKBARPROP_STARTMENUCLASSIC); + + hwndCustomizeClassicStartButton = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_STARTMENUCLASSICCUST); + hwndCustomizeModernStartButton = GetDlgItem(pPropInfo->hTaskbarWnd, IDC_TASKBARPROP_STARTMENUCUST); + + if (hwndLock && hwndHide && hwndGroup && hwndShowQL && hwndClock && hwndSeconds && hwndHideInactive) { @@ -112,7 +121,7 @@ UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) if (bHideInactive) { - EnableWindow(hwndAdvancedButton, TRUE); + EnableWindow(hwndCustomizeNotifyButton, TRUE); if (bShowClock) { EnableWindow(hwndSeconds, TRUE); @@ -130,7 +139,7 @@ UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) } else { - EnableWindow(hwndAdvancedButton, FALSE); + EnableWindow(hwndCustomizeNotifyButton, FALSE); if (bShowClock) { EnableWindow(hwndSeconds, TRUE); @@ -174,6 +183,49 @@ UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) } } } + + if(hwndClassicStart && hwndModernStart) + { + if(SendMessage(hwndModernStart, BM_GETCHECK, 0, 0) == BST_CHECKED) + { + EnableWindow(hwndCustomizeModernStartButton, TRUE); + EnableWindow(hwndCustomizeClassicStartButton, FALSE); + lpStartImageName = MAKEINTRESOURCEW(IDB_STARTPREVIEW); + } + else + { + EnableWindow(hwndCustomizeModernStartButton, FALSE); + EnableWindow(hwndCustomizeClassicStartButton, TRUE); + lpStartImageName = MAKEINTRESOURCEW(IDB_STARTPREVIEW_CLASSIC); + } + + if (lpStartImageName) + { + if (pPropInfo->hStartBitmap) + { + DeleteObject(pPropInfo->hStartBitmap); + } + + pPropInfo->hStartBitmap = (HBITMAP)LoadImageW(hExplorerInstance, + lpStartImageName, + IMAGE_BITMAP, + 0, + 0, + LR_DEFAULTCOLOR); + if (pPropInfo->hStartBitmap) + { + hwndStartBitmap = GetDlgItem(pPropInfo->hStartWnd, + IDC_TASKBARPROP_STARTMENU_BITMAP); + if (hwndStartBitmap) + { + SendMessage(hwndStartBitmap, + STM_SETIMAGE, + IMAGE_BITMAP, + (LPARAM)pPropInfo->hStartBitmap); + } + } + } + } return bRet; } @@ -191,7 +243,18 @@ OnCreateTaskbarPage(HWND hwnd, // FIXME: check buttons CheckDlgButton(hwnd, IDC_TASKBARPROP_SECONDS, AdvancedSettings.bShowSeconds ? BST_CHECKED : BST_UNCHECKED); - UpdateTaskbarBitmap(pPropInfo); + UpdateBitmaps(pPropInfo); +} + +static VOID +OnCreateStartPage(HWND hwnd, + PPROPSHEET_INFO pPropInfo) +{ + pPropInfo->hStartWnd = hwnd; + + CheckDlgButton(hwnd, IDC_TASKBARPROP_STARTMENUCLASSIC, 1); // HACK: This has to be read from registry! + + UpdateBitmaps(pPropInfo); } INT_PTR CALLBACK @@ -228,7 +291,7 @@ TaskbarPageProc(HWND hwndDlg, case IDC_TASKBARPROP_SECONDS: if (HIWORD(wParam) == BN_CLICKED) { - UpdateTaskbarBitmap(pPropInfo); + UpdateBitmaps(pPropInfo); /* Enable the 'Apply' button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); @@ -286,6 +349,7 @@ StartMenuPageProc(HWND hwndDlg, switch (uMsg) { case WM_INITDIALOG: + OnCreateStartPage(hwndDlg, (PPROPSHEET_INFO)((LPPROPSHEETPAGE)lParam)->lParam); break; case WM_COMMAND: