diff options
Diffstat (limited to 'xfa/fwl/core/ifwl_monthcalendar.h')
-rw-r--r-- | xfa/fwl/core/ifwl_monthcalendar.h | 108 |
1 files changed, 44 insertions, 64 deletions
diff --git a/xfa/fwl/core/ifwl_monthcalendar.h b/xfa/fwl/core/ifwl_monthcalendar.h index 1d63c80e58..20aecce619 100644 --- a/xfa/fwl/core/ifwl_monthcalendar.h +++ b/xfa/fwl/core/ifwl_monthcalendar.h @@ -37,10 +37,6 @@ FWL_EVENT_DEF(CFWL_EventMcdDateChanged, class CFWL_MsgMouse; class IFWL_Widget; -struct FWL_DATEINFO; - -extern uint8_t FX_DaysInMonth(int32_t iYear, uint8_t iMonth); - class IFWL_MonthCalendarDP : public IFWL_DataProvider { public: virtual int32_t GetCurDay(IFWL_Widget* pWidget) = 0; @@ -65,46 +61,57 @@ class IFWL_MonthCalendar : public IFWL_Widget { void OnDrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix) override; - int32_t CountSelect(); - bool GetSelect(int32_t& iYear, - int32_t& iMonth, - int32_t& iDay, - int32_t nIndex = 0); - bool SetSelect(int32_t iYear, int32_t iMonth, int32_t iDay); + void SetSelect(int32_t iYear, int32_t iMonth, int32_t iDay); - protected: + private: struct DATE { DATE() : iYear(0), iMonth(0), iDay(0) {} + DATE(int32_t year, int32_t month, int32_t day) : iYear(year), iMonth(month), iDay(day) {} + bool operator<(const DATE& right) { - if (iYear < right.iYear) { + if (iYear < right.iYear) return true; - } else if (iYear == right.iYear) { - if (iMonth < right.iMonth) { + if (iYear == right.iYear) { + if (iMonth < right.iMonth) return true; - } else if (iMonth == right.iMonth) { + if (iMonth == right.iMonth) return iDay < right.iDay; - } } return false; } + bool operator>(const DATE& right) { - if (iYear > right.iYear) { + if (iYear > right.iYear) return true; - } else if (iYear == right.iYear) { - if (iMonth > right.iMonth) { + if (iYear == right.iYear) { + if (iMonth > right.iMonth) return true; - } else if (iMonth == right.iMonth) { + if (iMonth == right.iMonth) return iDay > right.iDay; - } } return false; } + int32_t iYear; int32_t iMonth; int32_t iDay; }; + struct DATEINFO { + DATEINFO(int32_t day, + int32_t dayofweek, + uint32_t dwSt, + CFX_RectF rc, + CFX_WideString& wsday); + ~DATEINFO(); + + int32_t iDay; + int32_t iDayOfWeek; + uint32_t dwStates; + CFX_RectF rect; + CFX_WideString wsDay; + }; void DrawBkground(CFX_Graphics* pGraphics, IFWL_ThemeProvider* pTheme, @@ -148,38 +155,35 @@ class IFWL_MonthCalendar : public IFWL_Widget { void DrawDatesInCircle(CFX_Graphics* pGraphics, IFWL_ThemeProvider* pTheme, const CFX_Matrix* pMatrix); - void DrawTodayCircle(CFX_Graphics* pGraphics, - IFWL_ThemeProvider* pTheme, - const CFX_Matrix* pMatrix); CFX_SizeF CalcSize(bool bAutoSize = false); - void LayOut(); + void Layout(); void CalcHeadSize(); void CalcTodaySize(); void CalDateItem(); void GetCapValue(); - int32_t CalWeekNumber(int32_t iYear, int32_t iMonth, int32_t iDay); - bool GetMinDate(int32_t& iYear, int32_t& iMonth, int32_t& iDay); - bool SetMinDate(int32_t iYear, int32_t iMonth, int32_t iDay); - bool GetMaxDate(int32_t& iYear, int32_t& iMonth, int32_t& iDay); - bool SetMaxDate(int32_t iYear, int32_t iMonth, int32_t iDay); - bool InitDate(); + void InitDate(); void ClearDateItem(); - void ReSetDateItem(); - bool NextMonth(); - bool PrevMonth(); + void ResetDateItem(); + void NextMonth(); + void PrevMonth(); void ChangeToMonth(int32_t iYear, int32_t iMonth); - bool RemoveSelDay(int32_t iDay, bool bAll = false); - bool AddSelDay(int32_t iDay); - bool JumpToToday(); + void RemoveSelDay(int32_t iDay, bool bAll = false); + void AddSelDay(int32_t iDay); + void JumpToToday(); void GetHeadText(int32_t iYear, int32_t iMonth, CFX_WideString& wsHead); void GetTodayText(int32_t iYear, int32_t iMonth, int32_t iDay, CFX_WideString& wsToday); int32_t GetDayAtPoint(FX_FLOAT x, FX_FLOAT y); - bool GetDayRect(int32_t iDay, CFX_RectF& rtDay); + void GetDayRect(int32_t iDay, CFX_RectF& rtDay); + void OnLButtonDown(CFWL_MsgMouse* pMsg); + void OnLButtonUp(CFWL_MsgMouse* pMsg); + void DisForm_OnLButtonUp(CFWL_MsgMouse* pMsg); + void OnMouseMove(CFWL_MsgMouse* pMsg); + void OnMouseLeave(CFWL_MsgMouse* pMsg); - bool m_bInit; + bool m_bInitialized; CFX_RectF m_rtHead; CFX_RectF m_rtWeek; CFX_RectF m_rtLBtn; @@ -191,11 +195,10 @@ class IFWL_MonthCalendar : public IFWL_Widget { CFX_RectF m_rtTodayFlag; CFX_RectF m_rtWeekNum; CFX_RectF m_rtWeekNumSep; - CFX_RectF m_rtTemp; CFX_WideString m_wsHead; CFX_WideString m_wsToday; std::unique_ptr<CFX_DateTime> m_pDateTime; - CFX_ArrayTemplate<FWL_DATEINFO*> m_arrDates; + CFX_ArrayTemplate<DATEINFO*> m_arrDates; int32_t m_iCurYear; int32_t m_iCurMonth; int32_t m_iYear; @@ -210,7 +213,6 @@ class IFWL_MonthCalendar : public IFWL_Widget { CFX_SizeF m_szCell; CFX_SizeF m_szToday; CFX_ArrayTemplate<int32_t> m_arrSelDays; - int32_t m_iMaxSel; CFX_RectF m_rtClient; FX_FLOAT m_fHeadWid; FX_FLOAT m_fHeadHei; @@ -239,28 +241,6 @@ class IFWL_MonthCalendar : public IFWL_Widget { FX_FLOAT m_fMCWid; FX_FLOAT m_fMCHei; bool m_bFlag; - - private: - void OnLButtonDown(CFWL_MsgMouse* pMsg); - void OnLButtonUp(CFWL_MsgMouse* pMsg); - void DisForm_OnLButtonUp(CFWL_MsgMouse* pMsg); - void OnMouseMove(CFWL_MsgMouse* pMsg); - void OnMouseLeave(CFWL_MsgMouse* pMsg); -}; - -struct FWL_DATEINFO { - FWL_DATEINFO(int32_t day, - int32_t dayofweek, - uint32_t dwSt, - CFX_RectF rc, - CFX_WideString& wsday); - ~FWL_DATEINFO(); - - int32_t iDay; - int32_t iDayOfWeek; - uint32_t dwStates; - CFX_RectF rect; - CFX_WideString wsDay; }; #endif // XFA_FWL_CORE_IFWL_MONTHCALENDAR_H_ |