diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-08-26 14:37:01 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-08-26 14:37:01 +0000 |
commit | 926b492183dd2b598587e962f952dabf9401f56c (patch) | |
tree | dbed3f72a727558e896b7991a83fadc46a7df023 | |
parent | 7ee0187d94b02ed3ae0ddcf4999cf0487a2d9ad9 (diff) | |
download | vdr-plugin-menuorg-926b492183dd2b598587e962f952dabf9401f56c.tar.gz vdr-plugin-menuorg-926b492183dd2b598587e962f952dabf9401f56c.tar.bz2 |
passing menu configuration to menusetup
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/menuorg/trunk@6005 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
-rw-r--r-- | src/menuconfiguration.cpp | 25 | ||||
-rw-r--r-- | src/menuconfiguration.h | 5 | ||||
-rw-r--r-- | src/menuorg.cpp | 2 | ||||
-rw-r--r-- | src/menusetup.cpp | 28 | ||||
-rw-r--r-- | src/menusetup.h | 12 | ||||
-rw-r--r-- | src/pluginsetup.cpp | 8 | ||||
-rw-r--r-- | src/pluginsetup.h | 3 |
7 files changed, 62 insertions, 21 deletions
diff --git a/src/menuconfiguration.cpp b/src/menuconfiguration.cpp index 38cc58a..0b02cec 100644 --- a/src/menuconfiguration.cpp +++ b/src/menuconfiguration.cpp @@ -21,7 +21,6 @@ */ #include "menuconfiguration.h" -#include <libxml++/libxml++.h> #include <exception> #include <iostream> #include <vdr/plugin.h> @@ -60,17 +59,16 @@ MenuConfiguration::MenuConfiguration(string menuFileName) { dsyslog("loading menuorg config file from %s", menuFileName.c_str()); - DomParser parser; - parser.set_substitute_entities(); - parser.parse_file(menuFileName); + _parser.set_substitute_entities(); + _parser.parse_file(menuFileName); DtdValidator validator; validator.parse_memory(_dtd); - Document *pDoc = parser.get_document(); + Document *pDoc = _parser.get_document(); validator.validate( pDoc ); - _configuration = parser.get_document()->get_root_node(); + _configuration = _parser.get_document()->get_root_node(); } catch(const std::exception& ex) @@ -80,6 +78,11 @@ MenuConfiguration::MenuConfiguration(string menuFileName) } } +Element* MenuConfiguration::Configuration() +{ + return _configuration; +} + MenuNode* MenuConfiguration::MenuTree() { if (_configuration) @@ -100,11 +103,11 @@ void MenuConfiguration::CreateMenuTree(const Element* menuRoot, MenuNode* menuNo Node::NodeList children = menuRoot->get_children(); for (Node::NodeList::iterator i = children.begin(); i != children.end(); i++) { - const xmlpp::Element* childElement = dynamic_cast<const xmlpp::Element*>(*i); + const Element* childElement = dynamic_cast<const Element*>(*i); if (childElement) { - const xmlpp::Attribute* nameAttribute = childElement->get_attribute("name"); + const Attribute* nameAttribute = childElement->get_attribute("name"); string type = childElement->get_name(); string name = UnicodeToLocaleOrIso8859(nameAttribute->get_value()); @@ -116,20 +119,20 @@ void MenuConfiguration::CreateMenuTree(const Element* menuRoot, MenuNode* menuNo } else if (type == "system") { - const xmlpp::Attribute* titleAttribute = childElement->get_attribute("title"); + const Attribute* titleAttribute = childElement->get_attribute("title"); string title = titleAttribute ? (string) UnicodeToLocaleOrIso8859(titleAttribute->get_value()) : name; AddSystemMenuNode(name, title, menuNode); } else if (type == "plugin") { - const xmlpp::Attribute* titleAttribute = childElement->get_attribute("title"); + const Attribute* titleAttribute = childElement->get_attribute("title"); string title = titleAttribute ? (string) UnicodeToLocaleOrIso8859(titleAttribute->get_value()) : name; AddPluginMenuNode(name, title, menuNode); } else if (type == "command") { string execute = childElement->get_attribute("execute")->get_value(); - const xmlpp::Attribute* confirmAttribute = childElement->get_attribute("confirm"); + const Attribute* confirmAttribute = childElement->get_attribute("confirm"); bool confirm = confirmAttribute ? (confirmAttribute->get_value() == "yes") : false; AddCommandMenuNode(name, execute, confirm, menuNode); } diff --git a/src/menuconfiguration.h b/src/menuconfiguration.h index 34ca315..fee3016 100644 --- a/src/menuconfiguration.h +++ b/src/menuconfiguration.h @@ -26,6 +26,7 @@ #include <string> #include <vector> #include <vdr/osdbase.h> +#include <libxml++/libxml++.h> #include <glibmm/ustring.h> namespace xmlpp { class Element; } @@ -37,11 +38,13 @@ class MenuConfiguration private: static const std::string _dtd; std::vector<std::string> _configuredPlugins; - const xmlpp::Element* _configuration; + xmlpp::Element* _configuration; + xmlpp::DomParser _parser; public: MenuConfiguration(std::string menuFileName); MenuNode* MenuTree(); + xmlpp::Element* Configuration(); private: void CreateMenuTree(const xmlpp::Element* menuRoot, MenuNode* menuNode); diff --git a/src/menuorg.cpp b/src/menuorg.cpp index d87fda0..ed6d169 100644 --- a/src/menuorg.cpp +++ b/src/menuorg.cpp @@ -128,7 +128,7 @@ cOsdObject *MenuOrgPlugin::MainMenuAction(void) cMenuSetupPage *MenuOrgPlugin::SetupMenu(void) { // Return a setup menu in case the plugin supports one. - return new PluginSetup(_customMenuShouldBeActive, _unconfiguredPluginsShouldBeIncluded); + return new PluginSetup(_customMenuShouldBeActive, _unconfiguredPluginsShouldBeIncluded, *_menuConfiguration); } bool MenuOrgPlugin::SetupParse(const char *Name, const char *Value) diff --git a/src/menusetup.cpp b/src/menusetup.cpp index a9f9495..81f0103 100644 --- a/src/menusetup.cpp +++ b/src/menusetup.cpp @@ -20,14 +20,36 @@ * */ -#include <vdr/menu.h> #include "menusetup.h" +#include <vdr/menu.h> +#include <libxml++/libxml++.h> +#include "menuconfiguration.h" -cMenuSetup::cMenuSetup(void) -:cOsdMenu(tr("MENU"),25) +using namespace xmlpp; +using namespace std; + +cMenuSetup::cMenuSetup(MenuConfiguration& menuConfiguration) +:cOsdMenu(tr("MENU"),25),_menuConfiguration(menuConfiguration) { //TODO + + Element* root = _menuConfiguration.Configuration(); + + Node::NodeList children = root->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(); + + Add(new cOsdItem(name.c_str(), osUser1)); + } + } } eOSState cMenuSetup::ProcessKey(eKeys Key) diff --git a/src/menusetup.h b/src/menusetup.h index acfcaa6..1828b57 100644 --- a/src/menusetup.h +++ b/src/menusetup.h @@ -20,11 +20,21 @@ * */ +#ifndef ___MENUSETUP_H +#define ___MENUSETUP_H + #include <vdr/menu.h> +class MenuConfiguration; + class cMenuSetup : public cOsdMenu { + private: + MenuConfiguration& _menuConfiguration; + public: - cMenuSetup(void); + cMenuSetup(MenuConfiguration& menuConfiguration); virtual eOSState ProcessKey(eKeys Key); }; + +#endif diff --git a/src/pluginsetup.cpp b/src/pluginsetup.cpp index da0bc82..5d81a4b 100644 --- a/src/pluginsetup.cpp +++ b/src/pluginsetup.cpp @@ -28,11 +28,13 @@ const char* PluginSetup::SetupName::CustomMenuActive = "customMenuActive"; const char* PluginSetup::SetupName::UnconfiguredPluginsIncluded = "unconfiguredPluginsIncluded"; -PluginSetup::PluginSetup(bool& customMenuActive, bool& unconfiguredPluginsIncluded) - :_customMenuActive(customMenuActive), _unconfiguredPluginsIncluded(unconfiguredPluginsIncluded) +PluginSetup::PluginSetup(bool& customMenuActive, bool& unconfiguredPluginsIncluded, MenuConfiguration& menuConfiguration) + :_customMenuActive(customMenuActive), _unconfiguredPluginsIncluded(unconfiguredPluginsIncluded), + _menuConfiguration(menuConfiguration) { _newCustomMenuActive = _customMenuActive; _newUnconfiguredPluginsIncluded = _unconfiguredPluginsIncluded; + CreateMenuItems(); } void PluginSetup::Store(void) @@ -47,7 +49,7 @@ eOSState PluginSetup::ProcessKey(eKeys Key) switch(state) { case osUser1: - return AddSubMenu(new cMenuSetup); + return AddSubMenu(new cMenuSetup(_menuConfiguration)); break; case osContinue: diff --git a/src/pluginsetup.h b/src/pluginsetup.h index 827e1b4..b991222 100644 --- a/src/pluginsetup.h +++ b/src/pluginsetup.h @@ -32,6 +32,7 @@ class PluginSetup : public cMenuSetupPage int _newUnconfiguredPluginsIncluded; bool& _customMenuActive; bool& _unconfiguredPluginsIncluded; + MenuConfiguration& _menuConfiguration; public: struct SetupName @@ -41,7 +42,7 @@ class PluginSetup : public cMenuSetupPage }; public: - PluginSetup(bool& customMenuActive, bool& unconfiguredPluginsIncluded); + PluginSetup(bool& customMenuActive, bool& unconfiguredPluginsIncluded, MenuConfiguration& menuConfiguration); virtual eOSState ProcessKey(eKeys Key); protected: |