From 6897e5ee5aa5c63fd4b75f6c841822ff4471b08d Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 22 Sep 2007 18:48:02 +0000 Subject: [PATCH] - Don't change the current power scheme when displaying the dialog - Load additional pages provided by shell extensions svn path=/trunk/; revision=29146 --- reactos/dll/cpl/powercfg/powercfg.c | 33 +++++++++++++++++++++--- reactos/dll/cpl/powercfg/powercfg.h | 2 ++ reactos/dll/cpl/powercfg/powercfg.rbuild | 1 + reactos/dll/cpl/powercfg/powershemes.c | 4 ++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/reactos/dll/cpl/powercfg/powercfg.c b/reactos/dll/cpl/powercfg/powercfg.c index 669ea0a5385..ed8d3cc60bd 100644 --- a/reactos/dll/cpl/powercfg/powercfg.c +++ b/reactos/dll/cpl/powercfg/powercfg.c @@ -11,6 +11,8 @@ #include #include +#include +#include #include #include "resource.h" @@ -79,15 +81,30 @@ PropSheetProc( return TRUE; } +static BOOL CALLBACK +PropSheetAddPage(HPROPSHEETPAGE hpage, LPARAM lParam) +{ + PROPSHEETHEADER *ppsh = (PROPSHEETHEADER *)lParam; + if (ppsh != NULL && ppsh->nPages < MAX_POWER_PAGES) + { + ppsh->phpage[ppsh->nPages++] = hpage; + return TRUE; + } + + return FALSE; +} + /* First Applet */ static LONG APIENTRY Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam) { - PROPSHEETPAGE psp[5]; + PROPSHEETPAGE psp[MAX_POWER_PAGES]; PROPSHEETHEADER psh; + HPSXA hpsxa = NULL; TCHAR Caption[1024]; SYSTEM_POWER_CAPABILITIES spc; INT i=0; + LONG ret; UNREFERENCED_PARAMETER(hwnd); UNREFERENCED_PARAMETER(uMsg); @@ -120,8 +137,18 @@ Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam) } InitPropSheetPage(&psp[i++], IDD_PROPPAGEADVANCED, (DLGPROC) advancedProc); InitPropSheetPage(&psp[i++], IDD_PROPPAGEHIBERNATE, (DLGPROC) hibernateProc); - - return (LONG)(PropertySheet(&psh) != -1); + + /* Load additional pages provided by shell extensions */ + hpsxa = SHCreatePropSheetExtArray(HKEY_LOCAL_MACHINE, REGSTR_PATH_CONTROLSFOLDER TEXT("\\Power"), MAX_POWER_PAGES - psh.nPages); + if (hpsxa != NULL) + SHAddFromPropSheetExtArray(hpsxa, PropSheetAddPage, (LPARAM)&psh); + + ret = (LONG)(PropertySheet(&psh) != -1); + + if (hpsxa != NULL) + SHDestroyPropSheetExtArray(hpsxa); + + return ret; } /* Control Panel Callback */ diff --git a/reactos/dll/cpl/powercfg/powercfg.h b/reactos/dll/cpl/powercfg/powercfg.h index 61136b5891e..f683a208511 100644 --- a/reactos/dll/cpl/powercfg/powercfg.h +++ b/reactos/dll/cpl/powercfg/powercfg.h @@ -16,6 +16,8 @@ extern GLOBAL_POWER_POLICY gGPP; extern POWER_POLICY gPP[]; extern UINT guiIndex; +#define MAX_POWER_PAGES 32 + #endif /* __CPL_SAMPLE_H */ /* EOF */ diff --git a/reactos/dll/cpl/powercfg/powercfg.rbuild b/reactos/dll/cpl/powercfg/powercfg.rbuild index d90489f69fa..c14638cc49d 100644 --- a/reactos/dll/cpl/powercfg/powercfg.rbuild +++ b/reactos/dll/cpl/powercfg/powercfg.rbuild @@ -12,6 +12,7 @@ user32 powrprof comctl32 + shell32 msvcrt powercfg.c powershemes.c diff --git a/reactos/dll/cpl/powercfg/powershemes.c b/reactos/dll/cpl/powercfg/powershemes.c index cf129c18d29..62cbf24d333 100644 --- a/reactos/dll/cpl/powercfg/powershemes.c +++ b/reactos/dll/cpl/powercfg/powershemes.c @@ -287,9 +287,11 @@ BOOLEAN CreateEnergyList(HWND hwnd) if (!ValidatePowerPolicies(&gGPP,0)) return FALSE; +/* if (!SetActivePwrScheme(aps,&gGPP,&pp)) return FALSE; - +*/ + if (!GetPwrCapabilities(&spc)) return FALSE;