summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY4
-rw-r--r--coreengine/definitions.h18
-rw-r--r--coreengine/listelements.c32
-rw-r--r--services/epgtimer.h58
-rw-r--r--skindesigner.c2
5 files changed, 71 insertions, 43 deletions
diff --git a/HISTORY b/HISTORY
index 5640b76..3add251 100644
--- a/HISTORY
+++ b/HISTORY
@@ -439,3 +439,7 @@ Version 1.2.4 (horchi)
Version 1.2.5 (horchi)
- added timer type to epg2vdr interface
+
+Version 1.2.6 (horchi)
+
+- extended epg2vdr timer interface for schedules
diff --git a/coreengine/definitions.h b/coreengine/definitions.h
index 9a6784d..117d72b 100644
--- a/coreengine/definitions.h
+++ b/coreengine/definitions.h
@@ -226,7 +226,7 @@ enum class eDevicesLT {
signalquality,
channelnumber,
channelname,
- channellogoexists,
+ channellogoexists,
channelid,
source,
count
@@ -855,6 +855,7 @@ enum class eLeMenuSchedulesST {
durationminutes,
channelname,
channelid,
+ timertype,
count
};
@@ -879,6 +880,7 @@ enum class eLeMenuSchedulesIT {
whatsonfavorites,
timerpartitial,
timerfull,
+ isremotetimer,
hasVPS,
count
};
@@ -895,6 +897,7 @@ enum class eCeMenuSchedulesST {
channelid,
posterpath,
bannerpath,
+ timertype,
count
};
@@ -934,6 +937,7 @@ enum class eCeMenuSchedulesIT {
whatsonfavorites,
timerpartitial,
timerfull,
+ isremotetimer,
count
};
@@ -1623,7 +1627,7 @@ enum class eLeDisplayTracksST {
enum class eCommonAttribs {
x = 0,
y,
- width,
+ width,
height,
debug,
count
@@ -1631,7 +1635,7 @@ enum class eCommonAttribs {
enum class eViewAttribs {
fadetime = 0,
- shifttime,
+ shifttime,
shifttype,
shiftmode,
startx,
@@ -1649,7 +1653,7 @@ enum class eViewAttribs {
enum class eViewElementAttribs {
delay = 0,
fadetime,
- shifttime,
+ shifttime,
shifttype,
shiftmode,
startx,
@@ -1665,10 +1669,10 @@ enum class eViewListAttribs {
align = 0,
menuitemwidth,
determinatefont,
- numlistelements,
+ numlistelements,
orientation,
fadetime,
- shifttime,
+ shifttime,
shifttype,
shiftmode,
startx,
@@ -1682,7 +1686,7 @@ enum class eAreaAttribs {
layer = 0,
transparency,
mode,
- orientation,
+ orientation,
scrollelement,
scrollspeed,
delay,
diff --git a/coreengine/listelements.c b/coreengine/listelements.c
index eadbe89..7c8da35 100644
--- a/coreengine/listelements.c
+++ b/coreengine/listelements.c
@@ -683,6 +683,7 @@ void cLeMenuSchedules::SetTokenContainer(void) {
tokenContainer->DefineStringToken("{durationminutes}", (int)eLeMenuSchedulesST::durationminutes);
tokenContainer->DefineStringToken("{channelname}", (int)eLeMenuSchedulesST::channelname);
tokenContainer->DefineStringToken("{channelid}", (int)eLeMenuSchedulesST::channelid);
+ tokenContainer->DefineStringToken("{timertype}", (int)eLeMenuSchedulesST::timertype);
tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeMenuSchedulesIT::nummenuitem);
tokenContainer->DefineIntToken("{current}", (int)eLeMenuSchedulesIT::current);
tokenContainer->DefineIntToken("{separator}", (int)eLeMenuSchedulesIT::separator);
@@ -703,6 +704,7 @@ void cLeMenuSchedules::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{whatsonfavorites}", (int)eLeMenuSchedulesIT::whatsonfavorites);
tokenContainer->DefineIntToken("{timerpartitial}", (int)eLeMenuSchedulesIT::timerpartitial);
tokenContainer->DefineIntToken("{timerfull}", (int)eLeMenuSchedulesIT::timerfull);
+ tokenContainer->DefineIntToken("{isremotetimer}", (int)eLeMenuSchedulesIT::isremotetimer);
tokenContainer->DefineIntToken("{hasVPS}", (int)eLeMenuSchedulesIT::hasVPS);
InheritTokenContainer();
}
@@ -780,6 +782,19 @@ bool cLeMenuSchedules::Parse(bool forced) {
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::durationhours, event->Duration() / 3600);
tokenContainer->AddStringToken((int)eLeMenuSchedulesST::durationminutes, *cString::sprintf("%.2d", (event->Duration() / 60)%60));
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::hasVPS, (bool)event->Vps());
+
+ if (timerMatch == tmFull || timerMatch == tmPartial) {
+ cTimer_Detail_V1 data;
+ data.eventid = event->EventID();
+ data.hastimer = false;
+ data.local = true;
+ data.type = 'R';
+ if (cPlugin* pEpg2Vdr = cPluginManager::GetPlugin("epg2vdr"))
+ pEpg2Vdr->Service(EPG2VDR_TIMER_DETAIL_SERVICE, &data);
+ tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::isremotetimer, !data.local);
+ char tp[2]; sprintf(tp, "%c", data.type);
+ tokenContainer->AddStringToken((int)eLeMenuSchedulesST::timertype, tp);
+ }
} else {
char *sep = ParseSeparator(event->Title());
tokenContainer->AddStringToken((int)eLeMenuSchedulesST::title, sep);
@@ -834,6 +849,7 @@ void cCeMenuSchedules::SetTokenContainer(void) {
tokenContainer->DefineStringToken("{channelid}", (int)eCeMenuSchedulesST::channelid);
tokenContainer->DefineStringToken("{posterpath}", (int)eCeMenuSchedulesST::posterpath);
tokenContainer->DefineStringToken("{bannerpath}", (int)eCeMenuSchedulesST::bannerpath);
+ tokenContainer->DefineStringToken("{timertype}", (int)eCeMenuSchedulesST::timertype);
tokenContainer->DefineIntToken("{menuitemx}", (int)eCeMenuSchedulesIT::menuitemx);
tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuSchedulesIT::menuitemy);
tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuSchedulesIT::menuitemwidth);
@@ -861,6 +877,7 @@ void cCeMenuSchedules::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{whatsonfavorites}", (int)eCeMenuSchedulesIT::whatsonfavorites);
tokenContainer->DefineIntToken("{timerpartitial}", (int)eCeMenuSchedulesIT::timerpartitial);
tokenContainer->DefineIntToken("{timerfull}", (int)eCeMenuSchedulesIT::timerfull);
+ tokenContainer->DefineIntToken("{isremotetimer}", (int)eCeMenuSchedulesIT::isremotetimer);
tokenContainer->DefineLoopToken("{schedule[title]}", (int)eCeMenuSchedulesLT::title);
tokenContainer->DefineLoopToken("{schedule[shorttext]}", (int)eCeMenuSchedulesLT::shorttext);
tokenContainer->DefineLoopToken("{schedule[start]}", (int)eCeMenuSchedulesLT::start);
@@ -925,8 +942,21 @@ bool cCeMenuSchedules::Parse(bool forced) {
}
tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::duration, event->Duration() / 60);
tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::durationhours, event->Duration() / 3600);
+
+ if (timerMatch == tmFull || timerMatch == tmPartial) {
+ cTimer_Detail_V1 data;
+ data.eventid = event->EventID();
+ data.hastimer = false;
+ data.local = true;
+ data.type = 'R';
+ if (cPlugin* pEpg2Vdr = cPluginManager::GetPlugin("epg2vdr"))
+ pEpg2Vdr->Service(EPG2VDR_TIMER_DETAIL_SERVICE, &data);
+ tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::isremotetimer, !data.local);
+ char tp[2]; sprintf(tp, "%c", data.type);
+ tokenContainer->AddStringToken((int)eCeMenuSchedulesST::timertype, tp);
+ }
if (LoadFullScrapInfo(event, NULL))
- SetScraperPosterBanner(tokenContainer);
+ SetScraperPosterBanner(tokenContainer);
}
if (channel) {
tokenContainer->AddStringToken((int)eCeMenuSchedulesST::channelname, channel->Name());
diff --git a/services/epgtimer.h b/services/epgtimer.h
index 7674668..0e7a3ee 100644
--- a/services/epgtimer.h
+++ b/services/epgtimer.h
@@ -17,24 +17,6 @@
// Timer - Skin Interface
//***************************************************************************
-class cEpgEvent_Interface_V1 : public cEvent
-{
- public:
-
- cEpgEvent_Interface_V1(tEventID EventID)
- : cEvent(EventID) {}
-
- // #TODO ... getter
-
- protected:
-
- // #TODO ... attributes
-};
-
-//***************************************************************************
-// Timer - Skin Interface
-//***************************************************************************
-
class cEpgTimer_Interface_V1 : public cTimer
{
public:
@@ -90,7 +72,7 @@ class cEpgTimer_Interface_V1 : public cTimer
};
//***************************************************************************
-// Timer - Service Interface
+// Timer Service
//***************************************************************************
struct cEpgTimer_Service_V1
@@ -98,23 +80,28 @@ struct cEpgTimer_Service_V1
std::list<cEpgTimer_Interface_V1*> epgTimers;
};
-#define EPG2VDR_TIMER_SERVICE "Epg2Vdr_Timer_Service-v1.0"
-
-#ifdef EPG2VDR
-
//***************************************************************************
-// Class cEpgEvent
+// Timer Detail Service
//***************************************************************************
-class cEpgEvent : public cEpgEvent_Interface_V1
+struct cTimer_Detail_V1
{
- public:
+ long eventid;
+ int hastimer;
+ int local;
+ char type;
+};
- cEpgEvent(tEventID EventID);
- virtual ~cEpgEvent() {}
+#define EPG2VDR_TIMER_DETAIL_SERVICE "Epg2Vdr_Timer_Detail_Service-v1.0"
+#define EPG2VDR_TIMER_SERVICE "Epg2Vdr_Timer_Service-v1.0"
- // #TODO ... setter
-};
+#ifdef EPG2VDR
+
+//***************************************************************************
+//***************************************************************************
+//***************************************************************************
+// EPG2VDR Internal Stuff
+//***************************************************************************
//***************************************************************************
// Class cEpgTimer
@@ -124,13 +111,16 @@ class cEpgTimer : public cEpgTimer_Interface_V1
{
public:
- cEpgTimer(bool Instant = false, bool Pause = false, cChannel* Channel = 0);
+ cEpgTimer(bool Instant = false, bool Pause = false, const cChannel* Channel = 0);
virtual ~cEpgTimer();
- void setTimerId(long id) { timerid = id; }
- void setEventId(long id) { eventid = id; }
+ void setTimerId(long id) { timerid = id; }
+ void setEventId(long id) { eventid = id; }
+ void setAction(char a) { action = a; }
+ void setType(char t) { type = t; }
+ void setCreateTime(time_t t) { createTime = t; }
+ void setModTime(time_t t) { modTime = t; }
void setState(char s, const char* info);
- void setAction(char a);
void setVdr(const char* name, const char* uuid = 0, int running = 0);
};
diff --git a/skindesigner.c b/skindesigner.c
index 1e3faaf..326429b 100644
--- a/skindesigner.c
+++ b/skindesigner.c
@@ -20,7 +20,7 @@
#endif
-static const char *VERSION = "1.2.5";
+static const char *VERSION = "1.2.6";
static const char *DESCRIPTION = trNOOP("Skin Designer");
class cPluginSkinDesigner : public cPlugin, public skindesignerapi::SkindesignerAPI {