ReactOS 0.4.15-dev-7942-gd23573b
powershemes.c File Reference
#include "powercfg.h"
#include <debug.h>
Include dependency graph for powershemes.c:

Go to the source code of this file.

Classes

struct  _POWER_SCHEME
 
struct  _POWER_SCHEMES_PAGE_DATA
 
struct  _SAVE_POWER_SCHEME_DATA
 

Typedefs

typedef struct _POWER_SCHEME POWER_SCHEME
 
typedef struct _POWER_SCHEMEPPOWER_SCHEME
 
typedef struct _POWER_SCHEMES_PAGE_DATA POWER_SCHEMES_PAGE_DATA
 
typedef struct _POWER_SCHEMES_PAGE_DATAPPOWER_SCHEMES_PAGE_DATA
 
typedef struct _SAVE_POWER_SCHEME_DATA SAVE_POWER_SCHEME_DATA
 
typedef struct _SAVE_POWER_SCHEME_DATAPSAVE_POWER_SCHEME_DATA
 

Functions

static PPOWER_SCHEME AddPowerScheme (PPOWER_SCHEMES_PAGE_DATA pPageData, UINT uId, DWORD dwName, LPTSTR pszName, DWORD dwDescription, LPWSTR pszDescription, PPOWER_POLICY pp)
 
static VOID DeletePowerScheme (PPOWER_SCHEME pScheme)
 
static BOOLEAN CALLBACK EnumPowerSchemeCallback (UINT uiIndex, DWORD dwName, LPTSTR pszName, DWORD dwDesc, LPWSTR pszDesc, PPOWER_POLICY pp, LPARAM lParam)
 
static VOID BuildSchemesList (PPOWER_SCHEMES_PAGE_DATA pPageData)
 
static VOID DestroySchemesList (PPOWER_SCHEMES_PAGE_DATA pPageData)
 
BOOLEAN Pos_InitData (HWND hwndDlg)
 
static VOID LoadConfig (HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData, PPOWER_SCHEME pScheme)
 
static VOID Pos_InitPage (HWND hwndDlg)
 
static VOID Pos_SaveData (HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData)
 
static BOOL DelScheme (HWND hwnd, PPOWER_SCHEMES_PAGE_DATA pPageData)
 
static BOOL SavePowerScheme (HWND hwndDlg, PSAVE_POWER_SCHEME_DATA pSaveSchemeData)
 
INT_PTR CALLBACK SaveSchemeDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static VOID SaveScheme (HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData)
 
static BOOL CreateEnergyList (HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData)
 
INT_PTR CALLBACK PowerSchemesDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 

Variables

UINT Sec []
 

Typedef Documentation

◆ POWER_SCHEME

◆ POWER_SCHEMES_PAGE_DATA

◆ PPOWER_SCHEME

◆ PPOWER_SCHEMES_PAGE_DATA

◆ PSAVE_POWER_SCHEME_DATA

◆ SAVE_POWER_SCHEME_DATA

Function Documentation

◆ AddPowerScheme()

static PPOWER_SCHEME AddPowerScheme ( PPOWER_SCHEMES_PAGE_DATA  pPageData,
UINT  uId,
DWORD  dwName,
LPTSTR  pszName,
DWORD  dwDescription,
LPWSTR  pszDescription,
PPOWER_POLICY  pp 
)
static

Definition at line 64 of file powershemes.c.

72{
73 PPOWER_SCHEME pScheme;
74 BOOL bResult = FALSE;
75
76 pScheme = HeapAlloc(GetProcessHeap(),
78 sizeof(POWER_SCHEME));
79 if (pScheme == NULL)
80 return NULL;
81
82 pScheme->uId = uId;
83 CopyMemory(&pScheme->PowerPolicy, pp, sizeof(POWER_POLICY));
84
85 if (dwName != 0)
86 {
87 pScheme->pszName = HeapAlloc(GetProcessHeap(),
89 dwName);
90 if (pScheme->pszName == NULL)
91 goto done;
92
93 _tcscpy(pScheme->pszName, pszName);
94 }
95
96 if (dwDescription != 0)
97 {
100 dwDescription);
101 if (pScheme->pszDescription == NULL)
102 goto done;
103
104 _tcscpy(pScheme->pszDescription, pszDescription);
105 }
106
107 InsertTailList(&pPageData->PowerSchemesList, &pScheme->ListEntry);
108 bResult = TRUE;
109
110done:
111 if (bResult == FALSE)
112 {
113 if (pScheme->pszName)
114 HeapFree(GetProcessHeap(), 0, pScheme->pszName);
115
116 if (pScheme->pszDescription)
117 HeapFree(GetProcessHeap(), 0, pScheme->pszDescription);
118
119 HeapFree(GetProcessHeap(), 0, pScheme);
120 pScheme = NULL;
121 }
122
123 return pScheme;
124}
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
#define InsertTailList(ListHead, Entry)
unsigned int BOOL
Definition: ntddk_ex.h:94
#define _tcscpy
Definition: tchar.h:623
LIST_ENTRY PowerSchemesList
Definition: powershemes.c:27
LIST_ENTRY ListEntry
Definition: powershemes.c:17
LPTSTR pszDescription
Definition: powershemes.c:20
LPTSTR pszName
Definition: powershemes.c:19
POWER_POLICY PowerPolicy
Definition: powershemes.c:21
#define CopyMemory
Definition: winbase.h:1710

