static VOID
-InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, LCID lcid)
+InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, PGLOBALDATA pGlobalData)
{
ZeroMemory(psp, sizeof(PROPSHEETPAGE));
psp->dwSize = sizeof(PROPSHEETPAGE);
psp->hInstance = hApplet;
psp->pszTemplate = MAKEINTRESOURCE(idDlg);
psp->pfnDlgProc = DlgProc;
- psp->lParam = (LPARAM)lcid;
+ psp->lParam = (LPARAM)pGlobalData;
}
{
PROPSHEETPAGE PsPage[NUM_SHEETS + 1];
PROPSHEETHEADER psh;
+ PGLOBALDATA pGlobalData;
TCHAR Caption[MAX_STR_SIZE];
+ INT ret;
LoadString(hApplet, IDS_CUSTOMIZE_TITLE, Caption, sizeof(Caption) / sizeof(TCHAR));
+ pGlobalData = (PGLOBALDATA)malloc(sizeof(GLOBALDATA));
+
+ pGlobalData->lcid = lcid;
+
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_USECALLBACK | PSH_PROPTITLE;
psh.nStartPage = 0;
psh.ppsp = PsPage;
- InitPropSheetPage(&PsPage[0], IDD_NUMBERSPAGE, NumbersPageProc, lcid);
- InitPropSheetPage(&PsPage[1], IDD_CURRENCYPAGE, CurrencyPageProc, lcid);
- InitPropSheetPage(&PsPage[2], IDD_TIMEPAGE, TimePageProc, lcid);
- InitPropSheetPage(&PsPage[3], IDD_DATEPAGE, DatePageProc, lcid);
+ InitPropSheetPage(&PsPage[0], IDD_NUMBERSPAGE, NumbersPageProc, pGlobalData);
+ InitPropSheetPage(&PsPage[1], IDD_CURRENCYPAGE, CurrencyPageProc, pGlobalData);
+ InitPropSheetPage(&PsPage[2], IDD_TIMEPAGE, TimePageProc, pGlobalData);
+ InitPropSheetPage(&PsPage[3], IDD_DATEPAGE, DatePageProc, pGlobalData);
if (IsSortPageNeeded(lcid))
{
psh.nPages++;
- InitPropSheetPage(&PsPage[4], IDD_SORTPAGE, SortPageProc, lcid);
+ InitPropSheetPage(&PsPage[4], IDD_SORTPAGE, SortPageProc, pGlobalData);
}
- return (LONG)(PropertySheet(&psh) != -1);
+ ret = PropertySheet(&psh);
+
+ free(pGlobalData);
+
+ return (LONG)(ret != -1);
}
/* EOF */
WPARAM wParam,
LPARAM lParam)
{
+ PGLOBALDATA pGlobalData;
+
+ pGlobalData = (PGLOBALDATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
+
switch (uMsg)
{
case WM_INITDIALOG:
- {
- LCID lcid = (LCID)((LPPROPSHEETPAGE)lParam)->lParam;
+ pGlobalData = (PGLOBALDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+ SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
- CreateSortList(GetDlgItem(hwndDlg, IDC_SORTLIST_COMBO), lcid);
- }
+ CreateSortList(GetDlgItem(hwndDlg, IDC_SORTLIST_COMBO), pGlobalData->lcid);
break;
case WM_COMMAND:
case IDC_SORTLIST_COMBO:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
+ LCID NewLcid;
+ INT iCurSel;
+
+ iCurSel = SendDlgItemMessage(hwndDlg,
+ IDC_SORTLIST_COMBO,
+ CB_GETCURSEL,
+ 0,
+ 0);
+ if (iCurSel == CB_ERR)
+ break;
+
+ NewLcid = SendDlgItemMessage(hwndDlg,
+ IDC_SORTLIST_COMBO,
+ CB_GETITEMDATA,
+ iCurSel,
+ 0);
+ if (NewLcid == (LCID)CB_ERR)
+ break;
+
+ /* Save the new LCID */
+ pGlobalData->lcid = NewLcid;
+
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
break;
case WM_NOTIFY:
+ if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY)
{
- LPNMHDR lpnm = (LPNMHDR)lParam;
-
- if (lpnm->code == (UINT)PSN_APPLY)
- {
-
- LCID NewLcid;
- INT iCurSel;
-
- iCurSel = SendDlgItemMessage(hwndDlg,
- IDC_SORTLIST_COMBO,
- CB_GETCURSEL,
- 0,
- 0);
- if (iCurSel == CB_ERR)
- break;
-
- NewLcid = SendDlgItemMessage(hwndDlg,
- IDC_SORTLIST_COMBO,
- CB_GETITEMDATA,
- iCurSel,
- 0);
- if (NewLcid == (LCID)CB_ERR)
- break;
-#if 0
- /* FIXME: Set locale ID */
-#endif
- }
+ /* FIXME: Set locale ID: pGlobalData->lcid */
}
break;
}
#include "intl.h"
#include "resource.h"
-/*
- * TODO:
- * - Enumerate available time formats (use EnumTimeFormats)
- */
+static HWND hwndEnum = NULL;
-static VOID
-UpdateTimeSample(HWND hWnd)
+static BOOL CALLBACK
+TimeFormatEnumProc(LPTSTR lpTimeFormatString)
{
- TCHAR InBuffer[80];
- TCHAR OutBuffer[80];
+ SendMessage(hwndEnum,
+ CB_ADDSTRING,
+ 0,
+ (LPARAM)lpTimeFormatString);
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, InBuffer, 80);
+ return TRUE;
+}
- GetTimeFormat(LOCALE_USER_DEFAULT, 0, NULL, InBuffer, OutBuffer, 80);
+static VOID
+UpdateTimeSample(HWND hWnd, LCID lcid)
+{
+ TCHAR szBuffer[80];
- SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)OutBuffer);
+ GetTimeFormat(lcid, 0, NULL, NULL, szBuffer, 80);
+ SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)szBuffer);
}
WPARAM wParam,
LPARAM lParam)
{
- switch (uMsg)
- {
- case WM_INITDIALOG:
- {
- TCHAR Buffer[80];
- int nLen;
+ PGLOBALDATA pGlobalData;
+
+ pGlobalData = (PGLOBALDATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
+
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ TCHAR Buffer[80];
+ int nLen;
+
+ pGlobalData = (PGLOBALDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+ SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
/* Update the time format sample */
- UpdateTimeSample(GetDlgItem(hwndDlg, IDC_TIMESAMPLE));
+ UpdateTimeSample(GetDlgItem(hwndDlg, IDC_TIMESAMPLE), pGlobalData->lcid);
/* Get the time format (max. 80 characters) */
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEFORMAT),
CB_LIMITTEXT, 80, 0);
- /* FIXME: add available time formats to the list */
+ /* Add available time formats to the list */
+ hwndEnum = GetDlgItem(hwndDlg, IDC_TIMEFORMAT);
+ EnumTimeFormats(TimeFormatEnumProc, pGlobalData->lcid, 0);
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, Buffer, 80);
+ GetLocaleInfo(pGlobalData->lcid, LOCALE_STIMEFORMAT, Buffer, 80);
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEFORMAT),
- CB_ADDSTRING,
- 0,
+ CB_SELECTSTRING,
+ -1,
(LPARAM)Buffer);
- SendMessage(GetDlgItem(hwndDlg, IDC_TIMEFORMAT),
- CB_SETCURSEL,
- 0, /* index */
- 0);
/* Get the time separator (max. 4 characters) */
SendMessage(GetDlgItem(hwndDlg, IDC_TIMESEPARATOR),
CB_LIMITTEXT, 4, 0);
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIME, Buffer, 80);
+ GetLocaleInfo(pGlobalData->lcid, LOCALE_STIME, Buffer, 80);
SendMessage(GetDlgItem(hwndDlg, IDC_TIMESEPARATOR),
CB_ADDSTRING,
0,
/* Get the AM symbol (max. 9 characters) */
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEAMSYMBOL),
CB_LIMITTEXT, 9, 0);
- nLen = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_S1159, Buffer, 80);
+ nLen = GetLocaleInfo(pGlobalData->lcid, LOCALE_S1159, Buffer, 80);
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEAMSYMBOL),
CB_ADDSTRING,
0,
/* Get the PM symbol (max. 9 characters) */
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEPMSYMBOL),
CB_LIMITTEXT, 9, 0);
- nLen = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_S2359, Buffer, 80);
+ nLen = GetLocaleInfo(pGlobalData->lcid, LOCALE_S2359, Buffer, 80);
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEPMSYMBOL),
CB_ADDSTRING,
0,
CB_GETCURSEL, 0, 0);
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEFORMAT),
CB_GETLBTEXT, (WPARAM)nIndex, (LPARAM)Buffer);
- SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, Buffer);
+ SetLocaleInfo(pGlobalData->lcid, LOCALE_STIMEFORMAT, Buffer);
/* Set time separator */
nIndex = SendMessage(GetDlgItem(hwndDlg, IDC_TIMESEPARATOR),
CB_GETCURSEL, 0, 0);
SendMessage(GetDlgItem(hwndDlg, IDC_TIMESEPARATOR),
CB_GETLBTEXT, (WPARAM)nIndex, (LPARAM)Buffer);
- SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIME, Buffer);
+ SetLocaleInfo(pGlobalData->lcid, LOCALE_STIME, Buffer);
/* Set the AM symbol */
nIndex = SendMessage(GetDlgItem(hwndDlg, IDC_TIMEAMSYMBOL),
{
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEAMSYMBOL),
CB_GETLBTEXT, (WPARAM)nIndex, (LPARAM)Buffer);
- SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_S1159, Buffer);
+ SetLocaleInfo(pGlobalData->lcid, LOCALE_S1159, Buffer);
}
else
{
- SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_S1159, _T(""));
+ SetLocaleInfo(pGlobalData->lcid, LOCALE_S1159, _T(""));
}
/* Set the PM symbol */
{
SendMessage(GetDlgItem(hwndDlg, IDC_TIMEPMSYMBOL),
CB_GETLBTEXT, (WPARAM)nIndex, (LPARAM)Buffer);
- SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_S2359, Buffer);
+ SetLocaleInfo(pGlobalData->lcid, LOCALE_S2359, Buffer);
}
else
{
- SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_S2359, _T(""));
+ SetLocaleInfo(pGlobalData->lcid, LOCALE_S2359, _T(""));
}
/* Update the time format sample */
- UpdateTimeSample(GetDlgItem(hwndDlg, IDC_TIMESAMPLE));
+ UpdateTimeSample(GetDlgItem(hwndDlg, IDC_TIMESAMPLE), pGlobalData->lcid);
}
}
break;
- }
+ }
- return FALSE;
+ return FALSE;
}
/* EOF */