- Make local functions static.

- Reorder functions to reduce the number of required prototypes.
- Use Win32 types instead of generic types (e.g. int -> INT) and add missing VOIDs.
- No code changes.

svn path=/trunk/; revision=30957
This commit is contained in:
Eric Kohl 2007-12-02 14:25:17 +00:00
parent 4f987d4817
commit 7646664619
6 changed files with 466 additions and 495 deletions

View file

@ -22,66 +22,15 @@
#include "resource.h" #include "resource.h"
#include "powercfg.h" #include "powercfg.h"
HWND hAdv=0; HWND hAdv = 0;
void Adv_InitDialog();
void Adv_SaveData(HWND hwndDlg);
static POWER_ACTION g_SystemBatteries[3]; static POWER_ACTION g_SystemBatteries[3];
static POWER_ACTION g_PowerButton[5]; static POWER_ACTION g_PowerButton[5];
static POWER_ACTION g_SleepButton[5]; static POWER_ACTION g_SleepButton[5];
/* Property page dialog callback */
INT_PTR CALLBACK
advancedProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_INITDIALOG:
hAdv = hwndDlg;
Adv_InitDialog();
return TRUE;
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_SYSTRAYBATTERYMETER:
case IDC_PASSWORDLOGON:
case IDC_VIDEODIMDISPLAY:
if (HIWORD(wParam) == BN_CLICKED)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_LIDCLOSE:
case IDC_POWERBUTTON:
case IDC_SLEEPBUTTON:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
}
break;
case WM_NOTIFY:
{
LPNMHDR lpnm = (LPNMHDR)lParam;
if (lpnm->code == (UINT)PSN_APPLY)
{
Adv_SaveData(hwndDlg);
}
return TRUE;
}
}
return FALSE;
}
static void AddItem(HWND hDlgCtrl, int ResourceId, LPARAM lParam, POWER_ACTION * lpAction) static VOID
AddItem(HWND hDlgCtrl, INT ResourceId, LPARAM lParam, POWER_ACTION * lpAction)
{ {
TCHAR szBuffer[MAX_PATH]; TCHAR szBuffer[MAX_PATH];
LRESULT Index; LRESULT Index;
@ -96,11 +45,12 @@ static void AddItem(HWND hDlgCtrl, int ResourceId, LPARAM lParam, POWER_ACTION *
} }
} }
static int FindActionIndex(POWER_ACTION * lpAction, DWORD dwActionSize, POWER_ACTION poAction) static INT
FindActionIndex(POWER_ACTION * lpAction, DWORD dwActionSize, POWER_ACTION poAction)
{ {
int Index; INT Index;
for (Index = 0; Index < (int) dwActionSize; Index++) for (Index = 0; Index < (INT)dwActionSize; Index++)
{ {
if (lpAction[Index] == poAction) if (lpAction[Index] == poAction)
return Index; return Index;
@ -109,7 +59,8 @@ static int FindActionIndex(POWER_ACTION * lpAction, DWORD dwActionSize, POWER_AC
return -1; return -1;
} }
static BOOLEAN IsBatteryUsed() static BOOLEAN
IsBatteryUsed(VOID)
{ {
SYSTEM_BATTERY_STATE sbs; SYSTEM_BATTERY_STATE sbs;
@ -128,7 +79,8 @@ static BOOLEAN IsBatteryUsed()
return FALSE; return FALSE;
} }
POWER_ACTION GetPowerActionFromPolicy(POWER_ACTION_POLICY * Policy) POWER_ACTION
GetPowerActionFromPolicy(POWER_ACTION_POLICY *Policy)
{ {
POWER_ACTION poAction = PowerActionNone; POWER_ACTION poAction = PowerActionNone;
/* /*
@ -171,10 +123,11 @@ POWER_ACTION GetPowerActionFromPolicy(POWER_ACTION_POLICY * Policy)
return poAction; return poAction;
} }
void ShowCurrentPowerActionPolicy(HWND hDlgCtrl, VOID
POWER_ACTION * lpAction, ShowCurrentPowerActionPolicy(HWND hDlgCtrl,
POWER_ACTION *lpAction,
DWORD dwActionSize, DWORD dwActionSize,
POWER_ACTION_POLICY * Policy) POWER_ACTION_POLICY *Policy)
{ {
int poActionIndex; int poActionIndex;
POWER_ACTION poAction; POWER_ACTION poAction;
@ -190,8 +143,9 @@ void ShowCurrentPowerActionPolicy(HWND hDlgCtrl,
SendMessage(hDlgCtrl, CB_SETCURSEL, (WPARAM)poActionIndex, (LPARAM)0); SendMessage(hDlgCtrl, CB_SETCURSEL, (WPARAM)poActionIndex, (LPARAM)0);
} }
BOOLEAN SaveCurrentPowerActionPolicy(IN HWND hDlgCtrl, BOOLEAN
OUT POWER_ACTION_POLICY * Policy) SaveCurrentPowerActionPolicy(IN HWND hDlgCtrl,
OUT POWER_ACTION_POLICY *Policy)
{ {
LRESULT Index; LRESULT Index;
LRESULT ItemData; LRESULT ItemData;
@ -236,7 +190,8 @@ BOOLEAN SaveCurrentPowerActionPolicy(IN HWND hDlgCtrl,
//------------------------------------------------------------------- //-------------------------------------------------------------------
void ShowCurrentPowerActionPolicies(HWND hwndDlg) VOID
ShowCurrentPowerActionPolicies(HWND hwndDlg)
{ {
TCHAR szAction[MAX_PATH]; TCHAR szAction[MAX_PATH];
@ -323,7 +278,8 @@ void ShowCurrentPowerActionPolicies(HWND hwndDlg)
} }
} }
void Adv_InitDialog() VOID
Adv_InitDialog(VOID)
{ {
HWND hList1; HWND hList1;
HWND hList2; HWND hList2;
@ -445,7 +401,8 @@ void Adv_InitDialog()
} }
void Adv_SaveData(HWND hwndDlg) static VOID
Adv_SaveData(HWND hwndDlg)
{ {
BOOL bSystrayBatteryMeter; BOOL bSystrayBatteryMeter;
BOOL bPasswordLogon; BOOL bPasswordLogon;
@ -529,3 +486,51 @@ void Adv_SaveData(HWND hwndDlg)
Adv_InitDialog(); Adv_InitDialog();
} }
/* Property page dialog callback */
INT_PTR CALLBACK
AdvancedDlgProc(HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
hAdv = hwndDlg;
Adv_InitDialog();
return TRUE;
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_SYSTRAYBATTERYMETER:
case IDC_PASSWORDLOGON:
case IDC_VIDEODIMDISPLAY:
if (HIWORD(wParam) == BN_CLICKED)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_LIDCLOSE:
case IDC_POWERBUTTON:
case IDC_SLEEPBUTTON:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
}
break;
case WM_NOTIFY:
{
LPNMHDR lpnm = (LPNMHDR)lParam;
if (lpnm->code == (UINT)PSN_APPLY)
{
Adv_SaveData(hwndDlg);
}
return TRUE;
}
}
return FALSE;
}

View file

@ -20,35 +20,8 @@
#include "resource.h" #include "resource.h"
#include "powercfg.h" #include "powercfg.h"
BOOLEAN Ala_InitData(HWND); static BOOLEAN
Ala_InitData(HWND hwndDlg)
/* Property page dialog callback */
INT_PTR CALLBACK
alarmsProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
UNREFERENCED_PARAMETER(lParam);
UNREFERENCED_PARAMETER(wParam);
switch(uMsg)
{
case WM_INITDIALOG:
if (!Ala_InitData(hwndDlg))
{
//TODO
//handle initialization error
}
return TRUE;
default:
break;
}
return FALSE;
}
BOOLEAN Ala_InitData(HWND hwndDlg)
{ {
TCHAR szAction[MAX_PATH]; TCHAR szAction[MAX_PATH];
TCHAR szText[MAX_PATH]; TCHAR szText[MAX_PATH];
@ -197,3 +170,27 @@ BOOLEAN Ala_InitData(HWND hwndDlg)
return TRUE; return TRUE;
} }
/* Property page dialog callback */
INT_PTR CALLBACK
AlarmsDlgProc(HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
UNREFERENCED_PARAMETER(wParam);
switch(uMsg)
{
case WM_INITDIALOG:
if (!Ala_InitData(hwndDlg))
{
//TODO
//handle initialization error
}
return TRUE;
default:
break;
}
return FALSE;
}

View file

@ -26,48 +26,12 @@
#include "powercfg.h" #include "powercfg.h"
void Hib_InitDialog(HWND);
INT_PTR Hib_SaveData(HWND);
BOOLEAN Pos_InitData(); BOOLEAN Pos_InitData();
void Adv_InitDialog(); void Adv_InitDialog();
/* Property page dialog callback */
INT_PTR CALLBACK
hibernateProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_INITDIALOG:
Hib_InitDialog(hwndDlg);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_HIBERNATEFILE:
if (HIWORD(wParam) == BN_CLICKED)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
}
break;
case WM_NOTIFY:
{
LPNMHDR lpnm = (LPNMHDR)lParam;
if (lpnm->code == (UINT)PSN_APPLY)
{
return Hib_SaveData(hwndDlg);
}
}
}
return FALSE;
}
void Hib_InitDialog(HWND hwndDlg) static VOID
Hib_InitDialog(HWND hwndDlg)
{ {
SYSTEM_POWER_CAPABILITIES PowerCaps; SYSTEM_POWER_CAPABILITIES PowerCaps;
MEMORYSTATUSEX msex; MEMORYSTATUSEX msex;
@ -145,7 +109,8 @@ void Hib_InitDialog(HWND hwndDlg)
} }
} }
INT_PTR Hib_SaveData(HWND hwndDlg) INT_PTR
Hib_SaveData(HWND hwndDlg)
{ {
BOOLEAN bHibernate; BOOLEAN bHibernate;
@ -161,3 +126,37 @@ INT_PTR Hib_SaveData(HWND hwndDlg)
return FALSE; return FALSE;
} }
/* Property page dialog callback */
INT_PTR CALLBACK
HibernateDlgProc(HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
Hib_InitDialog(hwndDlg);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_HIBERNATEFILE:
if (HIWORD(wParam) == BN_CLICKED)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
}
break;
case WM_NOTIFY:
{
LPNMHDR lpnm = (LPNMHDR)lParam;
if (lpnm->code == (UINT)PSN_APPLY)
{
return Hib_SaveData(hwndDlg);
}
}
}
return FALSE;
}

