X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/628e155d8c70da0f962289cf1e1dea3699255707..916eabe60eee4adb05387bbf1eaf1915ae5eac18:/src/common/calctrlcmn.cpp diff --git a/src/common/calctrlcmn.cpp b/src/common/calctrlcmn.cpp index 481be6e619..dc0c442680 100644 --- a/src/common/calctrlcmn.cpp +++ b/src/common/calctrlcmn.cpp @@ -60,5 +60,75 @@ bool wxCalendarCtrlBase::EnableMonthChange(bool enable) return true; } +bool wxCalendarCtrlBase::GenerateAllChangeEvents(const wxDateTime& dateOld) +{ + const wxDateTime::Tm tm1 = dateOld.GetTm(), + tm2 = GetDate().GetTm(); + + bool pageChanged = false; + + GenerateEvent(wxEVT_CALENDAR_SEL_CHANGED); + if ( tm1.year != tm2.year || tm1.mon != tm2.mon ) + { + GenerateEvent(wxEVT_CALENDAR_PAGE_CHANGED); + + pageChanged = true; + } + + // send also one of the deprecated events + if ( tm1.year != tm2.year ) + GenerateEvent(wxEVT_CALENDAR_YEAR_CHANGED); + else if ( tm1.mon != tm2.mon ) + GenerateEvent(wxEVT_CALENDAR_MONTH_CHANGED); + else + GenerateEvent(wxEVT_CALENDAR_DAY_CHANGED); + + return pageChanged; +} + +void wxCalendarCtrlBase::EnableHolidayDisplay(bool display) +{ + long style = GetWindowStyle(); + if ( display ) + style |= wxCAL_SHOW_HOLIDAYS; + else + style &= ~wxCAL_SHOW_HOLIDAYS; + + if ( style == GetWindowStyle() ) + return; + + SetWindowStyle(style); + + if ( display ) + SetHolidayAttrs(); + else + ResetHolidayAttrs(); + + RefreshHolidays(); +} + +bool wxCalendarCtrlBase::SetHolidayAttrs() +{ + if ( !HasFlag(wxCAL_SHOW_HOLIDAYS) ) + return false; + + ResetHolidayAttrs(); + + wxDateTime::Tm tm = GetDate().GetTm(); + wxDateTime dtStart(1, tm.mon, tm.year), + dtEnd = dtStart.GetLastMonthDay(); + + wxDateTimeArray hol; + wxDateTimeHolidayAuthority::GetHolidaysInRange(dtStart, dtEnd, hol); + + const size_t count = hol.GetCount(); + for ( size_t n = 0; n < count; n++ ) + { + SetHoliday(hol[n].GetDay()); + } + + return true; +} + #endif // wxUSE_CALENDARCTRL