mirror of
				https://projects.vdr-developer.org/git/vdr-plugin-tvguide.git
				synced 2023-10-05 13:01:48 +00:00 
			
		
		
		
	Added remotetimers support
This commit is contained in:
		
							
								
								
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -57,3 +57,5 @@ VDR Plugin 'tvguide' Revision History | ||||
| - recording folder also choosable for series timers | ||||
| - blue button also available in detail view | ||||
| - 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) | ||||
|   | ||||
							
								
								
									
										4
									
								
								config.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								config.c
									
									
									
									
									
								
							| @@ -49,6 +49,8 @@ cTvguideConfig::cTvguideConfig() { | ||||
|     channelJumpMode = eNumJump; | ||||
|     jumpChannels = 0; | ||||
|     blueKeyMode = 0; | ||||
|     closeOnSwitch = 1; | ||||
|     useRemoteTimers = 0; | ||||
|     hideLastGroup = 0; | ||||
|     hideChannelLogos = 0; | ||||
|     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, "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); | ||||
|   | ||||
							
								
								
									
										4
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								config.h
									
									
									
									
									
								
							| @@ -50,6 +50,8 @@ class cTvguideConfig { | ||||
|         int channelJumpMode; | ||||
|         int jumpChannels; | ||||
|         int blueKeyMode; | ||||
|         int closeOnSwitch; | ||||
|         int useRemoteTimers; | ||||
|         int hideLastGroup; | ||||
|         int hideChannelLogos; | ||||
|         int logoWidthRatio; | ||||
| @@ -60,7 +62,7 @@ class cTvguideConfig { | ||||
|         int epgImageWidth; | ||||
|         int epgImageHeight; | ||||
|         int numAdditionalEPGPictures; | ||||
| 	int epgImageWidthLarge; | ||||
|         int epgImageWidthLarge; | ||||
|         int epgImageHeightLarge; | ||||
|         cString epgImagePath; | ||||
|         cString iconPath; | ||||
|   | ||||
							
								
								
									
										26
									
								
								detailview.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								detailview.c
									
									
									
									
									
								
							| @@ -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); | ||||
|     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; | ||||
|     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() { | ||||
|   | ||||
| @@ -28,6 +28,7 @@ private: | ||||
|     void loadReruns(void); | ||||
|     int heightEPGPics(void); | ||||
|     void drawEPGPictures(int height); | ||||
|     void drawRecIcon(void); | ||||
|     cImage *createScrollbar(int width, int height, tColor clrBgr, tColor clrBlend); | ||||
|     void scrollUp(); | ||||
|     void scrollDown(); | ||||
|   | ||||
							
								
								
									
										27
									
								
								epggrid.c
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								epggrid.c
									
									
									
									
									
								
							| @@ -5,11 +5,9 @@ cEpgGrid::cEpgGrid(cChannelColumn *c, const cEvent *event)  : cGrid(c) { | ||||
|     this->event = event; | ||||
|     extText = new cTextWrapper(); | ||||
|     hasTimer = false; | ||||
|     if (column->HasTimer()) | ||||
|         hasTimer = event->HasTimer(); | ||||
|     SetTimer(); | ||||
|     hasSwitchTimer = false; | ||||
|     if (column->HasSwitchTimer()) | ||||
|         hasSwitchTimer = SwitchTimers.EventInSwitchList(event); | ||||
|     SetSwitchTimer(); | ||||
|     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() { | ||||
|     if (tvguideConfig.displayMode == eVertical) { | ||||
|         cString strText; | ||||
|   | ||||
| @@ -20,8 +20,8 @@ public: | ||||
|     const cEvent *GetEvent() {return event;}; | ||||
|     time_t StartTime() { return event->StartTime(); }; | ||||
|     time_t EndTime() { return event->EndTime(); }; | ||||
|     void SetTimer() {hasTimer = event->HasTimer();}; | ||||
|     void SetSwitchTimer() {hasSwitchTimer = SwitchTimers.EventInSwitchList(event);}; | ||||
|     void SetTimer(); | ||||
|     void SetSwitchTimer(); | ||||
|     cString getTimeString(void); | ||||
|     void debug(); | ||||
| }; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: vdr-tvguide 0.0.1\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" | ||||
| "Last-Translator: Horst\n" | ||||
| "Language-Team: \n" | ||||
| @@ -420,6 +420,9 @@ msgstr "Kanalsprung Modus (Tasten grün / gelb)" | ||||
| msgid "Keys Blue and OK" | ||||
| msgstr "Tasten Blau und OK" | ||||
|  | ||||
| msgid "Close TVGuide after channel switch" | ||||
| msgstr "TVGuide nach Umschalten schließen" | ||||
|  | ||||
| msgid "Hide last Channel Group" | ||||
| msgstr "Letzte Kanalgruppe verstecken" | ||||
|  | ||||
| @@ -438,6 +441,9 @@ msgstr "Zeitformat (12h/24h)" | ||||
| msgid "Use folders for instant records" | ||||
| msgstr "Bei Sofortaufnahmen Verzeichnisse benutzen" | ||||
|  | ||||
| msgid "Use Remotetimers" | ||||
| msgstr "RemoteTimers benutzen" | ||||
|  | ||||
| msgid "Display Reruns in detailed EPG View" | ||||
| msgstr "Wiederholungen in der detailierten EPG Ansicht anzeigen" | ||||
|  | ||||
|   | ||||
							
								
								
									
										145
									
								
								recmanager.c
									
									
									
									
									
								
							
							
						
						
									
										145
									
								
								recmanager.c
									
									
									
									
									
								
							| @@ -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 *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); | ||||
|     Timers.Add(timer); | ||||
|     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); | ||||
|         isyslog("timer %s added (active)", *timer->ToDescr()); | ||||
|     } | ||||
|     SetTimerPath(timer, path); | ||||
|     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) { | ||||
|         std::replace(path.begin(), path.end(), '/', '~'); | ||||
|         cString newFileName = cString::sprintf("%s~%s", path.c_str(), timer->File()); | ||||
|         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) { | ||||
| @@ -57,6 +128,22 @@ void cRecManager::DeleteTimer(int timerID) { | ||||
|     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) { | ||||
|     if (timer->Recording()) { | ||||
|         timer->Skip(); | ||||
| @@ -67,6 +154,20 @@ void cRecManager::DeleteTimer(cTimer *timer) { | ||||
|     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) { | ||||
|     if (!timer) | ||||
|         return; | ||||
| @@ -90,7 +191,15 @@ void cRecManager::SaveTimer(cTimer *timer, cRecMenu *menu) { | ||||
|         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) { | ||||
| @@ -227,8 +336,18 @@ cTimer *cRecManager::CreateSeriesTimer(cRecMenu *menu, std::string path) { | ||||
|     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; | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										10
									
								
								recmanager.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								recmanager.h
									
									
									
									
									
								
							| @@ -30,9 +30,17 @@ public: | ||||
|     cRecManager  (void); | ||||
|     void SetEPGSearchPlugin(void); | ||||
|     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); | ||||
|     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(const cEvent *event); | ||||
|     void DeleteLocalTimer(const cEvent *event); | ||||
|     void DeleteRemoteTimer(const cEvent *event); | ||||
|     void SaveTimer(cTimer *timer, cRecMenu *menu); | ||||
|     bool IsRecorded(const cEvent *event); | ||||
|     std::vector<TVGuideTimerConflict> CheckTimerConflict(void); | ||||
|   | ||||
| @@ -38,7 +38,7 @@ void cRecMenuManager::Start(const cEvent *event) { | ||||
|     detailViewActive = false; | ||||
|     SetBackground(); | ||||
|     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(); | ||||
|     osdManager.flush(); | ||||
| } | ||||
| @@ -180,7 +180,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) { | ||||
|             break; | ||||
|         case rmsEditTimer: { | ||||
|         //edit timer for active event | ||||
|             timer = Timers.GetMatch(event); | ||||
|             timer = recManager->GetTimerForEvent(event); | ||||
|             if (timer) { | ||||
|                 delete activeMenu; | ||||
|                 activeMenu = new cRecMenuEditTimer(timer, rmsSaveTimer); | ||||
|   | ||||
							
								
								
									
										33
									
								
								recmenus.c
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								recmenus.c
									
									
									
									
									
								
							| @@ -116,7 +116,18 @@ public: | ||||
|         SetWidthPercent(50); | ||||
|         cString channelName = Channels.GetByChannelID(event->ChannelID())->Name(); | ||||
|         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"); | ||||
|         } else { | ||||
|             message = tr("Timer NOT created"); | ||||
| @@ -322,7 +333,18 @@ public: | ||||
|             infoItem->CalculateHeight(width - 2 * border); | ||||
|             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(); | ||||
|             int start = timer->Start(); | ||||
|             int stop = timer->Stop(); | ||||
| @@ -395,8 +417,11 @@ public: | ||||
|     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); | ||||
|   | ||||
							
								
								
									
										5
									
								
								setup.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								setup.c
									
									
									
									
									
								
							| @@ -65,6 +65,8 @@ void cTvguideSetup::Store(void) { | ||||
|     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); | ||||
| @@ -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("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 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)); | ||||
|     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)); | ||||
|     if (tmpTvguideConfig->displayRerunsDetailEPGView) { | ||||
|         Add(new cMenuEditIntItem(cString::sprintf("%s%s", indent, tr("Number of reruns to display")), &tmpTvguideConfig->numReruns, 1, 10)); | ||||
|   | ||||
							
								
								
									
										16
									
								
								tvguideosd.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								tvguideosd.c
									
									
									
									
									
								
							| @@ -60,6 +60,9 @@ cTvguideConfig tvguideConfig; | ||||
| cOsdManager osdManager; | ||||
|  | ||||
| #include "services/epgsearch.h" | ||||
| #include "services/remotetimers.h" | ||||
| cPlugin* pRemoteTimers = NULL; | ||||
|  | ||||
| #include "tools.c" | ||||
| #include "switchtimer.c" | ||||
| #include "setup.c" | ||||
| @@ -122,6 +125,16 @@ void cTvGuideOsd::Show(void) { | ||||
|         myTime->Now(); | ||||
|         SwitchTimers.Load(AddDirectory(cPlugin::ConfigDirectory("epgsearch"), "epgsearchswitchtimers.conf")); | ||||
|         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(); | ||||
|     } | ||||
|     esyslog("tvguide: Rendering took %d ms", int(cTimeMs::Now()-start)); | ||||
| @@ -556,7 +569,8 @@ eOSState cTvGuideOsd::ChannelSwitch() { | ||||
|     const cChannel *currentChannel = activeGrid->column->getChannel(); | ||||
|     if (currentChannel) { | ||||
|         cDevice::PrimaryDevice()->SwitchChannel(currentChannel, true); | ||||
|         return osEnd; | ||||
|         if (tvguideConfig.closeOnSwitch) | ||||
|             return osEnd; | ||||
|     } | ||||
|     return osContinue; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user