X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ddf13afcfebaeefc4d6d674fd512ecfccf3650c1..467d261e9dd430101119c76eb35aea43a31e7def:/include/wx/generic/calctrlg.h?ds=sidebyside diff --git a/include/wx/generic/calctrlg.h b/include/wx/generic/calctrlg.h index 57e1bab8af..8ef42977a3 100644 --- a/include/wx/generic/calctrlg.h +++ b/include/wx/generic/calctrlg.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: generic/calctrlg.h +// Name: wx/generic/calctrlg.h // Purpose: generic implementation of date-picker control // Author: Vadim Zeitlin // Modified by: @@ -18,6 +18,7 @@ class WXDLLIMPEXP_FWD_CORE wxComboBox; class WXDLLIMPEXP_FWD_CORE wxStaticText; class WXDLLIMPEXP_FWD_CORE wxSpinCtrl; +class WXDLLIMPEXP_FWD_CORE wxSpinEvent; // ---------------------------------------------------------------------------- // wxGenericCalendarCtrl @@ -84,9 +85,6 @@ public: // corresponds to wxCAL_NO_YEAR_CHANGE bit, deprecated, generic only void EnableYearChange(bool enable = true); - // corresponds to wxCAL_SHOW_HOLIDAYS bit, generic only - virtual void EnableHolidayDisplay(bool display = true); - // customization // ------------- @@ -127,14 +125,14 @@ public: virtual wxCalendarDateAttr *GetAttr(size_t day) const { - wxCHECK_MSG( day > 0 && day < 32, NULL, _T("invalid day") ); + wxCHECK_MSG( day > 0 && day < 32, NULL, wxT("invalid day") ); return m_attrs[day - 1]; } virtual void SetAttr(size_t day, wxCalendarDateAttr *attr) { - wxCHECK_RET( day > 0 && day < 32, _T("invalid day") ); + wxCHECK_RET( day > 0 && day < 32, wxT("invalid day") ); delete m_attrs[day - 1]; m_attrs[day - 1] = attr; @@ -168,10 +166,8 @@ public: protected: // override some base class virtuals virtual wxSize DoGetBestSize() const; - virtual void DoGetPosition(int *x, int *y) const; - virtual void DoGetSize(int *width, int *height) const; - virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags); virtual void DoMoveWindow(int x, int y, int width, int height); + virtual void DoGetSize(int *width, int *height) const; private: // common part of all ctors @@ -186,7 +182,9 @@ private: void OnDClick(wxMouseEvent& event); void OnChar(wxKeyEvent& event); void OnMonthChange(wxCommandEvent& event); - void OnYearChange(wxCommandEvent& event); + + void HandleYearChange(wxCommandEvent& event); + void OnYearChange(wxSpinEvent& event); void OnYearTextChange(wxCommandEvent& event); // (re)calc m_widthCol and m_heightRow @@ -201,15 +199,29 @@ private: // get the date from which we start drawing days wxDateTime GetStartDate() const; + // get the first/last days of the week corresponding to the current style + wxDateTime::WeekDay GetWeekStart() const + { + return HasFlag(wxCAL_MONDAY_FIRST) ? wxDateTime::Mon + : wxDateTime::Sun; + } + + wxDateTime::WeekDay GetWeekEnd() const + { + return HasFlag(wxCAL_MONDAY_FIRST) ? wxDateTime::Sun + : wxDateTime::Sat; + } + + // is this date shown? bool IsDateShown(const wxDateTime& date) const; - // is this date in the given range? + // is this date in the currently allowed range? bool IsDateInRange(const wxDateTime& date) const; - // range helpers - bool ChangeYear(wxDateTime* target) const; - bool ChangeMonth(wxDateTime* target) const; + // adjust the date to the currently allowed range, return true if it was + // changed + bool AdjustDateToRange(wxDateTime *date) const; // redraw the given date void RefreshDate(const wxDateTime& date); @@ -217,12 +229,6 @@ private: // change the date inside the same month/year void ChangeDay(const wxDateTime& date); - // set the attributes for the holidays if needed - void SetHolidayAttrs(); - - // reset all holidays - void ResetHolidayAttrs(); - // deprecated bool AllowYearChange() const { @@ -242,6 +248,9 @@ public: wxControl *GetYearControl() const; private: + virtual void ResetHolidayAttrs(); + virtual void RefreshHolidays() { Refresh(); } + // OnPaint helper-methods // Highlight the [fromdate : todate] range using pen and brush @@ -256,6 +265,7 @@ private: // typed in by the user void SetUserChangedYear() { m_userChangedYear = true; } + // the subcontrols wxStaticText *m_staticMonth; wxComboBox *m_comboMonth; @@ -286,7 +296,8 @@ private: // the width and height of one column/row in the calendar wxCoord m_widthCol, m_heightRow, - m_rowOffset; + m_rowOffset, + m_calendarWeekWidth; wxRect m_leftArrowRect, m_rightArrowRect; @@ -300,7 +311,7 @@ private: DECLARE_DYNAMIC_CLASS(wxGenericCalendarCtrl) DECLARE_EVENT_TABLE() - DECLARE_NO_COPY_CLASS(wxGenericCalendarCtrl) + wxDECLARE_NO_COPY_CLASS(wxGenericCalendarCtrl); }; #endif // _WX_GENERIC_CALCTRLG_H