X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/51317496171b33f2abb155a1214f567b79d66e43..66c2bf7b1d9326fb650acfaae22ec50528cfbf7c:/include/wx/msw/calctrl.h?ds=inline diff --git a/include/wx/msw/calctrl.h b/include/wx/msw/calctrl.h index 5f78f2f08f..c5c51d9fde 100644 --- a/include/wx/msw/calctrl.h +++ b/include/wx/msw/calctrl.h @@ -2,7 +2,6 @@ // Name: wx/msw/calctrl.h // Purpose: wxCalendarCtrl control implementation for MSW // Author: Vadim Zeitlin -// RCS-ID: $Id$ // Copyright: (C) 2008 Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -13,7 +12,7 @@ class WXDLLIMPEXP_ADV wxCalendarCtrl : public wxCalendarCtrlBase { public: - wxCalendarCtrl() { } + wxCalendarCtrl() { Init(); } wxCalendarCtrl(wxWindow *parent, wxWindowID id, const wxDateTime& date = wxDefaultDateTime, @@ -22,6 +21,8 @@ public: long style = wxCAL_SHOW_HOLIDAYS, const wxString& name = wxCalendarNameStr) { + Init(); + 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 void SetHoliday(size_t day); + + virtual wxCalendarHitTestResult HitTest(const wxPoint& pos, + wxDateTime *date = NULL, + wxDateTime::WeekDay *wd = NULL); + + virtual void SetWindowStyleFlag(long style); 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); + void MSWOnClick(wxMouseEvent& event); + void MSWOnDoubleClick(wxMouseEvent& event); + 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_NO_COPY_CLASS(wxCalendarCtrl) + wxDECLARE_NO_COPY_CLASS(wxCalendarCtrl); }; #endif // _WX_MSW_CALCTRL_H_