diff options
Diffstat (limited to 'menudone.c')
-rw-r--r-- | menudone.c | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/menudone.c b/menudone.c new file mode 100644 index 0000000..be04ca8 --- /dev/null +++ b/menudone.c @@ -0,0 +1,158 @@ +/* + * menudone.c: EPG2VDR plugin for the Video Disk Recorder + * + * See the README file for copyright information and how to reach the author. + * + */ + +#include <vdr/interface.h> + +#include "epg2vdr.h" +#include "update.h" +#include "menu.h" + +#include "svdrpclient.h" + +//*************************************************************************** +// Object +//*************************************************************************** + +cEpgMenuDones::cEpgMenuDones() + : cOsdMenu("", 2, 20, 35) +{ + journalFilter = jfAll; + order = 0; + + menuDb = new cMenuDb; + + refresh(); +} + +cEpgMenuDones::~cEpgMenuDones() +{ + delete menuDb; +} + +//*************************************************************************** +// Set Help +//*************************************************************************** + +void cEpgMenuDones::setHelp() +{ + const char* btGreen = ""; + + switch (journalFilter) + { + case jfAll: btGreen = tr("Recorded"); break; + case jfRecorded: btGreen = tr("Created"); break; + case jfCreated: btGreen = tr("Failed"); break; + case jfFailed: btGreen = tr("Deleted"); break; + case jfDeleted: btGreen = tr("Recorded"); break; + + } + + SetHelp(tr("All"), btGreen, tr("Delete"), 0); +} + +//*************************************************************************** +// Refresh +//*************************************************************************** + +int cEpgMenuDones::refresh() +{ + int current = Current(); + const char* state = "%"; + + cDbStatement* select = order ? menuDb->selectDoneTimerByStateTimeOrder : menuDb->selectDoneTimerByStateTitleOrder; + + Clear(); + + switch (journalFilter) + { + case jfAll: state = "%"; SetTitle(tr("Timer journal")); break; + case jfRecorded: state = "R"; SetTitle(tr("Timer journal - Recorded")); break; + case jfCreated: state = "C"; SetTitle(tr("Timer journal - Created")); break; + case jfFailed: state = "F"; SetTitle(tr("Timer journal - Failed")); break; + case jfDeleted: state = "D"; SetTitle(tr("Timer journal - Delete")); break; + } + + // fill menu .. + + menuDb->timerDoneDb->clear(); + menuDb->timerDoneDb->setValue("STATE", state); + + for (int f = select->find(); f && menuDb->dbConnected(); f = select->fetch()) + { + char* buf; + asprintf(&buf, "%s\t%s\t%s\t%s", + menuDb->timerDoneDb->getStrValue("STATE"), + l2pTime(menuDb->timerDoneDb->getIntValue("STARTTIME"), "%d.%m.%y %H:%M").c_str(), + menuDb->timerDoneDb->getStrValue("TITLE"), + menuDb->timerDoneDb->getStrValue("SHORTTEXT")); + Add(new cEpgMenuTextItem(menuDb->timerDoneDb->getIntValue("ID"), buf)); + free(buf); + } + + select->freeResult(); + + // init .. + + SetCurrent(current >= 0 ? Get(current) : First()); + setHelp(); + Display(); + + return success; +} + +//*************************************************************************** +// ProcessKey +//*************************************************************************** + +eOSState cEpgMenuDones::ProcessKey(eKeys Key) +{ + eOSState state = cOsdMenu::ProcessKey(Key); + + if (state == osUnknown) + { + switch (Key) + { + case k0: + { + order = !order; + refresh(); + break; + } + case kRed: + { + journalFilter = jfAll; + refresh(); + return osContinue; + + } + case kGreen: + { + if (++journalFilter >= jfCount) + journalFilter = jfFirst; + + refresh(); + return osContinue; + } + case kYellow: + { + cEpgMenuTextItem* item = (cEpgMenuTextItem*)Get(Current()); + + if (item && Interface->Confirm(tr("Delete timer from journal?"))) + { + menuDb->timerDoneDb->deleteWhere("id = %ld", item->getId()); + refresh(); + } + + return osContinue; + } + + default: break; + } + } + + return state; +} |