Referenced by EnumPowerSchemeCallback(), and SavePowerScheme().

◆ BuildSchemesList()

static VOID BuildSchemesList ( PPOWER_SCHEMES_PAGE_DATA  pPageData)
static

Definition at line 172 of file powershemes.c.

174{
176
178}
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
static BOOLEAN CALLBACK EnumPowerSchemeCallback(UINT uiIndex, DWORD dwName, LPTSTR pszName, DWORD dwDesc, LPWSTR pszDesc, PPOWER_POLICY pp, LPARAM lParam)
Definition: powershemes.c:147
BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC lpfnPwrSchemesEnumProc, LPARAM lParam)
Definition: powrprof.c:219
LONG_PTR LPARAM
Definition: windef.h:208

Referenced by PowerSchemesDlgProc().

◆ CreateEnergyList()

static BOOL CreateEnergyList ( HWND  hwndDlg,
PPOWER_SCHEMES_PAGE_DATA  pPageData 
)
static

Definition at line 738 of file powershemes.c.

741{
742 PLIST_ENTRY ListEntry;
743 PPOWER_SCHEME pScheme;
744 INT index;
745 POWER_POLICY pp;
747 HWND hwndList;
748 UINT aps = 0;
749
750 hwndList = GetDlgItem(hwndDlg, IDC_ENERGYLIST);
751
752 if (!GetActivePwrScheme(&aps))
753 return FALSE;
754
756 return FALSE;
757
758 if (!ReadPwrScheme(aps, &pp))
759 return FALSE;
760
761 if (!ValidatePowerPolicies(&gGPP, 0))
762 return FALSE;
763
764/*
765 if (!SetActivePwrScheme(aps, &gGPP, &pp))
766 return FALSE;
767*/
768
769 if (!GetPwrCapabilities(&spc))
770 return FALSE;
771
773 {
774 // TODO:
775 // Enable write / delete powerscheme button
776 }
777
778 Pos_InitPage(hwndDlg);
779
780 if (!GetActivePwrScheme(&aps))
781 return FALSE;
782
783 ListEntry = pPageData->PowerSchemesList.Flink;
784 while (ListEntry != &pPageData->PowerSchemesList)
785 {
786 pScheme = CONTAINING_RECORD(ListEntry, POWER_SCHEME, ListEntry);
787
788 index = (int)SendMessage(hwndList,
790 0,
791 (LPARAM)pScheme->pszName);
792 if (index == CB_ERR)
793 break;
794
795 SendMessage(hwndList,
797 index,
798 (LPARAM)pScheme);
799
800 if (aps == pScheme->uId)
801 {
802 SendMessage(hwndList,
804 TRUE,
805 (LPARAM)pScheme->pszName);
806
807 pPageData->pActivePowerScheme = pScheme;
808 LoadConfig(hwndDlg, pPageData, pScheme);
809 }
810
811 ListEntry = ListEntry->Flink;
812 }
813
814 if (SendMessage(hwndList, CB_GETCOUNT, 0, 0) > 0)
815 {
817 }
818
819 return TRUE;
820}
#define index(s, c)
Definition: various.h:29
#define IDC_SAVEAS_BTN
Definition: resource.h:66
#define IDC_ENERGYLIST
Definition: resource.h:59
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
GLuint index
Definition: glext.h:6031
unsigned int UINT
Definition: ndis.h:50
GLOBAL_POWER_POLICY gGPP
Definition: powercfg.c:23
static VOID LoadConfig(HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData, PPOWER_SCHEME pScheme)
Definition: powershemes.c:237
static VOID Pos_InitPage(HWND hwndDlg)
Definition: powershemes.c:334
BOOLEAN WINAPI GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES lpSystemPowerCapabilities)
Definition: powrprof.c:358
BOOLEAN WINAPI ReadPwrScheme(UINT uiID, PPOWER_POLICY pPowerPolicy)
Definition: powrprof.c:610
BOOLEAN WINAPI GetActivePwrScheme(PUINT puiID)
Definition: powrprof.c:285
BOOLEAN WINAPI ValidatePowerPolicies(PGLOBAL_POWER_POLICY pGPP, PPOWER_POLICY pPP)
Definition: powrprof.c:1017
BOOLEAN WINAPI CanUserWritePwrScheme(VOID)
Definition: powrprof.c:79
BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY pGlobalPowerPolicy)
Definition: powrprof.c:521
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
PPOWER_SCHEME pActivePowerScheme
Definition: powershemes.c:28
int32_t INT
Definition: typedefs.h:58
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
#define CB_SELECTSTRING
Definition: winuser.h:1960
#define CB_SETITEMDATA
Definition: winuser.h:1966
#define CB_ERR
Definition: winuser.h:2435
#define CB_GETCOUNT
Definition: winuser.h:1942
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define CB_ADDSTRING
Definition: winuser.h:1936
#define SendMessage
Definition: winuser.h:5843
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)