View file

@ -22,10 +22,7 @@
#define NUM_APPLETS (1) #define NUM_APPLETS (1)
static LONG APIENTRY Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam); static LONG APIENTRY Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK powershemesProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK alarmsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK advancedProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK hibernateProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
HINSTANCE hApplet = 0; HINSTANCE hApplet = 0;
GLOBAL_POWER_POLICY gGPP; GLOBAL_POWER_POLICY gGPP;
@ -76,39 +73,6 @@ InitPropSheetPage(PROPSHEETHEADER *ppsh, WORD idDlg, DLGPROC DlgProc)
} }
/* Property Sheet Callback */
int CALLBACK
PropSheetProc(
HWND hwndDlg,
UINT uMsg,
LPARAM lParam
)
{
UNREFERENCED_PARAMETER(hwndDlg);
switch(uMsg)
{
case PSCB_BUTTONPRESSED:
switch(lParam)
{
case PSBTN_OK: /* OK */
break;
case PSBTN_CANCEL: /* Cancel */
break;
case PSBTN_APPLYNOW: /* Apply now */
break;
case PSBTN_FINISH: /* Close */
break;
default:
return FALSE;
}
break;
case PSCB_INITIALIZED:
break;
}
return TRUE;
}
/* First Applet */ /* First Applet */
static LONG APIENTRY static LONG APIENTRY
Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam) Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
@ -130,7 +94,7 @@ Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE; psh.dwFlags = PSH_PROPTITLE;
psh.hwndParent = NULL; psh.hwndParent = NULL;
psh.hInstance = hApplet; psh.hInstance = hApplet;
psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON_1)); psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON_1));
@ -138,18 +102,17 @@ Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
psh.nPages = 0; psh.nPages = 0;
psh.nStartPage = 0; psh.nStartPage = 0;
psh.phpage = hpsp; psh.phpage = hpsp;
psh.pfnCallback = PropSheetProc;
InitPropSheetPage(&psh, IDD_PROPPAGEPOWERSHEMES, (DLGPROC) powershemesProc); InitPropSheetPage(&psh, IDD_PROPPAGEPOWERSHEMES, (DLGPROC)PowerSchemesDlgProc);
if (GetPwrCapabilities(&spc)) if (GetPwrCapabilities(&spc))
{ {
if (spc.SystemBatteriesPresent) if (spc.SystemBatteriesPresent)
{ {
InitPropSheetPage(&psh, IDD_PROPPAGEALARMS, (DLGPROC) alarmsProc); InitPropSheetPage(&psh, IDD_PROPPAGEALARMS, (DLGPROC)AlarmsDlgProc);
} }
} }
InitPropSheetPage(&psh, IDD_PROPPAGEADVANCED, (DLGPROC) advancedProc); InitPropSheetPage(&psh, IDD_PROPPAGEADVANCED, (DLGPROC)AdvancedDlgProc);
InitPropSheetPage(&psh, IDD_PROPPAGEHIBERNATE, (DLGPROC) hibernateProc); InitPropSheetPage(&psh, IDD_PROPPAGEHIBERNATE, (DLGPROC)HibernateDlgProc);
/* Load additional pages provided by shell extensions */ /* Load additional pages provided by shell extensions */
hpsxa = SHCreatePropSheetExtArray(HKEY_LOCAL_MACHINE, REGSTR_PATH_CONTROLSFOLDER TEXT("\\Power"), MAX_POWER_PAGES - psh.nPages); hpsxa = SHCreatePropSheetExtArray(HKEY_LOCAL_MACHINE, REGSTR_PATH_CONTROLSFOLDER TEXT("\\Power"), MAX_POWER_PAGES - psh.nPages);
@ -166,8 +129,7 @@ Applet1(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
/* Control Panel Callback */ /* Control Panel Callback */
LONG CALLBACK LONG CALLBACK
CPlApplet( CPlApplet(HWND hwndCPl,
HWND hwndCPl,
UINT uMsg, UINT uMsg,
LPARAM lParam1, LPARAM lParam1,
LPARAM lParam2) LPARAM lParam2)
@ -203,10 +165,8 @@ CPlApplet(
} }
BOOLEAN BOOLEAN WINAPI
WINAPI DllMain(HINSTANCE hinstDLL,
DllMain(
HINSTANCE hinstDLL,
DWORD dwReason, DWORD dwReason,
LPVOID lpvReserved) LPVOID lpvReserved)
{ {

View file

@ -18,6 +18,11 @@ extern UINT guiIndex;
#define MAX_POWER_PAGES 32 #define MAX_POWER_PAGES 32
INT_PTR CALLBACK PowerSchemesDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK AlarmsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK AdvancedDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK HibernateDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
#endif /* __CPL_SAMPLE_H */ #endif /* __CPL_SAMPLE_H */
/* EOF */ /* EOF */

View file

@ -49,132 +49,9 @@ POWER_POLICY gPP[MAX_POWER_POLICY];
UINT guiIndex = 0; UINT guiIndex = 0;
HWND hwndDialog; HWND hwndDialog;
void LoadConfig(HWND hwndDlg);
void Pos_InitPage(HWND hwndDlg);
BOOLEAN Pos_InitData();
void Pos_SaveData(HWND hwndDlg);
BOOLEAN
BOOLEAN CreateEnergyList(HWND hwnd); Pos_InitData(VOID)
static
BOOLEAN DelScheme(HWND hwnd)
{
INT iCurSel;
HWND hList;
TCHAR szBuf[1024], szBufT[1024];
UINT DelScheme;
hList = GetDlgItem(hwnd, IDC_ENERGYLIST);
iCurSel = SendMessage(hList, CB_GETCURSEL, 0, 0);
if (iCurSel == CB_ERR) return FALSE;
SendMessage(hList, CB_SETCURSEL, iCurSel, 0);
DelScheme = SendMessage(hList, CB_GETITEMDATA, (WPARAM)iCurSel, 0);
if (DelScheme == (UINT)CB_ERR) return FALSE;
LoadString(hApplet, IDS_DEL_SCHEME_TITLE, szBufT, sizeof(szBufT) / sizeof(TCHAR));
LoadString(hApplet, IDS_DEL_SCHEME, szBuf, sizeof(szBuf) / sizeof(TCHAR));
if (MessageBox(hwnd, (LPCTSTR)szBuf, (LPCTSTR)szBufT, MB_OKCANCEL | MB_ICONQUESTION) == IDOK)
{
UINT Current;
if (GetActivePwrScheme(&Current))
{
SendMessage(hList, CB_SETCURSEL, (WPARAM)0, 0);
SendMessage(hList, CB_DELETESTRING, (WPARAM)iCurSel, 0);
if (Current == DelScheme) Pos_SaveData(hwnd);
}
if (DeletePwrScheme(DelScheme) != 0) return TRUE;
}
return FALSE;
}
/* Property page dialog callback */
INT_PTR CALLBACK
powershemesProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_INITDIALOG:
hPos = hwndDlg;
hwndDialog = hwndDlg;
if (!Pos_InitData())
{
//TODO
// initialization failed
// handle error
MessageBox(hwndDlg,_T("Pos_InitData failed\n"), NULL, MB_OK);
}
if (!CreateEnergyList(GetDlgItem(hwndDlg, IDC_ENERGYLIST)))
{
//TODO
// initialization failed
// handle error
MessageBox(hwndDlg,_T("CreateEnergyList failed\n"), NULL, MB_OK);
}
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_ENERGYLIST:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
LoadConfig(hwndDlg);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_DELETE_BTN:
{
DelScheme(hwndDlg);
}
break;
case IDC_SAVEAS_BTN:
{
}
break;
case IDC_MONITORACLIST:
case IDC_MONITORDCLIST:
case IDC_DISKACLIST:
case IDC_DISKDCLIST:
case IDC_STANDBYACLIST:
case IDC_STANDBYDCLIST:
case IDC_HYBERNATEACLIST:
case IDC_HYBERNATEDCLIST:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
}
break;
case WM_NOTIFY:
{
LPNMHDR lpnm = (LPNMHDR)lParam;
if (lpnm->code == (UINT)PSN_APPLY)
{
Pos_SaveData(hwndDlg);
}
return TRUE;
}
break;
}
return FALSE;
}
BOOLEAN Pos_InitData()
{ {
SYSTEM_POWER_CAPABILITIES spc; SYSTEM_POWER_CAPABILITIES spc;
/* /*
@ -271,185 +148,9 @@ BOOLEAN Pos_InitData()
return TRUE; return TRUE;
} }
BOOLEAN CALLBACK callback_EnumPwrScheme(UINT uiIndex, DWORD dwName, LPTSTR sName, DWORD dwDesc,
LPWSTR sDesc, PPOWER_POLICY pp,LPARAM lParam )
{
int index;
UNREFERENCED_PARAMETER(lParam); static VOID
UNREFERENCED_PARAMETER(sDesc); LoadConfig(HWND hwndDlg)
UNREFERENCED_PARAMETER(dwDesc);
UNREFERENCED_PARAMETER(dwName);
if (ValidatePowerPolicies(0,pp))
{
if (guiIndex >= MAX_POWER_POLICY)
{
//FIXME
//implement store power policy dynamically
return FALSE;
}
memcpy(&gPP[guiIndex], pp, sizeof(POWER_POLICY));
guiIndex++;
index = (int) SendMessage(hList,
CB_ADDSTRING,
0,
(LPARAM)sName);
if (index == CB_ERR)
return FALSE;
SendMessage(hList,
CB_SETITEMDATA,
index,
(LPARAM)uiIndex);
if (aps == uiIndex)
{
SendMessage(hList,
CB_SELECTSTRING,
TRUE,
(LPARAM)sName);
LoadConfig(GetParent(hList));
}
}
return TRUE;
}
BOOLEAN CreateEnergyList(HWND hwnd)
{
BOOLEAN retval;
POWER_POLICY pp;
SYSTEM_POWER_CAPABILITIES spc;
hList = hwnd;
if (!GetActivePwrScheme(&aps))
return FALSE;
if (!ReadGlobalPwrPolicy(&gGPP))
return FALSE;
if (!ReadPwrScheme(aps,&pp))
return FALSE;
if (!ValidatePowerPolicies(&gGPP,0))
return FALSE;
/*
if (!SetActivePwrScheme(aps,&gGPP,&pp))
return FALSE;
*/
if (!GetPwrCapabilities(&spc))
return FALSE;
if (CanUserWritePwrScheme())
{
//TODO
// enable write / delete powerscheme button
}
Pos_InitPage(GetParent(hwnd));
if (!GetActivePwrScheme(&aps))
return FALSE;
retval = EnumPwrSchemes(callback_EnumPwrScheme, aps);
if(SendMessage(hwnd, CB_GETCOUNT, 0, 0) > 0)
{
EnableWindow(GetDlgItem(hwndDialog, IDC_DELETE_BTN),TRUE);
EnableWindow(GetDlgItem(hwndDialog, IDC_SAVEAS_BTN),TRUE);
}
return retval;
}
void Pos_InitPage(HWND hwndDlg)
{
int ifrom=0,i=0,imin=0;
HWND hwnd = NULL;
TCHAR szName[MAX_PATH];
LRESULT index;
for(i=1;i<9;i++)
{
switch(i)
{
case 1:
hwnd=GetDlgItem(hwndDlg, IDC_MONITORACLIST);
imin=IDS_TIMEOUT1;
break;
case 2:
hwnd=GetDlgItem(hwndDlg, IDC_STANDBYACLIST);
imin=IDS_TIMEOUT1;
break;
case 3:
hwnd=GetDlgItem(hwndDlg, IDC_DISKACLIST);
imin=IDS_TIMEOUT3;
break;
case 4:
hwnd=GetDlgItem(hwndDlg, IDC_HYBERNATEACLIST);
imin=IDS_TIMEOUT3;
break;
case 5:
hwnd=GetDlgItem(hwndDlg, IDC_MONITORDCLIST);
imin=IDS_TIMEOUT1;
break;
case 6:
hwnd=GetDlgItem(hwndDlg, IDC_STANDBYDCLIST);
imin=IDS_TIMEOUT1;
break;
case 7:
hwnd=GetDlgItem(hwndDlg, IDC_DISKDCLIST);
imin=IDS_TIMEOUT3;
break;
case 8:
hwnd=GetDlgItem(hwndDlg, IDC_HYBERNATEDCLIST);
imin=IDS_TIMEOUT3;
break;
default:
return;
}
for (ifrom=imin;ifrom<(IDS_TIMEOUT15+1);ifrom++)
{
if (LoadString(hApplet, ifrom, szName, MAX_PATH))
{
index = SendMessage(hwnd,
CB_ADDSTRING,
0,
(LPARAM)szName);
if (index == CB_ERR)
return;
SendMessage(hwnd,
CB_SETITEMDATA,
index,
(LPARAM)Sec[ifrom-IDS_TIMEOUT16]);
}
}
if (LoadString(hApplet, IDS_TIMEOUT16, szName, MAX_PATH))
{
index = SendMessage(hwnd,
CB_ADDSTRING,
0,
(LPARAM)szName);
if (index == CB_ERR)
return;
SendMessage(hwnd,
CB_SETITEMDATA,
index,
(LPARAM)Sec[0]);
}
}
}
void LoadConfig(HWND hwndDlg)
{ {
INT i=0, iCurSel=0; INT i=0, iCurSel=0;
UINT uiIndex; UINT uiIndex;
@ -539,10 +240,143 @@ void LoadConfig(HWND hwndDlg)
(LPARAM)0); (LPARAM)0);
} }
} }
} }
void Pos_SaveData(HWND hwndDlg)
BOOLEAN CALLBACK
callback_EnumPwrScheme(UINT uiIndex, DWORD dwName, LPTSTR sName, DWORD dwDesc,
LPWSTR sDesc, PPOWER_POLICY pp,LPARAM lParam)
{
int index;
UNREFERENCED_PARAMETER(lParam);
UNREFERENCED_PARAMETER(sDesc);
UNREFERENCED_PARAMETER(dwDesc);
UNREFERENCED_PARAMETER(dwName);
if (ValidatePowerPolicies(0,pp))
{
if (guiIndex >= MAX_POWER_POLICY)
{
//FIXME
//implement store power policy dynamically
return FALSE;
}
memcpy(&gPP[guiIndex], pp, sizeof(POWER_POLICY));
guiIndex++;
index = (int) SendMessage(hList,
CB_ADDSTRING,
0,
(LPARAM)sName);
if (index == CB_ERR)
return FALSE;
SendMessage(hList,
CB_SETITEMDATA,
index,
(LPARAM)uiIndex);
if (aps == uiIndex)
{
SendMessage(hList,
CB_SELECTSTRING,
TRUE,
(LPARAM)sName);
LoadConfig(GetParent(hList));
}
}
return TRUE;
}
static VOID
Pos_InitPage(HWND hwndDlg)
{
int ifrom=0,i=0,imin=0;
HWND hwnd = NULL;
TCHAR szName[MAX_PATH];
LRESULT index;
for(i=1;i<9;i++)
{
switch(i)
{
case 1:
hwnd=GetDlgItem(hwndDlg, IDC_MONITORACLIST);
imin=IDS_TIMEOUT1;
break;
case 2:
hwnd=GetDlgItem(hwndDlg, IDC_STANDBYACLIST);
imin=IDS_TIMEOUT1;
break;
case 3:
hwnd=GetDlgItem(hwndDlg, IDC_DISKACLIST);
imin=IDS_TIMEOUT3;
break;
case 4:
hwnd=GetDlgItem(hwndDlg, IDC_HYBERNATEACLIST);
imin=IDS_TIMEOUT3;
break;
case 5:
hwnd=GetDlgItem(hwndDlg, IDC_MONITORDCLIST);
imin=IDS_TIMEOUT1;
break;
case 6:
hwnd=GetDlgItem(hwndDlg, IDC_STANDBYDCLIST);
imin=IDS_TIMEOUT1;
break;
case 7:
hwnd=GetDlgItem(hwndDlg, IDC_DISKDCLIST);
imin=IDS_TIMEOUT3;
break;
case 8:
hwnd=GetDlgItem(hwndDlg, IDC_HYBERNATEDCLIST);
imin=IDS_TIMEOUT3;
break;
default:
return;
}
for (ifrom=imin;ifrom<(IDS_TIMEOUT15+1);ifrom++)
{
if (LoadString(hApplet, ifrom, szName, MAX_PATH))
{
index = SendMessage(hwnd,
CB_ADDSTRING,
0,
(LPARAM)szName);
if (index == CB_ERR)
return;
SendMessage(hwnd,
CB_SETITEMDATA,
index,
(LPARAM)Sec[ifrom-IDS_TIMEOUT16]);
}
}
if (LoadString(hApplet, IDS_TIMEOUT16, szName, MAX_PATH))
{
index = SendMessage(hwnd,
CB_ADDSTRING,
0,
(LPARAM)szName);
if (index == CB_ERR)
return;
SendMessage(hwnd,
CB_SETITEMDATA,
index,
(LPARAM)Sec[0]);
}
}
}
static VOID
Pos_SaveData(HWND hwndDlg)
{ {
INT iCurSel=0,tmp=0; INT iCurSel=0,tmp=0;
@ -621,3 +455,174 @@ void Pos_SaveData(HWND hwndDlg)
SetActivePwrScheme(iCurSel,NULL,&gPP[iCurSel]); SetActivePwrScheme(iCurSel,NULL,&gPP[iCurSel]);
LoadConfig(hwndDlg); LoadConfig(hwndDlg);
} }
static BOOLEAN
DelScheme(HWND hwnd)
{
INT iCurSel;
HWND hList;
TCHAR szBuf[1024], szBufT[1024];
UINT DelScheme;
hList = GetDlgItem(hwnd, IDC_ENERGYLIST);
iCurSel = SendMessage(hList, CB_GETCURSEL, 0, 0);
if (iCurSel == CB_ERR) return FALSE;
SendMessage(hList, CB_SETCURSEL, iCurSel, 0);
DelScheme = SendMessage(hList, CB_GETITEMDATA, (WPARAM)iCurSel, 0);
if (DelScheme == (UINT)CB_ERR) return FALSE;
LoadString(hApplet, IDS_DEL_SCHEME_TITLE, szBufT, sizeof(szBufT) / sizeof(TCHAR));
LoadString(hApplet, IDS_DEL_SCHEME, szBuf, sizeof(szBuf) / sizeof(TCHAR));
if (MessageBox(hwnd, (LPCTSTR)szBuf, (LPCTSTR)szBufT, MB_OKCANCEL | MB_ICONQUESTION) == IDOK)
{
UINT Current;
if (GetActivePwrScheme(&Current))
{
SendMessage(hList, CB_SETCURSEL, (WPARAM)0, 0);
SendMessage(hList, CB_DELETESTRING, (WPARAM)iCurSel, 0);
if (Current == DelScheme) Pos_SaveData(hwnd);
}
if (DeletePwrScheme(DelScheme) != 0) return TRUE;
}
return FALSE;
}
static BOOLEAN
CreateEnergyList(HWND hwnd)
{
BOOLEAN retval;
POWER_POLICY pp;
SYSTEM_POWER_CAPABILITIES spc;
hList = hwnd;
if (!GetActivePwrScheme(&aps))
return FALSE;
if (!ReadGlobalPwrPolicy(&gGPP))
return FALSE;
if (!ReadPwrScheme(aps,&pp))
return FALSE;
if (!ValidatePowerPolicies(&gGPP,0))
return FALSE;
/*
if (!SetActivePwrScheme(aps,&gGPP,&pp))
return FALSE;
*/
if (!GetPwrCapabilities(&spc))
return FALSE;
if (CanUserWritePwrScheme())
{
//TODO
// enable write / delete powerscheme button
}
Pos_InitPage(GetParent(hwnd));
if (!GetActivePwrScheme(&aps))
return FALSE;
retval = EnumPwrSchemes(callback_EnumPwrScheme, aps);
if(SendMessage(hwnd, CB_GETCOUNT, 0, 0) > 0)
{
EnableWindow(GetDlgItem(hwndDialog, IDC_DELETE_BTN),TRUE);
EnableWindow(GetDlgItem(hwndDialog, IDC_SAVEAS_BTN),TRUE);
}
return retval;
}
/* Property page dialog callback */
INT_PTR CALLBACK
PowerSchemesDlgProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_INITDIALOG:
hPos = hwndDlg;
hwndDialog = hwndDlg;
if (!Pos_InitData())
{
//TODO
// initialization failed
// handle error
MessageBox(hwndDlg,_T("Pos_InitData failed\n"), NULL, MB_OK);
}
if (!CreateEnergyList(GetDlgItem(hwndDlg, IDC_ENERGYLIST)))
{
//TODO
// initialization failed
// handle error
MessageBox(hwndDlg,_T("CreateEnergyList failed\n"), NULL, MB_OK);
}
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_ENERGYLIST:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
LoadConfig(hwndDlg);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_DELETE_BTN:
{
DelScheme(hwndDlg);
}
break;
case IDC_SAVEAS_BTN:
{
}
break;
case IDC_MONITORACLIST:
case IDC_MONITORDCLIST:
case IDC_DISKACLIST:
case IDC_DISKDCLIST:
case IDC_STANDBYACLIST:
case IDC_STANDBYDCLIST:
case IDC_HYBERNATEACLIST:
case IDC_HYBERNATEDCLIST:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
}
break;
case WM_NOTIFY:
{
LPNMHDR lpnm = (LPNMHDR)lParam;
if (lpnm->code == (UINT)PSN_APPLY)
{
Pos_SaveData(hwndDlg);
}
return TRUE;
}
break;
}
return FALSE;
}