- 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 "powercfg.h"
HWND hAdv=0;
void Adv_InitDialog();
void Adv_SaveData(HWND hwndDlg);
HWND hAdv = 0;
static POWER_ACTION g_SystemBatteries[3];
static POWER_ACTION g_PowerButton[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];
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)
return Index;
@ -109,7 +59,8 @@ static int FindActionIndex(POWER_ACTION * lpAction, DWORD dwActionSize, POWER_AC
return -1;
}
static BOOLEAN IsBatteryUsed()
static BOOLEAN
IsBatteryUsed(VOID)
{
SYSTEM_BATTERY_STATE sbs;
@ -128,7 +79,8 @@ static BOOLEAN IsBatteryUsed()
return FALSE;
}
POWER_ACTION GetPowerActionFromPolicy(POWER_ACTION_POLICY * Policy)
POWER_ACTION
GetPowerActionFromPolicy(POWER_ACTION_POLICY *Policy)
{
POWER_ACTION poAction = PowerActionNone;
/*
@ -171,10 +123,11 @@ POWER_ACTION GetPowerActionFromPolicy(POWER_ACTION_POLICY * Policy)
return poAction;
}
void ShowCurrentPowerActionPolicy(HWND hDlgCtrl,
POWER_ACTION * lpAction,
VOID
ShowCurrentPowerActionPolicy(HWND hDlgCtrl,
POWER_ACTION *lpAction,
DWORD dwActionSize,
POWER_ACTION_POLICY * Policy)
POWER_ACTION_POLICY *Policy)
{
int poActionIndex;
POWER_ACTION poAction;
@ -190,8 +143,9 @@ void ShowCurrentPowerActionPolicy(HWND hDlgCtrl,
SendMessage(hDlgCtrl, CB_SETCURSEL, (WPARAM)poActionIndex, (LPARAM)0);
}
BOOLEAN SaveCurrentPowerActionPolicy(IN HWND hDlgCtrl,
OUT POWER_ACTION_POLICY * Policy)
BOOLEAN
SaveCurrentPowerActionPolicy(IN HWND hDlgCtrl,
OUT POWER_ACTION_POLICY *Policy)
{
LRESULT Index;
LRESULT ItemData;
@ -236,7 +190,8 @@ BOOLEAN SaveCurrentPowerActionPolicy(IN HWND hDlgCtrl,
//-------------------------------------------------------------------
void ShowCurrentPowerActionPolicies(HWND hwndDlg)
VOID
ShowCurrentPowerActionPolicies(HWND hwndDlg)
{
TCHAR szAction[MAX_PATH];
@ -323,7 +278,8 @@ void ShowCurrentPowerActionPolicies(HWND hwndDlg)
}
}
void Adv_InitDialog()
VOID
Adv_InitDialog(VOID)
{
HWND hList1;
HWND hList2;
@ -445,7 +401,8 @@ void Adv_InitDialog()
}
void Adv_SaveData(HWND hwndDlg)
static VOID
Adv_SaveData(HWND hwndDlg)
{
BOOL bSystrayBatteryMeter;
BOOL bPasswordLogon;
@ -529,3 +486,51 @@ void Adv_SaveData(HWND hwndDlg)
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 "powercfg.h"
BOOLEAN Ala_InitData(HWND);
/* 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)
static BOOLEAN
Ala_InitData(HWND hwndDlg)
{
TCHAR szAction[MAX_PATH];
TCHAR szText[MAX_PATH];
@ -197,3 +170,27 @@ BOOLEAN Ala_InitData(HWND hwndDlg)
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"
void Hib_InitDialog(HWND);
INT_PTR Hib_SaveData(HWND);
BOOLEAN Pos_InitData();
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;
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;
@ -161,3 +126,37 @@ INT_PTR Hib_SaveData(HWND hwndDlg)
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)
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;
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 */
static LONG APIENTRY
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));
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE;
psh.dwFlags = PSH_PROPTITLE;
psh.hwndParent = NULL;
psh.hInstance = hApplet;
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.nStartPage = 0;
psh.phpage = hpsp;
psh.pfnCallback = PropSheetProc;
InitPropSheetPage(&psh, IDD_PROPPAGEPOWERSHEMES, (DLGPROC) powershemesProc);
InitPropSheetPage(&psh, IDD_PROPPAGEPOWERSHEMES, (DLGPROC)PowerSchemesDlgProc);
if (GetPwrCapabilities(&spc))
{
if (spc.SystemBatteriesPresent)
{
InitPropSheetPage(&psh, IDD_PROPPAGEALARMS, (DLGPROC) alarmsProc);
InitPropSheetPage(&psh, IDD_PROPPAGEALARMS, (DLGPROC)AlarmsDlgProc);
}
}
InitPropSheetPage(&psh, IDD_PROPPAGEADVANCED, (DLGPROC) advancedProc);
InitPropSheetPage(&psh, IDD_PROPPAGEHIBERNATE, (DLGPROC) hibernateProc);
InitPropSheetPage(&psh, IDD_PROPPAGEADVANCED, (DLGPROC)AdvancedDlgProc);
InitPropSheetPage(&psh, IDD_PROPPAGEHIBERNATE, (DLGPROC)HibernateDlgProc);
/* Load additional pages provided by shell extensions */
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 */
LONG CALLBACK
CPlApplet(
HWND hwndCPl,
CPlApplet(HWND hwndCPl,
UINT uMsg,
LPARAM lParam1,
LPARAM lParam2)
@ -203,10 +165,8 @@ CPlApplet(
}
BOOLEAN
WINAPI
DllMain(
HINSTANCE hinstDLL,
BOOLEAN WINAPI
DllMain(HINSTANCE hinstDLL,
DWORD dwReason,
LPVOID lpvReserved)
{

View file

@ -18,6 +18,11 @@ extern UINT guiIndex;
#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 */
/* EOF */

View file

@ -49,132 +49,9 @@ POWER_POLICY gPP[MAX_POWER_POLICY];
UINT guiIndex = 0;
HWND hwndDialog;
void LoadConfig(HWND hwndDlg);
void Pos_InitPage(HWND hwndDlg);
BOOLEAN Pos_InitData();
void Pos_SaveData(HWND hwndDlg);
BOOLEAN CreateEnergyList(HWND hwnd);
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()
BOOLEAN
Pos_InitData(VOID)
{
SYSTEM_POWER_CAPABILITIES spc;
/*
@ -271,185 +148,9 @@ BOOLEAN Pos_InitData()
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);
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;
}
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)
static VOID
LoadConfig(HWND hwndDlg)
{
INT i=0, iCurSel=0;
UINT uiIndex;
@ -539,10 +240,143 @@ void LoadConfig(HWND hwndDlg)
(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;
@ -621,3 +455,174 @@ void Pos_SaveData(HWND hwndDlg)
SetActivePwrScheme(iCurSel,NULL,&gPP[iCurSel]);
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;
}