CBuiltInMonthCalendar


This class is an implementation of the Built-in Month Calendar control.

You can find more information in comments below. Overrided methods can be found in corresponding base class or interface.

class CBuiltInMonthCalendar :public virtual IBuiltInMonthCalendar, public CBuiltInControl
{
public:
    enum MODE // Control modes 
    {
        modeMonth, // Month is shown 
        modeYear, // Year is shown(list of monthes) 
        modeDecade, // Decade is shown(list of years) 
        modeCentury // Century is shown(list of 10-year intervals) 
    };

    enum ELEMENT_STATE // Element states 
    {
        estNormal, // Normal 
        estHovered, // Mouse pointer is over an element 
        estToday, // Element corresponds to today date 
        estTodayHovered, // Element corresponds to today date and mouse pointer is over it 
        estActive, // Element correponds to active date 
        estActiveHovered, // Element correponds to active date and mouse pointer is over it 
        estTodayActive, // Element corresponds to today and to active date as well 
        estTodayActiveHovered, // Element corresponds to today and to active date as well and mouse pointer is over it 
        estOtherRange, // Element is another range(previous or next month/decade/century) 
        estOtherRangeHovered, // Element is another range(previous or next month/decade/century) and mouse pointer is over it 
        estDisabled // Element is disabled(either because of the control is disabled or the element is out of allowed date range) 
    };

    enum TITLE_STATE // Title and today links states 
    {
        tstNormal, // Normal 
        tstHovered, // Mouse pointer is over the element 
        tstActive, // Mouse pointer was down over an element 
        tstActiveHovered, // Mouse pointer was down over an element and mouse pointer is over it 
        tstDisabled // Disabled 
    };

    enum DAY_TITLE_STATE // Day title states 
    {
        dtstNormal, // Normal 
        dtstDisabled // Disabled 
    };
public:
    // IBuiltInControl getters 
    IBuiltInControlListener * getListener() override;
    bool isDown() override;

    // IBuiltInControl setters 
    void setListener(IBuiltInControlListener *value) override;
    bool setSize(const PointF &value) override;
    bool setDPI(const Point &value) override;

    // Helpers 
    void UpdateFromStyle(IStyle *style, const String &class_name) override;
    void Update() override;
    void Render(const bool last_pass, const Matrix &matrix, const BLOCK *block) override;
    void FreeResources() override;
    // Since 8.0.0 
    void Refresh() override;

    // State change notifications 
    void NotifyOnAttach() override;
    void NotifyOnDeactivate() override;

