Author: ekohl Date: Sat May 6 14:41:50 2017 New Revision: 74488
URL: http://svn.reactos.org/svn/reactos?rev=74488&view=rev Log: [INTL] - Get rid of the individual getter funtions. Use GetSelectedComboBoxIndex for all CBS_DROPDOWNLIST comboboxes and GetSelectedComboBoxText for all CBS_DROPDOWN comboboxes. - Check the relevant settings only! - Rename SetXxxSettings to GetXxxSettings because it is a getter function. - Handle the bogus WM_COMMAND/EN_CHANGE message that is sent when the IDC_SECONDYEAR_EDIT edit control is initialized. Controls should NEVER send notifications when they are modified programmatically! :-/
Modified: trunk/reactos/dll/cpl/intl/currency.c trunk/reactos/dll/cpl/intl/date.c trunk/reactos/dll/cpl/intl/intl.h trunk/reactos/dll/cpl/intl/misc.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 14:41:50 2017 @@ -261,145 +261,80 @@ }
-/* Set number of digits in field */ -static BOOL -SetCurrencyDigNum(HWND hwndDlg, PINT pnCurrGrouping) -{ - INT nCurrSel; - - /* Get setted number of digits in field */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_CURRENCYGRPNUM, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnCurrGrouping = nCurrSel; - - return TRUE; -} - -/* Set currency field separator */ -static BOOL -SetCurrencyFieldSep(HWND hwndDlg, PWSTR pszCurrThousandSep) -{ - /* Get setted currency field separator */ - SendDlgItemMessageW(hwndDlg, IDC_CURRENCYGRPSEP, - WM_GETTEXT, - (WPARAM)MAX_CURRTHOUSANDSEP, - (LPARAM)pszCurrThousandSep); - - return TRUE; -} - -/* Set number of fractional symbols */ -static BOOL -SetCurrencyFracSymNum(HWND hwndDlg, PINT pnCurrDigits) -{ - INT nCurrSel; - - /* Get setted number of fractional symbols */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_CURRENCYDECNUM, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnCurrDigits = nCurrSel; - - return TRUE; -} - -/* Set currency separator */ -static BOOL -SetCurrencySep(HWND hwndDlg, PWSTR pszCurrDecimalSep) -{ - /* Get setted currency decimal separator */ - SendDlgItemMessageW(hwndDlg, IDC_CURRENCYDECSEP, - WM_GETTEXT, - (WPARAM)MAX_CURRDECIMALSEP, - (LPARAM)pszCurrDecimalSep); - - return TRUE; -} - -/* Set negative currency sum format */ -static BOOL -SetNegCurrencySumFmt(HWND hwndDlg, PINT pnCurrNegFormat) -{ - INT nCurrSel; - - /* Get setted currency unit */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_CURRENCYNEGVALUE, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnCurrNegFormat = nCurrSel; - - return TRUE; -} - -/* Set positive currency sum format */ -static BOOL -SetPosCurrencySumFmt(HWND hwndDlg, PINT pnCurrPosFormat) -{ - INT nCurrSel; - - /* Get setted currency unit */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_CURRENCYPOSVALUE, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnCurrPosFormat = nCurrSel; - - return TRUE; -} - -/* Set currency symbol */ -static BOOL -SetCurrencySymbol(HWND hwndDlg, PWSTR pszCurrSymbol) -{ - /* Get setted currency unit */ - SendDlgItemMessageW(hwndDlg, IDC_CURRENCYSYMBOL, - WM_GETTEXT, - (WPARAM)MAX_CURRSYMBOL, - (LPARAM)pszCurrSymbol); - - return TRUE; -} - - -static BOOL -SetCurrencySetting(HWND hwndDlg, PGLOBALDATA pGlobalData) +static +BOOL +GetCurrencySetting( + 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)) - { + INT nCurrGrouping; + + /* Currency symbol */ + GetSelectedComboBoxText(hwndDlg, + IDC_CURRENCYSYMBOL, + szCurrSymbol, + MAX_SAMPLES_STR_SIZE); + + if (szCurrSymbol[0] == L'\0') + { + /* TODO: Show error message */ + return FALSE; }
- /* store to global data */ + /* Positive Amount */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_CURRENCYPOSVALUE, + &nCurrPosFormat); + + /* Negative Amount */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_CURRENCYNEGVALUE, + &nCurrNegFormat); + + /* Decimal separator */ + GetSelectedComboBoxText(hwndDlg, + IDC_CURRENCYDECSEP, + szCurrDecimalSep, + MAX_SAMPLES_STR_SIZE); + + if (szCurrDecimalSep[0] == L'\0') + { + /* TODO: Show error message */ + + return FALSE; + } + + /* Number of fractional digits */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_CURRENCYDECNUM, + &nCurrDigits); + + /* Grouping symbol */ + GetSelectedComboBoxText(hwndDlg, + IDC_CURRENCYGRPSEP, + szCurrThousandSep, + MAX_SAMPLES_STR_SIZE); + + if (szCurrThousandSep[0] == L'\0') + { + /* TODO: Show error message */ + + return FALSE; + } + + /* Digit grouping */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_CURRENCYGRPNUM, + &nCurrGrouping); + + /* Store settings in global data */ wcscpy(pGlobalData->szCurrSymbol, szCurrSymbol); pGlobalData->nCurrGrouping = nCurrGrouping; wcscpy(pGlobalData->szCurrDecimalSep, szCurrDecimalSep); @@ -448,7 +383,8 @@ case IDC_CURRENCYDECNUM: case IDC_CURRENCYGRPSEP: case IDC_CURRENCYGRPNUM: - if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE) + if (HIWORD(wParam) == CBN_SELCHANGE || + HIWORD(wParam) == CBN_EDITCHANGE) { /* Enable the Apply button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); @@ -459,7 +395,7 @@ case WM_NOTIFY: if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { - if (SetCurrencySetting(hwndDlg, pGlobalData)) + if (GetCurrencySetting(hwndDlg, pGlobalData)) { pGlobalData->bUserLocaleChanged = TRUE; UpdateExamples(hwndDlg, pGlobalData);
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 14:41:50 2017 @@ -162,7 +162,6 @@ PrintErrorMsgBox(IDS_ERROR_SYMBOL_FORMAT_SHORT); return FALSE; } - }
if (OpenApostFlg || nFmtStrSize == 0) @@ -221,7 +220,6 @@ PrintErrorMsgBox(IDS_ERROR_SYMBOL_FORMAT_LONG); return FALSE; } - }
if (OpenApostFlg || nFmtStrSize == 0) @@ -515,24 +513,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)) + +static +BOOL +GetDateSetting( + HWND hwndDlg, + PGLOBALDATA pGlobalData) +{ + WCHAR szLongDateFormat[MAX_SAMPLES_STR_SIZE]; + WCHAR szShortDateFormat[MAX_SAMPLES_STR_SIZE]; + WCHAR szDateSeparator[MAX_SAMPLES_STR_SIZE]; + + if (!SetLongDateFormat(hwndDlg, szLongDateFormat) || + !SetShortDateFormat(hwndDlg, szShortDateFormat) || + !SetShortDateSep(hwndDlg, szDateSeparator)) { return FALSE; }
- /* store to global data */ - wcscpy(pGlobalData->szLongDateFormat, szLongDateFmt); - wcscpy(pGlobalData->szShortDateFormat, szShortDateFmt); - wcscpy(pGlobalData->szDateSep, szShortDateSep); + /* Store settings in global data */ + wcscpy(pGlobalData->szLongDateFormat, szLongDateFormat); + wcscpy(pGlobalData->szShortDateFormat, szShortDateFormat); + wcscpy(pGlobalData->szDateSep, szDateSeparator);
return TRUE; } @@ -560,22 +562,22 @@ InitLongDateCB(hwndDlg, pGlobalData); InitShortDateSepSamples(hwndDlg, pGlobalData); /* TODO: Add other calendar types */ + pGlobalData->bEnableYearNotification = TRUE; break;
case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_SECONDYEAR_EDIT: - if (HIWORD(wParam) == EN_CHANGE) + if (HIWORD(wParam) == EN_CHANGE && + pGlobalData != NULL && + pGlobalData->bEnableYearNotification == TRUE) { SetMinDate(hwndDlg); + + /* Enable the Apply button */ + PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } - break; - - case IDC_SCR_MAX_YEAR: - /* Set "Apply" button enabled */ - /* FIXME */ - //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break;
case IDC_CALTYPE_COMBO: @@ -583,7 +585,8 @@ case IDC_SHRTDATEFMT_COMBO: case IDC_LONGDATEFMT_COMBO: case IDC_SHRTDATESEP_COMBO: - if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE) + if (HIWORD(wParam) == CBN_SELCHANGE || + HIWORD(wParam) == CBN_EDITCHANGE) { /* Enable the Apply button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); @@ -595,7 +598,7 @@ case WM_NOTIFY: if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { - if (SetDateSetting(hwndDlg, pGlobalData)) + if (GetDateSetting(hwndDlg, pGlobalData)) { pGlobalData->bUserLocaleChanged = TRUE; SetMaxDate(hwndDlg, pGlobalData->UserLCID);
Modified: trunk/reactos/dll/cpl/intl/intl.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/intl.h?rev=744... ============================================================================== --- trunk/reactos/dll/cpl/intl/intl.h [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/intl/intl.h [iso-8859-1] Sat May 6 14:41:50 2017 @@ -61,13 +61,15 @@
typedef struct _GLOBALDATA { + /* General */ + WCHAR szNumPositiveSign[MAX_NUMPOSITIVESIGN]; + WCHAR szNumNativeDigits[MAX_NUMNATIVEDIGITS]; + /* Number */ WCHAR szNumDecimalSep[MAX_NUMDECIMALSEP]; WCHAR szNumThousandSep[MAX_NUMTHOUSANDSEP]; WCHAR szNumNegativeSign[MAX_NUMNEGATIVESIGN]; - WCHAR szNumPositiveSign[MAX_NUMPOSITIVESIGN]; WCHAR szNumListSep[MAX_NUMLISTSEP]; - WCHAR szNumNativeDigits[MAX_NUMNATIVEDIGITS]; INT nNumNegFormat; INT nNumDigits; INT nNumLeadingZero; @@ -101,6 +103,7 @@ INT nFirstWeekOfYear; INT nDate; INT nCalendarType; + BOOL bEnableYearNotification;
/* Other */ WCHAR szMiscCountry[MAX_MISCCOUNTRY]; @@ -191,6 +194,19 @@ PWSTR ReplaceSubStr(PCWSTR szSourceStr, PCWSTR szStrToReplace, PCWSTR szTempl);
+VOID +GetSelectedComboBoxText( + HWND hwndDlg, + INT nIdDlgItem, + PWSTR Buffer, + UINT uSize); + +VOID +GetSelectedComboBoxIndex( + HWND hwndDlg, + INT nIdDlgItem, + PINT pValue); + /* kblayouts.c */ VOID AddNewKbLayoutsByLcid(LCID Lcid);
Modified: trunk/reactos/dll/cpl/intl/misc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/misc.c?rev=744... ============================================================================== --- trunk/reactos/dll/cpl/intl/misc.c [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/intl/misc.c [iso-8859-1] Sat May 6 14:41:50 2017 @@ -171,4 +171,61 @@ return szDestStr; }
+ +VOID +GetSelectedComboBoxText( + HWND hwndDlg, + INT nIdDlgItem, + PWSTR Buffer, + UINT uSize) +{ + HWND hChildWnd; + PWSTR tmp; + INT nIndex; + UINT uReqSize; + + /* Get handle to time format control */ + hChildWnd = GetDlgItem(hwndDlg, nIdDlgItem); + if (hChildWnd == NULL) + return; + + /* Get index to selected time format */ + nIndex = SendMessageW(hChildWnd, CB_GETCURSEL, 0, 0); + if (nIndex == CB_ERR) + { + /* No selection? Get content of the edit control */ + SendMessageW(hChildWnd, WM_GETTEXT, uSize, (LPARAM)Buffer); + } + else + { + /* Get requested size, including the null terminator; + * it shouldn't be required because the previous CB_LIMITTEXT, + * but it would be better to check it anyways */ + uReqSize = SendMessageW(hChildWnd, CB_GETLBTEXTLEN, (WPARAM)nIndex, 0) + 1; + + /* Allocate enough space to be more safe */ + tmp = (PWSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, uReqSize * sizeof(WCHAR)); + if (tmp != NULL) + { + /* Get selected time format text */ + SendMessageW(hChildWnd, CB_GETLBTEXT, (WPARAM)nIndex, (LPARAM)tmp); + + /* Finally, copy the result into the output */ + wcsncpy(Buffer, tmp, uSize); + + HeapFree(GetProcessHeap(), 0, tmp); + } + } +} + + +VOID +GetSelectedComboBoxIndex( + HWND hwndDlg, + INT nIdDlgItem, + PINT pValue) +{ + *pValue = SendDlgItemMessageW(hwndDlg, nIdDlgItem, CB_GETCURSEL, 0, 0); +} + /* EOF */
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 14:41:50 2017 @@ -469,195 +469,105 @@ (LPARAM)OutBuffer); }
-/* Set num decimal separator */ -static BOOL -SetNumDecimalSep(HWND hwndDlg, - PWSTR pszNumDecimalSep) -{ - /* Get setted decimal separator */ - SendDlgItemMessageW(hwndDlg, IDC_NUMBERDSYMBOL, - WM_GETTEXT, - (WPARAM)MAX_NUMDECIMALSEP, - (LPARAM)pszNumDecimalSep); - - return TRUE; -} - -/* Set number of fractional symbols */ -static BOOL -SetFracSymNum(HWND hwndDlg, - PINT pnNumDigits) -{ - INT nCurrSel; - - /* Get setted number of fractional symbols */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_NUMBERSNDIGDEC, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnNumDigits = nCurrSel; - - return TRUE; -} - -/* Set field separator */ -static BOOL -SetNumFieldSep(HWND hwndDlg, - PWSTR pszNumThousandSep) -{ - /* Get thousand separator */ - SendDlgItemMessageW(hwndDlg, IDC_NUMBERSDIGITGRSYM, - WM_GETTEXT, - (WPARAM)MAX_NUMTHOUSANDSEP, - (LPARAM)pszNumThousandSep); - - return TRUE; -} - -/* Set number of digits in field */ -static BOOL -SetFieldDigNum(HWND hwndDlg, - PINT pnNumGrouping) -{ - INT nCurrSel; - - /* Get setted negative sum format */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_NUMBERSDGROUPING, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnNumGrouping = nCurrSel; - - return TRUE; -} - -/* Set negative sign */ -static BOOL -SetNumNegSign(HWND hwndDlg, - PWSTR pszNumNegativeSign) -{ - /* Get setted negative sign */ - SendDlgItemMessageW(hwndDlg, IDC_NUMBERSNSIGNSYM, - WM_GETTEXT, - (WPARAM)MAX_NUMNEGATIVESIGN, - (LPARAM)pszNumNegativeSign); - - return TRUE; -} - -/* Set negative sum format */ -static BOOL -SetNegSumFmt(HWND hwndDlg, - PINT pnNumNegFormat) -{ - INT nCurrSel; - - /* Get setted negative sum format */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_NUMBERSNNUMFORMAT, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnNumNegFormat = nCurrSel; - - return TRUE; -} - -/* Set leading zero */ -static BOOL -SetNumLeadZero(HWND hwndDlg, - PINT pnNumLeadingZero) -{ - INT nCurrSel; - - /* Get setted leading zero format */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_NUMBERSDISPLEADZER, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnNumLeadingZero = nCurrSel; - - return TRUE; -} - -/* Set elements list separator */ -static BOOL -SetNumListSep(HWND hwndDlg, - PWSTR pszNumListSep) -{ - /* Get setted list separator */ - SendDlgItemMessageW(hwndDlg, IDC_NUMBERSLSEP, - WM_GETTEXT, - (WPARAM)MAX_NUMLISTSEP, - (LPARAM)pszNumListSep); - - return TRUE; -} - -/* Set units system */ -static BOOL -SetNumUnitsSys(HWND hwndDlg, - PINT pnNumMeasure) -{ - INT nCurrSel; - - /* Get setted units system */ - nCurrSel = SendDlgItemMessageW(hwndDlg, IDC_NUMBERSMEASSYS, - CB_GETCURSEL, - (WPARAM)0, - (LPARAM)0); - if (nCurrSel == CB_ERR) - return FALSE; - - *pnNumMeasure = nCurrSel; - - return TRUE; -} - -static BOOL -SetNumberSetting(HWND hwndDlg, PGLOBALDATA pGlobalData) + +static +BOOL +GetNumberSetting( + 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)) - { + INT nNumDigits; + INT nNumGrouping; + INT nNumNegFormat; + INT nNumLeadingZero; + INT nNumMeasure; + + /* Decimal symbol */ + GetSelectedComboBoxText(hwndDlg, + IDC_NUMBERDSYMBOL, + szNumDecimalSep, + MAX_NUMDECIMALSEP); + + if (szNumDecimalSep[0] == L'\0') + { + /* TODO: Show error message */ + return FALSE; }
- /* store to global data */ + /* Number of digits after decimal */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_NUMBERSNDIGDEC, + &nNumDigits); + + /* Digit grouping symbol */ + GetSelectedComboBoxText(hwndDlg, + IDC_NUMBERSDIGITGRSYM, + szNumThousandSep, + MAX_NUMTHOUSANDSEP); + + if (szNumThousandSep[0] == L'\0') + { + /* TODO: Show error message */ + + return FALSE; + } + + /* Digit grouping */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_NUMBERSDGROUPING, + &nNumGrouping); + + /* Negative sign symbol */ + GetSelectedComboBoxText(hwndDlg, + IDC_NUMBERSNSIGNSYM, + szNumNegativeSign, + MAX_NUMNEGATIVESIGN); + + if (szNumNegativeSign[0] == L'\0') + { + /* TODO: Show error message */ + + return FALSE; + } + + /* Negative number format */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_NUMBERSNNUMFORMAT, + &nNumNegFormat); + + /* Display leading zeros */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_NUMBERSDISPLEADZER, + &nNumLeadingZero); + + /* List separator */ + GetSelectedComboBoxText(hwndDlg, + IDC_NUMBERSLSEP, + szNumListSep, + MAX_NUMLISTSEP); + + if (szNumListSep[0] == L'\0') + { + /* TODO: Show error message */ + + return FALSE; + } + + /* Measurement system */ + GetSelectedComboBoxIndex(hwndDlg, + IDC_NUMBERSMEASSYS, + &nNumMeasure); + + /* Store settings in 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; @@ -717,10 +627,9 @@ break;
case WM_NOTIFY: - /* If push apply button */ if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { - if (SetNumberSetting(hwndDlg, pGlobalData)) + if (GetNumberSetting(hwndDlg, pGlobalData)) { pGlobalData->bUserLocaleChanged = TRUE; UpdateNumSamples(hwndDlg, pGlobalData);
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 14:41:50 2017 @@ -51,47 +51,6 @@ }
-static VOID -GetSelectedComboEntry(HWND hwndDlg, DWORD dwIdc, WCHAR *Buffer, UINT uSize) -{ - HWND hChildWnd; - PWSTR tmp; - INT nIndex; - UINT uReqSize; - - /* Get handle to time format control */ - hChildWnd = GetDlgItem(hwndDlg, dwIdc); - - /* Get index to selected time format */ - nIndex = SendMessageW(hChildWnd, CB_GETCURSEL, 0, 0); - if (nIndex == CB_ERR) - { - /* No selection? Get content of the edit control */ - SendMessageW(hChildWnd, WM_GETTEXT, uSize, (LPARAM)Buffer); - } - else - { - /* Get requested size, including the null terminator; - * it shouldn't be required because the previous CB_LIMITTEXT, - * but it would be better to check it anyways */ - uReqSize = SendMessageW(hChildWnd, CB_GETLBTEXTLEN, (WPARAM)nIndex, 0) + 1; - - /* Allocate enough space to be more safe */ - tmp = (PWSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, uReqSize * sizeof(WCHAR)); - if (tmp != NULL) - { - /* Get selected time format text */ - SendMessageW(hChildWnd, CB_GETLBTEXT, (WPARAM)nIndex, (LPARAM)tmp); - - /* Finally, copy the result into the output */ - wcsncpy(Buffer, tmp, uSize); - - HeapFree(GetProcessHeap(), 0, tmp); - } - } -} - - static VOID InitTimeFormatCB( @@ -195,31 +154,59 @@ 0); }
-static BOOL -SetTimeSetting(HWND hwndDlg, PGLOBALDATA pGlobalData) + +static +BOOL +GetTimeSetting( + 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') + /* Time format */ + GetSelectedComboBoxText(hwndDlg, + IDC_TIMEFORMAT, + szTimeFormat, + MAX_TIMEFORMAT); + + /* Check the time format */ + if (szTimeFormat[0] == L'\0') + { + /* TODO: Show error message */ + return FALSE; - - /* store to global data */ + } + + /* 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); @@ -281,7 +268,7 @@ case WM_NOTIFY: if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { - if (SetTimeSetting(hwndDlg, pGlobalData)) + if (GetTimeSetting(hwndDlg, pGlobalData)) { pGlobalData->bUserLocaleChanged = TRUE; UpdateTimeSample(hwndDlg, pGlobalData);