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

📄 pclock.hpp

📁 一个基于BREW上的电子时钟程序,通过太阳历计算当前时间,并有闹铃和日志功能.
💻 HPP
字号:
//
//      pclock.hpp
//
//      Copyright (C) 2006 Sophia Cradle Incorporated

#ifndef __PCLOCK_HPP
#define __PCLOCK_HPP

#include <SophiaFramework.hpp>
#include "pclock.bid"
#include "pclock_res.h"
#include "ClockWindow.hpp"
#include "CityInformation.hpp"

#define PCLOCK_RESOURCE_FILENAME "pclock.bar"

SFMTYPEDEFCLASS(pclock)
class pclock : public SFRApplication {
    SFMSEALCOPY(pclock)
public:
	SFMTYPEDEFSTRUCT(AlarmInformation)
	struct AlarmInformation {
		UInt16 _userCode;		// 傾儔乕儉偺儐乕僓乕 僐乕僪 (枹巊梡)
		SFXWideString _subject;	// 傾儔乕儉偺審柤
		SFXDate _date;			// 傾儔乕儉偺擔帪 (UTC)
	};
private:
	ClockWindowPtr _clockWindow;
	Bool _alarmFlag;
	SFRDialogPtr _toRemoveDialog;
	CityInformation _cityInfo;
	SFXWideString _currentCity;
	AlarmInformation _alarmInfo;
	AEEMediaData _mediaData;
	SFBMediaQCPSmp _mediaQCP;

public:
    static SFCInvokerPtr Factory(Void);
	CityInformationPtr GetCityInformationPointer(Void);
	SFXWideStringConstRef GetCurrentCity(Void) const;
	Void SetCurrentCity(SInt32 index);
	AlarmInformationConstRef GetAlarm(Void) const;
	Bool SetAlarm(AlarmInformationConstRef info);
	Bool CancelAlarm(Void);
	Void TellAlarm(Void);
	SFXWideString GetAlarmDate(SFXDateDurationConstRef timeDifference);
	Void SetRemoveDialog(SFRDialogPtr dialog);
	Bool IsAlarmActive(Void) const;
private:
    explicit pclock(Void) static_throws;
    virtual ~pclock(Void);
    HANDLER_DECLARE_VOIDSTART(pclock, OnAppStart)
    HANDLER_DECLARE_VOIDSTOP(pclock, OnAppStop)
    HANDLER_DECLARE_VOIDRESUME(pclock, OnAppResume)
    HANDLER_DECLARE_VOIDSUSPEND(pclock, OnAppSuspend)
    HANDLER_DECLARE_BOOLEVENT(pclock, OnKey)
	HANDLER_DECLARE_BOOLEVENT(pclock, OnAlarm)
	HANDLER_DECLARE_VOIDDIALOG(pclock, OnAlarmDialog)
	static Void OnTimerSPP(VoidPtr data);
	Void OnTimer(Void);
};

inline CityInformationPtr pclock::GetCityInformationPointer(Void)
{
	return &_cityInfo;
}

inline SFXWideStringConstRef pclock::GetCurrentCity(Void) const
{
	return _currentCity;
}

inline pclock::AlarmInformationConstRef pclock::GetAlarm(Void) const
{
	return _alarmInfo;
}

inline Void pclock::OnTimerSPP(VoidPtr data)
{
	pclockPtr me(static_cast<pclockPtr>(data));
	me->OnTimer();
}

// 揤懱忣曬寁嶼帪丄埵抲忣曬庢摼帪偵昞帵偝傟傞僟僀傾儘僌偑丄
// 傾儔乕儉偺僟僀傾儘僌偲廳側偭偨応崌偺屻巒枛傪埶棅偡傞
inline Void pclock::SetRemoveDialog(SFRDialogPtr dialog)
{
	_toRemoveDialog = dialog;
}

inline Bool pclock::IsAlarmActive(Void) const
{
	pclockPtr p(const_cast<pclockPtr>(this));
	SFBShellSmp shell(SFBShell::GetInstance());

	return shell->AlarmsActive() || shell->GetTimerExpiration(OnTimerSPP, p) != 0;
}

#endif // __PCLOCK_HPP //

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -