Added remotetimers support

This commit is contained in:
louis 2013-07-20 13:46:26 +02:00
parent 9f351151ed
commit 34f8460e25
14 changed files with 260 additions and 29 deletions

View File

@ -57,3 +57,5 @@ VDR Plugin 'tvguide' Revision History
- recording folder also choosable for series timers - recording folder also choosable for series timers
- blue button also available in detail view - blue button also available in detail view
- color buttons displayed as configured in VDR - color buttons displayed as configured in VDR
- Added Setup Option to define if tvguide closes after channel switching
- Added remotetimers support (thanks @Saman for providing a patch)

View File

@ -49,6 +49,8 @@ cTvguideConfig::cTvguideConfig() {
channelJumpMode = eNumJump; channelJumpMode = eNumJump;
jumpChannels = 0; jumpChannels = 0;
blueKeyMode = 0; blueKeyMode = 0;
closeOnSwitch = 1;
useRemoteTimers = 0;
hideLastGroup = 0; hideLastGroup = 0;
hideChannelLogos = 0; hideChannelLogos = 0;
logoWidthRatio = 13; logoWidthRatio = 13;
@ -276,6 +278,8 @@ bool cTvguideConfig::SetupParse(const char *Name, const char *Value) {
else if (strcmp(Name, "hugeStepHours") == 0) hugeStepHours = atoi(Value); else if (strcmp(Name, "hugeStepHours") == 0) hugeStepHours = atoi(Value);
else if (strcmp(Name, "channelJumpMode") == 0) channelJumpMode = atoi(Value); else if (strcmp(Name, "channelJumpMode") == 0) channelJumpMode = atoi(Value);
else if (strcmp(Name, "blueKeyMode") == 0) blueKeyMode = 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, "hideLastGroup") == 0) hideLastGroup = atoi(Value);
else if (strcmp(Name, "hideEpgImages") == 0) hideEpgImages = atoi(Value); else if (strcmp(Name, "hideEpgImages") == 0) hideEpgImages = atoi(Value);
else if (strcmp(Name, "epgImageWidth") == 0) epgImageWidth = atoi(Value); else if (strcmp(Name, "epgImageWidth") == 0) epgImageWidth = atoi(Value);

View File

