static
-PPOWER_SCHEME
+BOOL
AddPowerScheme(
PPOWER_SCHEMES_PAGE_DATA pPageData,
UINT uId,
PPOWER_POLICY pp)
{
PPOWER_SCHEME pScheme;
+ BOOL bResult = FALSE;
pScheme = HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY,
sizeof(POWER_SCHEME));
if (pScheme == NULL)
- return NULL;
+ return FALSE;
+
+ pScheme->uId = uId;
+ CopyMemory(&pScheme->PowerPolicy, pp, sizeof(POWER_POLICY));
+
+ if (dwName != 0)
+ {
+ pScheme->pszName = HeapAlloc(GetProcessHeap(),
+ HEAP_ZERO_MEMORY,
+ dwName);
+ if (pScheme->pszName == NULL)
+ goto done;
+
+ _tcscpy(pScheme->pszName, pszName);
+ }
+
+ if (dwDescription != 0)
+ {
+ pScheme->pszDescription = HeapAlloc(GetProcessHeap(),
+ HEAP_ZERO_MEMORY,
+ dwDescription);
+ if (pScheme->pszDescription == NULL)
+ goto done;
- pScheme->pszName = HeapAlloc(GetProcessHeap(),
- HEAP_ZERO_MEMORY,
- dwName + sizeof(TCHAR));
+ _tcscpy(pScheme->pszDescription, pszDescription);
+ }
- pScheme->pszDescription = HeapAlloc(GetProcessHeap(),
- HEAP_ZERO_MEMORY,
- dwDescription + sizeof(TCHAR));
- if (pScheme->pszName == NULL || pScheme->pszDescription == NULL)
+ InsertTailList(&pPageData->PowerSchemesList, &pScheme->ListEntry);
+ bResult = TRUE;
+
+done:
+ if (bResult == FALSE)
{
if (pScheme->pszName)
HeapFree(GetProcessHeap(), 0, pScheme->pszName);
HeapFree(GetProcessHeap(), 0, pScheme->pszDescription);
HeapFree(GetProcessHeap(), 0, pScheme);
- return NULL;
}
- pScheme->uId = uId;
- _tcscpy(pScheme->pszName, pszName);
- _tcscpy(pScheme->pszDescription, pszDescription);
-
- CopyMemory(&pScheme->PowerPolicy, pp, sizeof(POWER_POLICY));
-
- InsertTailList(&pPageData->PowerSchemesList, &pScheme->ListEntry);
-
- return pScheme;
+ return bResult;
}
static
VOID
LoadConfig(
- HWND hwndDlg)
+ HWND hwndDlg,
+ PPOWER_SCHEMES_PAGE_DATA pPageData)
{
PPOWER_SCHEME pScheme;
INT i = 0, iCurSel = 0;
(LPARAM)0);
}
}
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE_BTN),
+ (pScheme != pPageData->pActivePowerScheme));
}
static VOID
-Pos_SaveData(HWND hwndDlg)
+Pos_SaveData(
+ HWND hwndDlg,
+ PPOWER_SCHEMES_PAGE_DATA pPageData)
{
PPOWER_SCHEME pScheme;
INT iCurSel, tmp;
pScheme->PowerPolicy.mach.DozeS4TimeoutDc = Sec[tmp];
}
- SetActivePwrScheme(pScheme->uId, NULL, &pScheme->PowerPolicy);
- LoadConfig(hwndDlg);
+ if (SetActivePwrScheme(pScheme->uId, NULL, &pScheme->PowerPolicy))
+ {
+ pPageData->pActivePowerScheme = pScheme;
+ EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE_BTN), FALSE);
+ }
}
{
SendMessage(hList, CB_SETCURSEL, (WPARAM)0, 0);
SendMessage(hList, CB_DELETESTRING, (WPARAM)iCurSel, 0);
- if (Current == pScheme->uId)
- Pos_SaveData(hwnd);
}
if (DeletePwrScheme(pScheme->uId) != 0)
POWER_POLICY pp;
SYSTEM_POWER_CAPABILITIES spc;
HWND hwndList;
- unsigned aps = 0;
+ UINT aps = 0;
hwndList = GetDlgItem(hwndDlg, IDC_ENERGYLIST);
TRUE,
(LPARAM)pScheme->pszName);
- LoadConfig(hwndDlg);
+ pPageData->pActivePowerScheme = pScheme;
+ LoadConfig(hwndDlg, pPageData);
}
ListEntry = ListEntry->Flink;
if (SendMessage(hwndList, CB_GETCOUNT, 0, 0) > 0)
{
- EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE_BTN), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDC_SAVEAS_BTN), TRUE);
}
case IDC_ENERGYLIST:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
- LoadConfig(hwndDlg);
+ LoadConfig(hwndDlg, pPageData);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
LPNMHDR lpnm = (LPNMHDR)lParam;
if (lpnm->code == (UINT)PSN_APPLY)
{
- Pos_SaveData(hwndDlg);
+ Pos_SaveData(hwndDlg, pPageData);
}
return TRUE;
}