X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4965c3d7f68309cf8c676cfcd493b85c7b9c8484..761df41e86ceeed56d32c038a6c9f88554d4f47a:/include/wx/generic/calctrl.h?ds=sidebyside diff --git a/include/wx/generic/calctrl.h b/include/wx/generic/calctrl.h index 076fff2d7b..12a10c43f5 100644 --- a/include/wx/generic/calctrl.h +++ b/include/wx/generic/calctrl.h @@ -17,7 +17,7 @@ #define _WX_GENERIC_CALCTRL_H #include "wx/control.h" // the base class - +#include "wx/dcclient.h" // for wxPaintDC #include "wx/spinctrl.h" // for wxSpinEvent class WXDLLEXPORT wxComboBox; @@ -63,9 +63,19 @@ public: // set/get the current date // ------------------------ - void SetDate(const wxDateTime& date); + bool SetDate(const wxDateTime& date); // we need to be able to control if the event should be sent in SetDateAndNotify(...) const wxDateTime& GetDate() const { return m_date; } + // set/get the range in which selection can occur + // --------------------------------------------- + + bool SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime); + const wxDateTime& GetLowerDateLimit() const { return m_lowdate; } + bool SetUpperDateLimit(const wxDateTime& date = wxDefaultDateTime); + const wxDateTime& GetUpperDateLimit() const { return m_highdate; } + + bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime, const wxDateTime& upperdate = wxDefaultDateTime); + // calendar mode // ------------- @@ -189,6 +199,13 @@ private: // is this date shown? bool IsDateShown(const wxDateTime& date) const; + // is this date in the given range? + bool IsDateInRange(const wxDateTime& date) const; + + // range helpers + bool ChangeYear(wxDateTime* target) const; + bool ChangeMonth(wxDateTime* target) const; + // redraw the given date void RefreshDate(const wxDateTime& date); @@ -232,6 +249,16 @@ private: wxControl *GetMonthControl() const; wxControl *GetYearControl() const; + // OnPaint helper-methods + + // Highlight the [fromdate : todate] range using pen and brush + void HighlightRange(wxPaintDC* dc, const wxDateTime& fromdate, const wxDateTime& todate, wxPen* pen, wxBrush* brush); + + // Get the "coordinates" for the date relative to the month currently displayed. + // using (day, week): upper left coord is (1, 1), lower right coord is (7, 6) + // if the date isn't visible (-1, -1) is put in (day, week) and false is returned + bool GetDateCoord(const wxDateTime& date, int *day, int *week) const; + // the subcontrols wxStaticText *m_staticMonth; wxComboBox *m_comboMonth; @@ -242,6 +269,10 @@ private: // the current selection wxDateTime m_date; + // the date-range + wxDateTime m_lowdate; + wxDateTime m_highdate; + // default attributes wxColour m_colHighlightFg, m_colHighlightBg, @@ -255,7 +286,11 @@ private: // the width and height of one column/row in the calendar wxCoord m_widthCol, - m_heightRow; + m_heightRow, + m_rowOffset; + + wxRect m_leftArrowRect, + m_rightArrowRect; // the week day names wxString m_weekdays[7];