Referenced by PowerSchemesDlgProc().

◆ DeletePowerScheme()

static VOID DeletePowerScheme ( PPOWER_SCHEME  pScheme)
static

Definition at line 129 of file powershemes.c.

131{
132 RemoveEntryList(&pScheme->ListEntry);
133
134 if (pScheme->pszName)
135 HeapFree(GetProcessHeap(), 0, pScheme->pszName);
136
137 if (pScheme->pszDescription)
138 HeapFree(GetProcessHeap(), 0, pScheme->pszDescription);
139
140 HeapFree(GetProcessHeap(), 0, pScheme);
141}
#define RemoveEntryList(Entry)
Definition: env_spec_w32.h:986

Referenced by DelScheme(), DestroySchemesList(), and SavePowerScheme().

◆ DelScheme()

static BOOL DelScheme ( HWND  hwnd,
PPOWER_SCHEMES_PAGE_DATA  pPageData 
)
static

Definition at line 529 of file powershemes.c.

532{
533 WCHAR szTitleBuffer[256];
534 WCHAR szRawBuffer[256], szCookedBuffer[512];
535 INT iCurSel;
536 HWND hList;
537 PPOWER_SCHEME pScheme;
538 WCHAR szErrorText[512];
539
541
542 iCurSel = SendMessage(hList, CB_GETCURSEL, 0, 0);
543 if (iCurSel == CB_ERR)
544 return FALSE;
545
546 SendMessage(hList, CB_SETCURSEL, iCurSel, 0);
547
548 pScheme = (PPOWER_SCHEME)SendMessage(hList, CB_GETITEMDATA, (WPARAM)iCurSel, 0);
549 if (pScheme == (PPOWER_SCHEME)CB_ERR)
550 return FALSE;
551
552 LoadStringW(hApplet, IDS_DEL_SCHEME_TITLE, szTitleBuffer, ARRAYSIZE(szTitleBuffer));
553 LoadStringW(hApplet, IDS_DEL_SCHEME, szRawBuffer, ARRAYSIZE(szRawBuffer));
554 StringCchPrintfW(szCookedBuffer, ARRAYSIZE(szCookedBuffer), szRawBuffer, pScheme->pszName);
555
556 if (MessageBoxW(hwnd, szCookedBuffer, szTitleBuffer, MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES)
557 {
558 if (!DeletePwrScheme(pScheme->uId))
559 {
560 LoadStringW(hApplet, IDS_DEL_SCHEME_ERROR, szErrorText, sizeof(szErrorText) / sizeof(WCHAR));
561 MessageBoxW(NULL, szErrorText, NULL, MB_OK | MB_ICONERROR);
562 return FALSE;
563 }
564
565 iCurSel = SendMessage(hList, CB_FINDSTRING, -1, (LPARAM)pScheme->pszName);
566 if (iCurSel != CB_ERR)
567 SendMessage(hList, CB_DELETESTRING, iCurSel, 0);
568
569 DeletePowerScheme(pScheme);
570
571 iCurSel = SendMessage(hList, CB_FINDSTRING, -1, (LPARAM)pPageData->pActivePowerScheme->pszName);
572 if (iCurSel != CB_ERR)
573 {
574 SendMessage(hList, CB_SETCURSEL, iCurSel, 0);
575 }
576 else
577 {
579 }
580
581 LoadConfig(hwnd, pPageData, NULL);
582 return TRUE;
583 }
584
585 return FALSE;
586}
HINSTANCE hApplet
Definition: access.c:17
#define IDS_DEL_SCHEME
Definition: resource.h:48
#define IDS_DEL_SCHEME_TITLE
Definition: resource.h:49
#define IDS_DEL_SCHEME_ERROR
Definition: resource.h:50
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
HWND hList
Definition: livecd.c:10
static VOID DeletePowerScheme(PPOWER_SCHEME pScheme)
Definition: powershemes.c:129
struct _POWER_SCHEME * PPOWER_SCHEME
BOOLEAN WINAPI DeletePwrScheme(UINT uiIndex)
Definition: powrprof.c:99
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
UINT_PTR WPARAM
Definition: windef.h:207
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define CB_SETCURSEL
Definition: winuser.h:1961
#define MB_YESNO
Definition: winuser.h:817
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONERROR
Definition: winuser.h:787
#define CB_GETITEMDATA
Definition: winuser.h:1950
#define MB_OK
Definition: winuser.h:790
#define MB_ICONQUESTION
Definition: winuser.h:789
#define MB_DEFBUTTON2
Definition: winuser.h:799
#define CB_FINDSTRING
Definition: winuser.h:1939
#define IDYES
Definition: winuser.h:835
#define CB_GETCURSEL
Definition: winuser.h:1943
#define CB_DELETESTRING
Definition: winuser.h:1937
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by PowerSchemesDlgProc().

◆ DestroySchemesList()

static VOID DestroySchemesList ( PPOWER_SCHEMES_PAGE_DATA  pPageData)
static

Definition at line 183 of file powershemes.c.

185{
186 PLIST_ENTRY ListEntry;
187 PPOWER_SCHEME pScheme;
188
189 for (;;)
190 {
191 ListEntry = pPageData->PowerSchemesList.Flink;
192 if (ListEntry == &pPageData->PowerSchemesList)
193 break;
194
195 pScheme = CONTAINING_RECORD(ListEntry, POWER_SCHEME, ListEntry);
196 DeletePowerScheme(pScheme);
197 }
198
199 pPageData->pActivePowerScheme = NULL;
200 pPageData->pSelectedPowerScheme = NULL;
201}
PPOWER_SCHEME pSelectedPowerScheme
Definition: powershemes.c:29

Referenced by PowerSchemesDlgProc().

◆ EnumPowerSchemeCallback()

static BOOLEAN CALLBACK EnumPowerSchemeCallback ( UINT  uiIndex,
DWORD  dwName,
LPTSTR  pszName,
DWORD  dwDesc,
LPWSTR  pszDesc,
PPOWER_POLICY  pp,
LPARAM  lParam 
)
static

Definition at line 147 of file powershemes.c.

155{
156 if (ValidatePowerPolicies(0, pp))
157 {
159 uiIndex,
160 dwName,
161 pszName,
162 dwDesc,
163 pszDesc,
164 pp);
165 }
166
167 return TRUE;
168}
LPARAM lParam
Definition: combotst.c:139
static PPOWER_SCHEME AddPowerScheme(PPOWER_SCHEMES_PAGE_DATA pPageData, UINT uId, DWORD dwName, LPTSTR pszName, DWORD dwDescription, LPWSTR pszDescription, PPOWER_POLICY pp)
Definition: powershemes.c:64

