mirror of
https://projects.vdr-developer.org/git/vdr-plugin-tvguide.git
synced 2023-10-05 15:01:48 +02:00
Added remotetimers support
This commit is contained in:
parent
9f351151ed
commit
34f8460e25
2
HISTORY
2
HISTORY
@ -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)
|
||||||
|
4
config.c
4
config.c
@ -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);
|
||||||
|
2
config.h
2
config.h
@ -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;
|
||||||
|
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);
|
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() {
|
||||||
|
@ -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();
|
||||||
|
27
epggrid.c
27
epggrid.c
@ -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;
|
||||||
|
@ -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();
|
||||||
};
|
};
|
||||||
|
@ -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"
|
||||||
|
|
||||||
|
137
recmanager.c
137
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 *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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
10
recmanager.h
10
recmanager.h
@ -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);
|
||||||
|
@ -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);
|
||||||
|
31
recmenus.c
31
recmenus.c
@ -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);
|
||||||
|
5
setup.c
5
setup.c
@ -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));
|
||||||
|
14
tvguideosd.c
14
tvguideosd.c
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user