    // Mouse input notifications 
    bool NotifyOnMouseHover(const PointF &position) override;
    bool NotifyOnMouseLeave() override;
    bool NotifyOnMouseMove(const PointF &position, const bool left, const bool middle, const bool right, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseLeftDown(const PointF &position, const bool middle, const bool right, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseLeftUp(const PointF &position, const bool middle, const bool right, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseLeftDoubleClick(const PointF &position, const bool middle, const bool right, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseMiddleDown(const PointF &position, const bool left, const bool right, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseMiddleUp(const PointF &position, const bool left, const bool right, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseMiddleDoubleClick(const PointF &position, const bool left, const bool right, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseRightDown(const PointF &position, const bool left, const bool middle, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseRightUp(const PointF &position, const bool left, const bool middle, const bool ctrl, const bool alt, const bool shift) override;
    bool NotifyOnMouseRightDoubleClick(const PointF &position, const bool left, const bool middle, const bool ctrl, const bool alt, const bool shift) override;
    void NotifyOnMouseDownCancel() override;
    bool NotifyOnMouseVerticalWheel(const PointF &position, const bool left, const bool middle, const bool right, const bool ctrl, const bool alt, const bool shift, const int delta) override;
    bool NotifyOnMouseHorizontalWheel(const PointF &position, const bool left, const bool middle, const bool right, const bool ctrl, const bool alt, const bool shift, const int delta) override;

    // Keyboard input notifications 
    bool NotifyOnKeyDown(const KEY key, const bool ctrl, const bool alt, const bool shift, const bool numlock) override;
    bool NotifyOnKeyUp(const KEY key, const bool ctrl, const bool alt, const bool shift, const bool numlock) override;
    bool NotifyOnChar(const wchar_t chr, const bool ctrl, const bool alt, const bool shift, const bool numlock) override;
    bool NotifyOnDeadChar(const wchar_t chr, const bool ctrl, const bool alt, const bool shift, const bool numlock) override;

    // Other input notifications 
    bool NotifyOnDropFiles(const PointF &position, const std::vector<String> &filenames) override;

    // Clipboard notifications(since 9.0.0) 
    bool NotifyOnPasteString(const String &text) override;

    // IBuiltInMonthCalendar getters 
    PointF getRequiredSize() override;
    int getYear() override;
    int getMonth() override;
    int getDay() override;
    int getMinYear() override; // 1600 by default 
    int getMinMonth() override; // January by default 
    int getMinDay() override; // 1 by default 
    int getMaxYear() override; // 3000 by default 
    int getMaxMonth() override; // January by default 
    int getMaxDay() override; // 1 by default 
    bool isAnimating() override;

    // IBuiltInMonthCalendar setters 
    bool setYear(const int value) override;
    bool setMonth(const int value) override;
    bool setDay(const int value) override;
    bool setMinYear(const int value) override;
    bool setMinMonth(const int value) override;
    bool setMinDay(const int value) override;
    bool setMaxYear(const int value) override;
    bool setMaxMonth(const int value) override;
    bool setMaxDay(const int value) override;

    // IBuiltInMonthCalendar methods 
    bool Next() override;
    bool Prev() override;
    bool Today() override;

    CBuiltInMonthCalendar();

    // Getters 
    MODE getMode() const; // Return mode 
    bool isShowToday() const; // Return whether "today is" link should be shown 
    RectF getTitlePadding() const; // Return title padding 
    RectF getTodayPadding() const; // Return "today" link padding 
    RectF getElementPadding() const; // Return elements padding 
    RectF getDayPadding() const; // Return days padding 
    float getTodayMargin() const; // Return distance between rectangle and text 
    float getTodayRectWidth() const; // Return width of "today" link rectangle 
    bool isAnimate() const; // Return whether range and modes should be changed with or without animation 
    float getAnimateInterval() const; // Return paint interval when animating changes 
    float getAnimateMinScale() const; // Return minimum scaling in range [0..1) used in animating mode changes 
    float getAnimateTime() const; // Return how long animation should take 
    float getScrollInterval() const; // Return range change interval when mouse is down over the next/prev range change arrows 
    TEXT_ALIGN getTitleAlign(const TITLE_STATE state) const; // Return title alignement 
    RectF getTitleBorderRadius(const TITLE_STATE state) const; // Return title corner radiuses 
    RectF getTitleBorderWidth(const TITLE_STATE state) const; // Return title border widths 
    RectC getTitleBorderColor(const TITLE_STATE state) const; // Return title border colors 
    Color getTitleBackgroundColor(const TITLE_STATE state) const; // Return title background color 
    Gradient *getTitleBackgroundGradient(const TITLE_STATE state); // Return title background gradient 
    Color getTitleColor(const TITLE_STATE state) const; // Return title color 
    RectF getTitlePrevRangeBorderRadius(const TITLE_STATE state) const; // Return prev range button corner radiuses 
    RectF getTitlePrevRangeBorderWidth(const TITLE_STATE state) const; // Return prev range button border widths 
    RectC getTitlePrevRangeBorderColor(const TITLE_STATE state) const; // Return prev range button border colors 
    Color getTitlePrevRangeBackgroundColor(const TITLE_STATE state) const; // Return prev range button background color 
    Gradient *getTitlePrevRangeBackgroundGradient(const TITLE_STATE state); // Return prev range button background gradient 
    RectF getTitlePrevRangePadding(const TITLE_STATE state) const; // Return prev range button arrow padding 
    Color getTitlePrevRangeColor1(const TITLE_STATE state) const; // Return prev range button arrow first point color 
    Color getTitlePrevRangeColor2(const TITLE_STATE state) const; // Return prev range button arrow second point color 
    Color getTitlePrevRangeColor3(const TITLE_STATE state) const; // Return prev range button arrow third point color 
    RectF getTitleNextRangeBorderRadius(const TITLE_STATE state) const; // Return next range button corner radiuses 
    RectF getTitleNextRangeBorderWidth(const TITLE_STATE state) const; // Return next range button border widths 
    RectC getTitleNextRangeBorderColor(const TITLE_STATE state) const; // Return next range button border colors 
    Color getTitleNextRangeBackgroundColor(const TITLE_STATE state) const; // Return next range button background color 
    Gradient *getTitleNextRangeBackgroundGradient(const TITLE_STATE state); // Return next range button background gradient 
    RectF getTitleNextRangePadding(const TITLE_STATE state) const; // Return next range button arrow padding 
    Color getTitleNextRangeColor1(const TITLE_STATE state) const; // Return next range button arrow first point color 
    Color getTitleNextRangeColor2(const TITLE_STATE state) const; // Return next range button arrow second point color 
    Color getTitleNextRangeColor3(const TITLE_STATE state) const; // Return next range button arrow third point color 
    TEXT_ALIGN getTodayAlign(const TITLE_STATE state) const; // Return "today" link text align 
    RectF getTodayBorderRadius(const TITLE_STATE state) const; // Return "today" link corner radiuses 
    RectF getTodayBorderWidth(const TITLE_STATE state) const; // Return "today" link border widths 
    RectC getTodayBorderColor(const TITLE_STATE state) const; // Return "today" link border colors 
    Color getTodayBackgroundColor(const TITLE_STATE state) const; // Return "today" link background color 
    Gradient *getTodayBackgroundGradient(const TITLE_STATE state); // Return "today" link background gradient 
    Color getTodayColor(const TITLE_STATE state) const; // Return "today" link text color 
    RectF getTodayRectBorderRadius(const TITLE_STATE state) const; // Return "today" link rectangle corner radiuses 
    RectF getTodayRectBorderWidth(const TITLE_STATE state) const; // Return "today" link rectangle border widths 
    RectC getTodayRectBorderColor(const TITLE_STATE state) const; // Return "today" link rectangle border colors 
    Color getTodayRectBackgroundColor(const TITLE_STATE state) const; // Return "today" link rectangle background color 
    Gradient *getTodayRectBackgroundGradient(const TITLE_STATE state); // Return "today" link rectangle background gradient 
    TEXT_ALIGN getElementHorizontalAlign(const ELEMENT_STATE state) const; // Return element horizontal alignment 
    VERTICAL_ALIGN getElementVerticalAlign(const ELEMENT_STATE state) const; // Return element vertical alignment 
    RectF getElementBorderRadius(const ELEMENT_STATE state) const; // Return element corner radiuses 
    RectF getElementBorderWidth(const ELEMENT_STATE state) const; // Return element border widths 
    RectC getElementBorderColor(const ELEMENT_STATE state) const; // Return element border colors 
    Color getElementBackgroundColor(const ELEMENT_STATE state) const; // Return element background color 
    Gradient *getElementBackgroundGradient(const ELEMENT_STATE state); // Return element background gradient 
    Color getElementColor(const ELEMENT_STATE state) const; // Return element text color 
    Color getElementOutlineColor(const ELEMENT_STATE state) const; // Return element outline color 
    unsigned int getElementOutlineMask(const ELEMENT_STATE state) const; // Return element outline mask 
    TEXT_ALIGN getDayHorizontalAlign(const ELEMENT_STATE state) const; // Return day horizontal alignment 
    VERTICAL_ALIGN getDayVerticalAlign(const ELEMENT_STATE state) const; // Return day vertical alignment 
    TEXT_ALIGN getDayTitleHorizontalAlign(const DAY_TITLE_STATE state) const; // Return day title horizontal alignment 
    VERTICAL_ALIGN getDayTitleVerticalAlign(const DAY_TITLE_STATE state) const; // Return day title vertical alignment 
    RectF getDayTitleBorderRadius(const DAY_TITLE_STATE state) const; // Return day title corner radiuses 
    RectF getDayTitleBorderWidth(const DAY_TITLE_STATE state) const; // Return day title border widths 
    RectC getDayTitleBorderColor(const DAY_TITLE_STATE state) const; // Return day title border colors 
    Color getDayTitleBackgroundColor(const DAY_TITLE_STATE state) const; // Return day title background color 
    Gradient *getDayTitleBackgroundGradient(const DAY_TITLE_STATE state); // Return day title background gradient 
    Color getDayTitleColor(const DAY_TITLE_STATE state) const; // Return day title text color 

    // Setters 
    bool setMode(const MODE value); // Set mode 
    bool setShowToday(const bool value); // Set whether "today is" link should be shown 
    bool setTitlePadding(const RectF &value); // Set title padding 
    bool setTodayPadding(const RectF &value); // Set "today" link padding 
    bool setElementPadding(const RectF &value); // Set elements padding 
    bool setDayPadding(const RectF &value); // Set days padding 
    bool setTodayMargin(const float value); // Set distance between rectangle and text 
    bool setTodayRectWidth(const float value); // Set width of "today" link rectangle 
    bool setAnimate(const bool value); // Set whether range and modes should be changed with or without animation 
    bool setAnimateInterval(const float value); // Set paint interval when animating changes 
    bool setAnimateMinScale(const float value); // Set minimum scaling in range [0..1) used in animating mode changes 
    bool setAnimateTime(const float value); // Set how long animation should take 
    bool setScrollInterval(const float value); // Set range change interval when mouse is down over the next/prev range change arrows 
    bool setTitleAlign(const TITLE_STATE state, const TEXT_ALIGN value); // Set title alignement 
    bool setTitleBorderRadius(const TITLE_STATE state, const RectF &value); // Set title corner radiuses 
    bool setTitleBorderWidth(const TITLE_STATE state, const RectF &value); // Set title border widths 
    bool setTitleBorderColor(const TITLE_STATE state, const RectC &value); // Set title border colors 
    bool setTitleBackgroundColor(const TITLE_STATE state, const Color &value); // Set title background color 
    bool setTitleColor(const TITLE_STATE state, const Color &value); // Set title color 
    bool setTitlePrevRangeBorderRadius(const TITLE_STATE state, const RectF &value); // Set prev range button corner radiuses 
    bool setTitlePrevRangeBorderWidth(const TITLE_STATE state, const RectF &value); // Set prev range button border widths 
    bool setTitlePrevRangeBorderColor(const TITLE_STATE state, const RectC &value); // Set prev range button border colors 
    bool setTitlePrevRangeBackgroundColor(const TITLE_STATE state, const Color &value); // Set prev range button background color 
    bool setTitlePrevRangePadding(const TITLE_STATE state, const RectF &value); // Set prev range button arrow padding 
    bool setTitlePrevRangeColor1(const TITLE_STATE state, const Color &value); // Set prev range button arrow first point color 
    bool setTitlePrevRangeColor2(const TITLE_STATE state, const Color &value); // Set prev range button arrow second point color 
    bool setTitlePrevRangeColor3(const TITLE_STATE state, const Color &value); // Set prev range button arrow third point color 
    bool setTitleNextRangeBorderRadius(const TITLE_STATE state, const RectF &value); // Set next range button corner radiuses 
    bool setTitleNextRangeBorderWidth(const TITLE_STATE state, const RectF &value); // Set next range button border widths 
    bool setTitleNextRangeBorderColor(const TITLE_STATE state, const RectC &value); // Set next range button border colors 
    bool setTitleNextRangeBackgroundColor(const TITLE_STATE state, const Color &value); // Set next range button background color 
    bool setTitleNextRangePadding(const TITLE_STATE state, const RectF &value); // Set next range button arrow padding 
    bool setTitleNextRangeColor1(const TITLE_STATE state, const Color &value); // Set next range button arrow first point color 
    bool setTitleNextRangeColor2(const TITLE_STATE state, const Color &value); // Set next range button arrow second point color 
    bool setTitleNextRangeColor3(const TITLE_STATE state, const Color &value); // Set next range button arrow third point color 
    bool setTodayAlign(const TITLE_STATE state, const TEXT_ALIGN value); // Set "today" link text align 
    bool setTodayBorderRadius(const TITLE_STATE state, const RectF &value); // Set "today" link corner radiuses 
    bool setTodayBorderWidth(const TITLE_STATE state, const RectF &value); // Set "today" link border widths 
    bool setTodayBorderColor(const TITLE_STATE state, const RectC &value); // Set "today" link border colors 
    bool setTodayBackgroundColor(const TITLE_STATE state, const Color &value); // Set "today" link background color 
    bool setTodayColor(const TITLE_STATE state, const Color &value); // Set "today" link text color 
    bool setTodayRectBorderRadius(const TITLE_STATE state, const RectF &value); // Set "today" link rectangle corner radiuses 
    bool setTodayRectBorderWidth(const TITLE_STATE state, const RectF &value); // Set "today" link rectangle border widths 
    bool setTodayRectBorderColor(const TITLE_STATE state, const RectC &value); // Set "today" link rectangle border colors 
    bool setTodayRectBackgroundColor(const TITLE_STATE state, const Color &value); // Set "today" link rectangle background color 
    bool setElementHorizontalAlign(const ELEMENT_STATE state, const TEXT_ALIGN value); // Set element horizontal alignment 
    bool setElementVerticalAlign(const ELEMENT_STATE state, const VERTICAL_ALIGN value); // Set element vertical alignment 
    bool setElementBorderRadius(const ELEMENT_STATE state, const RectF &value); // Set element corner radiuses 
    bool setElementBorderWidth(const ELEMENT_STATE state, const RectF &value); // Set element border widths 
    bool setElementBorderColor(const ELEMENT_STATE state, const RectC &value); // Set element border colors 
    bool setElementBackgroundColor(const ELEMENT_STATE state, const Color &value); // Set element background color 
    bool setElementColor(const ELEMENT_STATE state, const Color &value); // Set element text color 
    bool setElementOutlineColor(const ELEMENT_STATE state, const Color &value); // Set element outline color 
    bool setElementOutlineMask(const ELEMENT_STATE state, const unsigned int value); // Set element outline mask 
    bool setDayHorizontalAlign(const ELEMENT_STATE state, const TEXT_ALIGN value); // Set day horizontal alignment 
    bool setDayVerticalAlign(const ELEMENT_STATE state, const VERTICAL_ALIGN value); // Set day vertical alignment 
    bool setDayTitleHorizontalAlign(const DAY_TITLE_STATE state, const TEXT_ALIGN value); // Set day title horizontal alignment 
    bool setDayTitleVerticalAlign(const DAY_TITLE_STATE state, const VERTICAL_ALIGN value); // Set day title vertical alignment 
    bool setDayTitleBorderRadius(const DAY_TITLE_STATE state, const RectF &value); // Set day title corner radiuses 
    bool setDayTitleBorderWidth(const DAY_TITLE_STATE state, const RectF &value); // Set day title border widths 
    bool setDayTitleBorderColor(const DAY_TITLE_STATE state, const RectC &value); // Set day title border colors 
    bool setDayTitleBackgroundColor(const DAY_TITLE_STATE state, const Color &value); // Set day title background color 
    bool setDayTitleColor(const DAY_TITLE_STATE state, const Color &value); // Set day title text color 
};
Namespace: nitisa::standard
Include: Standard/BuiltInControls/MonthCalendar/BuiltInMonthCalendar.h