summaryrefslogtreecommitdiff
path: root/mainmenu.c
diff options
context:
space:
mode:
authorJoerg Bornkessel <hd_brummy@gentoo.org>2014-04-26 19:15:40 +0200
committerJoerg Bornkessel <hd_brummy@gentoo.org>2014-04-26 19:15:40 +0200
commitd45bc4bed686d1d0c2daff22a66dfa0394fde4fb (patch)
tree75b7a38c993c0c5761764a375fa822190729a402 /mainmenu.c
parent99628e3cec79c4b5888056ce4be3b92a38eddf47 (diff)
downloadvdr-plugin-audiorecorder-d45bc4bed686d1d0c2daff22a66dfa0394fde4fb.tar.gz
vdr-plugin-audiorecorder-d45bc4bed686d1d0c2daff22a66dfa0394fde4fb.tar.bz2
initial commit
Diffstat (limited to 'mainmenu.c')
-rw-r--r--mainmenu.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/mainmenu.c b/mainmenu.c
new file mode 100644
index 0000000..469686d
--- /dev/null
+++ b/mainmenu.c
@@ -0,0 +1,90 @@
+/*
+ * mainmenu.c
+ */
+
+#include "mainmenu.h"
+#include "browse.h"
+#include "dispatcher.h"
+#include "audiorecorder.h"
+
+#include <sstream>
+
+
+using namespace std;
+
+/* --- cMainmenu ------------------------------------------------------------ */
+
+cMainmenu::cMainmenu(cDispatcher *_dispatcher)
+:cOsdMenu("Audiorecorder, Mainmenu")
+{
+ dispatcher = _dispatcher;
+ active = dispatcher->is_active();
+
+ Clear();
+
+ Add(new cOsdItem(tr("Browse tracks"), osUser1));
+ Add(new cOsdItem(active ? tr("Stop receiving") : tr("Start receiving"),
+ osUser2));
+ Add(new cOsdItem(tr("Start rebuilding cache"), osUser3));
+
+ Display();
+}
+
+
+eOSState cMainmenu::ProcessKey(eKeys key)
+{
+ eOSState state = cOsdMenu::ProcessKey(key);
+
+ if (HasSubMenu())
+ return osContinue;
+
+ switch (state) {
+ case osBack:
+ state = osEnd;
+ break;
+ case osUser1:
+ if (Cache.is_rebuilding()) {
+ Skins.Message(mtStatus, tr("Rebuilding cache, try later"));
+ break;
+ }
+
+ AddSubMenu(new cBrowse());
+
+ break;
+ case osUser2:
+ if (active) {
+ Add(new cOsdItem(tr("Start receiving"), osUser2), false,
+ Get(Current()));
+ dispatcher->stop();
+ active = false;
+ }
+ else {
+ // Message if there are no channels to record
+ if (dispatcher->get_no_of_channels() < 1) {
+ char* tmp = NULL;
+ asprintf(&tmp, tr("no channel in %s"),
+ cPluginAudiorecorder::get_cfg().c_str());
+ Skins.Message(mtStatus, tmp);
+ free(tmp);
+ return state;
+ }
+ Add(new cOsdItem(tr("Stop receiving"), osUser2), false,
+ Get(Current()));
+ dispatcher->start();
+ active = true;
+ }
+ Del(Current());
+ Display();
+
+ break;
+ case osUser3:
+ Cache.rebuild();
+ Skins.Message(mtStatus, tr("Rebuilding cache"));
+
+ break;
+ default:
+ break;
+ }
+
+ return state;
+}