Referenced by BuildSchemesList().

◆ LoadConfig()

static VOID LoadConfig ( HWND  hwndDlg,
PPOWER_SCHEMES_PAGE_DATA  pPageData,
PPOWER_SCHEME  pScheme 
)
static

Definition at line 237 of file powershemes.c.

241{
242 INT i = 0, iCurSel = 0;
243 TCHAR szTemp[MAX_PATH];
244 TCHAR szConfig[MAX_PATH];
245 PPOWER_POLICY pp;
246 HWND hwndCtrl;
247
248 iCurSel = (INT)SendDlgItemMessage(hwndDlg,
251 0,
252 0);
253 if (iCurSel == CB_ERR)
254 return;
255
257 (iCurSel > 0));
258
259 if (pScheme == NULL)
260 {
261 pScheme = (PPOWER_SCHEME)SendDlgItemMessage(hwndDlg,
264 (WPARAM)iCurSel,
265 0);
266 if (pScheme == (PPOWER_SCHEME)CB_ERR)
267 return;
268 }
269
270 pPageData->pSelectedPowerScheme = pScheme;
271
272 if (LoadString(hApplet, IDS_CONFIG1, szTemp, MAX_PATH))
273 {
274 _stprintf(szConfig, szTemp, pScheme->pszName);
275 SetWindowText(GetDlgItem(hwndDlg, IDC_GRPDETAIL), szConfig);
276 }
277
278 pp = &pScheme->PowerPolicy;
279
280 for (i = 0; i < 16; i++)
281 {
282 hwndCtrl = GetDlgItem(hwndDlg, IDC_MONITORACLIST);
283 if (hwndCtrl != NULL && Sec[i] == pp->user.VideoTimeoutAc)
284 {
285 SendMessage(hwndCtrl, CB_SETCURSEL, i, 0);
286 }
287
288 hwndCtrl = GetDlgItem(hwndDlg, IDC_MONITORDCLIST);
289 if (hwndCtrl != NULL && Sec[i] == pp->user.VideoTimeoutDc)
290 {
291 SendMessage(hwndCtrl, CB_SETCURSEL, i, 0);
292 }
293
294 hwndCtrl = GetDlgItem(hwndDlg, IDC_DISKACLIST);
295 if (hwndCtrl != NULL && Sec[i] == pp->user.SpindownTimeoutAc)
296 {
297 SendMessage(hwndCtrl, CB_SETCURSEL, i - 2, 0);
298 }
299
300 hwndCtrl = GetDlgItem(hwndDlg, IDC_DISKDCLIST);
301 if (hwndCtrl != NULL && Sec[i] == pp->user.SpindownTimeoutDc)
302 {
303 SendMessage(hwndCtrl, CB_SETCURSEL, i - 2, 0);
304 }
305
306 hwndCtrl = GetDlgItem(hwndDlg, IDC_STANDBYACLIST);
307 if (hwndCtrl != NULL && Sec[i] == pp->user.IdleTimeoutAc)
308 {
309 SendMessage(hwndCtrl, CB_SETCURSEL, i, 0);
310 }
311
312 hwndCtrl = GetDlgItem(hwndDlg, IDC_STANDBYDCLIST);
313 if (hwndCtrl != NULL && Sec[i] == pp->user.IdleTimeoutDc)
314 {
315 SendMessage(hwndCtrl, CB_SETCURSEL, i, 0);
316 }
317
318 hwndCtrl = GetDlgItem(hwndDlg, IDC_HIBERNATEACLIST);
319 if (hwndCtrl != NULL && Sec[i] == pp->mach.DozeS4TimeoutAc)
320 {
321 SendMessage(hwndCtrl, CB_SETCURSEL, i, 0);
322 }
323
324 hwndCtrl = GetDlgItem(hwndDlg, IDC_HIBERNATEDCLIST);
325 if (hwndCtrl != NULL && Sec[i] == pp->mach.DozeS4TimeoutDc)
326 {
327 SendMessage(hwndCtrl, CB_SETCURSEL, i, 0);
328 }
329 }
330}
#define IDC_DELETE_BTN
Definition: resource.h:67
#define IDS_CONFIG1
Definition: resource.h:11
#define IDC_MONITORDCLIST
Definition: resource.h:69
#define IDC_STANDBYACLIST
Definition: resource.h:66
#define IDC_MONITORACLIST
Definition: resource.h:68
#define IDC_DISKDCLIST
Definition: resource.h:71
#define IDC_GRPDETAIL
Definition: resource.h:60
#define IDC_HIBERNATEACLIST
Definition: resource.h:73
#define IDC_DISKACLIST
Definition: resource.h:70
#define IDC_STANDBYDCLIST
Definition: resource.h:67
#define IDC_HIBERNATEDCLIST
Definition: resource.h:74
#define MAX_PATH
Definition: compat.h:34
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define _stprintf
Definition: utility.h:124
#define INT
Definition: polytest.cpp:20
UINT Sec[]
Definition: powershemes.c:41
MACHINE_POWER_POLICY mach
Definition: powrprof.h:92
USER_POWER_POLICY user
Definition: powrprof.h:91
ULONG VideoTimeoutDc
Definition: powrprof.h:80
ULONG SpindownTimeoutAc
Definition: powrprof.h:81
ULONG SpindownTimeoutDc
Definition: powrprof.h:82
ULONG IdleTimeoutAc
Definition: powrprof.h:70
ULONG IdleTimeoutDc
Definition: powrprof.h:71
ULONG VideoTimeoutAc
Definition: powrprof.h:79
#define LoadString
Definition: winuser.h:5819
#define SetWindowText
Definition: winuser.h:5857
#define SendDlgItemMessage
Definition: winuser.h:5842
char TCHAR
Definition: xmlstorage.h:189

