/* * $Id: remote.h,v 1.1 2004/12/30 22:44:03 lordjaxom Exp $ */ #ifndef VDR_STREAMDEV_REMOTE_H #define VDR_STREAMDEV_REMOTE_H #include #include "tools/string.h" #if VDRVERSNUM < 10300 class cEventInfo; #else class cEvent; #endif class cChannel; class cRemoteRecording: public cListObject { private: bool m_IsValid; int m_Index; bool m_IsNew; char *m_TitleBuffer; cTBString m_StartTime; cTBString m_Name; cTBString m_Summary; public: cRemoteRecording(const char *Text); ~cRemoteRecording(); bool operator==(const cRemoteRecording &Recording); bool operator!=(const cRemoteRecording &Recording); void ParseInfo(const char *Text); bool IsValid(void) const { return m_IsValid; } int Index(void) const { return m_Index; } const char *StartTime(void) const { return m_StartTime; } bool IsNew(void) const { return m_IsNew; } const char *Name(void) const { return m_Name; } const char *Summary(void) const { return m_Summary; } const char *Title(char Delimiter, bool NewIndicator, int Level); int HierarchyLevels(void); }; inline bool cRemoteRecording::operator!=(const cRemoteRecording &Recording) { return !operator==(Recording); } class cRemoteRecordings: public cList { public: bool Load(void); cRemoteRecording *GetByName(const char *Name); }; class cRemoteTimer: public cListObject { friend class cStreamdevMenuEditTimer; private: bool m_IsValid; int m_Index; int m_Active; int m_Day; int m_Start; int m_Stop; time_t m_StartTime; time_t m_StopTime; int m_Priority; int m_Lifetime; char m_File[MaxFileName]; time_t m_FirstDay; cTBString m_Summary; char *m_Buffer; const cChannel *m_Channel; public: cRemoteTimer(const char *Text); #if VDRVERSNUM < 10300 cRemoteTimer(const cEventInfo *EventInfo); #else cRemoteTimer(const cEvent *Event); #endif cRemoteTimer(void); ~cRemoteTimer(); cRemoteTimer &operator=(const cRemoteTimer &Timer); bool operator==(const cRemoteTimer &Timer); bool operator!=(const cRemoteTimer &Timer) { return !operator==(Timer); } static int ParseDay(const char *s, time_t *FirstDay); static const char *PrintDay(int d, time_t FirstDay = 0); static time_t SetTime(time_t t, int SecondsFromMidnight); static time_t IncDay(time_t t, int Days); static int TimeToInt(int t) { return (t / 100 * 60 + t % 100) * 60; } const char *PrintFirstDay(void) const; void OnOff(void); bool IsSingleEvent(void) const { return (m_Day & 0x80000000) == 0; } void Skip(void) { m_FirstDay = IncDay(SetTime(StartTime(), 0), 1); } bool Matches(time_t t = 0); bool DayMatches(time_t t = 0); int GetMDay(time_t t); int GetWDay(time_t t); bool IsValid(void) const { return m_IsValid; } int Index(void) const { return m_Index; } int Active(void) const { return m_Active; } int Day(void) const { return m_Day; } int Start(void) const { return m_Start; } int Stop(void) const { return m_Stop; } time_t StartTime(void) { if (!m_StartTime) Matches(); return m_StartTime; } time_t StopTime(void) { if (!m_StopTime) Matches(); return m_StopTime; } int Priority(void) const { return m_Priority; } int Lifetime(void) const { return m_Lifetime; } const char *File(void) const { return m_File; } time_t FirstDay(void) const { return m_FirstDay; } const cTBString &Summary(void) const { return m_Summary; } const cChannel *Channel(void) const { return m_Channel; } const char *ToText(void); }; class cRemoteTimers: public cList { public: bool Load(void); }; extern cRemoteTimers RemoteTimers; #endif // VDR_STREAMDEV_REMOTE_H