Merge all settings in a single struct. This is required to implement the administrative options.

svn path=/trunk/; revision=29088
This commit is contained in:
Eric Kohl 2007-09-17 22:29:35 +00:00
parent fec8f2d929
commit c04f5503a6
7 changed files with 83 additions and 91 deletions

View file

@ -26,8 +26,9 @@ APPLET Applets[NUM_APPLETS] =
{IDI_CPLACCESS, IDS_CPLSYSTEMNAME, IDS_CPLSYSTEMDESCRIPTION, SystemApplet}
};
static VOID
InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, PGLOBAL_DATA pGlobalData)
{
ZeroMemory(psp, sizeof(PROPSHEETPAGE));
psp->dwSize = sizeof(PROPSHEETPAGE);
@ -35,6 +36,7 @@ InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
psp->hInstance = hApplet;
psp->pszTemplate = MAKEINTRESOURCE(idDlg);
psp->pfnDlgProc = DlgProc;
psp->lParam = (LPARAM)pGlobalData;
}
@ -43,12 +45,18 @@ InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
LONG CALLBACK
SystemApplet(VOID)
{
PGLOBAL_DATA pGlobalData;
PROPSHEETPAGE psp[5];
PROPSHEETHEADER psh;
TCHAR Caption[1024];
INT ret;
LoadString(hApplet, IDS_CPLSYSTEMNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
if (pGlobalData == NULL)
return 0;
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE;
@ -60,13 +68,17 @@ SystemApplet(VOID)
psh.nStartPage = 0;
psh.ppsp = psp;
InitPropSheetPage(&psp[0], IDD_PROPPAGEKEYBOARD, (DLGPROC)KeyboardPageProc);
InitPropSheetPage(&psp[1], IDD_PROPPAGESOUND, (DLGPROC)SoundPageProc);
InitPropSheetPage(&psp[2], IDD_PROPPAGEDISPLAY, (DLGPROC)DisplayPageProc);
InitPropSheetPage(&psp[3], IDD_PROPPAGEMOUSE, (DLGPROC)MousePageProc);
InitPropSheetPage(&psp[4], IDD_PROPPAGEGENERAL, (DLGPROC)GeneralPageProc);
InitPropSheetPage(&psp[0], IDD_PROPPAGEKEYBOARD, (DLGPROC)KeyboardPageProc, pGlobalData);
InitPropSheetPage(&psp[1], IDD_PROPPAGESOUND, (DLGPROC)SoundPageProc, pGlobalData);
InitPropSheetPage(&psp[2], IDD_PROPPAGEDISPLAY, (DLGPROC)DisplayPageProc, pGlobalData);
InitPropSheetPage(&psp[3], IDD_PROPPAGEMOUSE, (DLGPROC)MousePageProc, pGlobalData);
InitPropSheetPage(&psp[4], IDD_PROPPAGEGENERAL, (DLGPROC)GeneralPageProc, pGlobalData);
return (LONG)(PropertySheet(&psh) != -1);
ret = PropertySheet(&psh);
HeapFree(GetProcessHeap(), 0, pGlobalData);
return (LONG)(ret != -1);
}
/* Control Panel Callback */

View file

@ -11,6 +11,44 @@ typedef struct _APPLET
APPLET_INITPROC AppletProc;
} APPLET, *PAPPLET;
typedef struct _GLOBAL_DATA
{
/* keyboard page */
STICKYKEYS stickyKeys;
STICKYKEYS oldStickyKeys;
FILTERKEYS filterKeys;
FILTERKEYS oldFilterKeys;
TOGGLEKEYS toggleKeys;
TOGGLEKEYS oldToggleKeys;
BOOL bKeyboardPref;
/* sound page */
SOUNDSENTRY ssSoundSentry;
BOOL bShowSounds;
/* display page */
HIGHCONTRAST highContrast;
UINT uCaretBlinkTime;
UINT uCaretWidth;
BOOL fShowCaret;
RECT rcCaret;
RECT rcOldCaret;
/* mouse page */
MOUSEKEYS mouseKeys;
/* general page */
ACCESSTIMEOUT accessTimeout;
SERIALKEYS serialKeys;
TCHAR szActivePort[MAX_PATH];
TCHAR szPort[MAX_PATH];
BOOL bWarningSounds;
BOOL bSoundOnActivation;
} GLOBAL_DATA, *PGLOBAL_DATA;
extern HINSTANCE hApplet;
void ShowLastWin32Error(HWND hWndOwner);

View file

@ -16,15 +16,6 @@
#include "resource.h"
#include "access.h"
typedef struct _GLOBAL_DATA
{
HIGHCONTRAST highContrast;
UINT uCaretBlinkTime;
UINT uCaretWidth;
BOOL fShowCaret;
RECT rcCaret;
RECT rcOldCaret;
} GLOBAL_DATA, *PGLOBAL_DATA;
#define ID_BLINK_TIMER 346
@ -154,7 +145,7 @@ DisplayPageProc(HWND hwndDlg,
switch (uMsg)
{
case WM_INITDIALOG:
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
if (pGlobalData == NULL)
return FALSE;
@ -290,7 +281,6 @@ DisplayPageProc(HWND hwndDlg,
case WM_DESTROY:
KillTimer(hwndDlg, ID_BLINK_TIMER);
HeapFree(GetProcessHeap(), 0, pGlobalData);
break;
}

View file

@ -18,17 +18,6 @@
#include "access.h"
typedef struct _GLOBAL_DATA
{
ACCESSTIMEOUT accessTimeout;
SERIALKEYS serialKeys;
TCHAR szActivePort[MAX_PATH];
TCHAR szPort[MAX_PATH];
BOOL bWarningSounds;
BOOL bSoundOnActivation;
} GLOBAL_DATA, *PGLOBAL_DATA;
#define BAUDTICKS 6
static INT nBaudArray[BAUDTICKS] = {300, 1200, 2400, 4800, 9600, 19200};
@ -267,7 +256,7 @@ GeneralPageProc(HWND hwndDlg,
switch (uMsg)
{
case WM_INITDIALOG:
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
if (pGlobalData == NULL)
return FALSE;
@ -367,10 +356,7 @@ GeneralPageProc(HWND hwndDlg,
return TRUE;
}
break;
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pGlobalData);
break; }
}
return FALSE;
}

View file

@ -17,17 +17,6 @@
#include "resource.h"
#include "access.h"
typedef struct _GLOBAL_DATA
{
STICKYKEYS stickyKeys;
STICKYKEYS oldStickyKeys;
FILTERKEYS filterKeys;
FILTERKEYS oldFilterKeys;
TOGGLEKEYS toggleKeys;
TOGGLEKEYS oldToggleKeys;
BOOL bKeyboardPref;
} GLOBAL_DATA, *PGLOBAL_DATA;
#define BOUNCETICKS 5
static INT nBounceArray[BOUNCETICKS] = {500, 700, 1000, 1500, 2000};
@ -666,7 +655,7 @@ KeyboardPageProc(HWND hwndDlg,
switch (uMsg)
{
case WM_INITDIALOG:
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
if (pGlobalData == NULL)
return FALSE;
@ -756,10 +745,6 @@ KeyboardPageProc(HWND hwndDlg,
return TRUE;
}
break;
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pGlobalData);
break;
}
return FALSE;

View file

@ -16,11 +16,6 @@
#include "resource.h"
#include "access.h"
typedef struct _GLOBAL_DATA
{
MOUSEKEYS mouseKeys;
} GLOBAL_DATA, *PGLOBAL_DATA;
#define SPEEDTICKS 9
#define ACCELTICKS 9
@ -165,7 +160,7 @@ MousePageProc(HWND hwndDlg,
switch (uMsg)
{
case WM_INITDIALOG:
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
if (pGlobalData == NULL)
return FALSE;
@ -218,10 +213,6 @@ MousePageProc(HWND hwndDlg,
return TRUE;
}
break;
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pGlobalData);
break;
}
return FALSE;

View file

