reactos/dll/cpl/powercfg/alarms.c

190 lines
6.3 KiB
C

/*
* PROJECT: ReactOS Power Configuration Applet
* LICENSE: GPL - See COPYING in the top level directory
* FILE: dll/cpl/powercfg/alarms.c
* PURPOSE: alarms tab of applet
* PROGRAMMERS: Alexander Wurzinger (Lohnegrim at gmx dot net)
* Johannes Anderwald (johannes.anderwald@reactos.org)
* Martin Rottensteiner
* Dmitry Chapyshev (lentind@yandex.ru)
*/
#include "powercfg.h"
static BOOLEAN
Ala_InitData(HWND hwndDlg)
{
TCHAR szAction[MAX_PATH];
TCHAR szText[MAX_PATH];
TCHAR szSound[MAX_PATH];
TCHAR szMessage[MAX_PATH];
TCHAR szTemp[MAX_PATH];
TCHAR szBatteryLevel[MAX_PATH];
TCHAR szProgram[MAX_PATH];
if (!ReadGlobalPwrPolicy(&gGPP))
{
return FALSE;
}
if (gGPP.user.DischargePolicy[DISCHARGE_POLICY_LOW].Enable)
{
CheckDlgButton(hwndDlg, IDC_ALARM1,
gGPP.user.DischargePolicy[DISCHARGE_POLICY_LOW].Enable ? BST_CHECKED : BST_UNCHECKED);
if (LoadString(hApplet, IDS_PERCENT, szTemp, MAX_PATH))
{
_stprintf(szBatteryLevel, szTemp, gGPP.user.DischargePolicy[DISCHARGE_POLICY_LOW].BatteryLevel);
SetDlgItemText(hwndDlg, IDC_ALARMVALUE1, szBatteryLevel);
}
SendDlgItemMessage(hwndDlg, IDC_ALARMBAR1,
TBM_SETRANGE,
(WPARAM)TRUE,
(LPARAM)MAKELONG(0, 100));
SendDlgItemMessage(hwndDlg, IDC_ALARMBAR1,
TBM_SETTICFREQ,
(WPARAM)TRUE,
(LPARAM)20);
SendDlgItemMessage(hwndDlg, IDC_ALARMBAR1,
TBM_SETPOS,
(WPARAM)TRUE,
(LPARAM)gGPP.user.DischargePolicy[DISCHARGE_POLICY_LOW].BatteryLevel);
if (LoadString(hApplet, gGPP.user.DischargePolicy[DISCHARGE_POLICY_LOW].PowerPolicy.Action+IDS_PowerActionNone1, szAction, MAX_PATH))
{
SetDlgItemText(hwndDlg, IDC_ALARMAKTION1, szAction);
}
memset(szMessage, 0x0, sizeof(szMessage));
LoadString(hApplet, IDS_NOACTION, szMessage, MAX_PATH);
if (LOWORD(gGPP.user.DischargePolicy[DISCHARGE_POLICY_LOW].PowerPolicy.EventCode) & POWER_LEVEL_USER_NOTIFY_TEXT)
{
if (LOWORD(gGPP.user.DischargePolicy[DISCHARGE_POLICY_LOW].PowerPolicy.EventCode) & POWER_LEVEL_USER_NOTIFY_SOUND)
{
if (LoadString(hApplet, IDS_SOUND, szSound, MAX_PATH) && LoadString(hApplet, IDS_TEXT, szText, MAX_PATH))
{
_stprintf(szMessage,_T("%s, %s"),szSound,szText);
}
}
else
{
if (LoadString(hApplet, IDS_TEXT, szText, MAX_PATH))
{
_stprintf(szMessage,_T("%s"),szText);
}
}
}
else
{
if (LOWORD(gGPP.user.DischargePolicy[DISCHARGE_POLICY_LOW].PowerPolicy.EventCode) & POWER_LEVEL_USER_NOTIFY_SOUND)
{
if (LoadString(hApplet, IDS_SOUND, szSound, MAX_PATH))
{
_stprintf(szMessage,_T("%s"),szSound);
}
}
}
SetDlgItemText(hwndDlg, IDC_ALARMMSG1, szMessage);
if (LoadString(hApplet, IDS_PowerActionNone2, szProgram, MAX_PATH))
{
SetDlgItemText(hwndDlg, IDC_ALARMPROG1, szProgram);
}
}
if (gGPP.user.DischargePolicy[DISCHARGE_POLICY_CRITICAL].Enable)
{
CheckDlgButton(hwndDlg, IDC_ALARM2,
gGPP.user.DischargePolicy[DISCHARGE_POLICY_CRITICAL].Enable ? BST_CHECKED : BST_UNCHECKED);
if (LoadString(hApplet, IDS_PERCENT, szTemp, MAX_PATH))
{
_stprintf(szBatteryLevel, szTemp, gGPP.user.DischargePolicy[DISCHARGE_POLICY_CRITICAL].BatteryLevel);
SetDlgItemText(hwndDlg, IDC_ALARMVALUE2, szBatteryLevel);
}
SendDlgItemMessage(hwndDlg, IDC_ALARMBAR2,
TBM_SETRANGE,
(WPARAM)TRUE,
(LPARAM)MAKELONG(0, 100));
SendDlgItemMessage(hwndDlg, IDC_ALARMBAR2,
TBM_SETPOS,
(WPARAM)TRUE,
(LPARAM)gGPP.user.DischargePolicy[DISCHARGE_POLICY_CRITICAL].BatteryLevel);
if (LoadString(hApplet, gGPP.user.DischargePolicy[DISCHARGE_POLICY_CRITICAL].PowerPolicy.Action+IDS_PowerActionNone1, szAction, MAX_PATH))
{
SetDlgItemText(hwndDlg, IDC_ALARMAKTION2, szAction);
}
memset(szMessage, 0x0, sizeof(szMessage));
LoadString(hApplet, IDS_NOACTION, szMessage, MAX_PATH);
if (LOWORD(gGPP.user.DischargePolicy[DISCHARGE_POLICY_CRITICAL].PowerPolicy.EventCode) & POWER_LEVEL_USER_NOTIFY_TEXT)
{
if (LOWORD(gGPP.user.DischargePolicy[DISCHARGE_POLICY_CRITICAL].PowerPolicy.EventCode) & POWER_LEVEL_USER_NOTIFY_SOUND)
{
if (LoadString(hApplet, IDS_TEXT, szText, MAX_PATH) && LoadString(hApplet, IDS_SOUND, szSound, MAX_PATH))
{
_stprintf(szMessage,_T("%s, %s"),szSound,szText);
}
}
else
{
if (LoadString(hApplet, IDS_TEXT, szText, MAX_PATH))
{
_stprintf(szMessage,_T("%s"),szText);
}
}
}
else
{
if (LOWORD(gGPP.user.DischargePolicy[DISCHARGE_POLICY_CRITICAL].PowerPolicy.EventCode) & POWER_LEVEL_USER_NOTIFY_SOUND)
{
if (LoadString(hApplet, IDS_SOUND, szSound, MAX_PATH))
{
_stprintf(szMessage,_T("%s"),szSound);
}
}
}
SetDlgItemText(hwndDlg, IDC_ALARMMSG2, szMessage);
if (LoadString(hApplet, IDS_PowerActionNone2, szProgram, MAX_PATH))
{
SetDlgItemText(hwndDlg, IDC_ALARMPROG2, szProgram);
}
}
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;
}