Author: ekohl Date: Sat May 6 13:43:03 2017 New Revision: 74487
URL: http://svn.reactos.org/svn/reactos?rev=74487&view=rev Log: [INTL] Changed locale options doesn't reload correctly before next reboot. - Added SetNumberSetting, SetCurrencySetting, SetDateSetting and SetTimeSetting functions to get and check values. - Don't directly change pGlobalData. - Post WM_WININICHANGE after all changes have been applied. Based on a patch by Katayama Hirofumi MZ. CORE-10170
Modified: trunk/reactos/dll/cpl/intl/currency.c trunk/reactos/dll/cpl/intl/date.c trunk/reactos/dll/cpl/intl/generalp.c trunk/reactos/dll/cpl/intl/numbers.c trunk/reactos/dll/cpl/intl/time.c
Modified: trunk/reactos/dll/cpl/intl/currency.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/currency.c?rev... ============================================================================== --- trunk/reactos/dll/cpl/intl/currency.c [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/intl/currency.c [iso-8859-1] Sat May 6 13:43:03 2017 @@ -20,7 +20,8 @@ * PROJECT: ReactOS International Control Panel * FILE: dll/cpl/intl/currency.c * PURPOSE: Currency property page - * PROGRAMMER: Eric Kohl + * PROGRAMMERS: Eric Kohl + * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) */
#include "intl.h" @@ -262,7 +263,7 @@
/* Set number of digits in field */ static BOOL -SetCurrencyDigNum(HWND hwndDlg, PGLOBALDATA pGlobalData) +SetCurrencyDigNum(HWND hwndDlg, PINT pnCurrGrouping) { INT nCurrSel;
@@ -271,30 +272,30 @@ CB_GETCURSEL, (WPARAM)0, (LPARAM)0); - - /* Save number of digits in field */ - if (nCurrSel != CB_ERR) - pGlobalData->nCurrGrouping = nCurrSel; + if (nCurrSel == CB_ERR) + return FALSE; + + *pnCurrGrouping = nCurrSel;
return TRUE; }
/* Set currency field separator */ static BOOL -SetCurrencyFieldSep(HWND hwndDlg, PGLOBALDATA pGlobalData) +SetCurrencyFieldSep(HWND hwndDlg, PWSTR pszCurrThousandSep) { /* Get setted currency field separator */ SendDlgItemMessageW(hwndDlg, IDC_CURRENCYGRPSEP, WM_GETTEXT, - (WPARAM)MAX_SAMPLES_STR_SIZE, - (LPARAM)pGlobalData->szCurrThousandSep); + (WPARAM)MAX_CURRTHOUSANDSEP, + (LPARAM)pszCurrThousandSep);
return TRUE; }
/* Set number of fractional symbols */ static BOOL -SetCurrencyFracSymNum(HWND hwndDlg, PGLOBALDATA pGlobalData) +SetCurrencyFracSymNum(HWND hwndDlg, PINT pnCurrDigits) { INT nCurrSel;
@@ -306,27 +307,27 @@ if (nCurrSel == CB_ERR) return FALSE;
- pGlobalData->nCurrDigits = nCurrSel; + *pnCurrDigits = nCurrSel;
return TRUE; }
/* Set currency separator */ static BOOL -SetCurrencySep(HWND hwndDlg, PGLOBALDATA pGlobalData) +SetCurrencySep(HWND hwndDlg, PWSTR pszCurrDecimalSep) { /* Get setted currency decimal separator */ SendDlgItemMessageW(hwndDlg, IDC_CURRENCYDECSEP, WM_GETTEXT, - (WPARAM)MAX_SAMPLES_STR_SIZE, - (LPARAM)pGlobalData->szCurrDecimalSep); + (WPARAM)MAX_CURRDECIMALSEP, + (LPARAM)pszCurrDecimalSep);
return TRUE; }
/* Set negative currency sum format */ static BOOL -SetNegCurrencySumFmt(HWND hwndDlg, PGLOBALDATA pGlobalData) +SetNegCurrencySumFmt(HWND hwndDlg, PINT pnCurrNegFormat) { INT nCurrSel;
@@ -338,14 +339,14 @@ if (nCurrSel == CB_ERR) return FALSE;
- pGlobalData->nCurrNegFormat = nCurrSel; + *pnCurrNegFormat = nCurrSel;
return TRUE; }
/* Set positive currency sum format */ static BOOL -SetPosCurrencySumFmt(HWND hwndDlg, PGLOBALDATA pGlobalData) +SetPosCurrencySumFmt(HWND hwndDlg, PINT pnCurrPosFormat) { INT nCurrSel;
@@ -357,20 +358,55 @@ if (nCurrSel == CB_ERR) return FALSE;
- pGlobalData->nCurrPosFormat = nCurrSel; + *pnCurrPosFormat = nCurrSel;
return TRUE; }
/* Set currency symbol */ static BOOL -SetCurrencySymbol(HWND hwndDlg, PGLOBALDATA pGlobalData) +SetCurrencySymbol(HWND hwndDlg, PWSTR pszCurrSymbol) { /* Get setted currency unit */ SendDlgItemMessageW(hwndDlg, IDC_CURRENCYSYMBOL, WM_GETTEXT, - (WPARAM)MAX_SAMPLES_STR_SIZE, - (LPARAM)(PCWSTR)pGlobalData->szCurrSymbol); + (WPARAM)MAX_CURRSYMBOL, + (LPARAM)pszCurrSymbol); + + return TRUE; +} + + +static BOOL +SetCurrencySetting(HWND hwndDlg, PGLOBALDATA pGlobalData) +{ + WCHAR szCurrSymbol[MAX_CURRSYMBOL]; + WCHAR szCurrDecimalSep[MAX_CURRDECIMALSEP]; + WCHAR szCurrThousandSep[MAX_CURRTHOUSANDSEP]; + INT nCurrGrouping; + INT nCurrPosFormat; + INT nCurrNegFormat; + INT nCurrDigits; + + if (!SetCurrencySymbol(hwndDlg, szCurrSymbol) || + !SetCurrencyDigNum(hwndDlg, &nCurrGrouping) || + !SetPosCurrencySumFmt(hwndDlg, &nCurrPosFormat) || + !SetNegCurrencySumFmt(hwndDlg, &nCurrNegFormat) || + !SetCurrencySep(hwndDlg, szCurrDecimalSep) || + !SetCurrencyFracSymNum(hwndDlg, &nCurrDigits) || + !SetCurrencyFieldSep(hwndDlg, szCurrThousandSep)) + { + return FALSE; + } + + /* store to global data */ + wcscpy(pGlobalData->szCurrSymbol, szCurrSymbol); + pGlobalData->nCurrGrouping = nCurrGrouping; + wcscpy(pGlobalData->szCurrDecimalSep, szCurrDecimalSep); + wcscpy(pGlobalData->szCurrThousandSep, szCurrThousandSep); + pGlobalData->nCurrPosFormat = nCurrPosFormat; + pGlobalData->nCurrNegFormat = nCurrNegFormat; + pGlobalData->nCurrDigits = nCurrDigits;
return TRUE; } @@ -414,7 +450,7 @@ case IDC_CURRENCYGRPNUM: if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE) { - /* Set "Apply" button enabled */ + /* Enable the Apply button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } } @@ -423,30 +459,11 @@ case WM_NOTIFY: if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { - if (!SetCurrencySymbol(hwndDlg, pGlobalData)) - break; - - if (!SetCurrencyDigNum(hwndDlg, pGlobalData)) - break; - - if (!SetPosCurrencySumFmt(hwndDlg, pGlobalData)) - break; - - if (!SetNegCurrencySumFmt(hwndDlg, pGlobalData)) - break; - - if (!SetCurrencySep(hwndDlg, pGlobalData)) - break; - - if (!SetCurrencyFracSymNum(hwndDlg, pGlobalData)) - break; - - if (!SetCurrencyFieldSep(hwndDlg, pGlobalData)) - break; - - pGlobalData->bUserLocaleChanged = TRUE; - - UpdateExamples(hwndDlg, pGlobalData); + if (SetCurrencySetting(hwndDlg, pGlobalData)) + { + pGlobalData->bUserLocaleChanged = TRUE; + UpdateExamples(hwndDlg, pGlobalData); + } } break; }
Modified: trunk/reactos/dll/cpl/intl/date.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/date.c?rev=744... ============================================================================== --- trunk/reactos/dll/cpl/intl/date.c [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/intl/date.c [iso-8859-1] Sat May 6 13:43:03 2017 @@ -20,7 +20,8 @@ * PROJECT: ReactOS International Control Panel * FILE: dll/cpl/intl/date.c * PURPOSE: Date property page - * PROGRAMMER: Eric Kohl + * PROGRAMMERS: Eric Kohl + * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) */
#include "intl.h" @@ -86,9 +87,8 @@
/* Setted up short date separator to registry */ static BOOL -SetShortDateSep(HWND hwndDlg, PGLOBALDATA pGlobalData) -{ - WCHAR szShortDateSep[MAX_SAMPLES_STR_SIZE]; +SetShortDateSep(HWND hwndDlg, PWSTR pszShortDateSep) +{ INT nSepStrSize; INT nSepCount;
@@ -96,32 +96,34 @@ SendDlgItemMessageW(hwndDlg, IDC_SHRTDATESEP_COMBO, WM_GETTEXT, (WPARAM)MAX_SAMPLES_STR_SIZE, - (LPARAM)szShortDateSep); + (LPARAM)pszShortDateSep);
/* Get separator string size */ - nSepStrSize = wcslen(szShortDateSep); + nSepStrSize = wcslen(pszShortDateSep);
/* Check date components */ for (nSepCount = 0; nSepCount < nSepStrSize; nSepCount++) { - if (iswalnum(szShortDateSep[nSepCount]) || (szShortDateSep[nSepCount] == L''')) + if (iswalnum(pszShortDateSep[nSepCount]) || (pszShortDateSep[nSepCount] == L''')) { PrintErrorMsgBox(IDS_ERROR_SYMBOL_SEPARATE); return FALSE; } }
- /* Save date separator */ - wcscpy(pGlobalData->szDateSep, szShortDateSep); + if (nSepStrSize == 0) + { + PrintErrorMsgBox(IDS_ERROR_SYMBOL_SEPARATE); + return FALSE; + }
return TRUE; }
/* Setted up short date format to registry */ static BOOL -SetShortDateFormat(HWND hwndDlg, PGLOBALDATA pGlobalData) -{ - WCHAR szShortDateFmt[MAX_SAMPLES_STR_SIZE]; +SetShortDateFormat(HWND hwndDlg, PWSTR pszShortDateFmt) +{ WCHAR szShortDateSep[MAX_SAMPLES_STR_SIZE]; WCHAR szFoundDateSep[MAX_SAMPLES_STR_SIZE]; PWSTR pszResultStr; @@ -134,7 +136,7 @@ SendDlgItemMessageW(hwndDlg, IDC_SHRTDATEFMT_COMBO, WM_GETTEXT, (WPARAM)MAX_SAMPLES_STR_SIZE, - (LPARAM)szShortDateFmt); + (LPARAM)pszShortDateFmt);
/* Get separator */ SendDlgItemMessageW(hwndDlg, IDC_SHRTDATESEP_COMBO, @@ -143,18 +145,18 @@ (LPARAM)szShortDateSep);
/* Get format-string size */ - nFmtStrSize = wcslen(szShortDateFmt); + nFmtStrSize = wcslen(pszShortDateFmt);
/* Check date components */ for (nDateCompCount = 0; nDateCompCount < nFmtStrSize; nDateCompCount++) { - if (szShortDateFmt[nDateCompCount] == L''') + if (pszShortDateFmt[nDateCompCount] == L''') { OpenApostFlg = !OpenApostFlg; }
- if (iswalnum(szShortDateFmt[nDateCompCount]) && - !isDateCompAl(szShortDateFmt[nDateCompCount]) && + if (iswalnum(pszShortDateFmt[nDateCompCount]) && + !isDateCompAl(pszShortDateFmt[nDateCompCount]) && !OpenApostFlg) { PrintErrorMsgBox(IDS_ERROR_SYMBOL_FORMAT_SHORT); @@ -163,38 +165,34 @@
}
- if (OpenApostFlg) + if (OpenApostFlg || nFmtStrSize == 0) { PrintErrorMsgBox(IDS_ERROR_SYMBOL_FORMAT_SHORT); return FALSE; }
- pszFoundSep = FindDateSep(szShortDateFmt); + pszFoundSep = FindDateSep(pszShortDateFmt); if (pszFoundSep != NULL) { /* Substring replacement of separator */ wcscpy(szFoundDateSep, pszFoundSep); - pszResultStr = ReplaceSubStr(szShortDateFmt, szShortDateSep, szFoundDateSep); + pszResultStr = ReplaceSubStr(pszShortDateFmt, szShortDateSep, szFoundDateSep); if (pszResultStr != NULL) { - wcscpy(szShortDateFmt, pszResultStr); + wcscpy(pszShortDateFmt, pszResultStr); HeapFree(GetProcessHeap(), 0, pszResultStr); }
HeapFree(GetProcessHeap(), 0, pszFoundSep); }
- /* Save short date format */ - wcscpy(pGlobalData->szShortDateFormat, szShortDateFmt); - return TRUE; }
/* Setted up long date format to registry */ static BOOL -SetLongDateFormat(HWND hwndDlg, PGLOBALDATA pGlobalData) -{ - WCHAR szLongDateFmt[MAX_SAMPLES_STR_SIZE]; +SetLongDateFormat(HWND hwndDlg, PWSTR pszLongDateFmt) +{ BOOL OpenApostFlg = FALSE; INT nFmtStrSize; INT nDateCompCount; @@ -203,21 +201,21 @@ SendDlgItemMessageW(hwndDlg, IDC_LONGDATEFMT_COMBO, WM_GETTEXT, (WPARAM)MAX_SAMPLES_STR_SIZE, - (LPARAM)szLongDateFmt); + (LPARAM)pszLongDateFmt);
/* Get format string size */ - nFmtStrSize = wcslen(szLongDateFmt); + nFmtStrSize = wcslen(pszLongDateFmt);
/* Check date components */ for (nDateCompCount = 0; nDateCompCount < nFmtStrSize; nDateCompCount++) { - if (szLongDateFmt[nDateCompCount] == L''') + if (pszLongDateFmt[nDateCompCount] == L''') { OpenApostFlg = !OpenApostFlg; }
- if (iswalnum(szLongDateFmt[nDateCompCount]) && - !isDateCompAl(szLongDateFmt[nDateCompCount]) && + if (iswalnum(pszLongDateFmt[nDateCompCount]) && + !isDateCompAl(pszLongDateFmt[nDateCompCount]) && !OpenApostFlg) { PrintErrorMsgBox(IDS_ERROR_SYMBOL_FORMAT_LONG); @@ -226,14 +224,11 @@
}
- if (OpenApostFlg) + if (OpenApostFlg || nFmtStrSize == 0) { PrintErrorMsgBox(IDS_ERROR_SYMBOL_FORMAT_LONG); return FALSE; } - - /* Save long date format */ - wcscpy(pGlobalData->szLongDateFormat, szLongDateFmt);
return TRUE; } @@ -520,6 +515,28 @@ WM_SETTEXT, 0, (LPARAM)OutBuffer); }
+static BOOL +SetDateSetting(HWND hwndDlg, PGLOBALDATA pGlobalData) +{ + WCHAR szLongDateFmt[MAX_SAMPLES_STR_SIZE]; + WCHAR szShortDateFmt[MAX_SAMPLES_STR_SIZE]; + WCHAR szShortDateSep[MAX_SAMPLES_STR_SIZE]; + + if (!SetLongDateFormat(hwndDlg, szLongDateFmt) || + !SetShortDateFormat(hwndDlg, szShortDateFmt) || + !SetShortDateSep(hwndDlg, szShortDateSep)) + { + return FALSE; + } + + /* store to global data */ + wcscpy(pGlobalData->szLongDateFormat, szLongDateFmt); + wcscpy(pGlobalData->szShortDateFormat, szShortDateFmt); + wcscpy(pGlobalData->szDateSep, szShortDateSep); + + return TRUE; +} + /* Property page dialog callback */ INT_PTR CALLBACK DatePageProc(HWND hwndDlg, @@ -568,7 +585,7 @@ case IDC_SHRTDATESEP_COMBO: if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE) { - /* Set "Apply" button enabled */ + /* Enable the Apply button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } break; @@ -578,20 +595,12 @@ case WM_NOTIFY: if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { - if (!SetLongDateFormat(hwndDlg, pGlobalData)) - break; - - if (!SetShortDateFormat(hwndDlg, pGlobalData)) - break; - - if (!SetShortDateSep(hwndDlg, pGlobalData)) - break; - - pGlobalData->bUserLocaleChanged = TRUE; - - SetMaxDate(hwndDlg, pGlobalData->UserLCID); - InitShortDateCB(hwndDlg, pGlobalData); - UpdateDateLocaleSamples(hwndDlg, pGlobalData); + if (SetDateSetting(hwndDlg, pGlobalData)) + { + pGlobalData->bUserLocaleChanged = TRUE; + SetMaxDate(hwndDlg, pGlobalData->UserLCID); + UpdateDateLocaleSamples(hwndDlg, pGlobalData); + } } break; }
Modified: trunk/reactos/dll/cpl/intl/generalp.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/generalp.c?rev... ============================================================================== --- trunk/reactos/dll/cpl/intl/generalp.c [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/intl/generalp.c [iso-8859-1] Sat May 6 13:43:03 2017 @@ -1494,6 +1494,9 @@ }
AddNewKbLayoutsByLcid(pGlobalData->UserLCID); + + /* Post WM_WININICHANGE messages to system */ + PostMessageW(HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM)L"intl"); } break; }
Modified: trunk/reactos/dll/cpl/intl/numbers.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/numbers.c?rev=... ============================================================================== --- trunk/reactos/dll/cpl/intl/numbers.c [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/intl/numbers.c [iso-8859-1] Sat May 6 13:43:03 2017 @@ -20,7 +20,8 @@ * PROJECT: ReactOS International Control Panel * FILE: dll/cpl/intl/numbers.c * PURPOSE: Numbers property page - * PROGRAMMER: Eric Kohl + * PROGRAMMERS: Eric Kohl + * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) */
#include "intl.h" @@ -471,13 +472,13 @@ /* Set num decimal separator */ static BOOL SetNumDecimalSep(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PWSTR pszNumDecimalSep) { /* Get setted decimal separator */ SendDlgItemMessageW(hwndDlg, IDC_NUMBERDSYMBOL, WM_GETTEXT, (WPARAM)MAX_NUMDECIMALSEP, - (LPARAM)pGlobalData->szNumDecimalSep); + (LPARAM)pszNumDecimalSep);
return TRUE; } @@ -485,7 +486,7 @@ /* Set number of fractional symbols */ static BOOL SetFracSymNum(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PINT pnNumDigits) { INT nCurrSel;
@@ -497,7 +498,7 @@ if (nCurrSel == CB_ERR) return FALSE;
- pGlobalData->nNumDigits = nCurrSel; + *pnNumDigits = nCurrSel;
return TRUE; } @@ -505,13 +506,13 @@ /* Set field separator */ static BOOL SetNumFieldSep(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PWSTR pszNumThousandSep) { /* Get thousand separator */ SendDlgItemMessageW(hwndDlg, IDC_NUMBERSDIGITGRSYM, WM_GETTEXT, (WPARAM)MAX_NUMTHOUSANDSEP, - (LPARAM)pGlobalData->szNumThousandSep); + (LPARAM)pszNumThousandSep);
return TRUE; } @@ -519,7 +520,7 @@ /* Set number of digits in field */ static BOOL SetFieldDigNum(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PINT pnNumGrouping) { INT nCurrSel;
@@ -531,7 +532,7 @@ if (nCurrSel == CB_ERR) return FALSE;
- pGlobalData->nNumGrouping = nCurrSel; + *pnNumGrouping = nCurrSel;
return TRUE; } @@ -539,13 +540,13 @@ /* Set negative sign */ static BOOL SetNumNegSign(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PWSTR pszNumNegativeSign) { /* Get setted negative sign */ SendDlgItemMessageW(hwndDlg, IDC_NUMBERSNSIGNSYM, WM_GETTEXT, (WPARAM)MAX_NUMNEGATIVESIGN, - (LPARAM)pGlobalData->szNumNegativeSign); + (LPARAM)pszNumNegativeSign);
return TRUE; } @@ -553,7 +554,7 @@ /* Set negative sum format */ static BOOL SetNegSumFmt(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PINT pnNumNegFormat) { INT nCurrSel;
@@ -565,7 +566,7 @@ if (nCurrSel == CB_ERR) return FALSE;
- pGlobalData->nNumNegFormat = nCurrSel; + *pnNumNegFormat = nCurrSel;
return TRUE; } @@ -573,7 +574,7 @@ /* Set leading zero */ static BOOL SetNumLeadZero(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PINT pnNumLeadingZero) { INT nCurrSel;
@@ -585,7 +586,7 @@ if (nCurrSel == CB_ERR) return FALSE;
- pGlobalData->nNumLeadingZero = nCurrSel; + *pnNumLeadingZero = nCurrSel;
return TRUE; } @@ -593,13 +594,13 @@ /* Set elements list separator */ static BOOL SetNumListSep(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PWSTR pszNumListSep) { /* Get setted list separator */ SendDlgItemMessageW(hwndDlg, IDC_NUMBERSLSEP, WM_GETTEXT, (WPARAM)MAX_NUMLISTSEP, - (LPARAM)pGlobalData->szNumListSep); + (LPARAM)pszNumListSep);
return TRUE; } @@ -607,7 +608,7 @@ /* Set units system */ static BOOL SetNumUnitsSys(HWND hwndDlg, - PGLOBALDATA pGlobalData) + PINT pnNumMeasure) { INT nCurrSel;
@@ -619,7 +620,49 @@ if (nCurrSel == CB_ERR) return FALSE;
- pGlobalData->nNumMeasure = nCurrSel; + *pnNumMeasure = nCurrSel; + + return TRUE; +} + +static BOOL +SetNumberSetting(HWND hwndDlg, PGLOBALDATA pGlobalData) +{ + WCHAR szNumDecimalSep[MAX_NUMDECIMALSEP]; + WCHAR szNumThousandSep[MAX_NUMTHOUSANDSEP]; + WCHAR szNumNegativeSign[MAX_NUMNEGATIVESIGN]; + WCHAR szNumListSep[MAX_NUMLISTSEP]; + WCHAR szNumNativeDigits[MAX_NUMNATIVEDIGITS]; + int nNumGrouping; + int nNumDigits; + int nNumNegFormat; + int nNumLeadingZero; + int nNumMeasure; + + if (!SetNumDecimalSep(hwndDlg, szNumDecimalSep) || + !SetNumFieldSep(hwndDlg, szNumThousandSep) || + !SetNumNegSign(hwndDlg, szNumNegativeSign) || + !SetNumListSep(hwndDlg, szNumListSep) || + !SetFieldDigNum(hwndDlg, &nNumGrouping) || + !SetFracSymNum(hwndDlg, &nNumDigits) || + !SetNegSumFmt(hwndDlg, &nNumNegFormat) || + !SetNumLeadZero(hwndDlg, &nNumLeadingZero) || + !SetNumUnitsSys(hwndDlg, &nNumMeasure)) + { + return FALSE; + } + + /* store to global data */ + wcscpy(pGlobalData->szNumDecimalSep, szNumDecimalSep); + wcscpy(pGlobalData->szNumThousandSep, szNumThousandSep); + wcscpy(pGlobalData->szNumNegativeSign, szNumNegativeSign); + wcscpy(pGlobalData->szNumListSep, szNumListSep); + wcscpy(pGlobalData->szNumNativeDigits, szNumNativeDigits); + pGlobalData->nNumGrouping = nNumGrouping; + pGlobalData->nNumDigits = nNumDigits; + pGlobalData->nNumNegFormat = nNumNegFormat; + pGlobalData->nNumLeadingZero = nNumLeadingZero; + pGlobalData->nNumMeasure = nNumMeasure;
return TRUE; } @@ -667,7 +710,7 @@ case IDC_NUMBERSMEASSYS: if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE) { - /* Set "Apply" button enabled */ + /* Enable the Apply button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } } @@ -677,36 +720,11 @@ /* If push apply button */ if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { - if (!SetNumDecimalSep(hwndDlg, pGlobalData)) - break; - - if (!SetFracSymNum(hwndDlg, pGlobalData)) - break; - - if (!SetNumFieldSep(hwndDlg, pGlobalData)) - break; - - if (!SetFieldDigNum(hwndDlg, pGlobalData)) - break; - - if (!SetNumNegSign(hwndDlg, pGlobalData)) - break; - - if (!SetNegSumFmt(hwndDlg, pGlobalData)) - break; - - if (!SetNumLeadZero(hwndDlg, pGlobalData)) - break; - - if (!SetNumListSep(hwndDlg, pGlobalData)) - break; - - if (!SetNumUnitsSys(hwndDlg, pGlobalData)) - break; - - pGlobalData->bUserLocaleChanged = TRUE; - - UpdateNumSamples(hwndDlg, pGlobalData); + if (SetNumberSetting(hwndDlg, pGlobalData)) + { + pGlobalData->bUserLocaleChanged = TRUE; + UpdateNumSamples(hwndDlg, pGlobalData); + } } break; }
Modified: trunk/reactos/dll/cpl/intl/time.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/time.c?rev=744... ============================================================================== --- trunk/reactos/dll/cpl/intl/time.c [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/intl/time.c [iso-8859-1] Sat May 6 13:43:03 2017 @@ -20,7 +20,8 @@ * PROJECT: ReactOS International Control Panel * FILE: dll/cpl/intl/time.c * PURPOSE: Time property page - * PROGRAMMER: Eric Kohl + * PROGRAMMERS: Eric Kohl + * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) */
#include "intl.h" @@ -194,6 +195,38 @@ 0); }
+static BOOL +SetTimeSetting(HWND hwndDlg, PGLOBALDATA pGlobalData) +{ + WCHAR szTimeFormat[MAX_TIMEFORMAT]; + WCHAR szTimeSep[MAX_TIMEFORMAT]; + WCHAR szTimeAM[MAX_TIMEFORMAT]; + WCHAR szTimePM[MAX_TIMEFORMAT]; + + /* Get selected/typed time format text */ + GetSelectedComboEntry(hwndDlg, IDC_TIMEFORMAT, szTimeFormat, MAX_TIMEFORMAT); + + /* Get selected/typed time separator text */ + GetSelectedComboEntry(hwndDlg, IDC_TIMESEPARATOR, szTimeSep, MAX_TIMESEPARATOR); + + /* Get selected/typed AM symbol text */ + GetSelectedComboEntry(hwndDlg, IDC_TIMEAMSYMBOL, szTimeAM, MAX_TIMEAMSYMBOL); + + /* Get selected/typed PM symbol text */ + GetSelectedComboEntry(hwndDlg, IDC_TIMEPMSYMBOL, szTimePM, MAX_TIMEPMSYMBOL); + + /* verify values */ + if (szTimeFormat[0] == L'\0' || szTimeSep[0] == L'\0') + return FALSE; + + /* store to 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 @@ -238,6 +271,7 @@ if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE) { + /* Enable the Apply button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } break; @@ -247,30 +281,11 @@ case WM_NOTIFY: if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { - /* Get selected/typed time format text */ - GetSelectedComboEntry(hwndDlg, IDC_TIMEFORMAT, - pGlobalData->szTimeFormat, - MAX_TIMEFORMAT); - - /* Get selected/typed time separator text */ - GetSelectedComboEntry(hwndDlg, IDC_TIMESEPARATOR, - pGlobalData->szTimeSep, - MAX_TIMESEPARATOR); - - /* Get selected/typed AM symbol text */ - GetSelectedComboEntry(hwndDlg, IDC_TIMEAMSYMBOL, - pGlobalData->szTimeAM, - MAX_TIMEAMSYMBOL); - - /* Get selected/typed PM symbol text */ - GetSelectedComboEntry(hwndDlg, IDC_TIMEPMSYMBOL, - pGlobalData->szTimePM, - MAX_TIMEPMSYMBOL); - - pGlobalData->bUserLocaleChanged = TRUE; - - /* Update the time format sample */ - UpdateTimeSample(hwndDlg, pGlobalData); + if (SetTimeSetting(hwndDlg, pGlobalData)) + { + pGlobalData->bUserLocaleChanged = TRUE; + UpdateTimeSample(hwndDlg, pGlobalData); + } } break; }