summaryrefslogtreecommitdiff
path: root/src/FlatMenuSetup.cpp
diff options
context:
space:
mode:
authorsvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-09-09 23:51:48 +0000
committersvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-09-09 23:51:48 +0000
commit54a81935b17db6a192e51ccbb0c0521dc58ee282 (patch)
tree69e547754082a8e96da7370c6f4380da3d2da1d1 /src/FlatMenuSetup.cpp
parent3ec475ea9846e02414684de3b5943d7c3e7dd2ea (diff)
downloadvdr-plugin-menuorg-54a81935b17db6a192e51ccbb0c0521dc58ee282.tar.gz
vdr-plugin-menuorg-54a81935b17db6a192e51ccbb0c0521dc58ee282.tar.bz2
Changed a lot !!!
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/menuorg/trunk@6139 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
Diffstat (limited to 'src/FlatMenuSetup.cpp')
-rw-r--r--src/FlatMenuSetup.cpp149
1 files changed, 149 insertions, 0 deletions
diff --git a/src/FlatMenuSetup.cpp b/src/FlatMenuSetup.cpp
new file mode 100644
index 0000000..fdeda81
--- /dev/null
+++ b/src/FlatMenuSetup.cpp
@@ -0,0 +1,149 @@
+/*
+ * vdr-menuorg - A plugin for the Linux Video Disk Recorder
+ * Copyright (C) 2007 Thomas Creutz, Tobias Grimm
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id$
+ *
+ */
+
+#include "FlatMenuSetup.h"
+#include "MenuConfigurationRepository.h"
+#include "MenuItemSetup.h"
+#include "OsdXmlItem.h"
+#include <vdr/menu.h>
+#include <vdr/interface.h>
+#include <libxml++/libxml++.h>
+#include <iostream>
+
+using namespace xmlpp;
+using namespace std;
+
+cMenuOrgSetup::cMenuOrgSetup(MenuConfigurationRepository& menuConfiguration, bool flatMenuSetup)
+:cOsdMenu(tr("Menu Setup")),_menuConfiguration(menuConfiguration)
+{
+ _flatMenuSetup = flatMenuSetup;
+ // todo
+ //CreateMenuItems(_menuConfiguration.Configuration(), 0);
+}
+
+void cMenuOrgSetup::CreateMenuItems(const Element* menuRoot, int iCount)
+{
+ int cur=Current();
+
+ if(iCount == 0)
+ Clear();
+
+ Node::NodeList children = menuRoot->get_children();
+ for (Node::NodeList::iterator i = children.begin(); i != children.end(); i++)
+ {
+ const Element* childElement = dynamic_cast<const Element*>(*i);
+
+ if (childElement)
+ {
+ const Attribute* nameAttribute = childElement->get_attribute("name");
+
+ string type = childElement->get_name();
+ string name = nameAttribute->get_value();
+
+ for (int i=0; i <= iCount ;i++)
+ name = " " + name;
+
+ if ( type == "menu" && _flatMenuSetup)
+ {
+ name = "+" + name;
+ Add(new cOsdXmlItem(name.c_str(), childElement, osUnknown));
+ CreateMenuItems(childElement, iCount+1);
+ }
+ else
+ {
+ if(iCount > 0)
+ name = " " + name;
+
+ Add(new cOsdXmlItem(name.c_str(), childElement, osUnknown));
+ }
+ }
+ }
+ if(iCount == 0)
+ {
+ SetCurrent(Get(cur));
+ Display();
+ DrawButton();
+ }
+}
+
+eOSState cMenuOrgSetup::ProcessKey(eKeys Key)
+{
+ eOSState state = cOsdMenu::ProcessKey(Key);
+
+ if(HasSubMenu())
+ {
+ return state;
+ }
+ if(state == osUnknown)
+ {
+ switch(Key)
+ {
+ case kRed:
+ DrawButton();
+ break;
+
+ case kGreen:
+ {
+ cOsdXmlItem *item = (cOsdXmlItem*) Get(Current());
+ state = AddSubMenu(new cMenuItemSetup(item));
+ }
+ break;
+
+ case kYellow:
+ DrawButton();
+ break;
+
+ case kBlue:
+ DrawButton();
+ break;
+
+ case kUp:
+ case kDown:
+ case kLeft:
+ DrawButton();
+ break;
+
+ case kOk:
+ if (Interface->Confirm(tr("Apply Changes?")))
+ {
+ // Save it!
+ }
+ return osEnd;
+ break;
+
+ case kBack :
+ return osBack;
+ break;
+
+ default:
+ DrawButton();
+ break;
+ }
+ }
+ return state;
+}
+
+void cMenuOrgSetup::DrawButton(void)
+{
+ SetHelp(tr("Create"),tr("Edit"),tr("Delete"),tr("Move"));
+ Display();
+}