]> git.saurik.com Git - wxWidgets.git/commitdiff
implemented toggling of wxCAL_MONDAY_FIRST in the native MSW version of wxCalendarCtrl
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 4 Apr 2008 16:35:43 +0000 (16:35 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 4 Apr 2008 16:35:43 +0000 (16:35 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53010 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/calctrl.h
interface/calctrl.h
samples/calendar/calendar.cpp
src/msw/calctrl.cpp

index d750d54728c7647ae664f9da35c94f79c24819e2..5f752cb1c05b0fa11b2ce787d8685497ea09533e 100644 (file)
@@ -50,6 +50,8 @@ public:
                                             wxDateTime *date = NULL,
                                             wxDateTime::WeekDay *wd = NULL);
 
+    virtual void SetWindowStyleFlag(long style);
+
 protected:
     virtual wxSize wxCalendarCtrl::DoGetBestSize() const;
 
@@ -62,8 +64,13 @@ protected:
 private:
     void Init() { m_marks = 0; }
 
+    // bring the control in sync with m_marks
     void UpdateMarks();
 
+    // set first day of week in the control to correspond to our
+    // wxCAL_MONDAY_FIRST flag
+    void UpdateFirstDayOfWeek();
+
 
     // current date, we need to store it instead of simply retrieving it from
     // the control as needed in order to be able to generate the correct events
index d0b92a1fb03373e8717d057700228125a4f1b2ef..9869e33a7f7488e7452cf839c16f71482b9b328b 100644 (file)
@@ -222,9 +222,9 @@ enum wxCalendarHitTestResult
 
     @beginStyleTable
     @style{wxCAL_SUNDAY_FIRST}:
-           Show Sunday as the first day in the week (only generic)
+           Show Sunday as the first day in the week (not in wxGTK)
     @style{wxCAL_MONDAY_FIRST}:
-           Show Monday as the first day in the week (only generic)
+           Show Monday as the first day in the week (not in wxGTK)
     @style{wxCAL_SHOW_HOLIDAYS}:
            Highlight holidays in the calendar (only generic)
     @style{wxCAL_NO_YEAR_CHANGE}:
@@ -233,7 +233,7 @@ enum wxCalendarHitTestResult
            Disable the month (and, implicitly, the year) changing
     @style{wxCAL_SHOW_SURROUNDING_WEEKS}:
            Show the neighbouring weeks in the previous and next months
-           (only generic)
+           (only generic, always on for the native controls)
     @style{wxCAL_SEQUENTIAL_MONTH_SELECTION}:
            Use alternative, more compact, style for the month and year
            selection controls. (only generic)
@@ -400,7 +400,9 @@ public:
     /**
         Returns one of wxCalendarHitTestResult constants and fills either
         @a date or @a wd pointer with the corresponding value depending on the
-        hit test code. Only in generic wxCalendarCtrl.
+        hit test code.
+        
+        Not implemented in wxGTK currently.
     */
     wxCalendarHitTestResult HitTest(const wxPoint& pos,
                                     wxDateTime* date = NULL,
@@ -421,6 +423,8 @@ public:
 
     /**
         Sets the current date.
+
+        The @a date parameter must be valid.
     */
     void SetDate(const wxDateTime& date);
 
index 6b93a7eb4e082c904e23cbc0eae3dada761bf841..586a9556595d0b2839c61155746a6424e796a343 100644 (file)
@@ -269,7 +269,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 
 
     EVT_UPDATE_UI(Calendar_Cal_SeqMonth, MyFrame::OnUpdateUIGenericOnly)
+#ifdef __WXGTK20__
     EVT_UPDATE_UI(Calendar_Cal_Monday, MyFrame::OnUpdateUIGenericOnly)
+#endif
     EVT_UPDATE_UI(Calendar_Cal_Holidays, MyFrame::OnUpdateUIGenericOnly)
     EVT_UPDATE_UI(Calendar_Cal_Special, MyFrame::OnUpdateUIGenericOnly)
     EVT_UPDATE_UI(Calendar_Cal_SurroundWeeks, MyFrame::OnUpdateUIGenericOnly)
index 69c5abeb6b858d51e3b59d4ab9a6bd765a822660..a44ba3ae36a79c357eae35d488561e3a855f8e7e 100644 (file)
@@ -87,6 +87,9 @@ wxCalendarCtrl::Create(wxWindow *parent,
     if ( !MSWCreateControl(clsname, wxEmptyString, pos, size) )
         return false;
 
+    // initialize the control 
+    UpdateFirstDayOfWeek();
+
     SetDate(dt.IsValid() ? dt : wxDateTime::Today());
 
     UpdateMarks();
@@ -115,12 +118,21 @@ WXDWORD wxCalendarCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const
     return styleMSW;
 }
 
-// TODO: handle WM_WININICHANGE
+void wxCalendarCtrl::SetWindowStyleFlag(long style)
+{
+    const bool hadMondayFirst = HasFlag(wxCAL_MONDAY_FIRST);
+
+    wxCalendarCtrlBase::SetWindowStyleFlag(style);
+
+    if ( HasFlag(wxCAL_MONDAY_FIRST) != hadMondayFirst )
+        UpdateFirstDayOfWeek();
+}
 
 // ----------------------------------------------------------------------------
 // wxCalendarCtrl geometry
 // ----------------------------------------------------------------------------
 
+// TODO: handle WM_WININICHANGE
 wxSize wxCalendarCtrl::DoGetBestSize() const
 {
     RECT rc;
@@ -324,6 +336,11 @@ void wxCalendarCtrl::UpdateMarks()
     }
 }
 
+void wxCalendarCtrl::UpdateFirstDayOfWeek()
+{
+    MonthCal_SetFirstDayOfWeek(GetHwnd(), HasFlag(wxCAL_MONDAY_FIRST) ? 0 : 6);
+}
+
 // ----------------------------------------------------------------------------
 // wxCalendarCtrl events
 // ----------------------------------------------------------------------------