Referenced by check_loadconfig(), CreateEnergyList(), DelScheme(), LdrpInitializeProcess(), PowerSchemesDlgProc(), and SaveScheme().

◆ Pos_InitData()

BOOLEAN Pos_InitData ( HWND  hwndDlg)

Definition at line 205 of file powershemes.c.

207{
209
210 if (!GetPwrCapabilities(&spc))
211 {
212 return FALSE;
213 }
214
216 (spc.SystemS1 || spc.SystemS2 || spc.SystemS3) ? SW_SHOW : SW_HIDE);
218 (spc.SystemS1 || spc.SystemS2 || spc.SystemS3) ? SW_SHOW : SW_HIDE);
221 (spc.SystemS1 || spc.SystemS2 || spc.SystemS3) ? SW_SHOW : SW_HIDE);
222
230
231 return TRUE;
232}
#define IDC_STANDBY
Definition: resource.h:77
#define IDC_HIBERNATE
Definition: resource.h:75
BOOLEAN SystemBatteriesPresent
Definition: ntpoapi.h:374
#define SW_HIDE
Definition: winuser.h:768
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_SHOW
Definition: winuser.h:775

Referenced by PowerSchemesDlgProc().

◆ Pos_InitPage()

static VOID Pos_InitPage ( HWND  hwndDlg)
static

Definition at line 334 of file powershemes.c.

335{
336 int ifrom = 0, i = 0, imin = 0;
337 HWND hwnd = NULL;
340
341 for (i = 1; i < 9; i++)
342 {
343 switch (i)
344 {
345 case 1:
348 break;
349
350 case 2:
353 break;
354
355 case 3:
356 hwnd = GetDlgItem(hwndDlg, IDC_DISKACLIST);
358 break;
359
360 case 4:
363 break;
364
365 case 5:
368 break;
369
370 case 6:
373 break;
374
375 case 7:
376 hwnd = GetDlgItem(hwndDlg, IDC_DISKDCLIST);
378 break;
379
380 case 8:
383 break;
384
385 default:
386 hwnd = NULL;
387 return;
388 }
389
390 if (hwnd == NULL)
391 continue;
392
393 for (ifrom = imin; ifrom < (IDS_TIMEOUT15 + 1); ifrom++)
394 {
395 if (LoadString(hApplet, ifrom, szName, MAX_PATH))
396 {
399 0,
400 (LPARAM)szName);
401 if (index == CB_ERR)
402 return;
403
406 index,
407 (LPARAM)Sec[ifrom - IDS_TIMEOUT16]);
408 }
409 }
410
412 {
415 0,
416 (LPARAM)szName);
417 if (index == CB_ERR)
418 return;
419
422 index,
423 (LPARAM)Sec[0]);
424 }
425 }
426}
#define IDS_TIMEOUT16
Definition: resource.h:32
#define IDS_TIMEOUT1
Definition: resource.h:33
#define IDS_TIMEOUT15
Definition: resource.h:47
#define IDS_TIMEOUT3
Definition: resource.h:35
static const WCHAR szName[]
Definition: powrprof.c:45
static int imin(int a, int b)
Definition: format.c:174
LONG_PTR LRESULT
Definition: windef.h:209

