📄 sgrcalendarcontrol.hpp
字号:
//
// SGRCalendarControl.hpp
//
// Copyright (C) 2006 Sophia Cradle Incorporated
#ifndef __SGRCALENDARCONTROL_HPP
#define __SGRCALENDARCONTROL_HPP
#include <SophiaFramework.hpp>
SFMRESPONDERTYPE(CALENDARCONTROL, TYPE_CONTROL)
SFMRESPONDERATTRIBUTE(CALENDARCONTROL, four_char_code('C', 'l', 'n', 'd'))
SFMRESPONDERBEHAVIOR(CALENDARCONTROL, BEHAVIOR_CONTROL, STATUS_VISIBLE, APPEARANCE_SHADOW | PROPERTY_TRAVEL | PROPERTY_DIRECT | PROPERTY_SCROLLABLE)
SFMTYPEDEFCLASS(SGRCalendarControl)
class SGRCalendarControl : public SFRControl {
SFMSEALCOPY(SGRCalendarControl)
public:
enum YearFormatEnum {
YEARFORMAT_AD = 0, // 惣楋昞帵
YEARFORMAT_ERANAME, // 榓楋昞帵
YEARFORMAT_LIMIT
};
enum MonthFormatEnum {
MONTHFORMAT_ENGLISH = 0, // 塸岅昞帵 (Jan, Feb, ...)
MONTHFORMAT_NUMBER, // 悢帤昞帵 (1 寧丄2 寧丄...)
MONTHFORMAT_JAPANESE, // 擔杮岅昞帵 (堎柤) (杛寧丄擛寧丄...)
MONTHFORMAT_LIMIT
};
enum DayFormatEnum {
DAYFORMAT_ENGLISH = 0, // 塸岅昞帵 (Sun, Mon, ...)
DAYFORMAT_JAPANESE, // 擔杮岅昞帵 (擔丄寧丄...)
DAYFORMAT_LIMIT
};
private:
YearFormatEnum _yearFormat;
MonthFormatEnum _monthFormat;
DayFormatEnum _dayFormat;
Bool _beginMonday;
SFXDate _cursorDate;
SFXDateDuration _timeDifference; // 帪嵎
SFMTYPEDEFCLASS(CalendarFont)
#if defined TARGET_COMPILER_ARMCPP
friend class CalendarFont;
#endif
class CalendarFont {
// 僇儗儞僟乕梡悢帤僼僅儞僩傪張棟偡傞僋儔僗
public:
enum CalendarFontTypeEnum {
CALENDARFONT_TYPE_NONE = 0,
CALENDARFONT_TYPE_NUMBER,
CALENDARFONT_TYPE_DAY,
CALENDARFONT_TYPE_LIMIT
};
enum CalendarFontNumberColorEnum {
CALENDARFONT_COLOR_NONE = 0,
CALENDARFONT_COLOR_BLACK,
CALENDARFONT_COLOR_BLUE,
CALENDARFONT_COLOR_RED,
CALENDARFONT_COLOR_WHITE,
CALENDARFONT_COLOR_LIMIT
};
enum CalendarFontDayEnum {
CALNEDARFONT_DAY_NONE = 0,
CALENDARFONT_DAY_SUNDAY,
CALENDARFONT_DAY_MONDAY,
CALENDARFONT_DAY_TUESDAY,
CALENDARFONT_DAY_WEDNESDAY,
CALENDARFONT_DAT_THURSDAY,
CALENDARFONT_DAY_FRIDAY,
CALENDARFONT_DAY_SATURDAY,
CALENDARFONT_DAY_LIMIT
};
enum CalendarFontCursorEnum {
CALENDARFONT_CURSOR_NONE = 0,
CALENDARFONT_CURSOR_NORMAL,
CALENDARFONT_CURSOR_TODAY,
CALENDARFONT_CURSOR_LIMIT
};
private:
SFBBitmapSmp _bitmap;
SFXSize _size;
public:
explicit CalendarFont(Void);
explicit CalendarFont(CalendarFontConstRef ob);
explicit CalendarFont(UInt32 val, CalendarFontNumberColorEnum color = CALENDARFONT_COLOR_BLACK);
explicit CalendarFont(CalendarFontDayEnum day, DayFormatEnum format = DAYFORMAT_ENGLISH);
explicit CalendarFont(SFXDate::DayOfWeekEnum day);
explicit CalendarFont(CalendarFontCursorEnum cursorType);
CalendarFontConstRef operator=(CalendarFontConstRef ob);
Bool Create(UInt32 val, CalendarFontNumberColorEnum color = CALENDARFONT_COLOR_BLACK);
Bool Create(CalendarFontDayEnum day, DayFormatEnum format = DAYFORMAT_ENGLISH);
Bool Create(SFXDate::DayOfWeekEnum day);
Bool Create(CalendarFontCursorEnum cursorType);
Void Clear(Void);
Bool Copy(CalendarFontConstRef ob);
SFXRectangle GetRectangle(SFXRectangleConstRef rect, UInt32 align = IDF_ALIGN_NONE);
SFBBitmapSmpConstRef GetBitmap(Void) const;
private:
static SInt32 GetNumberResourceLeft(UInt08 number);
static SInt32 GetNumberResourceTop(UInt08 number);
static SInt32 GetDayResourceLeft(CalendarFontDayEnum day, DayFormatEnum format);
static SInt32 GetDayResourceTop(CalendarFontDayEnum day, DayFormatEnum format);
Void SetTransparencyColor(SFXRGBColorConstRef rgb);
};
public:
explicit SGRCalendarControl(SFRResponderPtr responder, SFXRectangleConstRef rect, YearFormatEnum yearFormat = YEARFORMAT_AD, MonthFormatEnum monthFormat = MONTHFORMAT_ENGLISH, DayFormatEnum dayFormat = DAYFORMAT_ENGLISH, Bool beginMonday = false) static_throws;
virtual ~SGRCalendarControl(Void);
HANDLER_DECLARE_BOOLEVENT(SGRCalendarControl, OnKey)
HANDLER_DECLARE_VOIDRENDER(SGRCalendarControl, OnBase)
HANDLER_DECLARE_VOIDRENDER(SGRCalendarControl, OnContent)
Void SetYearFormat(YearFormatEnum format);
YearFormatEnum GetYearFormat(Void) const;
Void SetMonthFormat(MonthFormatEnum format);
MonthFormatEnum GetMonthFormat(Void) const;
Void SetDayFormat(DayFormatEnum format);
DayFormatEnum GetDayFormat(Void) const;
Void SetBeginMonday(Bool beginMonday);
Bool GetBeginMonday(Void) const;
Void SetCursor(SFXDateConstRef cursor);
SFXDateConstRef GetCursor(Void) const;
Void SetTimeDifference(SFXDateDurationConstRef difference);
SFXDateDurationConstRef GetTimeDifference(Void) const;
private:
SFXWideString GetYearString(Void) const;
SFXWideString GetMonthString(Void) const;
};
inline Void SGRCalendarControl::CalendarFont::SetTransparencyColor(SFXRGBColorConstRef rgb)
{
RGBVAL rgbVal(rgb.ToRGBVAL());
NativeColor native(_bitmap->RGBToNative(rgbVal));
_bitmap->SetTransparencyColor(native);
}
inline Void SGRCalendarControl::SetYearFormat(SGRCalendarControl::YearFormatEnum format)
{
_yearFormat = format;
}
inline SGRCalendarControl::YearFormatEnum SGRCalendarControl::GetYearFormat(Void) const
{
return _yearFormat;
}
inline Void SGRCalendarControl::SetMonthFormat(SGRCalendarControl::MonthFormatEnum format)
{
_monthFormat = format;
}
inline SGRCalendarControl::MonthFormatEnum SGRCalendarControl::GetMonthFormat(Void) const
{
return _monthFormat;
}
inline Void SGRCalendarControl::SetDayFormat(SGRCalendarControl::DayFormatEnum format)
{
_dayFormat = format;
}
inline SGRCalendarControl::DayFormatEnum SGRCalendarControl::GetDayFormat(Void) const
{
return _dayFormat;
}
inline Void SGRCalendarControl::SetBeginMonday(Bool beginMonday)
{
_beginMonday = beginMonday;
}
inline Bool SGRCalendarControl::GetBeginMonday(Void) const
{
return _beginMonday;
}
inline Void SGRCalendarControl::SetCursor(SFXDateConstRef cursor)
{
_cursorDate = cursor;
}
inline SFXDateConstRef SGRCalendarControl::GetCursor(Void) const
{
return _cursorDate;
}
inline Void SGRCalendarControl::SetTimeDifference(SFXDateDurationConstRef difference)
{
_timeDifference = difference;
}
inline SFXDateDurationConstRef SGRCalendarControl::GetTimeDifference(Void) const
{
return _timeDifference;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -