diff options
Diffstat (limited to 'epg_events.h')
-rw-r--r-- | epg_events.h | 176 |
1 files changed, 137 insertions, 39 deletions
diff --git a/epg_events.h b/epg_events.h index 68eb0a4..8536463 100644 --- a/epg_events.h +++ b/epg_events.h @@ -2,7 +2,6 @@ #define VDR_LIVE_WHATS_ON_H #include <ctime> -#include <vector> #include <vdr/plugin.h> #include <vdr/channels.h> @@ -15,72 +14,171 @@ namespace vdrlive { - class EpgEvent + + class EpgInfo { + protected: + EpgInfo(const std::string& id, + const std::string& caption); + public: - EpgEvent(const std::string& id, - const std::string& caption, - const std::string& title, - const std::string& short_descr, - const std::string& long_descr, - time_t start_time, - time_t end_time); + virtual ~EpgInfo(); + + virtual const std::string Id() const { return m_eventId; } + + virtual const std::string Caption() const { return m_caption; } + + virtual const std::string Title() const = 0; + + virtual const std::string ShortDescr() const = 0; + + virtual const std::string LongDescr() const = 0; + + virtual const std::string Archived() const { return ""; } + + virtual const std::string StartTime(const char* format) const; + + virtual const std::string EndTime(const char* format) const; + + virtual const std::string CurrentTime(const char* format) const; + + virtual int Elapsed() const; + + // virtual const cTimer* GetTimer() const = 0; + + virtual time_t GetStartTime() const = 0; + + virtual time_t GetEndTime() const = 0; + + private: + std::string m_eventId; + std::string m_caption; + }; + + typedef std::tr1::shared_ptr<EpgInfo> EpgInfoPtr; + + // ------------------------------------------------------------------------- + + class EpgString : public EpgInfo + { + friend class EpgEvents; + + protected: + EpgString(const std::string& id, + const std::string& caption, + const std::string& info); + + public: + virtual ~EpgString(); + virtual const std::string Title() const; + + virtual const std::string ShortDescr() const; + + virtual const std::string LongDescr() const; + + virtual time_t GetStartTime() const; + + virtual time_t GetEndTime() const; + + private: + const std::string m_info; + }; + + // ------------------------------------------------------------------------- + + class EpgEvent : public EpgInfo + { + friend class EpgEvents; + + protected: EpgEvent(const std::string& id, const cEvent* event, const char* channelName = ""); - EpgEvent(const std::string& id, - const std::string& caption, - const std::string& title, - const std::string& short_descr, - const std::string& long_descr, - const std::string& archived, - time_t start_time, - time_t end_time); - + public: virtual ~EpgEvent(); - const std::string& Id() const { return m_eventId; } + virtual const std::string Title() const { return std::string(m_event->Title() ? m_event->Title() : ""); } - const std::string& Title() const { return m_title; } + virtual const std::string ShortDescr() const { return std::string(m_event->ShortText() ? m_event->ShortText() : ""); } - const std::string& Caption() const { return m_caption; } + virtual const std::string LongDescr() const { return std::string(m_event->Description() ? m_event->Description() : ""); } - const std::string& ShortDescr() const { return m_short_descr; } + virtual time_t GetStartTime() const { return m_event->StartTime(); } - const std::string& LongDescr() const { return m_long_descr; } + virtual time_t GetEndTime() const { return m_event->EndTime(); } - const std::string& Archived() const { return m_archived; } + private: + const cEvent* m_event; + }; - const std::string StartTime(const char* format) const; + // ------------------------------------------------------------------------- + + class EpgRecording : public EpgInfo + { + friend class EpgEvents; - const std::string EndTime(const char* format) const; + protected: + EpgRecording(const std::string& recid, const cRecording* recording, const char* caption); + + const std::string Name() const; + + public: + virtual ~EpgRecording(); - const std::string CurrentTime(const char* format) const; + virtual const std::string Caption() const; - int Elapsed() const; + virtual const std::string Title() const; - const cTimer* GetTimer() const; + virtual const std::string ShortDescr() const; + + virtual const std::string LongDescr() const; + + virtual const std::string Archived() const; + + virtual time_t GetStartTime() const; + + virtual time_t GetEndTime() const; private: - std::string m_eventId; - std::string m_caption; - std::string m_title; - std::string m_short_descr; - std::string m_long_descr; - std::string m_archived; - time_t m_start_time; - time_t m_end_time; + const cRecording* m_recording; + bool m_ownCaption; + mutable bool m_checkedArchived; + mutable std::string m_archived; }; - typedef std::tr1::shared_ptr<EpgEvent> EpgEventPtr; + // ------------------------------------------------------------------------- - class EpgEvents : public std::vector<EpgEventPtr> { + class EpgEvents { public: EpgEvents(); virtual ~EpgEvents(); + static std::string GetDomId(const tChannelID& chanId, const tEventID& eventId); + + /** + * Allocate and initalize an epgEvent instance with the + * passed channel and event information. + */ + static EpgInfoPtr CreateEpgInfo(const cChannel* chan, const cEvent* event, const char* idOverride = 0); + + /** + * This is the inverse creator for epgInfos to the creator above. + */ + static EpgInfoPtr CreateEpgInfo(const std::string& epgid, const cSchedules* schedules); + + /** + * Allocate and initalize an epgEvent instance with the + * passed recording information. + */ + static EpgInfoPtr CreateEpgInfo(const std::string& recid, const cRecording* recording, const char* caption = 0); + + /** + * Allocate and initalize an epgEvent instance with the + * passed string informations + */ + static EpgInfoPtr CreateEpgInfo(const std::string& id, const std::string& caption, const std::string& info); private: }; }; // namespace vdrlive |