diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-02-14 15:06:01 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-02-15 10:51:46 +0100 |
commit | 465939feb0e9c382e5581b53b72008979ece4807 (patch) | |
tree | d926b630b0c43cebf728c7adf1958ac755d30e29 /include/svtools | |
parent | 58ce8be9f96f812ac7ac274c1b2ee30a3283b633 (diff) |
move Calendar to vcl and map to GtkCalendar
Change-Id: I1784d4d69c6c069ef1b0ad6412e83e6a0b1db12a
Reviewed-on: https://gerrit.libreoffice.org/67840
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'include/svtools')
-rw-r--r-- | include/svtools/calendar.hxx | 202 | ||||
-rw-r--r-- | include/svtools/strings.hrc | 2 |
2 files changed, 1 insertions, 203 deletions
diff --git a/include/svtools/calendar.hxx b/include/svtools/calendar.hxx index cc5b62ba9e70..562b1e9de169 100644 --- a/include/svtools/calendar.hxx +++ b/include/svtools/calendar.hxx @@ -23,6 +23,7 @@ #include <svtools/svtdllapi.h> #include <unotools/calendarwrapper.hxx> +#include <vcl/calendar.hxx> #include <vcl/ctrl.hxx> #include <vcl/field.hxx> #include <memory> @@ -43,207 +44,6 @@ class Button; Description ============ -class Calendar - -This class allows for the selection of a date. The displayed date range is -the one specified by the Date class. We display as many months as we have -space in the control. The user can switch between months using a ContextMenu -(clicking on the month's name) or via two ScrollButtons in-between the months. - --------------------------------------------------------------------------- - -WinBits - -WB_BORDER We draw a border around the window. -WB_TABSTOP Keyboard control is possible. We get the focus, when - the user clicks in the Control. - --------------------------------------------------------------------------- - -We set and get the selected date by SetCurDate()/GetCurDate(). -If the user selects a date Select() is called. If the user double clicks -DoubleClick() is called. - --------------------------------------------------------------------------- - -CalcWindowSizePixel() calculates the window size in pixel that is needed -to display a certain number of months. - --------------------------------------------------------------------------- - -SetSaturdayColor() and SetSundayColor() set a special color for Saturdays -and Sundays. -AddDateInfo() marks special days. With that we can set e.g. public holidays -to another color or encircle them (for e.g. appointments). -If we do not supply a year in the date, the day is used in EVERY year. - -AddDateInfo() can also add text for every date, which is displayed if the -BalloonHelp is enabled. -In order to not have to supply all years with the relevant data, we call -the RequestDateInfo() handler if a new year is displayed. We can then query -the year in the handler with GetRequestYear(). - --------------------------------------------------------------------------- - -In order to display a ContextMenu for a date, we need to override the -Command handler. GetDate() can infer the date from the mouse's position. -If we use the keyboard, the current date should be use. - -If a ContextMenu is displayed, the baseclass' handler must not be called. - --------------------------------------------------------------------------- - -SetNoSelection() deselects everything. -SetCurDate() does not select the current date, but only defines the focus -rectangle. -GetSelectDateCount()/GetSelectDate() query the selected range. -IsDateSelected() queries for the status of a date. - -The SelectionChanging() handler is being called while a user selects a -date. In it, we can change the selected range. E.g. if we want to limit -or extend the selected range. The selected range is realised via SelectDate() -and SelectDateRange() and queried with GetSelectDateCount()/GetSelectDate(). - -IsSelectLeft() returns the direction of the selection: -sal_True is a selection to the left or up -sal_False is a selection to the right or down - --------------------------------------------------------------------------- - -If the DateRange area changes and we want to take over the selection, we -should only do this is if IsScrollDateRangeChanged() returns sal_True. -This method returns sal_True if the area change was triggered by using the -ScrollButtons and sal_False if it was triggered by Resize(), other method -calls or by ending a selection. - -*************************************************************************/ - -typedef std::set<sal_Int32> IntDateSet; - - -class SVT_DLLPUBLIC Calendar final : public Control -{ - std::unique_ptr<IntDateSet> mpSelectTable; - std::unique_ptr<IntDateSet> mpOldSelectTable; - OUString maDayTexts[31]; - OUString maDayText; - OUString maWeekText; - CalendarWrapper maCalendarWrapper; - tools::Rectangle maPrevRect; - tools::Rectangle maNextRect; - OUString maDayOfWeekText; - long mnDayOfWeekAry[7]; - Date maOldFormatFirstDate; - Date maOldFormatLastDate; - Date maFirstDate; - Date maOldFirstDate; - Date maCurDate; - Date maOldCurDate; - Date maAnchorDate; - Color maSelColor; - Color maOtherColor; - sal_Int32 mnDayCount; - long mnDaysOffX; - long mnWeekDayOffY; - long mnDaysOffY; - long mnMonthHeight; - long mnMonthWidth; - long mnMonthPerLine; - long mnLines; - long mnDayWidth; - long mnDayHeight; - WinBits mnWinStyle; - sal_Int16 mnFirstYear; - sal_Int16 mnLastYear; - bool mbCalc:1, - mbFormat:1, - mbDrag:1, - mbSelection:1, - mbMenuDown:1, - mbSpinDown:1, - mbPrevIn:1, - mbNextIn:1, - mbTravelSelect:1, - mbAllSel:1; - Link<Calendar*,void> maSelectHdl; - - using Control::ImplInitSettings; - using Window::ImplInit; - SVT_DLLPRIVATE void ImplInit( WinBits nWinStyle ); - SVT_DLLPRIVATE void ImplInitSettings(); - - virtual void ApplySettings(vcl::RenderContext& rRenderContext) override; - - SVT_DLLPRIVATE void ImplFormat(); - using Window::ImplHitTest; - SVT_DLLPRIVATE sal_uInt16 ImplHitTest( const Point& rPos, Date& rDate ) const; - SVT_DLLPRIVATE void ImplDrawSpin(vcl::RenderContext& rRenderContext); - SVT_DLLPRIVATE void ImplDrawDate(vcl::RenderContext& rRenderContext, long nX, long nY, - sal_uInt16 nDay, sal_uInt16 nMonth, sal_Int16 nYear, - bool bOther, sal_Int32 nToday); - SVT_DLLPRIVATE void ImplDraw(vcl::RenderContext& rRenderContext); - SVT_DLLPRIVATE void ImplUpdateDate( const Date& rDate ); - SVT_DLLPRIVATE void ImplUpdateSelection( IntDateSet* pOld ); - SVT_DLLPRIVATE void ImplMouseSelect( const Date& rDate, sal_uInt16 nHitTest, - bool bMove ); - SVT_DLLPRIVATE void ImplUpdate( bool bCalcNew = false ); - using Window::ImplScroll; - SVT_DLLPRIVATE void ImplScroll( bool bPrev ); - SVT_DLLPRIVATE void ImplShowMenu( const Point& rPos, const Date& rDate ); - SVT_DLLPRIVATE void ImplTracking( const Point& rPos, bool bRepeat ); - SVT_DLLPRIVATE void ImplEndTracking( bool bCancel ); - SVT_DLLPRIVATE DayOfWeek ImplGetWeekStart() const; - -public: - Calendar( vcl::Window* pParent, WinBits nWinStyle ); - virtual ~Calendar() override; - virtual void dispose() override; - - virtual void MouseButtonDown( const MouseEvent& rMEvt ) override; - virtual void MouseButtonUp( const MouseEvent& rMEvt ) override; - virtual void MouseMove( const MouseEvent& rMEvt ) override; - virtual void Tracking( const TrackingEvent& rMEvt ) override; - virtual void KeyInput( const KeyEvent& rKEvt ) override; - virtual void Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect ) override; - virtual void Resize() override; - virtual void GetFocus() override; - virtual void LoseFocus() override; - virtual void RequestHelp( const HelpEvent& rHEvt ) override; - virtual void Command( const CommandEvent& rCEvt ) override; - virtual void StateChanged( StateChangedType nStateChange ) override; - virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; - - void Select(); - - Date GetFirstSelectedDate() const; - void EnableCallEverySelect() { mbAllSel = true; } - - void SetCurDate( const Date& rNewDate ); - void SetFirstDate( const Date& rNewFirstDate ); - const Date& GetFirstDate() const { return maFirstDate; } - Date GetLastDate() const { return GetFirstDate() + mnDayCount; } - Date GetFirstMonth() const; - Date GetLastMonth() const; - sal_uInt16 GetMonthCount() const; - bool GetDate( const Point& rPos, Date& rDate ) const; - tools::Rectangle GetDateRect( const Date& rDate ) const; - - void StartSelection(); - void EndSelection(); - - bool IsTravelSelect() const { return mbTravelSelect; } - - Size CalcWindowSizePixel() const; - - void SetSelectHdl( const Link<Calendar*,void>& rLink ) { maSelectHdl = rLink; } -}; - - -/************************************************************************* - -Description -============ - class CalendarField This class is a DateField with which one can select a date via a DropDownButton diff --git a/include/svtools/strings.hrc b/include/svtools/strings.hrc index a50b03194f8c..76176fd8b30a 100644 --- a/include/svtools/strings.hrc +++ b/include/svtools/strings.hrc @@ -159,8 +159,6 @@ #define STR_SVT_INDEXENTRY_PHONETIC_LS NC_("STR_SVT_INDEXENTRY_PHONETIC_LS", "Phonetic (alphanumeric last, grouped by syllables)") #define STR_SVT_INDEXENTRY_PHONETIC_LC NC_("STR_SVT_INDEXENTRY_PHONETIC_LC", "Phonetic (alphanumeric last, grouped by consonants)") -#define STR_SVT_CALENDAR_DAY NC_("STR_SVT_CALENDAR_DAY", "Day") -#define STR_SVT_CALENDAR_WEEK NC_("STR_SVT_CALENDAR_WEEK", "Week") #define STR_SVT_CALENDAR_TODAY NC_("STR_SVT_CALENDAR_TODAY", "Today") #define STR_SVT_CALENDAR_NONE NC_("STR_SVT_CALENDAR_NONE", "None") |