@ -50,6 +50,8 @@ class cTvguideConfig {
int channelJumpMode; int channelJumpMode;
int jumpChannels; int jumpChannels;
int blueKeyMode; int blueKeyMode;
int closeOnSwitch;
int useRemoteTimers;
int hideLastGroup; int hideLastGroup;
int hideChannelLogos; int hideChannelLogos;
int logoWidthRatio; int logoWidthRatio;

View File

@ -92,6 +92,32 @@ void cDetailView::drawHeader() {
cString datetime = cString::sprintf("%s, %s - %s (%d min)", *event->GetDateString(), *event->GetTimeString(), *event->GetEndTimeString(), event->Duration()/60); 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 + lineHeight), *datetime, theme.Color(clrFont), colorTextBack, tvguideConfig.FontDetailView);
header->DrawText(cPoint(textX, textY + 2 * lineHeight), event->ShortText(), 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;
int posX = headerWidth - width - 20;
int posY = 20;
header->DrawRectangle( cRect(posX, posY, width, height), theme.Color(clrButtonRed));
header->DrawText(cPoint(posX, posY+5), *recIconText, theme.Color(clrFont), theme.Color(clrButtonRed), tvguideConfig.FontDetailHeader);
} }
void cDetailView::drawContent() { void cDetailView::drawContent() {

View File

@ -28,6 +28,7 @@ private:
void loadReruns(void); void loadReruns(void);
int heightEPGPics(void); int heightEPGPics(void);
void drawEPGPictures(int height); void drawEPGPictures(int height);
void drawRecIcon(void);
cImage *createScrollbar(int width, int height, tColor clrBgr, tColor clrBlend); cImage *createScrollbar(int width, int height, tColor clrBgr, tColor clrBlend);
void scrollUp(); void scrollUp();
void scrollDown(); void scrollDown();

View File

@ -5,11 +5,9 @@ cEpgGrid::cEpgGrid(cChannelColumn *c, const cEvent *event) : cGrid(c) {
this->event = event; this->event = event;
extText = new cTextWrapper(); extText = new cTextWrapper();
hasTimer = false; hasTimer = false;
if (column->HasTimer()) SetTimer();
hasTimer = event->HasTimer();
hasSwitchTimer = false; hasSwitchTimer = false;
if (column->HasSwitchTimer()) SetSwitchTimer();
hasSwitchTimer = SwitchTimers.EventInSwitchList(event);
dummy = false; dummy = false;
} }
@ -62,6 +60,27 @@ void cEpgGrid::PositionPixmap() {
} }
void cEpgGrid::SetTimer() {
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();
} else {
hasTimer = false;
}
}
void cEpgGrid::SetSwitchTimer() {
if (column->HasSwitchTimer()) {
hasSwitchTimer = SwitchTimers.EventInSwitchList(event);
} else {
hasSwitchTimer = false;
}
}
void cEpgGrid::setText() { void cEpgGrid::setText() {
if (tvguideConfig.displayMode == eVertical) { if (tvguideConfig.displayMode == eVertical) {
cString strText; cString strText;

View File

@ -20,8 +20,8 @@ public:
const cEvent *GetEvent() {return event;}; const cEvent *GetEvent() {return event;};
time_t StartTime() { return event->StartTime(); }; time_t StartTime() { return event->StartTime(); };
time_t EndTime() { return event->EndTime(); }; time_t EndTime() { return event->EndTime(); };
void SetTimer() {hasTimer = event->HasTimer();}; void SetTimer();
void SetSwitchTimer() {hasSwitchTimer = SwitchTimers.EventInSwitchList(event);}; void SetSwitchTimer();
cString getTimeString(void); cString getTimeString(void);
void debug(); void debug();
}; };

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: vdr-tvguide 0.0.1\n" "Project-Id-Version: vdr-tvguide 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n" "Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2013-07-18 17:18+0200\n" "POT-Creation-Date: 2013-07-20 12:02+0200\n"
"PO-Revision-Date: 2012-08-25 17:49+0200\n" "PO-Revision-Date: 2012-08-25 17:49+0200\n"
"Last-Translator: Horst\n" "Last-Translator: Horst\n"
"Language-Team: \n" "Language-Team: \n"
@ -420,6 +420,9 @@ msgstr "Kanalsprung Modus (Tasten grün / gelb)"
msgid "Keys Blue and OK" msgid "Keys Blue and OK"
msgstr "Tasten Blau und OK" msgstr "Tasten Blau und OK"
msgid "Close TVGuide after channel switch"
msgstr "TVGuide nach Umschalten schließen"
msgid "Hide last Channel Group" msgid "Hide last Channel Group"
msgstr "Letzte Kanalgruppe verstecken" msgstr "Letzte Kanalgruppe verstecken"
@ -438,6 +441,9 @@ msgstr "Zeitformat (12h/24h)"
msgid "Use folders for instant records" msgid "Use folders for instant records"
msgstr "Bei Sofortaufnahmen Verzeichnisse benutzen" msgstr "Bei Sofortaufnahmen Verzeichnisse benutzen"
msgid "Use Remotetimers"
msgstr "RemoteTimers benutzen"
msgid "Display Reruns in detailed EPG View" msgid "Display Reruns in detailed EPG View"
msgstr "Wiederholungen in der detailierten EPG Ansicht anzeigen" msgstr "Wiederholungen in der detailierten EPG Ansicht anzeigen"

View File

@ -30,24 +30,95 @@ void cRecManager::SetEPGSearchPlugin(void) {
} }
} }
bool cRecManager::RefreshRemoteTimers(void) {
cString errorMsg;
if (!pRemoteTimers->Service("RemoteTimers::RefreshTimers-v1.0", &errorMsg)) {
esyslog("tvguide: %s", *errorMsg);
return false;
}
return true;
}
bool cRecManager::CheckEventForTimer(const cEvent *event) {
bool hasTimer = false;
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
RemoteTimers_GetMatch_v1_0 rtMatch;
rtMatch.event = event;
pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
if (rtMatch.timerMatch == tmFull)
hasTimer = true;
} else
hasTimer = event->HasTimer();
return hasTimer;
}
cTimer *cRecManager::GetTimerForEvent(const cEvent *event) {
cTimer *timer = NULL;
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);
return timer;
}
cTimer *cRecManager::createTimer(const cEvent *event, std::string path) { cTimer *cRecManager::createTimer(const cEvent *event, std::string path) {
cTimer *timer = NULL;
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
timer = createRemoteTimer(event, path);
} else {
timer = createLocalTimer(event, path);
}
return timer;
}
cTimer *cRecManager::createLocalTimer(const cEvent *event, std::string path) {
cTimer *timer = new cTimer(event); cTimer *timer = new cTimer(event);
cTimer *t = Timers.GetTimer(timer);
if (t) {
t->OnOff();
t->SetEventFromSchedule();
delete timer;
timer = t;
isyslog("timer %s reactivated", *t->ToDescr());
} else {
Timers.Add(timer); Timers.Add(timer);
isyslog("timer %s added (active)", *timer->ToDescr());
}
SetTimerPath(timer, path);
Timers.SetModified(); Timers.SetModified();
return timer;
}
cTimer *cRecManager::createRemoteTimer(const cEvent *event, std::string path) {
cTimer *t = new cTimer(event);
SetTimerPath(t, path);
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::SetTimerPath(cTimer *timer, std::string path) {
if (path.size() > 0) { if (path.size() > 0) {
std::replace(path.begin(), path.end(), '/', '~'); std::replace(path.begin(), path.end(), '/', '~');
cString newFileName = cString::sprintf("%s~%s", path.c_str(), timer->File()); cString newFileName = cString::sprintf("%s~%s", path.c_str(), timer->File());
timer->SetFile(*newFileName); timer->SetFile(*newFileName);
} }
isyslog("timer %s added (active)", *timer->ToDescr());
return timer;
}
void cRecManager::DeleteTimer(const cEvent *event) {
cTimer *t = Timers.GetMatch(event);
if (!t)
return;
DeleteTimer(t);
} }
void cRecManager::DeleteTimer(int timerID) { void cRecManager::DeleteTimer(int timerID) {
@ -57,6 +128,22 @@ void cRecManager::DeleteTimer(int timerID) {
DeleteTimer(t); DeleteTimer(t);
} }
void cRecManager::DeleteTimer(const cEvent *event) {
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
DeleteRemoteTimer(event);
} else {
DeleteLocalTimer(event);
}
}
void cRecManager::DeleteLocalTimer(const cEvent *event) {
cTimer *t = Timers.GetMatch(event);
if (!t)
return;
DeleteTimer(t);
}
void cRecManager::DeleteTimer(cTimer *timer) { void cRecManager::DeleteTimer(cTimer *timer) {
if (timer->Recording()) { if (timer->Recording()) {
timer->Skip(); timer->Skip();
@ -67,6 +154,20 @@ void cRecManager::DeleteTimer(cTimer *timer) {
Timers.SetModified(); Timers.SetModified();
} }
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();
}
}
void cRecManager::SaveTimer(cTimer *timer, cRecMenu *menu) { void cRecManager::SaveTimer(cTimer *timer, cRecMenu *menu) {
if (!timer) if (!timer)
return; return;
@ -90,8 +191,16 @@ void cRecManager::SaveTimer(cTimer *timer, cRecMenu *menu) {
timer->SetFlags(tfActive); timer->SetFlags(tfActive);
timer->SetEventFromSchedule(); timer->SetEventFromSchedule();
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(); Timers.SetModified();
} }
}
bool cRecManager::IsRecorded(const cEvent *event) { bool cRecManager::IsRecorded(const cEvent *event) {
cTimer *timer = Timers.GetMatch(event); cTimer *timer = Timers.GetMatch(event);
@ -227,8 +336,18 @@ cTimer *cRecManager::CreateSeriesTimer(cRecMenu *menu, std::string path) {
else else
seriesTimer->SetFlags(tfNone); seriesTimer->SetFlags(tfNone);
seriesTimer->SetEventFromSchedule(); seriesTimer->SetEventFromSchedule();
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.Add(seriesTimer);
Timers.SetModified(); Timers.SetModified();
}
return seriesTimer; return seriesTimer;
} }

View File

@ -30,9 +30,17 @@ public:
cRecManager (void); cRecManager (void);
void SetEPGSearchPlugin(void); void SetEPGSearchPlugin(void);
bool EpgSearchAvailable(void) {return epgSearchAvailable;}; bool EpgSearchAvailable(void) {return epgSearchAvailable;};
bool RefreshRemoteTimers(void);
bool CheckEventForTimer(const cEvent *event);
cTimer *GetTimerForEvent(const cEvent *event);
cTimer *createTimer(const cEvent *event, std::string path); cTimer *createTimer(const cEvent *event, std::string path);
void DeleteTimer(const cEvent *event); cTimer *createLocalTimer(const cEvent *event, std::string path);
cTimer *createRemoteTimer(const cEvent *event, std::string path);
void SetTimerPath(cTimer *timer, std::string path);
void DeleteTimer(int timerID); void DeleteTimer(int timerID);
void DeleteTimer(const cEvent *event);
void DeleteLocalTimer(const cEvent *event);
void DeleteRemoteTimer(const cEvent *event);
void SaveTimer(cTimer *timer, cRecMenu *menu); void SaveTimer(cTimer *timer, cRecMenu *menu);
bool IsRecorded(const cEvent *event); bool IsRecorded(const cEvent *event);
std::vector<TVGuideTimerConflict> CheckTimerConflict(void); std::vector<TVGuideTimerConflict> CheckTimerConflict(void);

View File

@ -38,7 +38,7 @@ void cRecMenuManager::Start(const cEvent *event) {
detailViewActive = false; detailViewActive = false;
SetBackground(); SetBackground();
this->event = event; this->event = event;
activeMenu = new cRecMenuMain(recManager->EpgSearchAvailable(), event->HasTimer(), SwitchTimers.EventInSwitchList(event)); activeMenu = new cRecMenuMain(recManager->EpgSearchAvailable(), recManager->CheckEventForTimer(event), SwitchTimers.EventInSwitchList(event));
activeMenu->Display(); activeMenu->Display();
osdManager.flush(); osdManager.flush();
} }
@ -180,7 +180,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
break; break;
case rmsEditTimer: { case rmsEditTimer: {
//edit timer for active event //edit timer for active event
timer = Timers.GetMatch(event); timer = recManager->GetTimerForEvent(event);
if (timer) { if (timer) {
delete activeMenu; delete activeMenu;
activeMenu = new cRecMenuEditTimer(timer, rmsSaveTimer); activeMenu = new cRecMenuEditTimer(timer, rmsSaveTimer);

View File

@ -116,7 +116,18 @@ public:
SetWidthPercent(50); SetWidthPercent(50);
cString channelName = Channels.GetByChannelID(event->ChannelID())->Name(); cString channelName = Channels.GetByChannelID(event->ChannelID())->Name();
cString message; cString message;
if (event->HasTimer()) { bool eventHasTimer = false;
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
RemoteTimers_GetMatch_v1_0 rtMatch;
rtMatch.event = event;
pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
if (rtMatch.timerMatch == tmFull) {
eventHasTimer = true;
}
} else {
eventHasTimer = event->HasTimer();
}
if (eventHasTimer) {
message = tr("Timer created"); message = tr("Timer created");
} else { } else {
message = tr("Timer NOT created"); message = tr("Timer NOT created");
@ -322,7 +333,18 @@ public:
infoItem->CalculateHeight(width - 2 * border); infoItem->CalculateHeight(width - 2 * border);
AddMenuItem(infoItem); AddMenuItem(infoItem);
bool timerActive = timer->HasFlags(tfActive); bool timerActive = false;
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 = timer->HasFlags(tfActive);
time_t day = timer->Day(); time_t day = timer->Day();
int start = timer->Start(); int start = timer->Start();
int stop = timer->Stop(); int stop = timer->Stop();
@ -395,8 +417,11 @@ public:
cRecMenuConfirmSeriesTimer(cTimer *seriesTimer) { cRecMenuConfirmSeriesTimer(cTimer *seriesTimer) {
SetWidthPercent(50); SetWidthPercent(50);
cString message = tr("Series Timer created"); cString message = tr("Series Timer created");
cString infoText = message;
if (seriesTimer) {
cString days = cTimer::PrintDay(seriesTimer->Day(), seriesTimer->WeekDays(), true); 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())); 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); cRecMenuItemInfo *infoItem = new cRecMenuItemInfo(*infoText);
infoItem->CalculateHeight(width - 2 * border); infoItem->CalculateHeight(width - 2 * border);
AddMenuItem(infoItem); AddMenuItem(infoItem);

View File

@ -65,6 +65,8 @@ void cTvguideSetup::Store(void) {
SetupStore("hugeStepHours", tvguideConfig.hugeStepHours); SetupStore("hugeStepHours", tvguideConfig.hugeStepHours);
SetupStore("channelJumpMode", tvguideConfig.channelJumpMode); SetupStore("channelJumpMode", tvguideConfig.channelJumpMode);
SetupStore("blueKeyMode", tvguideConfig.blueKeyMode); SetupStore("blueKeyMode", tvguideConfig.blueKeyMode);
SetupStore("useRemoteTimers", tvguideConfig.useRemoteTimers);
SetupStore("closeOnSwitch", tvguideConfig.closeOnSwitch);
SetupStore("hideLastGroup", tvguideConfig.hideLastGroup); SetupStore("hideLastGroup", tvguideConfig.hideLastGroup);
SetupStore("hideChannelLogos", tvguideConfig.hideChannelLogos); SetupStore("hideChannelLogos", tvguideConfig.hideChannelLogos);
SetupStore("logoExtension", tvguideConfig.logoExtension); SetupStore("logoExtension", tvguideConfig.logoExtension);
@ -163,12 +165,15 @@ void cMenuSetupGeneral::Set(void) {
Add(new cMenuEditStraItem(tr("Channel Jump Mode (Keys Green / Yellow)"), &tmpTvguideConfig->channelJumpMode, 2, jumpMode)); 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 cMenuEditStraItem(tr("Keys Blue and OK"), &tmpTvguideConfig->blueKeyMode, 2, blueMode));
Add(new cMenuEditBoolItem(tr("Close TVGuide after channel switch"), &tmpTvguideConfig->closeOnSwitch));
Add(new cMenuEditBoolItem(tr("Hide last Channel Group"), &tmpTvguideConfig->hideLastGroup)); 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("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("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 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)); Add(new cMenuEditStraItem(tr("Time Format (12h/24h)"), &tmpTvguideConfig->timeFormat, 2, timeFormatItems));
Add(new cMenuEditBoolItem(tr("Use folders for instant records"), &tmpTvguideConfig->recMenuAskFolder)); Add(new cMenuEditBoolItem(tr("Use folders for instant records"), &tmpTvguideConfig->recMenuAskFolder));
if (pRemoteTimers)
Add(new cMenuEditBoolItem(tr("Use Remotetimers"), &tmpTvguideConfig->useRemoteTimers));
Add(new cMenuEditBoolItem(tr("Display Reruns in detailed EPG View"), &tmpTvguideConfig->displayRerunsDetailEPGView)); Add(new cMenuEditBoolItem(tr("Display Reruns in detailed EPG View"), &tmpTvguideConfig->displayRerunsDetailEPGView));
if (tmpTvguideConfig->displayRerunsDetailEPGView) { if (tmpTvguideConfig->displayRerunsDetailEPGView) {
Add(new cMenuEditIntItem(cString::sprintf("%s%s", indent, tr("Number of reruns to display")), &tmpTvguideConfig->numReruns, 1, 10)); Add(new cMenuEditIntItem(cString::sprintf("%s%s", indent, tr("Number of reruns to display")), &tmpTvguideConfig->numReruns, 1, 10));

View File

@ -60,6 +60,9 @@ cTvguideConfig tvguideConfig;
cOsdManager osdManager; cOsdManager osdManager;
#include "services/epgsearch.h" #include "services/epgsearch.h"
#include "services/remotetimers.h"
cPlugin* pRemoteTimers = NULL;
#include "tools.c" #include "tools.c"
#include "switchtimer.c" #include "switchtimer.c"
#include "setup.c" #include "setup.c"
@ -122,6 +125,16 @@ void cTvGuideOsd::Show(void) {
myTime->Now(); myTime->Now();
SwitchTimers.Load(AddDirectory(cPlugin::ConfigDirectory("epgsearch"), "epgsearchswitchtimers.conf")); SwitchTimers.Load(AddDirectory(cPlugin::ConfigDirectory("epgsearch"), "epgsearchswitchtimers.conf"));
recMenuManager = new cRecMenuManager(); recMenuManager = new cRecMenuManager();
pRemoteTimers = cPluginManager::CallFirstService("RemoteTimers::RefreshTimers-v1.0", NULL);
if (pRemoteTimers) {
isyslog("tvguide: remotetimers-plugin is available");
}
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
cString errorMsg;
if (!pRemoteTimers->Service("RemoteTimers::RefreshTimers-v1.0", &errorMsg)) {
esyslog("tvguide: %s", *errorMsg);
}
}
drawOsd(); drawOsd();
} }
esyslog("tvguide: Rendering took %d ms", int(cTimeMs::Now()-start)); esyslog("tvguide: Rendering took %d ms", int(cTimeMs::Now()-start));
@ -556,6 +569,7 @@ eOSState cTvGuideOsd::ChannelSwitch() {
const cChannel *currentChannel = activeGrid->column->getChannel(); const cChannel *currentChannel = activeGrid->column->getChannel();
if (currentChannel) { if (currentChannel) {
cDevice::PrimaryDevice()->SwitchChannel(currentChannel, true); cDevice::PrimaryDevice()->SwitchChannel(currentChannel, true);
if (tvguideConfig.closeOnSwitch)
return osEnd; return osEnd;
} }
return osContinue; return osContinue;