+++ /dev/null
-/*
- * ReactOS
- * Copyright (C) 2004 ReactOS Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-/*
- * PROJECT: ReactOS International Control Panel
- * FILE: dll/cpl/intl/time.c
- * PURPOSE: Time property page
- * PROGRAMMERS: Eric Kohl
- * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
- */
-
-#include "intl.h"
-
-static HWND hwndEnum = NULL;
-
-static BOOL CALLBACK
-TimeFormatEnumProc(PWSTR lpTimeFormatString)
-{
- SendMessageW(hwndEnum,
- CB_ADDSTRING,
- 0,
- (LPARAM)lpTimeFormatString);
-
- return TRUE;
-}
-
-static VOID
-UpdateTimeSample(HWND hWnd, PGLOBALDATA pGlobalData)
-{
- WCHAR szBuffer[MAX_SAMPLES_STR_SIZE];
-
- GetTimeFormatW(pGlobalData->UserLCID, 0, NULL,
- pGlobalData->szTimeFormat, szBuffer,
- MAX_SAMPLES_STR_SIZE);
- SendDlgItemMessageW(hWnd, IDC_TIMESAMPLE, WM_SETTEXT, 0, (LPARAM)szBuffer);
-}
-
-
-static
-VOID
-InitTimeFormatCB(
- HWND hwndDlg,
- PGLOBALDATA pGlobalData)
-{
- /* Get the time format */
- SendDlgItemMessageW(hwndDlg, IDC_TIMEFORMAT,
- CB_LIMITTEXT, MAX_TIMEFORMAT, 0);
-
- /* Add available time formats to the list */
- hwndEnum = GetDlgItem(hwndDlg, IDC_TIMEFORMAT);
- EnumTimeFormatsW(TimeFormatEnumProc, pGlobalData->UserLCID, 0);
-
- SendDlgItemMessageW(hwndDlg, IDC_TIMEFORMAT,
- CB_SELECTSTRING,
- -1,
- (LPARAM)pGlobalData->szTimeFormat);
-}
-
-static
-VOID
-InitTimeSeparatorCB(
- HWND hwndDlg,
- PGLOBALDATA pGlobalData)
-{
- SendDlgItemMessageW(hwndDlg, IDC_TIMESEPARATOR,
- CB_LIMITTEXT, MAX_TIMESEPARATOR, 0);
-
- SendDlgItemMessageW(hwndDlg, IDC_TIMESEPARATOR,
- CB_ADDSTRING,
- 0,
- (LPARAM)pGlobalData->szTimeSep);
-
- SendDlgItemMessageW(hwndDlg, IDC_TIMESEPARATOR,
- CB_SETCURSEL,
- 0, /* Index */
- 0);
-}
-
-
-static
-VOID
-InitAmSymbol(
- HWND hwndDlg,
- PGLOBALDATA pGlobalData)
-{
- int nLen;
-
- SendDlgItemMessageW(hwndDlg, IDC_TIMEAMSYMBOL,
- CB_LIMITTEXT, MAX_TIMEAMSYMBOL, 0);
-
- nLen = wcslen(pGlobalData->szTimeAM);
-
- SendDlgItemMessageW(hwndDlg, IDC_TIMEAMSYMBOL,
- CB_ADDSTRING,
- 0,
- (LPARAM)pGlobalData->szTimeAM);
- if (nLen != 0)
- {
- SendDlgItemMessageW(hwndDlg, IDC_TIMEAMSYMBOL,
- CB_ADDSTRING,
- 0,
- (LPARAM)L"");
- }
-
- SendDlgItemMessageW(hwndDlg, IDC_TIMEAMSYMBOL,
- CB_SETCURSEL,
- 0, /* Index */
- 0);
-}
-
-
-static
-VOID
-InitPmSymbol(
- HWND hwndDlg,
- PGLOBALDATA pGlobalData)
-{
- int nLen;
-
- SendDlgItemMessageW(hwndDlg, IDC_TIMEPMSYMBOL,
- CB_LIMITTEXT, MAX_TIMEPMSYMBOL, 0);
-
- nLen = wcslen(pGlobalData->szTimeAM);
-
- SendDlgItemMessageW(hwndDlg, IDC_TIMEPMSYMBOL,
- CB_ADDSTRING,
- 0,
- (LPARAM)pGlobalData->szTimePM);
- if (nLen != 0)
- {
- SendDlgItemMessageW(hwndDlg, IDC_TIMEPMSYMBOL,
- CB_ADDSTRING,
- 0,
- (LPARAM)L"");
- }
- SendDlgItemMessageW(hwndDlg, IDC_TIMEPMSYMBOL,
- CB_SETCURSEL,
- 0, /* Index */
- 0);
-}
-
-
-static
-BOOL
-GetTimeSetting(
- HWND hwndDlg,
- PGLOBALDATA pGlobalData)
-{
- WCHAR szTimeFormat[MAX_TIMEFORMAT];
- WCHAR szTimeSep[MAX_TIMESEPARATOR];
- WCHAR szTimeAM[MAX_TIMEAMSYMBOL];
- WCHAR szTimePM[MAX_TIMEPMSYMBOL];
-
- /* Time format */
- GetSelectedComboBoxText(hwndDlg,
- IDC_TIMEFORMAT,
- szTimeFormat,
- MAX_TIMEFORMAT);
-
- /* Check the time format */
- if (szTimeFormat[0] == L'\0')
- {
- /* TODO: Show error message */
-
- return FALSE;
- }
-
- /* Time separator */
- GetSelectedComboBoxText(hwndDlg,
- IDC_TIMESEPARATOR,
- szTimeSep,
- MAX_TIMESEPARATOR);
-
- /* Check the time separator */
- if (szTimeSep[0] == L'\0')
- {
- /* TODO: Show error message */
-
- return FALSE;
- }
-
- /* AM symbol */
- GetSelectedComboBoxText(hwndDlg,
- IDC_TIMEAMSYMBOL,
- szTimeAM,
- MAX_TIMEAMSYMBOL);
-
- /* PM symbol */
- GetSelectedComboBoxText(hwndDlg,
- IDC_TIMEPMSYMBOL,
- szTimePM,
- MAX_TIMEPMSYMBOL);
-
- /* Store settings in global data */
- wcscpy(pGlobalData->szTimeFormat, szTimeFormat);
- wcscpy(pGlobalData->szTimeSep, szTimeSep);
- wcscpy(pGlobalData->szTimeAM, szTimeAM);
- wcscpy(pGlobalData->szTimePM, szTimePM);
-
- return TRUE;
-}
-
-/* Property page dialog callback */
-INT_PTR CALLBACK
-TimePageProc(HWND hwndDlg,
- UINT uMsg,
- WPARAM wParam,
- LPARAM lParam)
-{
- PGLOBALDATA pGlobalData;
-
- pGlobalData = (PGLOBALDATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
-
- switch (uMsg)
- {
- case WM_INITDIALOG:
- pGlobalData = (PGLOBALDATA)((LPPROPSHEETPAGE)lParam)->lParam;
- SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
-
- /* Get the time format */
- InitTimeFormatCB(hwndDlg, pGlobalData);
-
- /* Get the time separator */
- InitTimeSeparatorCB(hwndDlg, pGlobalData);
-
- /* Get the AM symbol */
- InitAmSymbol(hwndDlg, pGlobalData);
-
- /* Get the PM symbol */
- InitPmSymbol(hwndDlg, pGlobalData);
-
- /* Update the time format sample */
- UpdateTimeSample(hwndDlg, pGlobalData);
- break;
-
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDC_TIMEFORMAT:
- case IDC_TIMESEPARATOR:
- case IDC_TIMEAMSYMBOL:
- case IDC_TIMEPMSYMBOL:
- if (HIWORD(wParam) == CBN_SELCHANGE ||
- HIWORD(wParam) == CBN_EDITCHANGE)
- {
- /* Enable the Apply button */
- PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
- }
- break;
- }
- break;
-
- case WM_NOTIFY:
- if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY)
- {
- if (GetTimeSetting(hwndDlg, pGlobalData))
- {
- pGlobalData->bUserLocaleChanged = TRUE;
- UpdateTimeSample(hwndDlg, pGlobalData);
- }
- }
- break;
- }
-
- return FALSE;
-}
-
-/* EOF */