]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/calctrl.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[wxWidgets.git] / include / wx / msw / calctrl.h
index 5f78f2f08f2f40b61785b020d0ea1c7897cde9a0..c5c51d9fdee1b0b7b66b5061fb6b3d02d0e15b69 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        wx/msw/calctrl.h
 // Purpose:     wxCalendarCtrl control implementation for MSW
 // Author:      Vadim Zeitlin
 // Name:        wx/msw/calctrl.h
 // Purpose:     wxCalendarCtrl control implementation for MSW
 // Author:      Vadim Zeitlin
-// RCS-ID:      $Id$
 // Copyright:   (C) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (C) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -13,7 +12,7 @@
 class WXDLLIMPEXP_ADV wxCalendarCtrl : public wxCalendarCtrlBase
 {
 public:
 class WXDLLIMPEXP_ADV wxCalendarCtrl : public wxCalendarCtrlBase
 {
 public:
-    wxCalendarCtrl() { }
+    wxCalendarCtrl() { Init(); }
     wxCalendarCtrl(wxWindow *parent,
                    wxWindowID id,
                    const wxDateTime& date = wxDefaultDateTime,
     wxCalendarCtrl(wxWindow *parent,
                    wxWindowID id,
                    const wxDateTime& date = wxDefaultDateTime,
@@ -22,6 +21,8 @@ public:
                    long style = wxCAL_SHOW_HOLIDAYS,
                    const wxString& name = wxCalendarNameStr)
     {
                    long style = wxCAL_SHOW_HOLIDAYS,
                    const wxString& name = wxCalendarNameStr)
     {
+        Init();
+
         Create(parent, id, date, pos, size, style, name);
     }
 
         Create(parent, id, date, pos, size, style, name);
     }
 
@@ -43,17 +44,55 @@ public:
     virtual bool EnableMonthChange(bool enable = true);
 
     virtual void Mark(size_t day, bool mark);
     virtual bool EnableMonthChange(bool enable = true);
 
     virtual void Mark(size_t day, bool mark);
+    virtual void SetHoliday(size_t day);
+
+    virtual wxCalendarHitTestResult HitTest(const wxPoint& pos,
+                                            wxDateTime *date = NULL,
+                                            wxDateTime::WeekDay *wd = NULL);
+
+    virtual void SetWindowStyleFlag(long style);
 
 protected:
 
 protected:
-    virtual wxSize wxCalendarCtrl::DoGetBestSize() const;
+    virtual wxSize DoGetBestSize() const;
 
     virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
 
     virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
 
 
     virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
 
     virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
 
+    void MSWOnClick(wxMouseEvent& event);
+    void MSWOnDoubleClick(wxMouseEvent& event);
+
 private:
 private:
+    void Init();
+
+    // 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();
+
+    // reset holiday information
+    virtual void ResetHolidayAttrs() { m_holidays = 0; }
+
+    // redisplay holidays
+    virtual void RefreshHolidays() { UpdateMarks(); }
+
+
+    // 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
+    // from MSWOnNotify()
+    wxDateTime m_date;
+
+    // bit field containing the state (marked or not) of all days in the month
+    wxUint32 m_marks;
+
+    // the same but indicating whether a day is a holiday or not
+    wxUint32 m_holidays;
+
+
     DECLARE_DYNAMIC_CLASS(wxCalendarCtrl)
     DECLARE_DYNAMIC_CLASS(wxCalendarCtrl)
-    DECLARE_NO_COPY_CLASS(wxCalendarCtrl)
+    wxDECLARE_NO_COPY_CLASS(wxCalendarCtrl);
 };
 
 #endif // _WX_MSW_CALCTRL_H_
 };
 
 #endif // _WX_MSW_CALCTRL_H_