ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

date.c
Go to the documentation of this file.
00001 /*
00002  *  ReactOS
00003  *  Copyright (C) 2004 ReactOS Team
00004  *
00005  *  This program is free software; you can redistribute it and/or modify
00006  *  it under the terms of the GNU General Public License as published by
00007  *  the Free Software Foundation; either version 2 of the License, or
00008  *  (at your option) any later version.
00009  *
00010  *  This program is distributed in the hope that it will be useful,
00011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  *  GNU General Public License for more details.
00014  *
00015  *  You should have received a copy of the GNU General Public License along
00016  *  with this program; if not, write to the Free Software Foundation, Inc.,
00017  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00018  */
00019 /* $Id: date.c 54535 2011-11-29 14:55:58Z dgorbachev $
00020  *
00021  * PROJECT:         ReactOS International Control Panel
00022  * FILE:            dll/cpl/intl/date.c
00023  * PURPOSE:         Date property page
00024  * PROGRAMMER:      Eric Kohl
00025  */
00026 
00027 #include "intl.h"
00028 
00029 /* GLOBALS ******************************************************************/
00030 
00031 #define YEAR_STR_MAX_SIZE        5
00032 #define MAX_SHRT_DATE_SEPARATORS 3
00033 #define STD_DATE_SEP             _T(".")
00034 #define YEAR_DIFF                (99)
00035 #define MAX_YEAR                 (9999)
00036 
00037 static HWND hwndEnum = NULL;
00038 
00039 /* FUNCTIONS ****************************************************************/
00040 
00041 /* If char is 'y' or 'M' or 'd' return TRUE, else FALSE */
00042 BOOL
00043 isDateCompAl(TCHAR alpha)
00044 {
00045     if ((alpha == _T('y')) || (alpha == _T('M')) || (alpha == _T('d')) || (alpha == _T(' ')))
00046         return TRUE;
00047     else
00048         return FALSE;
00049 }
00050 
00051 /* Find first date separator in string */
00052 LPTSTR
00053 FindDateSep(const TCHAR *szSourceStr)
00054 {
00055     LPTSTR pszFoundSep;
00056     UINT nDateCompCount=0;
00057     UINT nDateSepCount=0;
00058 
00059     pszFoundSep = (LPTSTR)malloc(MAX_SAMPLES_STR_SIZE * sizeof(TCHAR));
00060 
00061     _tcscpy(pszFoundSep,STD_DATE_SEP);
00062 
00063     while (nDateCompCount < _tcslen(szSourceStr))
00064     {
00065         if (!isDateCompAl(szSourceStr[nDateCompCount]) && (szSourceStr[nDateCompCount] != _T('\'')))
00066         {
00067             while (!isDateCompAl(szSourceStr[nDateCompCount]) && (szSourceStr[nDateCompCount] != _T('\'')))
00068             {
00069                 pszFoundSep[nDateSepCount++] = szSourceStr[nDateCompCount];
00070                 nDateCompCount++;
00071             }
00072 
00073             pszFoundSep[nDateSepCount] = _T('\0');
00074             return pszFoundSep;
00075         }
00076 
00077         nDateCompCount++;
00078     }
00079 
00080     return pszFoundSep;
00081 }
00082 
00083 /* Replace given template in source string with string to replace and return recieved string */
00084 
00085 
00086 /* Setted up short date separator to registry */
00087 static BOOL
00088 SetShortDateSep(HWND hwndDlg, LCID lcid)
00089 {
00090     TCHAR szShortDateSep[MAX_SAMPLES_STR_SIZE];
00091     INT nSepStrSize;
00092     INT nSepCount;
00093 
00094     /* Get setted separator */
00095     SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATESEP_COMBO),
00096                 WM_GETTEXT,
00097                 (WPARAM)MAX_SAMPLES_STR_SIZE,
00098                 (LPARAM)szShortDateSep);
00099 
00100     /* Get setted separator string size */
00101     nSepStrSize = _tcslen(szShortDateSep);
00102 
00103     /* Check date components */
00104     for (nSepCount = 0; nSepCount < nSepStrSize; nSepCount++)
00105     {
00106         if (_istalnum(szShortDateSep[nSepCount]) || (szShortDateSep[nSepCount] == _T('\'')))
00107         {
00108             MessageBox(NULL,
00109                        _T("Entered short date separator contain incorrect symbol"),
00110                        _T("Error"), MB_OK | MB_ICONERROR);
00111             return FALSE;
00112         }
00113     }
00114 
00115     /* Save date separator */
00116     SetLocaleInfo(lcid, LOCALE_SDATE, szShortDateSep);
00117 
00118     return TRUE;
00119 }
00120 
00121 /* Setted up short date format to registry */
00122 static BOOL
00123 SetShortDateFormat(HWND hwndDlg, LCID lcid)
00124 {
00125     TCHAR szShortDateFmt[MAX_SAMPLES_STR_SIZE];
00126     TCHAR szShortDateSep[MAX_SAMPLES_STR_SIZE];
00127     TCHAR szFindedDateSep[MAX_SAMPLES_STR_SIZE];
00128     LPTSTR pszResultStr;
00129     BOOL OpenApostFlg = FALSE;
00130     INT nFmtStrSize;
00131     INT nDateCompCount;
00132 
00133     /* Get setted format */
00134     SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATEFMT_COMBO),
00135                 WM_GETTEXT,
00136                 (WPARAM)MAX_SAMPLES_STR_SIZE,
00137                 (LPARAM)szShortDateFmt);
00138 
00139     /* Get setted separator */
00140     SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATESEP_COMBO),
00141                 WM_GETTEXT,
00142                 (WPARAM)MAX_SAMPLES_STR_SIZE,
00143                 (LPARAM)szShortDateSep);
00144 
00145     /* Get setted format-string size */
00146     nFmtStrSize = _tcslen(szShortDateFmt);
00147 
00148     /* Check date components */
00149     for (nDateCompCount = 0; nDateCompCount < nFmtStrSize; nDateCompCount++)
00150     {
00151         if (szShortDateFmt[nDateCompCount] == _T('\''))
00152         {
00153             OpenApostFlg = !OpenApostFlg;
00154         }
00155 
00156         if (_istalnum(szShortDateFmt[nDateCompCount]) &&
00157             !isDateCompAl(szShortDateFmt[nDateCompCount]) &&
00158             !OpenApostFlg)
00159         {
00160             MessageBox(NULL,
00161                        _T("Entered short date format contain incorrect symbol"),
00162                        _T("Error"), MB_OK | MB_ICONERROR);
00163             return FALSE;
00164         }
00165 
00166     }
00167 
00168     if (OpenApostFlg)
00169     {
00170         MessageBoxW(NULL,
00171                     _T("Entered short date format contain incorrect symbol"),
00172                     _T("Error"), MB_OK | MB_ICONERROR);
00173         return FALSE;
00174     }
00175 
00176     /* Substring replacement of separator */
00177     _tcscpy(szFindedDateSep, FindDateSep(szShortDateFmt));
00178     pszResultStr = ReplaceSubStr(szShortDateFmt, szShortDateSep, szFindedDateSep);
00179     _tcscpy(szShortDateFmt, pszResultStr);
00180     free(pszResultStr);
00181 
00182     /* Save short date format */
00183     SetLocaleInfo(lcid, LOCALE_SSHORTDATE, szShortDateFmt);
00184 
00185     return TRUE;
00186 }
00187 
00188 /* Setted up long date format to registry */
00189 static BOOL
00190 SetLongDateFormat(HWND hwndDlg, LCID lcid)
00191 {
00192     TCHAR szLongDateFmt[MAX_SAMPLES_STR_SIZE];
00193     BOOL OpenApostFlg = FALSE;
00194     INT nFmtStrSize;
00195     INT nDateCompCount;
00196 
00197     /* Get setted format */
00198     SendMessage(GetDlgItem(hwndDlg, IDC_LONGDATEFMT_COMBO),
00199                 WM_GETTEXT,
00200                 (WPARAM)MAX_SAMPLES_STR_SIZE,
00201                 (LPARAM)szLongDateFmt);
00202 
00203     /* Get setted format string size */
00204     nFmtStrSize = _tcslen(szLongDateFmt);
00205 
00206     /* Check date components */
00207     for (nDateCompCount = 0; nDateCompCount < nFmtStrSize; nDateCompCount++)
00208     {
00209         if (szLongDateFmt[nDateCompCount] == _T('\''))
00210         {
00211             OpenApostFlg = !OpenApostFlg;
00212         }
00213 
00214         if (_istalnum(szLongDateFmt[nDateCompCount]) &&
00215             !isDateCompAl(szLongDateFmt[nDateCompCount]) &&
00216             !OpenApostFlg)
00217         {
00218             MessageBox(NULL,
00219                        _T("Entered long date format contain incorrect symbol"),
00220                        _T("Error"), MB_OK | MB_ICONERROR);
00221             return FALSE;
00222         }
00223 
00224     }
00225 
00226     if (OpenApostFlg)
00227     {
00228         MessageBoxW(NULL,
00229                     _T("Entered long date format contain incorrect symbol"),
00230                     _T("Error"), MB_OK | MB_ICONERROR);
00231         return FALSE;
00232     }
00233 
00234     /* Save short date format */
00235     SetLocaleInfo(lcid, LOCALE_SLONGDATE, szLongDateFmt);
00236 
00237     return TRUE;
00238 }
00239 
00240 /* Init short date separator control box */
00241 static VOID
00242 InitShortDateSepSamples(HWND hwndDlg, LCID lcid)
00243 {
00244     LPTSTR ShortDateSepSamples[MAX_SHRT_DATE_SEPARATORS] =
00245     {
00246         _T("."),
00247         _T("/"),
00248         _T("-")
00249     };
00250     TCHAR szShortDateSep[MAX_SAMPLES_STR_SIZE];
00251     INT nCBIndex;
00252     INT nRetCode;
00253 
00254     /* Get current short date separator */
00255     GetLocaleInfo(lcid,
00256                   LOCALE_SDATE,
00257                   szShortDateSep,
00258                   MAX_SAMPLES_STR_SIZE);
00259 
00260     /* Clear all box content */
00261     SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATESEP_COMBO),
00262                 CB_RESETCONTENT,
00263                 (WPARAM)0,
00264                 (LPARAM)0);
00265 
00266     /* Create standard list of separators */
00267     for (nCBIndex = 0; nCBIndex < MAX_SHRT_DATE_SEPARATORS; nCBIndex++)
00268     {
00269         SendMessageW(GetDlgItem(hwndDlg, IDC_SHRTDATESEP_COMBO),
00270                      CB_ADDSTRING,
00271                      0,
00272                      (LPARAM)ShortDateSepSamples[nCBIndex]);
00273     }
00274 
00275     /* Set current item to value from registry */
00276     nRetCode = SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATESEP_COMBO),
00277                            CB_SELECTSTRING,
00278                            -1,
00279                            (LPARAM)szShortDateSep);
00280 
00281     /* If it is not successful, add new value to list and select them */
00282     if (nRetCode == CB_ERR)
00283     {
00284         SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATESEP_COMBO),
00285                     CB_ADDSTRING,
00286                     0,
00287                     (LPARAM)szShortDateSep);
00288         SendMessageW(GetDlgItem(hwndDlg, IDC_SHRTDATESEP_COMBO),
00289                      CB_SELECTSTRING,
00290                      -1,
00291                      (LPARAM)szShortDateSep);
00292     }
00293 }
00294 
00295 static BOOL CALLBACK
00296 ShortDateFormatEnumProc(LPTSTR lpTimeFormatString)
00297 {
00298     SendMessage(hwndEnum,
00299                 CB_ADDSTRING,
00300                 0,
00301                 (LPARAM)lpTimeFormatString);
00302 
00303     return TRUE;
00304 }
00305 
00306 /* Init short date control box */
00307 VOID
00308 InitShortDateCB(HWND hwndDlg, LCID lcid)
00309 {
00310     TCHAR szShortDateFmt[MAX_SAMPLES_STR_SIZE];
00311     INT nRetCode;
00312 
00313     /* Limit text lengths */
00314     SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATEFMT_COMBO),
00315                 CB_LIMITTEXT,
00316                 MAX_SHRTDATEFMT,
00317                 0);
00318     SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATESEP_COMBO),
00319                 CB_LIMITTEXT,
00320                 MAX_SHRTDATESEP,
00321                 0);
00322 
00323     /* Get current short date format */
00324     GetLocaleInfo(lcid,
00325                   LOCALE_SSHORTDATE,
00326                   szShortDateFmt,
00327                   MAX_SAMPLES_STR_SIZE);
00328 
00329     /* Clear all box content */
00330     SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATEFMT_COMBO),
00331                 CB_RESETCONTENT,
00332                 (WPARAM)0,
00333                 (LPARAM)0);
00334 
00335     /* Enumerate short date formats */
00336     hwndEnum = GetDlgItem(hwndDlg, IDC_SHRTDATEFMT_COMBO);
00337     EnumDateFormats(ShortDateFormatEnumProc, lcid, DATE_SHORTDATE);
00338 
00339     /* Set current item to value from registry */
00340     nRetCode = SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATEFMT_COMBO),
00341                            CB_SELECTSTRING,
00342                            -1,
00343                            (LPARAM)szShortDateFmt);
00344 
00345     /* If it is not successful, add new value to list and select them */
00346     if (nRetCode == CB_ERR)
00347     {
00348         SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATEFMT_COMBO),
00349                     CB_ADDSTRING,
00350                     0,
00351                     (LPARAM)szShortDateFmt);
00352         SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATEFMT_COMBO),
00353                     CB_SELECTSTRING,
00354                     -1,
00355                     (LPARAM)szShortDateFmt);
00356     }
00357 }
00358 
00359 /* Init long date control box */
00360 static VOID
00361 InitLongDateCB(HWND hwndDlg, LCID lcid)
00362 {
00363     TCHAR szLongDateFmt[MAX_SAMPLES_STR_SIZE];
00364     INT nRetCode;
00365 
00366     /* Limit text length */
00367     SendMessage(GetDlgItem(hwndDlg, IDC_LONGDATEFMT_COMBO),
00368                 CB_LIMITTEXT,
00369                 MAX_LONGDATEFMT,
00370                 0);
00371 
00372     /* Get current long date format */
00373     GetLocaleInfo(lcid,
00374                   LOCALE_SLONGDATE,
00375                   szLongDateFmt,
00376                   MAX_SAMPLES_STR_SIZE);
00377 
00378     /* Clear all box content */
00379     SendMessage(GetDlgItem(hwndDlg, IDC_LONGDATEFMT_COMBO),
00380                 CB_RESETCONTENT,
00381                 (WPARAM)0,
00382                 (LPARAM)0);
00383 
00384     /* Enumerate short long formats */
00385     hwndEnum = GetDlgItem(hwndDlg, IDC_LONGDATEFMT_COMBO);
00386     EnumDateFormats(ShortDateFormatEnumProc, lcid, DATE_LONGDATE);
00387 
00388     /* Set current item to value from registry */
00389     nRetCode = SendMessage(GetDlgItem(hwndDlg, IDC_LONGDATEFMT_COMBO),
00390                            CB_SELECTSTRING,
00391                            -1,
00392                            (LPARAM)szLongDateFmt);
00393 
00394     /* If it is not successful, add new value to list and select them */
00395     if (nRetCode == CB_ERR)
00396     {
00397         SendMessage(GetDlgItem(hwndDlg, IDC_LONGDATEFMT_COMBO),
00398                     CB_ADDSTRING,
00399                     0,
00400                     (LPARAM)szLongDateFmt);
00401         SendMessage(GetDlgItem(hwndDlg, IDC_LONGDATEFMT_COMBO),
00402                     CB_SELECTSTRING,
00403                     -1,
00404                     (LPARAM)szLongDateFmt);
00405     }
00406 }
00407 
00408 /* Set up max date value to registry */
00409 static VOID
00410 SetMaxDate(HWND hwndDlg, LCID lcid)
00411 {
00412     TCHAR szMaxDateVal[YEAR_STR_MAX_SIZE];
00413     HWND hWndYearSpin;
00414     INT nSpinVal;
00415 
00416     hWndYearSpin = GetDlgItem(hwndDlg, IDC_SCR_MAX_YEAR);
00417 
00418     /* Get spin value */
00419     nSpinVal=LOWORD(SendMessage(hWndYearSpin,
00420                     UDM_GETPOS,
00421                     0,
00422                     0));
00423 
00424     /* convert to wide char */
00425     _itot(nSpinVal, szMaxDateVal, DECIMAL_RADIX);
00426 
00427     /* Save max date value */
00428     SetCalendarInfo(lcid,
00429                     CAL_GREGORIAN,
00430                     48 , /* CAL_ITWODIGITYEARMAX */
00431                     (LPCTSTR)szMaxDateVal);
00432 }
00433 
00434 /* Get max date value from registry set */
00435 static INT
00436 GetMaxDate(LCID lcid)
00437 {
00438     INT nMaxDateVal = 0;
00439 
00440     GetCalendarInfo(lcid,
00441                     CAL_GREGORIAN,
00442                     CAL_ITWODIGITYEARMAX | CAL_RETURN_NUMBER,
00443                     NULL,
00444                     0, /* ret type - number */
00445                     (LPDWORD)&nMaxDateVal);
00446 
00447     return nMaxDateVal;
00448 }
00449 
00450 /* Set's MIN data edit control value to MAX-99 */
00451 static VOID
00452 SetMinData(HWND hwndDlg)
00453 {
00454     TCHAR OutBuffer[YEAR_STR_MAX_SIZE];
00455     HWND hWndYearSpin;
00456     INT nSpinVal;
00457 
00458     hWndYearSpin = GetDlgItem(hwndDlg, IDC_SCR_MAX_YEAR);
00459 
00460     /* Get spin value */
00461     nSpinVal = LOWORD(SendMessage(hWndYearSpin,
00462                                   UDM_GETPOS,
00463                                   0,
00464                                   0));
00465 
00466     /* Set min year value */
00467     wsprintf(OutBuffer, _T("%d"), (DWORD)nSpinVal - YEAR_DIFF);
00468     SendMessage(GetDlgItem(hwndDlg, IDC_FIRSTYEAR_EDIT),
00469                 WM_SETTEXT,
00470                 0,
00471                 (LPARAM)OutBuffer);
00472 }
00473 
00474 /* Init spin control */
00475 static VOID
00476 InitMinMaxDateSpin(HWND hwndDlg, LCID lcid)
00477 {
00478     TCHAR OutBuffer[YEAR_STR_MAX_SIZE];
00479     HWND hWndYearSpin;
00480 
00481     /* Limit text lengths */
00482     SendMessage(GetDlgItem(hwndDlg, IDC_FIRSTYEAR_EDIT),
00483                 EM_LIMITTEXT,
00484                 MAX_YEAR_EDIT,
00485                 0);
00486     SendMessage(GetDlgItem(hwndDlg, IDC_SECONDYEAR_EDIT),
00487                 EM_LIMITTEXT,
00488                 MAX_YEAR_EDIT,
00489                 0);
00490 
00491     hWndYearSpin = GetDlgItem(hwndDlg, IDC_SCR_MAX_YEAR);
00492 
00493     /* Init max date value */
00494     wsprintf(OutBuffer, _T("%04d"), (DWORD)GetMaxDate(lcid));
00495     SendMessage(GetDlgItem(hwndDlg, IDC_SECONDYEAR_EDIT),
00496                 WM_SETTEXT,
00497                 0,
00498                 (LPARAM)OutBuffer);
00499 
00500     /* Init min date value */
00501     wsprintf(OutBuffer, _T("%04d"), (DWORD)GetMaxDate(lcid) - YEAR_DIFF);
00502     SendMessage(GetDlgItem(hwndDlg, IDC_FIRSTYEAR_EDIT),
00503                 WM_SETTEXT,
00504                 0,
00505                 (LPARAM)OutBuffer);
00506 
00507     /* Init updown control */
00508     /* Set bounds */
00509     SendMessage(hWndYearSpin,
00510                 UDM_SETRANGE,
00511                 0,
00512                 MAKELONG(MAX_YEAR,YEAR_DIFF));
00513 
00514     /* Set current value */
00515     SendMessage(hWndYearSpin,
00516                 UDM_SETPOS,
00517                 0,
00518                 MAKELONG(GetMaxDate(lcid),0));
00519 }
00520 
00521 /* Update all date locale samples */
00522 static VOID
00523 UpdateDateLocaleSamples(HWND hwndDlg,
00524                         LCID lcidLocale)
00525 {
00526     TCHAR OutBuffer[MAX_SAMPLES_STR_SIZE];
00527 
00528     /* Get short date format sample */
00529     GetDateFormat(lcidLocale, DATE_SHORTDATE, NULL, NULL, OutBuffer,
00530                   MAX_SAMPLES_STR_SIZE);
00531     SendMessage(GetDlgItem(hwndDlg, IDC_SHRTDATESAMPLE_EDIT), WM_SETTEXT,
00532         0, (LPARAM)OutBuffer);
00533 
00534     /* Get long date sample */
00535     GetDateFormat(lcidLocale, DATE_LONGDATE, NULL, NULL, OutBuffer,
00536                   MAX_SAMPLES_STR_SIZE);
00537     SendMessage(GetDlgItem(hwndDlg, IDC_LONGDATESAMPLE_EDIT),
00538         WM_SETTEXT, 0, (LPARAM)OutBuffer);
00539 }
00540 
00541 /* Property page dialog callback */
00542 INT_PTR CALLBACK
00543 DatePageProc(HWND hwndDlg,
00544              UINT uMsg,
00545              WPARAM wParam,
00546              LPARAM lParam)
00547 {
00548     PGLOBALDATA pGlobalData;
00549 
00550     pGlobalData = (PGLOBALDATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
00551 
00552     switch (uMsg)
00553     {
00554         case WM_INITDIALOG:
00555             pGlobalData = (PGLOBALDATA)((LPPROPSHEETPAGE)lParam)->lParam;
00556             SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
00557 
00558             InitMinMaxDateSpin(hwndDlg, pGlobalData->lcid);
00559             UpdateDateLocaleSamples(hwndDlg, pGlobalData->lcid);
00560             InitShortDateCB(hwndDlg, pGlobalData->lcid);
00561             InitLongDateCB(hwndDlg, pGlobalData->lcid);
00562             InitShortDateSepSamples(hwndDlg, pGlobalData->lcid);
00563             /* TODO: Add other calendar types */
00564             break;
00565 
00566         case WM_COMMAND:
00567     {
00568         switch (LOWORD(wParam))
00569         {
00570             case IDC_SECONDYEAR_EDIT:
00571             {
00572                 if(HIWORD(wParam)==EN_CHANGE)
00573                 {
00574                     SetMinData(hwndDlg);
00575                 }
00576             }
00577             case IDC_SCR_MAX_YEAR:
00578             {
00579                 /* Set "Apply" button enabled */
00580                 /* FIXME */
00581                 //PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
00582             }
00583             break;
00584             case IDC_CALTYPE_COMBO:
00585             case IDC_HIJCHRON_COMBO:
00586             case IDC_SHRTDATEFMT_COMBO:
00587             case IDC_SHRTDATESEP_COMBO:
00588             case IDC_LONGDATEFMT_COMBO:
00589             {
00590                 if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE)
00591                 {
00592                     /* Set "Apply" button enabled */
00593                     PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
00594                 }
00595             }
00596             break;
00597         }
00598     }
00599     break;
00600     case WM_NOTIFY:
00601     {
00602         LPNMHDR lpnm = (LPNMHDR)lParam;
00603         /* If push apply button */
00604         if (lpnm->code == (UINT)PSN_APPLY)
00605         {
00606             SetMaxDate(hwndDlg, pGlobalData->lcid);
00607             if(!SetShortDateSep(hwndDlg, pGlobalData->lcid)) break;
00608             if(!SetShortDateFormat(hwndDlg, pGlobalData->lcid)) break;
00609             if(!SetLongDateFormat(hwndDlg, pGlobalData->lcid)) break;
00610             InitShortDateCB(hwndDlg, pGlobalData->lcid);
00611             /* FIXME: */
00612             //Sleep(15);
00613             UpdateDateLocaleSamples(hwndDlg, pGlobalData->lcid);
00614         }
00615     }
00616     break;
00617     }
00618 
00619     return FALSE;
00620 }
00621 
00622 /* EOF */

Generated on Sun May 27 2012 04:18:11 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.