diff options
author | Johann Friedrichs <johann.friedrichs@web.de> | 2018-03-21 12:14:55 +0100 |
---|---|---|
committer | Johann Friedrichs <johann.friedrichs@web.de> | 2018-03-21 12:14:55 +0100 |
commit | e8a0e569152c50d6084f252d12854b8fd4e74466 (patch) | |
tree | 5a90ef7ea08ff2096df157ca109c5268cdc04903 /menu_commands.c | |
parent | 9c7d95ff8d6ba965cb23147507a859b1fd0491d6 (diff) | |
download | vdr-plugin-epgsearch-e8a0e569152c50d6084f252d12854b8fd4e74466.tar.gz vdr-plugin-epgsearch-e8a0e569152c50d6084f252d12854b8fd4e74466.tar.bz2 |
unified indentation
Diffstat (limited to 'menu_commands.c')
-rw-r--r-- | menu_commands.c | 453 |
1 files changed, 219 insertions, 234 deletions
diff --git a/menu_commands.c b/menu_commands.c index ef20c11..99ca744 100644 --- a/menu_commands.c +++ b/menu_commands.c @@ -43,31 +43,30 @@ The project's page is at http://winni.vdr-developer.org/epgsearch // --- cMenuSearchCommands --------------------------------------------------------- cMenuSearchCommands::cMenuSearchCommands(const char *Title, const cEvent* Event, bool DirectCall, cSearchExt* Search) -:cOsdMenu(Title) + : cOsdMenu(Title) { - SetMenuCategory(mcCommand); - - directCall = DirectCall; - SetHasHotkeys(); - LoadCommands(); - - search = Search; - event = Event; - Add(new cOsdItem(hk(tr("Repeats")))); - Add(new cOsdItem(hk(trVDR("Button$Record")))); - Add(new cOsdItem(hk(trVDR("Button$Switch")))); - Add(new cOsdItem(hk(tr("Create search")))); - Add(new cOsdItem(hk(tr("Search in recordings")))); - Add(new cOsdItem(hk(tr("Mark as 'already recorded'?")))); - Add(new cOsdItem(hk(tr("Add/Remove to/from switch list?")))); - Add(new cOsdItem(hk(tr("Create blacklist")))); - for (cCommand *command = commands.First(); command; command = commands.Next(command)) - Add(new cOsdItem(hk(command->Title()))); - if (event) - { - cString szTitle = cString::sprintf("%s: %s", tr("EPG Commands"), event->Title()); - SetTitle(szTitle); - } + SetMenuCategory(mcCommand); + + directCall = DirectCall; + SetHasHotkeys(); + LoadCommands(); + + search = Search; + event = Event; + Add(new cOsdItem(hk(tr("Repeats")))); + Add(new cOsdItem(hk(trVDR("Button$Record")))); + Add(new cOsdItem(hk(trVDR("Button$Switch")))); + Add(new cOsdItem(hk(tr("Create search")))); + Add(new cOsdItem(hk(tr("Search in recordings")))); + Add(new cOsdItem(hk(tr("Mark as 'already recorded'?")))); + Add(new cOsdItem(hk(tr("Add/Remove to/from switch list?")))); + Add(new cOsdItem(hk(tr("Create blacklist")))); + for (cCommand *command = commands.First(); command; command = commands.Next(command)) + Add(new cOsdItem(hk(command->Title()))); + if (event) { + cString szTitle = cString::sprintf("%s: %s", tr("EPG Commands"), event->Title()); + SetTitle(szTitle); + } } cMenuSearchCommands::~cMenuSearchCommands() @@ -76,257 +75,243 @@ cMenuSearchCommands::~cMenuSearchCommands() void cMenuSearchCommands::LoadCommands() { - const char* szLanguageCode = I18nLanguageCode(I18nCurrentLanguage()); - - char *pstrSearchToken, *pptr; - char *pstrSearch=strdup(szLanguageCode); - pstrSearchToken=strtok_r(pstrSearch, ",", &pptr); - bool bLoaded = false; - while(pstrSearchToken) // may contain multiple code, e.g. 'ger,deu' - { - cString cmdFile = cString::sprintf("%s-%s.conf", ADDDIR(CONFIGDIR, "epgsearchcmds"), pstrSearchToken); - if (access(cmdFile, F_OK) == 0) - { - commands.Load(cmdFile, true); - bLoaded = true; - break; - } - pstrSearchToken=strtok_r(NULL, ",", &pptr); - } - if (!bLoaded) - commands.Load(AddDirectory(CONFIGDIR, "epgsearchcmds.conf"), true); - free(pstrSearch); + const char* szLanguageCode = I18nLanguageCode(I18nCurrentLanguage()); + + char *pstrSearchToken, *pptr; + char *pstrSearch = strdup(szLanguageCode); + pstrSearchToken = strtok_r(pstrSearch, ",", &pptr); + bool bLoaded = false; + while (pstrSearchToken) { // may contain multiple code, e.g. 'ger,deu' + cString cmdFile = cString::sprintf("%s-%s.conf", ADDDIR(CONFIGDIR, "epgsearchcmds"), pstrSearchToken); + if (access(cmdFile, F_OK) == 0) { + commands.Load(cmdFile, true); + bLoaded = true; + break; + } + pstrSearchToken = strtok_r(NULL, ",", &pptr); + } + if (!bLoaded) + commands.Load(AddDirectory(CONFIGDIR, "epgsearchcmds.conf"), true); + free(pstrSearch); } eOSState cMenuSearchCommands::Switch(void) { - LOCK_CHANNELS_READ; - const cChannel *channel = Channels->GetByChannelID(event->ChannelID(), true, true); - if (channel && cDevice::PrimaryDevice()->SwitchChannel(channel, true)) - return osEnd; - else - { - INFO(trVDR("Can't switch channel!")); - return osContinue; - } + LOCK_CHANNELS_READ; + const cChannel *channel = Channels->GetByChannelID(event->ChannelID(), true, true); + if (channel && cDevice::PrimaryDevice()->SwitchChannel(channel, true)) + return osEnd; + else { + INFO(trVDR("Can't switch channel!")); + return osContinue; + } } eOSState cMenuSearchCommands::ExtendedSearch(void) { - return AddSubMenu(new cMenuEPGSearchExt()); + return AddSubMenu(new cMenuEPGSearchExt()); } eOSState cMenuSearchCommands::Record(void) { - if (!event) return osContinue; - - eTimerMatch timerMatch = tmNone; - LOCK_TIMERS_WRITE; - Timers->SetExplicitModify(); - cTimer* timer = Timers->GetMatch(event, &timerMatch); - if (timerMatch == tmFull) - { - if (EPGSearchConfig.useVDRTimerEditMenu) - return AddSubMenu(new cMenuEditTimer(timer)); - else - return AddSubMenu(new cMenuMyEditTimer(timer, false, event, timer->Channel())); - } - - timer = new cTimer(event); - PrepareTimerFile(event, timer); - cTimer *t = Timers->GetTimer(timer); - - if (EPGSearchConfig.onePressTimerCreation == 0 || t || (!t && event->StartTime() - (Setup.MarginStart+2) * 60 < time(NULL))) - { - if (t) - { - delete timer; - timer = t; - } - if (EPGSearchConfig.useVDRTimerEditMenu) - return AddSubMenu(new cMenuEditTimer(timer, !t)); - else - return AddSubMenu(new cMenuMyEditTimer(timer, !t, event)); - } - else - { - string fullaux = ""; - string aux = ""; - if (event) - { - int bstart = event->StartTime() - timer->StartTime(); - int bstop = timer->StopTime() - event->EndTime(); - int checkmode = DefTimerCheckModes.GetMode(timer->Channel()); - aux = UpdateAuxValue(aux, "channel", NumToString(timer->Channel()->Number()) + " - " + CHANNELNAME(timer->Channel())); - aux = UpdateAuxValue(aux, "update", checkmode); - aux = UpdateAuxValue(aux, "eventid", event->EventID()); - aux = UpdateAuxValue(aux, "bstart", bstart); - aux = UpdateAuxValue(aux, "bstop", bstop); - fullaux = UpdateAuxValue(fullaux, "epgsearch", aux); - } + if (!event) return osContinue; + + eTimerMatch timerMatch = tmNone; + LOCK_TIMERS_WRITE; + Timers->SetExplicitModify(); + cTimer* timer = Timers->GetMatch(event, &timerMatch); + if (timerMatch == tmFull) { + if (EPGSearchConfig.useVDRTimerEditMenu) + return AddSubMenu(new cMenuEditTimer(timer)); + else + return AddSubMenu(new cMenuMyEditTimer(timer, false, event, timer->Channel())); + } + + timer = new cTimer(event); + PrepareTimerFile(event, timer); + cTimer *t = Timers->GetTimer(timer); + + if (EPGSearchConfig.onePressTimerCreation == 0 || t || (!t && event->StartTime() - (Setup.MarginStart + 2) * 60 < time(NULL))) { + if (t) { + delete timer; + timer = t; + } + if (EPGSearchConfig.useVDRTimerEditMenu) + return AddSubMenu(new cMenuEditTimer(timer, !t)); + else + return AddSubMenu(new cMenuMyEditTimer(timer, !t, event)); + } else { + string fullaux = ""; + string aux = ""; + if (event) { + int bstart = event->StartTime() - timer->StartTime(); + int bstop = timer->StopTime() - event->EndTime(); + int checkmode = DefTimerCheckModes.GetMode(timer->Channel()); + aux = UpdateAuxValue(aux, "channel", NumToString(timer->Channel()->Number()) + " - " + CHANNELNAME(timer->Channel())); + aux = UpdateAuxValue(aux, "update", checkmode); + aux = UpdateAuxValue(aux, "eventid", event->EventID()); + aux = UpdateAuxValue(aux, "bstart", bstart); + aux = UpdateAuxValue(aux, "bstop", bstop); + fullaux = UpdateAuxValue(fullaux, "epgsearch", aux); + } #ifdef USE_PINPLUGIN - aux = ""; - aux = UpdateAuxValue(aux, "protected", timer->FskProtection() ? "yes" : "no"); - fullaux = UpdateAuxValue(fullaux, "pin-plugin", aux); + aux = ""; + aux = UpdateAuxValue(aux, "protected", timer->FskProtection() ? "yes" : "no"); + fullaux = UpdateAuxValue(fullaux, "pin-plugin", aux); #endif - SetAux(timer, fullaux); - if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost) - timer->SetRemote(Setup.SVDRPDefaultHost); - Timers->Add(timer); - timer->Matches(); - Timers->SetModified(); - if (!HandleRemoteTimerModifications(timer)) { - ERROR(tr("Epgsearch: RemoteTimerModifications failed")); - Timers->Del(timer); - } - else - return osBack; - } - return osContinue; + SetAux(timer, fullaux); + if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost) + timer->SetRemote(Setup.SVDRPDefaultHost); + Timers->Add(timer); + timer->Matches(); + Timers->SetModified(); + if (!HandleRemoteTimerModifications(timer)) { + ERROR(tr("Epgsearch: RemoteTimerModifications failed")); + Timers->Del(timer); + } else + return osBack; + } + return osContinue; } eOSState cMenuSearchCommands::MarkAsRecorded(void) { - if (!event) return osContinue; - if (!Interface->Confirm(tr("Mark as 'already recorded'?"))) - return osContinue; - cTimer* dummyTimer = new cTimer(event); - cMutexLock RecsDoneLock(&RecsDone); - RecsDone.Add(new cRecDone(dummyTimer, event, search)); - RecsDone.Save(); - delete dummyTimer; - return osBack; + if (!event) return osContinue; + if (!Interface->Confirm(tr("Mark as 'already recorded'?"))) + return osContinue; + cTimer* dummyTimer = new cTimer(event); + cMutexLock RecsDoneLock(&RecsDone); + RecsDone.Add(new cRecDone(dummyTimer, event, search)); + RecsDone.Save(); + delete dummyTimer; + return osBack; } eOSState cMenuSearchCommands::AddToSwitchList(void) { - if (!event) return osContinue; - - time_t now = time(NULL); - if (now >= event->StartTime()) - { - ERROR(tr("Already running!")); - return osBack; - } - cSwitchTimer* switchTimer = SwitchTimers.InSwitchList(event); - if (!switchTimer) - { - if (!Interface->Confirm(tr("Add to switch list?"))) - return osContinue; - cMutexLock SwitchTimersLock(&SwitchTimers); - SwitchTimers.Add(new cSwitchTimer(event)); - SwitchTimers.Save(); - cSwitchTimerThread::Init(); // asure the thread is running - } - else - { - if (!Interface->Confirm(tr("Delete from switch list?"))) - return osContinue; - cMutexLock SwitchTimersLock(&SwitchTimers); - SwitchTimers.Del(switchTimer); - SwitchTimers.Save(); - if (SwitchTimers.Count() == 0) - cSwitchTimerThread::Exit(); - } - return osBack; + if (!event) return osContinue; + + time_t now = time(NULL); + if (now >= event->StartTime()) { + ERROR(tr("Already running!")); + return osBack; + } + cSwitchTimer* switchTimer = SwitchTimers.InSwitchList(event); + if (!switchTimer) { + if (!Interface->Confirm(tr("Add to switch list?"))) + return osContinue; + cMutexLock SwitchTimersLock(&SwitchTimers); + SwitchTimers.Add(new cSwitchTimer(event)); + SwitchTimers.Save(); + cSwitchTimerThread::Init(); // asure the thread is running + } else { + if (!Interface->Confirm(tr("Delete from switch list?"))) + return osContinue; + cMutexLock SwitchTimersLock(&SwitchTimers); + SwitchTimers.Del(switchTimer); + SwitchTimers.Save(); + if (SwitchTimers.Count() == 0) + cSwitchTimerThread::Exit(); + } + return osBack; } eOSState cMenuSearchCommands::CreateSearchTimer(void) { - if (!event) return osContinue; + if (!event) return osContinue; - cSearchExt* pNew = new cSearchExt; - strcpy(pNew->search, event->Title()); - LOCK_CHANNELS_READ; - pNew->channelMin = pNew->channelMax = Channels->GetByChannelID(event->ChannelID()); - return AddSubMenu(new cMenuEditSearchExt(pNew, true, false, true)); + cSearchExt* pNew = new cSearchExt; + strcpy(pNew->search, event->Title()); + LOCK_CHANNELS_READ; + pNew->channelMin = pNew->channelMax = Channels->GetByChannelID(event->ChannelID()); + return AddSubMenu(new cMenuEditSearchExt(pNew, true, false, true)); } eOSState cMenuSearchCommands::CreateBlacklist(void) { - if (!event) return osContinue; + if (!event) return osContinue; - cBlacklist* pNew = new cBlacklist; - strcpy(pNew->search, event->Title()); - return AddSubMenu(new cMenuBlacklistEdit(pNew, true)); + cBlacklist* pNew = new cBlacklist; + strcpy(pNew->search, event->Title()); + return AddSubMenu(new cMenuBlacklistEdit(pNew, true)); } eOSState cMenuSearchCommands::Execute(void) { - int current = Current(); - if (current <= 7) - { - if (current == 0) - return AddSubMenu(new cMenuSearchResultsForQuery(event->Title(), true)); - if (current == 1) - return Record(); - if (current == 2) - return Switch(); - if (current == 3) - return CreateSearchTimer(); - if (current == 4) - return AddSubMenu(new cMenuSearchResultsForRecs(event->Title())); - if (current == 5) - return MarkAsRecorded(); - if (current == 6) - return AddToSwitchList(); - if (current == 7) - return CreateBlacklist(); - } - - cCommand *command = commands.Get(current-8); - if (command) { - cString buffer; - bool confirmed = true; - if (command->Confirm()) { - buffer = cString::sprintf("%s?", command->Title()); - confirmed = Interface->Confirm(buffer); - } - if (confirmed) { - buffer = cString::sprintf("%s...", command->Title()); - Skins.Message(mtStatus, buffer); - - { - LOCK_CHANNELS_READ; - buffer = cString::sprintf("'%s' %ld %ld %d '%s' '%s'", - EscapeString(event->Title()).c_str(), - event->StartTime(), - event->EndTime(), - ChannelNrFromEvent(event), - EscapeString(Channels->GetByChannelID(event->ChannelID(), true, true)->Name()).c_str(), - EscapeString(event->ShortText()?event->ShortText():"").c_str()); - } - const char *Result = command->Execute(buffer); - Skins.Message(mtStatus, NULL); - if (Result) - return AddSubMenu(new cMenuText(command->Title(), Result, fontFix)); - return osBack; - } - } - return osContinue; + int current = Current(); + if (current <= 7) { + if (current == 0) + return AddSubMenu(new cMenuSearchResultsForQuery(event->Title(), true)); + if (current == 1) + return Record(); + if (current == 2) + return Switch(); + if (current == 3) + return CreateSearchTimer(); + if (current == 4) + return AddSubMenu(new cMenuSearchResultsForRecs(event->Title())); + if (current == 5) + return MarkAsRecorded(); + if (current == 6) + return AddToSwitchList(); + if (current == 7) + return CreateBlacklist(); + } + + cCommand *command = commands.Get(current - 8); + if (command) { + cString buffer; + bool confirmed = true; + if (command->Confirm()) { + buffer = cString::sprintf("%s?", command->Title()); + confirmed = Interface->Confirm(buffer); + } + if (confirmed) { + buffer = cString::sprintf("%s...", command->Title()); + Skins.Message(mtStatus, buffer); + + { + LOCK_CHANNELS_READ; + buffer = cString::sprintf("'%s' %ld %ld %d '%s' '%s'", + EscapeString(event->Title()).c_str(), + event->StartTime(), + event->EndTime(), + ChannelNrFromEvent(event), + EscapeString(Channels->GetByChannelID(event->ChannelID(), true, true)->Name()).c_str(), + EscapeString(event->ShortText() ? event->ShortText() : "").c_str()); + } + const char *Result = command->Execute(buffer); + Skins.Message(mtStatus, NULL); + if (Result) + return AddSubMenu(new cMenuText(command->Title(), Result, fontFix)); + return osBack; + } + } + return osContinue; } eOSState cMenuSearchCommands::ProcessKey(eKeys Key) { - bool hadSubmenu = HasSubMenu(); - eOSState state = cOsdMenu::ProcessKey(Key); - - // jump back to calling menu, if a command was called directly with key '1' .. '9' - if (directCall && hadSubmenu && !HasSubMenu()) - return osBack; - - if (state == osUnknown) { - switch (Key) { - case kGreen: - case kYellow: - case kBlue: + bool hadSubmenu = HasSubMenu(); + eOSState state = cOsdMenu::ProcessKey(Key); + + // jump back to calling menu, if a command was called directly with key '1' .. '9' + if (directCall && hadSubmenu && !HasSubMenu()) + return osBack; + + if (state == osUnknown) { + switch (Key) { + case kGreen: + case kYellow: + case kBlue: return osContinue; - case k1...k9: - case kOk: + case k1...k9: + case kOk: return Execute(); - default: break; - } - } - return state; + default: + break; + } + } + return state; } |