summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-08-26 14:37:01 +0000
committersvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-08-26 14:37:01 +0000
commit926b492183dd2b598587e962f952dabf9401f56c (patch)
treedbed3f72a727558e896b7991a83fadc46a7df023
parent7ee0187d94b02ed3ae0ddcf4999cf0487a2d9ad9 (diff)
downloadvdr-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.cpp25
-rw-r--r--src/menuconfiguration.h5
-rw-r--r--src/menuorg.cpp2
-rw-r--r--src/menusetup.cpp28
-rw-r--r--src/menusetup.h12
-rw-r--r--src/pluginsetup.cpp8
-rw-r--r--src/pluginsetup.h3
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: