summaryrefslogtreecommitdiff
path: root/menudone.c
diff options
context:
space:
mode:
Diffstat (limited to 'menudone.c')
-rw-r--r--menudone.c158
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;
+}