Moin,
hier ein erster Entwurf, um remotetimers mit dem tvguide >= 0.0.6 nutzen zu können.
Die Funktion ist im Setup aktivierbar 'RemoteTimers benutzen: ja<>nein'
Timer erstellen, löschen und editieren funktioniert.
Das REC-Symbol wird für lokale und remote Timer angezeigt.
Aufnahmen durchsuchen funktioniert.
Serientimer funktionieren
Suchtimer werden nur lokal erstellt.
Der Patch bringt noch ein REC-Symbol für den 'detailview' und eine Setup-Option 'Anzeige nach Umschalten schliessen: ja<>nein' mit.
Da Louis selbst kein remotetimers nutzt, wäre es super, wenn sich hier ein paar Tester finden würden.
Der Patch (rt3) ist gegen die Git-Version vom 13.07.
diff -ruN vdr-plugin-tvguide/channelcolumn.c tvguide/channelcolumn.c
--- vdr-plugin-tvguide/channelcolumn.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/channelcolumn.c 2013-07-15 19:18:29.480604705 +0200
@@ -344,10 +344,23 @@
hasTimer = channel->HasTimer();
hasSwitchTimer = SwitchTimers.ChannelInSwitchList(channel);
for (cGrid *grid = grids.First(); grid; grid = grids.Next(grid)) {
- bool gridHadTimer = grid->HasTimer();
- grid->SetTimer();
- if (gridHadTimer != grid->HasTimer())
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ const cEvent *event = grid->GetEvent();
+ RemoteTimers_Event_v1_0 rt;
+ rt.event = event;
+ if (pRemoteTimers->Service("RemoteTimers::GetTimerByEvent-v1.0", &rt)) {
+ hasTimer = true;
+ } else {
+ hasTimer = false;
+ }
+ grid->SetRemoteTimer(hasTimer);
grid->SetDirty();
+ } else {
+ bool gridHadTimer = grid->HasTimer();
+ grid->SetTimer();
+ if (gridHadTimer != grid->HasTimer())
+ grid->SetDirty();
+ }
bool gridHadSwitchTimer = grid->HasSwitchTimer();
grid->SetSwitchTimer();
if (gridHadSwitchTimer != grid->HasSwitchTimer())
diff -ruN vdr-plugin-tvguide/config.c tvguide/config.c
--- vdr-plugin-tvguide/config.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/config.c 2013-07-15 19:18:29.548604703 +0200
@@ -1,5 +1,30 @@
#include "config.h"
+// RemoteTimers services
+cPlugin* pRemoteTimers = NULL;
+struct RemoteTimers_Event_v1_0 {
+ //in
+ const cEvent *event;
+ //out
+ cTimer *timer;
+ cString errorMsg;
+};
+struct RemoteTimers_GetMatch_v1_0 {
+ //in
+ const cEvent *event;
+ //out
+ cTimer *timer;
+ int timerMatch;
+ int timerType;
+ bool isRemote;
+};
+struct RemoteTimers_Timer_v1_0 {
+ //in+out
+ cTimer *timer;
+ //out
+ cString errorMsg;
+};
+
enum {
e12Hours,
e24Hours
@@ -49,6 +74,8 @@
channelJumpMode = eNumJump;
jumpChannels = 0;
blueKeyMode = 0;
+ closeOnSwitch = 1;
+ useRemoteTimers = 0;
hideLastGroup = 0;
hideChannelLogos = 0;
logoWidthRatio = 13;
@@ -275,6 +302,8 @@
else if (strcmp(Name, "hugeStepHours") == 0) hugeStepHours = atoi(Value);
else if (strcmp(Name, "channelJumpMode") == 0) channelJumpMode = atoi(Value);
else if (strcmp(Name, "blueKeyMode") == 0) blueKeyMode = atoi(Value);
+ else if (strcmp(Name, "closeOnSwitch") == 0) closeOnSwitch = atoi(Value);
+ else if (strcmp(Name, "useRemoteTimers") == 0) useRemoteTimers = atoi(Value);
else if (strcmp(Name, "hideLastGroup") == 0) hideLastGroup = atoi(Value);
else if (strcmp(Name, "hideEpgImages") == 0) hideEpgImages = atoi(Value);
else if (strcmp(Name, "epgImageWidth") == 0) epgImageWidth = atoi(Value);
diff -ruN vdr-plugin-tvguide/config.h tvguide/config.h
--- vdr-plugin-tvguide/config.h 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/config.h 2013-07-15 19:18:29.548604703 +0200
@@ -50,6 +50,8 @@
int channelJumpMode;
int jumpChannels;
int blueKeyMode;
+ int closeOnSwitch;
+ int useRemoteTimers;
int hideLastGroup;
int hideChannelLogos;
int logoWidthRatio;
@@ -60,7 +62,7 @@
int epgImageWidth;
int epgImageHeight;
int numAdditionalEPGPictures;
- int epgImageWidthLarge;
+ int epgImageWidthLarge;
int epgImageHeightLarge;
cString epgImagePath;
cString iconPath;
diff -ruN vdr-plugin-tvguide/detailview.c tvguide/detailview.c
--- vdr-plugin-tvguide/detailview.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/detailview.c 2013-07-15 19:18:29.548604703 +0200
@@ -93,6 +93,30 @@
cString datetime = cString::sprintf("%s, %s - %s (%d min)", *event->GetDateString(), *event->GetTimeString(), *event->GetEndTimeString(), event->Duration()/60);
header->DrawText(cPoint(textX, textY + lineHeight), *datetime, theme.Color(clrFont), colorTextBack, tvguideConfig.FontDetailView);
header->DrawText(cPoint(textX, textY + 2 * lineHeight), event->ShortText(), theme.Color(clrFont), colorTextBack, tvguideConfig.FontDetailView);
+
+ eTimerMatch timerMatch=tmNone;
+ cTimer *ti;
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ RemoteTimers_GetMatch_v1_0 rtMatch;
+ rtMatch.event = event;
+ pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
+ timerMatch = (eTimerMatch)rtMatch.timerMatch;
+ ti = rtMatch.timer;
+ } else {
+ ti=Timers.GetMatch(event, &timerMatch);
+ }
+ if (timerMatch == tmFull) {
+ drawRecIcon();
+ }
+}
+
+void cDetailView::drawRecIcon() {
+ cString recIconText(" REC ");
+ int headerWidth = tvguideConfig.osdWidth - 2*borderWidth;
+ int width = tvguideConfig.FontDetailHeader->Width(*recIconText);
+ int height = tvguideConfig.FontDetailHeader->Height()+10;
+ header->DrawRectangle( cRect(headerWidth - width - 20, 20, width, height), theme.Color(clrButtonRed));
+ header->DrawText(cPoint(headerWidth - width - 20, 25), *recIconText, theme.Color(clrFont), theme.Color(clrButtonRed), tvguideConfig.FontDetailHeader);
}
void cDetailView::drawContent() {
diff -ruN vdr-plugin-tvguide/detailview.h tvguide/detailview.h
--- vdr-plugin-tvguide/detailview.h 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/detailview.h 2013-07-15 19:18:29.548604703 +0200
@@ -28,6 +28,7 @@
void loadReruns(void);
int heightEPGPics(void);
void drawEPGPictures(int height);
+ void drawRecIcon();
cImage *createScrollbar(int width, int height, tColor clrBgr, tColor clrBlend);
public:
cDetailView(const cEvent *event);
diff -ruN vdr-plugin-tvguide/epggrid.c tvguide/epggrid.c
--- vdr-plugin-tvguide/epggrid.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/epggrid.c 2013-07-15 19:18:29.480604705 +0200
@@ -5,8 +5,15 @@
this->event = event;
extText = new cTextWrapper();
hasTimer = false;
- if (column->HasTimer())
+
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ RemoteTimers_Event_v1_0 rt;
+ rt.event = event;
+ if (pRemoteTimers->Service("RemoteTimers::GetTimerByEvent-v1.0", &rt))
+ hasTimer = true;
+ } else if (column->HasTimer()) {
hasTimer = event->HasTimer();
+ }
hasSwitchTimer = false;
if (column->HasSwitchTimer())
hasSwitchTimer = SwitchTimers.EventInSwitchList(event);
diff -ruN vdr-plugin-tvguide/epggrid.h tvguide/epggrid.h
--- vdr-plugin-tvguide/epggrid.h 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/epggrid.h 2013-07-15 19:18:29.480604705 +0200
@@ -21,6 +21,7 @@
time_t StartTime() { return event->StartTime(); };
time_t EndTime() { return event->EndTime(); };
void SetTimer() {hasTimer = event->HasTimer();};
+ void SetRemoteTimer(bool ht) {hasTimer = ht;};
void SetSwitchTimer() {hasSwitchTimer = SwitchTimers.EventInSwitchList(event);};
cString getTimeString(void);
void debug();
diff -ruN vdr-plugin-tvguide/grid.h tvguide/grid.h
--- vdr-plugin-tvguide/grid.h 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/grid.h 2013-07-15 19:18:29.548604703 +0200
@@ -40,6 +40,7 @@
virtual void SetEndTime(time_t end) {};
int calcOverlap(cGrid *neighbor);
virtual void SetTimer() {};
+ virtual void SetRemoteTimer(bool ht) {};
virtual void SetSwitchTimer() {};
virtual cString getText(void) { return cString("");};
virtual cString getTimeString(void) { return cString("");};
diff -ruN vdr-plugin-tvguide/po/de_DE.po tvguide/po/de_DE.po
--- vdr-plugin-tvguide/po/de_DE.po 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/po/de_DE.po 2013-07-16 17:46:51.818597688 +0200
@@ -414,6 +414,9 @@
msgid "Keys Blue and OK"
msgstr "Tasten Blau und OK"
+msgid "Close display after switching"
+msgstr "Anzeige nach Umschalten schliessen"
+
msgid "Hide last Channel Group"
msgstr "Letzte Kanalgruppe verstecken"
@@ -429,6 +432,9 @@
msgid "Time Format (12h/24h)"
msgstr "Zeitformat (12h/24h)"
+msgid "Use Remotetimers"
+msgstr "RemoteTimers benutzen"
+
msgid "Display Reruns in detailed EPG View"
msgstr "Wiederholungen in der detailierten EPG Ansicht anzeigen"
diff -ruN vdr-plugin-tvguide/recmanager.c tvguide/recmanager.c
--- vdr-plugin-tvguide/recmanager.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/recmanager.c 2013-07-16 17:46:08.796559061 +0200
@@ -30,11 +30,27 @@
}
}
+bool cRecManager::RefreshRemoteTimers(void) {
+ cString errorMsg;
+ if (!pRemoteTimers->Service("RemoteTimers::RefreshTimers-v1.0", &errorMsg)) {
+ esyslog("tvguide: %s", *errorMsg);
+ return false;
+ }
+ return true;
+}
+
cTimer *cRecManager::createTimer(const cEvent *event) {
cTimer *timer = new cTimer(event);
- Timers.Add(timer);
+ cTimer *t = Timers.GetTimer(timer);
+ if (t) {
+ t->OnOff();
+ t->SetEventFromSchedule();
+ isyslog("timer %s reactivated", *t->ToDescr());
+ } else {
+ Timers.Add(timer);
+ isyslog("timer %s added (active)", *timer->ToDescr());
+ }
Timers.SetModified();
- isyslog("timer %s added (active)", *timer->ToDescr());
return timer;
}
@@ -85,7 +101,16 @@
timer->SetFlags(tfActive);
timer->SetEventFromSchedule();
- Timers.SetModified();
+
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ RemoteTimers_Timer_v1_0 rt;
+ rt.timer = timer;
+ if (!pRemoteTimers->Service("RemoteTimers::ModTimer-v1.0", &rt))
+ rt.timer = NULL;
+ RefreshRemoteTimers();
+ } else {
+ Timers.SetModified();
+ }
}
bool cRecManager::IsRecorded(const cEvent *event) {
@@ -95,6 +120,38 @@
return timer->Recording();
}
+cTimer *cRecManager::createRemoteTimer(const cEvent *event) {
+ cTimer *t = new cTimer(event);
+ RemoteTimers_Timer_v1_0 rt;
+ rt.timer = t;
+ pRemoteTimers->Service("RemoteTimers::GetTimer-v1.0", &rt.timer);
+ if (rt.timer) {
+ rt.timer->OnOff();
+ if (!pRemoteTimers->Service("RemoteTimers::ModTimer-v1.0", &rt))
+ rt.timer = NULL;
+ } else {
+ rt.timer = t;
+ if (!pRemoteTimers->Service("RemoteTimers::NewTimer-v1.0", &rt))
+ isyslog("%s", *rt.errorMsg);
+ }
+ RefreshRemoteTimers();
+ return rt.timer;
+}
+
+void cRecManager::DeleteRemoteTimer(const cEvent *event) {
+ RemoteTimers_GetMatch_v1_0 rtMatch;
+ rtMatch.event = event;
+ pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
+ if (rtMatch.timer) {
+ RemoteTimers_Timer_v1_0 rt;
+ rt.timer = rtMatch.timer;
+ isyslog("remotetimer %s deleted", *rt.timer->ToDescr());
+ if (!pRemoteTimers->Service("RemoteTimers::DelTimer-v1.0", &rt))
+ isyslog("remotetimer error");
+ RefreshRemoteTimers();
+ }
+}
+
std::vector<TVGuideTimerConflict> cRecManager::CheckTimerConflict(void) {
/* TIMERCONFLICT FORMAT:
The result list looks like this for example when we have 2 timer conflicts at one time:
@@ -216,8 +273,18 @@
else
seriesTimer->SetFlags(tfNone);
seriesTimer->SetEventFromSchedule();
- Timers.Add(seriesTimer);
- Timers.SetModified();
+
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ RemoteTimers_Timer_v1_0 rt;
+ rt.timer = seriesTimer;
+ if (!pRemoteTimers->Service("RemoteTimers::NewTimer-v1.0", &rt))
+ isyslog("%s", *rt.errorMsg);
+ RefreshRemoteTimers();
+ seriesTimer = NULL;
+ } else {
+ Timers.Add(seriesTimer);
+ Timers.SetModified();
+ }
return seriesTimer;
}
diff -ruN vdr-plugin-tvguide/recmanager.h tvguide/recmanager.h
--- vdr-plugin-tvguide/recmanager.h 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/recmanager.h 2013-07-16 17:26:01.790019246 +0200
@@ -30,9 +30,12 @@
cRecManager (void);
void SetEPGSearchPlugin(void);
bool EpgSearchAvailable(void) {return epgSearchAvailable;};
+ bool RefreshRemoteTimers(void);
cTimer *createTimer(const cEvent *event);
void DeleteTimer(const cEvent *event);
void DeleteTimer(int timerID);
+ cTimer *createRemoteTimer(const cEvent *event);
+ void DeleteRemoteTimer(const cEvent *event);
void SaveTimer(cTimer *timer, cRecMenu *menu);
bool IsRecorded(const cEvent *event);
std::vector<TVGuideTimerConflict> CheckTimerConflict(void);
diff -ruN vdr-plugin-tvguide/recmenumanager.c tvguide/recmenumanager.c
--- vdr-plugin-tvguide/recmenumanager.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/recmenumanager.c 2013-07-16 12:18:26.055317897 +0200
@@ -34,7 +34,17 @@
detailViewActive = false;
SetBackground();
this->event = event;
- activeMenu = new cRecMenuMain(recManager->EpgSearchAvailable(), event->HasTimer(), SwitchTimers.EventInSwitchList(event));
+
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ RemoteTimers_GetMatch_v1_0 rtMatch;
+ rtMatch.event = event;
+ pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
+ if (rtMatch.timerMatch == tmFull)
+ activeMenu = new cRecMenuMain(recManager->EpgSearchAvailable(), true, SwitchTimers.EventInSwitchList(event));
+ else
+ activeMenu = new cRecMenuMain(recManager->EpgSearchAvailable(), false, SwitchTimers.EventInSwitchList(event));
+ } else
+ activeMenu = new cRecMenuMain(recManager->EpgSearchAvailable(), event->HasTimer(), SwitchTimers.EventInSwitchList(event));
activeMenu->Display();
osdManager.flush();
}
@@ -77,7 +87,10 @@
//if no conflict, confirm and exit
instantRecord = true;
delete activeMenu;
- cTimer *timer = recManager->createTimer(event);
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers)
+ cTimer *timer = recManager->createRemoteTimer(event);
+ else
+ cTimer *timer = recManager->createTimer(event);
if (!displayTimerConflict(timer)) {
activeMenu = new cRecMenuConfirmTimer(event);
activeMenu->Display();
@@ -149,21 +162,33 @@
if (recManager->IsRecorded(event)) {
activeMenu = new cRecMenuAskDeleteTimer(event);
} else {
- recManager->DeleteTimer(event);
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers)
+ recManager->DeleteRemoteTimer(event);
+ else
+ recManager->DeleteTimer(event);
activeMenu = new cRecMenuConfirmDeleteTimer(event);
}
activeMenu->Display();
break;
case rmsDeleteTimerConfirmation:
//delete running timer for active event
- recManager->DeleteTimer(event);
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers)
+ recManager->DeleteRemoteTimer(event);
+ else
+ recManager->DeleteTimer(event);
delete activeMenu;
activeMenu = new cRecMenuConfirmDeleteTimer(event);
activeMenu->Display();
break;
case rmsEditTimer: {
//edit timer for active event
- timer = Timers.GetMatch(event);
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ RemoteTimers_GetMatch_v1_0 rtMatch;
+ rtMatch.event = event;
+ pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
+ timer = rtMatch.timer;
+ } else
+ timer = Timers.GetMatch(event);
if (timer) {
delete activeMenu;
activeMenu = new cRecMenuEditTimer(timer, rmsSaveTimer);
@@ -385,7 +410,10 @@
break;}
case rmsSearchRecord: {
const cEvent *ev = activeMenu->GetEventValue(activeMenu->GetActive(false));
- cTimer *timer = recManager->createTimer(ev);
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers)
+ cTimer *timer = recManager->createRemoteTimer(ev);
+ else
+ cTimer *timer = recManager->createTimer(ev);
activeMenuBuffer = activeMenu;
activeMenuBuffer->Hide();
activeMenu = new cRecMenuSearchConfirmTimer(ev);
diff -ruN vdr-plugin-tvguide/recmenus.c tvguide/recmenus.c
--- vdr-plugin-tvguide/recmenus.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/recmenus.c 2013-07-16 16:41:45.128311212 +0200
@@ -44,10 +44,21 @@
SetWidthPercent(50);
cString channelName = Channels.GetByChannelID(event->ChannelID())->Name();
cString message;
- if (event->HasTimer()) {
- message = tr("Timer created");
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ RemoteTimers_GetMatch_v1_0 rtMatch;
+ rtMatch.event = event;
+ pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
+ if (rtMatch.timerMatch == tmFull) {
+ message = tr("Timer created");
+ } else {
+ message = tr("Timer NOT created");
+ }
} else {
- message = tr("Timer NOT created");
+ if (event->HasTimer()) {
+ message = tr("Timer created");
+ } else {
+ message = tr("Timer NOT created");
+ }
}
cString text = cString::sprintf("%s\n%s\n%s %s - %s\n%s",
*message,
@@ -250,7 +261,20 @@
infoItem->CalculateHeight(width - 2 * border);
AddMenuItem(infoItem);
- bool timerActive = timer->HasFlags(tfActive);
+ bool timerActive;
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ RemoteTimers_GetMatch_v1_0 rtMatch;
+ rtMatch.event = timer->Event();
+ pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
+ if (rtMatch.timer) {
+ if (rtMatch.timerMatch == tmFull)
+ timerActive = true;
+ else
+ timerActive = false;
+ } else
+ timerActive = false;
+ } else
+ timerActive = timer->HasFlags(tfActive);
time_t day = timer->Day();
int start = timer->Start();
int stop = timer->Stop();
@@ -323,8 +347,11 @@
cRecMenuConfirmSeriesTimer(cTimer *seriesTimer) {
SetWidthPercent(50);
cString message = tr("Series Timer created");
- cString days = cTimer::PrintDay(seriesTimer->Day(), seriesTimer->WeekDays(), true);
- cString infoText = cString::sprintf("%s\n%s, %s: %s, %s: %s", *message, *days, tr("Start"), *TimeString(seriesTimer->StartTime()), tr("Stop"), *TimeString(seriesTimer->StopTime()));
+ cString infoText = message;
+ if (seriesTimer) {
+ cString days = cTimer::PrintDay(seriesTimer->Day(), seriesTimer->WeekDays(), true);
+ infoText = cString::sprintf("%s\n%s, %s: %s, %s: %s", *message, *days, tr("Start"), *TimeString(seriesTimer->StartTime()), tr("Stop"), *TimeString(seriesTimer->StopTime()));
+ }
cRecMenuItemInfo *infoItem = new cRecMenuItemInfo(*infoText);
infoItem->CalculateHeight(width - 2 * border);
AddMenuItem(infoItem);
diff -ruN vdr-plugin-tvguide/setup.c tvguide/setup.c
--- vdr-plugin-tvguide/setup.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/setup.c 2013-07-15 19:18:29.548604703 +0200
@@ -65,6 +65,8 @@
SetupStore("hugeStepHours", tvguideConfig.hugeStepHours);
SetupStore("channelJumpMode", tvguideConfig.channelJumpMode);
SetupStore("blueKeyMode", tvguideConfig.blueKeyMode);
+ SetupStore("useRemoteTimers", tvguideConfig.useRemoteTimers);
+ SetupStore("closeOnSwitch", tvguideConfig.closeOnSwitch);
SetupStore("hideLastGroup", tvguideConfig.hideLastGroup);
SetupStore("hideChannelLogos", tvguideConfig.hideChannelLogos);
SetupStore("logoExtension", tvguideConfig.logoExtension);
@@ -162,11 +164,14 @@
Add(new cMenuEditStraItem(tr("Channel Jump Mode (Keys Green / Yellow)"), &tmpTvguideConfig->channelJumpMode, 2, jumpMode));
Add(new cMenuEditStraItem(tr("Keys Blue and OK"), &tmpTvguideConfig->blueKeyMode, 2, blueMode));
+ Add(new cMenuEditBoolItem(tr("Close display after switching"), &tmpTvguideConfig->closeOnSwitch));
Add(new cMenuEditBoolItem(tr("Hide last Channel Group"), &tmpTvguideConfig->hideLastGroup));
Add(new cMenuEditIntItem(tr("Time to display in minutes"), &tmpTvguideConfig->displayTime, 120, 320));
Add(new cMenuEditIntItem(tr("Big Step (Keys 1 / 3) in hours"), &tmpTvguideConfig->bigStepHours, 1, 12));
Add(new cMenuEditIntItem(tr("Huge Step (Keys 4 / 6) in hours"), &tmpTvguideConfig->hugeStepHours, 13, 48));
Add(new cMenuEditStraItem(tr("Time Format (12h/24h)"), &tmpTvguideConfig->timeFormat, 2, timeFormatItems));
+ if (pRemoteTimers)
+ Add(new cMenuEditBoolItem(tr("Use Remotetimers"), &tmpTvguideConfig->useRemoteTimers));
Add(new cMenuEditBoolItem(tr("Display Reruns in detailed EPG View"), &tmpTvguideConfig->displayRerunsDetailEPGView));
if (tmpTvguideConfig->displayRerunsDetailEPGView) {
diff -ruN vdr-plugin-tvguide/tvguide.c tvguide/tvguide.c
--- vdr-plugin-tvguide/tvguide.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/tvguide.c 2013-07-15 19:18:29.480604705 +0200
@@ -141,6 +141,11 @@
iconsPathSet = true;
}
+ pRemoteTimers = cPluginManager::CallFirstService("RemoteTimers::RefreshTimers-v1.0", NULL);
+ if (pRemoteTimers) {
+ isyslog("tvguide: remotetimers-plugin is available");
+ }
+
return true;
}
diff -ruN vdr-plugin-tvguide/tvguideosd.c tvguide/tvguideosd.c
--- vdr-plugin-tvguide/tvguideosd.c 2013-07-15 19:15:01.000000000 +0200
+++ tvguide/tvguideosd.c 2013-07-15 19:18:29.548604703 +0200
@@ -152,6 +152,12 @@
drawGridsChannelJump();
osdManager.flush();
cPixmap::Unlock();
+ if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
+ cString errorMsg;
+ if (!pRemoteTimers->Service("RemoteTimers::RefreshTimers-v1.0", &errorMsg)) {
+ esyslog("tvguide: %s", *errorMsg);
+ }
+ }
}
void cTvGuideOsd::readChannels(const cChannel *channelStart) {
@@ -555,7 +561,8 @@
const cChannel *currentChannel = activeGrid->column->getChannel();
if (currentChannel) {
cDevice::PrimaryDevice()->SwitchChannel(currentChannel, true);
- return osEnd;
+ if (tvguideConfig.closeOnSwitch)
+ return osEnd;
}
return osContinue;
}
Alles anzeigen
rt2:
- Serientimer ergänzt
- CallFirstService zeigt keine Fehlermeldung mehr, wenn remotetimers nicht installiert ist
- Code cleanup: ein paar Tabs gegen Leerzeichen getauscht
rt3: sollte es sein
Gruß S.