⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sgrcalendarcontrol.hpp

📁 一个基于BREW上的电子时钟程序,通过太阳历计算当前时间,并有闹铃和日志功能.
💻 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 + -