Referenced by CreateEnergyList().

◆ Pos_SaveData()

static VOID Pos_SaveData ( HWND  hwndDlg,
PPOWER_SCHEMES_PAGE_DATA  pPageData 
)
static

Definition at line 430 of file powershemes.c.

433{
434 PPOWER_SCHEME pScheme;
435 HWND hwndCtrl;
436 INT tmp;
437
438 pScheme = pPageData->pSelectedPowerScheme;
439
440 hwndCtrl = GetDlgItem(hwndDlg, IDC_MONITORACLIST);
441 if (hwndCtrl != NULL)
442 {
443 tmp = (INT)SendMessage(hwndCtrl, CB_GETCURSEL, 0, 0);
444 if (tmp > 0 && tmp < 16)
445 {
446 pScheme->PowerPolicy.user.VideoTimeoutAc = Sec[tmp];
447 }
448 }
449
450 hwndCtrl = GetDlgItem(hwndDlg, IDC_MONITORDCLIST);
451 if (hwndCtrl != NULL)
452 {
453 tmp = (INT)SendMessage(hwndCtrl, CB_GETCURSEL, 0, 0);
454 if (tmp > 0 && tmp < 16)
455 {
456 pScheme->PowerPolicy.user.VideoTimeoutDc = Sec[tmp];
457 }
458 }
459
460 hwndCtrl = GetDlgItem(hwndDlg, IDC_DISKACLIST);
461 if (hwndCtrl != NULL)
462 {
463 tmp = (INT)SendMessage(hwndCtrl, CB_GETCURSEL, 0, 0);
464 if (tmp > 0 && tmp < 16)
465 {
466 pScheme->PowerPolicy.user.SpindownTimeoutAc = Sec[tmp + 2];
467 }
468 }
469
470 hwndCtrl = GetDlgItem(hwndDlg, IDC_DISKDCLIST);
471 if (hwndCtrl != NULL)
472 {
473 tmp = (INT)SendMessage(hwndCtrl, CB_GETCURSEL, 0, 0);
474 if (tmp > 0 && tmp < 16)
475 {
476 pScheme->PowerPolicy.user.SpindownTimeoutDc = Sec[tmp + 2];
477 }
478 }
479
480 hwndCtrl = GetDlgItem(hwndDlg, IDC_STANDBYACLIST);
481 if (hwndCtrl != NULL)
482 {
483 tmp = (INT)SendMessage(hwndCtrl, CB_GETCURSEL, 0, 0);
484 if (tmp > 0 && tmp < 16)
485 {
486 pScheme->PowerPolicy.user.IdleTimeoutAc = Sec[tmp];
487 }
488 }
489
490 hwndCtrl = GetDlgItem(hwndDlg, IDC_STANDBYDCLIST);
491 if (hwndCtrl != NULL)
492 {
493 tmp = (INT)SendMessage(hwndCtrl, CB_GETCURSEL, 0, 0);
494 if (tmp > 0 && tmp < 16)
495 {
496 pScheme->PowerPolicy.user.IdleTimeoutDc = Sec[tmp];
497 }
498 }
499
500 hwndCtrl = GetDlgItem(hwndDlg, IDC_HIBERNATEACLIST);
501 if (hwndCtrl != NULL)
502 {
503 tmp = (INT)SendMessage(hwndCtrl, CB_GETCURSEL, 0, 0);
504 if (tmp > 0 && tmp < 16)
505 {
506 pScheme->PowerPolicy.mach.DozeS4TimeoutAc = Sec[tmp];
507 }
508 }
509
510 hwndCtrl = GetDlgItem(hwndDlg, IDC_HIBERNATEDCLIST);
511 if (hwndCtrl != NULL)
512 {
513 tmp = (INT)SendMessage(hwndCtrl, CB_GETCURSEL, 0, 0);
514 if (tmp > 0 && tmp < 16)
515 {
516 pScheme->PowerPolicy.mach.DozeS4TimeoutDc = Sec[tmp];
517 }
518 }
519
520 if (SetActivePwrScheme(pScheme->uId, NULL, &pScheme->PowerPolicy))
521 {
522 pPageData->pActivePowerScheme = pScheme;
523 }
524}
BOOLEAN WINAPI SetActivePwrScheme(UINT uiID, PGLOBAL_POWER_POLICY lpGlobalPowerPolicy, PPOWER_POLICY lpPowerPolicy)
Definition: powrprof.c:642

Referenced by PowerSchemesDlgProc(), and SaveScheme().