@ -16,28 +16,21 @@
#include "access.h"
typedef struct _SOUNDDATA
{
SOUNDSENTRY ssSoundSentry;
BOOL bShowSounds;
} SOUNDDATA, *PSOUNDDATA;
static VOID
OnInitDialog(HWND hwndDlg, PSOUNDDATA pSoundData)
OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
{
TCHAR szBuffer[256];
UINT i;
pSoundData->ssSoundSentry.cbSize = sizeof(SOUNDSENTRY);
pGlobalData->ssSoundSentry.cbSize = sizeof(SOUNDSENTRY);
SystemParametersInfo(SPI_GETSOUNDSENTRY,
sizeof(SOUNDSENTRY),
&pSoundData->ssSoundSentry,
&pGlobalData->ssSoundSentry,
0);
SystemParametersInfo(SPI_GETSHOWSOUNDS,
0,
&pSoundData->bShowSounds,
&pGlobalData->bShowSounds,
0);
/* Add strings to the combo-box */
@ -48,10 +41,10 @@ OnInitDialog(HWND hwndDlg, PSOUNDDATA pSoundData)
}
/* Select a combo-box item */
SendDlgItemMessage(hwndDlg, IDC_SENTRY_COMBO, CB_SETCURSEL, pSoundData->ssSoundSentry.iWindowsEffect, 0);
SendDlgItemMessage(hwndDlg, IDC_SENTRY_COMBO, CB_SETCURSEL, pGlobalData->ssSoundSentry.iWindowsEffect, 0);
/* Initialize SoundSentry settings */
if (!(pSoundData->ssSoundSentry.dwFlags & SSF_AVAILABLE))
if (!(pGlobalData->ssSoundSentry.dwFlags & SSF_AVAILABLE))
{
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_BOX), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), FALSE);
@ -59,7 +52,7 @@ OnInitDialog(HWND hwndDlg, PSOUNDDATA pSoundData)
}
else
{
if (pSoundData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)
if (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)
{
CheckDlgButton(hwndDlg, IDC_SENTRY_BOX, BST_CHECKED);
}
@ -71,7 +64,7 @@ OnInitDialog(HWND hwndDlg, PSOUNDDATA pSoundData)
}
/* Initialize ShowSounds settings */
if (pSoundData->bShowSounds)
if (pGlobalData->bShowSounds)
CheckDlgButton(hwndDlg, IDC_SSHOW_BOX, BST_CHECKED);
}
@ -83,40 +76,41 @@ SoundPageProc(HWND hwndDlg,
WPARAM wParam,
LPARAM lParam)
{
PSOUNDDATA pSoundData;
PGLOBAL_DATA pGlobalData;
pSoundData = (PSOUNDDATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
switch (uMsg)
{
case WM_INITDIALOG:
pSoundData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SOUNDDATA));
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pSoundData);
pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
OnInitDialog(hwndDlg, pSoundData);
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
OnInitDialog(hwndDlg, pGlobalData);
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_SENTRY_BOX:
pSoundData->ssSoundSentry.dwFlags ^= SSF_SOUNDSENTRYON;
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), (pSoundData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_COMBO), (pSoundData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE);
pGlobalData->ssSoundSentry.dwFlags ^= SSF_SOUNDSENTRYON;
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_COMBO), (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
case IDC_SENTRY_COMBO:
if (HIWORD(wParam) == CBN_SELENDOK)
{
pSoundData->ssSoundSentry.iWindowsEffect =
pGlobalData->ssSoundSentry.iWindowsEffect =
(DWORD)SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case IDC_SSHOW_BOX:
pSoundData->bShowSounds = !pSoundData->bShowSounds;
pGlobalData->bShowSounds = !pGlobalData->bShowSounds;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
@ -131,10 +125,10 @@ SoundPageProc(HWND hwndDlg,
case PSN_APPLY:
SystemParametersInfo(SPI_SETSOUNDSENTRY,
sizeof(SOUNDSENTRY),
&pSoundData->ssSoundSentry,
&pGlobalData->ssSoundSentry,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfo(SPI_SETSHOWSOUNDS,
pSoundData->bShowSounds,
pGlobalData->bShowSounds,
0,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
return TRUE;
@ -143,10 +137,6 @@ SoundPageProc(HWND hwndDlg,
break;
}
break;
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pSoundData);
break;
}
return FALSE;