◆ PowerSchemesDlgProc()

INT_PTR CALLBACK PowerSchemesDlgProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 825 of file powershemes.c.

830{
831 PPOWER_SCHEMES_PAGE_DATA pPageData;
832
834
835 switch (uMsg)
836 {
837 case WM_INITDIALOG:
841 SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pPageData);
842
843 BuildSchemesList(pPageData);
844
845 if (!Pos_InitData(hwndDlg))
846 {
847 // TODO:
848 // Initialization failed
849 // Handle error
850 MessageBox(hwndDlg,_T("Pos_InitData failed\n"), NULL, MB_OK);
851 }
852
853 if (!CreateEnergyList(hwndDlg, pPageData))
854 {
855 // TODO:
856 // Initialization failed
857 // Handle error
858 MessageBox(hwndDlg,_T("CreateEnergyList failed\n"), NULL, MB_OK);
859 }
860 return TRUE;
861
862 case WM_DESTROY:
863 if (pPageData)
864 {
865 DestroySchemesList(pPageData);
866 HeapFree(GetProcessHeap(), 0, pPageData);
868 }
869 break;
870
871 case WM_COMMAND:
872 switch(LOWORD(wParam))
873 {
874 case IDC_ENERGYLIST:
876 {
877 LoadConfig(hwndDlg, pPageData, NULL);
878 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
879 }
880 break;
881
882 case IDC_DELETE_BTN:
883 DelScheme(hwndDlg, pPageData);
884 break;
885
886 case IDC_SAVEAS_BTN:
887 SaveScheme(hwndDlg, pPageData);
888 break;
889
892 case IDC_DISKACLIST:
893 case IDC_DISKDCLIST:
899 {
900 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
901 }
902 break;
903 }
904 break;
905
906 case WM_NOTIFY:
907 switch (((LPNMHDR)lParam)->code)
908 {
909 case PSN_APPLY:
910 Pos_SaveData(hwndDlg, pPageData);
911 return TRUE;
912
913 case PSN_SETACTIVE:
914 Pos_InitData(hwndDlg);
915 return TRUE;
916 }
917 break;
918 }
919
920 return FALSE;
921}
WPARAM wParam
Definition: combotst.c:138
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define LOWORD(l)
Definition: pedump.c:82
static VOID Pos_SaveData(HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData)
Definition: powershemes.c:430
static BOOL CreateEnergyList(HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData)
Definition: powershemes.c:738
BOOLEAN Pos_InitData(HWND hwndDlg)
Definition: powershemes.c:205
static BOOL DelScheme(HWND hwnd, PPOWER_SCHEMES_PAGE_DATA pPageData)
Definition: powershemes.c:529
struct _POWER_SCHEMES_PAGE_DATA POWER_SCHEMES_PAGE_DATA
struct _POWER_SCHEMES_PAGE_DATA * PPOWER_SCHEMES_PAGE_DATA
static VOID BuildSchemesList(PPOWER_SCHEMES_PAGE_DATA pPageData)
Definition: powershemes.c:172
static VOID DestroySchemesList(PPOWER_SCHEMES_PAGE_DATA pPageData)
Definition: powershemes.c:183
static VOID SaveScheme(HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData)
Definition: powershemes.c:674
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSN_APPLY
Definition: prsht.h:117
#define PSN_SETACTIVE
Definition: prsht.h:115
#define WM_NOTIFY
Definition: richedit.h:61
Definition: inflate.c:139
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
#define HIWORD(l)
Definition: typedefs.h:247
#define _T(x)
Definition: vfdio.h:22
#define DWLP_USER
Definition: winuser.h:872
#define WM_COMMAND
Definition: winuser.h:1740
#define WM_INITDIALOG
Definition: winuser.h:1739
#define CBN_SELCHANGE
Definition: winuser.h:1979
HWND WINAPI GetParent(_In_ HWND)
#define MessageBox
Definition: winuser.h:5822
#define WM_DESTROY
Definition: winuser.h:1609

Referenced by Applet1().

◆ SavePowerScheme()

static BOOL SavePowerScheme ( HWND  hwndDlg,
PSAVE_POWER_SCHEME_DATA  pSaveSchemeData 
)
static

Definition at line 591 of file powershemes.c.

594{
595 PPOWER_SCHEMES_PAGE_DATA pPageData;
596 PPOWER_SCHEME pScheme;
597 TCHAR szSchemeName[512];
598 BOOL bRet = FALSE;
599
600 pPageData = pSaveSchemeData->pPageData;
601
602 GetDlgItemText(hwndDlg, IDC_SCHEMENAME, szSchemeName, ARRAYSIZE(szSchemeName));
603
604 pScheme = AddPowerScheme(pPageData,
605 -1,
606 (_tcslen(szSchemeName) + 1) * sizeof(TCHAR),
607 szSchemeName,
608 sizeof(TCHAR),
609 TEXT(""),
610 &pPageData->pSelectedPowerScheme->PowerPolicy);
611 if (pScheme != NULL)
612 {
613 if (WritePwrScheme(&pScheme->uId,
614 pScheme->pszName,
615 pScheme->pszDescription,
616 &pScheme->PowerPolicy))
617 {
618 pSaveSchemeData->pNewScheme = pScheme;
619 bRet = TRUE;
620 }
621 else
622 {
623 DeletePowerScheme(pScheme);
624 }
625 }
626
627 return bRet;
628}
#define IDC_SCHEMENAME
Definition: resource.h:113
#define TEXT(s)
Definition: k32.h:26
BOOLEAN WINAPI WritePwrScheme(PUINT puiID, LPWSTR lpszName, LPWSTR lpszDescription, PPOWER_POLICY pPowerPolicy)
Definition: powrprof.c:766
PPOWER_SCHEME pNewScheme
Definition: powershemes.c:36
PPOWER_SCHEMES_PAGE_DATA pPageData
Definition: powershemes.c:35
#define GetDlgItemText
Definition: winuser.h:5785
#define _tcslen
Definition: xmlstorage.h:198

Referenced by SaveSchemeDlgProc().

◆ SaveScheme()

static VOID SaveScheme ( HWND  hwndDlg,
PPOWER_SCHEMES_PAGE_DATA  pPageData 
)
static

Definition at line 674 of file powershemes.c.

677{
678 SAVE_POWER_SCHEME_DATA SaveSchemeData;
679 POWER_POLICY BackupPowerPolicy;
680 HWND hwndList;
681 INT index;
682
683 SaveSchemeData.pPageData = pPageData;
684 SaveSchemeData.pNewScheme = NULL;
685 SaveSchemeData.hwndPage = hwndDlg;
686
687 CopyMemory(&BackupPowerPolicy,
689 sizeof(POWER_POLICY));
690
691 Pos_SaveData(hwndDlg, pPageData);
692
695 hwndDlg,
697 (LPARAM)&SaveSchemeData))
698 {
699 if (SaveSchemeData.pNewScheme)
700 {
701 hwndList = GetDlgItem(hwndDlg, IDC_ENERGYLIST);
702
703 index = (INT)SendDlgItemMessage(hwndDlg,
706 -1,
707 (LPARAM)SaveSchemeData.pNewScheme->pszName);
708
709 if (index == CB_ERR)
710 {
711 index = (INT)SendMessage(hwndList,
713 0,
714 (LPARAM)SaveSchemeData.pNewScheme->pszName);
715 if (index != CB_ERR)
716 {
717 SendMessage(hwndList,
719 index,
720 (LPARAM)SaveSchemeData.pNewScheme);
721
722 SendMessage(hwndList, CB_SETCURSEL, (WPARAM)index, 0);
724 }
725
726 }
727 LoadConfig(hwndDlg, pPageData, SaveSchemeData.pNewScheme);
728 }
729 }
730
732 &BackupPowerPolicy,
733 sizeof(POWER_POLICY));
734}
#define IDD_SAVEPOWERSCHEME
Definition: resource.h:20
INT_PTR CALLBACK SaveSchemeDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: powershemes.c:633
#define DialogBoxParam
Definition: winuser.h:5764
#define MAKEINTRESOURCE
Definition: winuser.h:591

Referenced by PowerSchemesDlgProc().

◆ SaveSchemeDlgProc()

INT_PTR CALLBACK SaveSchemeDlgProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 633 of file powershemes.c.

638{
639 PSAVE_POWER_SCHEME_DATA pSaveSchemeData;
640
641 pSaveSchemeData = (PSAVE_POWER_SCHEME_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
642
643 switch (uMsg)
644 {
645 case WM_INITDIALOG:
646 pSaveSchemeData = (PSAVE_POWER_SCHEME_DATA)lParam;
647 SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pSaveSchemeData);
648
649 SetDlgItemText(hwndDlg,
651 pSaveSchemeData->pPageData->pSelectedPowerScheme->pszName);
652 return TRUE;
653
654 case WM_COMMAND:
655 switch(LOWORD(wParam))
656 {
657 case IDOK:
658 EndDialog(hwndDlg, SavePowerScheme(hwndDlg, pSaveSchemeData));
659 break;
660
661 case IDCANCEL:
662 EndDialog(hwndDlg, FALSE);
663 break;
664 }
665 break;
666 }
667
668 return FALSE;
669}
struct _SAVE_POWER_SCHEME_DATA * PSAVE_POWER_SCHEME_DATA
static BOOL SavePowerScheme(HWND hwndDlg, PSAVE_POWER_SCHEME_DATA pSaveSchemeData)
Definition: powershemes.c:591
#define IDCANCEL
Definition: winuser.h:831
#define IDOK
Definition: winuser.h:830
#define SetDlgItemText
Definition: winuser.h:5849
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)

Referenced by SaveScheme().

Variable Documentation

◆ Sec

UINT Sec[]
Initial value:
=
{
60,
120,
180,
300,
600,
900,
1200,
1500,
1800,
2700,
3600,
7200,
10800,
14400,
18000,
0
}

Definition at line 41 of file powershemes.c.

Referenced by LoadConfig(), Pos_InitPage(), Pos_SaveData(), and SetScreenSaver().