diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-08-22 20:50:26 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-08-22 20:50:26 +0000 |
commit | de091d32e123f04f2b1fa2bea9ae9b45496340a0 (patch) | |
tree | 5af22cdd1e5994d0cff72b3b2cb4b6c9432731bf /src/menuconfiguration.cpp | |
parent | 54e648eede3fdc586048091dc573551cab08f09f (diff) | |
download | vdr-plugin-menuorg-de091d32e123f04f2b1fa2bea9ae9b45496340a0.tar.gz vdr-plugin-menuorg-de091d32e123f04f2b1fa2bea9ae9b45496340a0.tar.bz2 |
added childlock service - untested yet
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5845 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
Diffstat (limited to 'src/menuconfiguration.cpp')
-rw-r--r-- | src/menuconfiguration.cpp | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/src/menuconfiguration.cpp b/src/menuconfiguration.cpp index 8badb41..5a84966 100644 --- a/src/menuconfiguration.cpp +++ b/src/menuconfiguration.cpp @@ -29,6 +29,7 @@ #include "submenunode.h" #include "pluginmenunode.h" #include "commandmenunode.h" +#include "childlock.h" using namespace xmlpp; using namespace std; @@ -114,7 +115,7 @@ void MenuConfiguration::ParseElement(const Element* element, MenuNode* menuNode) string execute = childElement->get_attribute("execute")->get_value(); const xmlpp::Attribute* confirmAttribute = childElement->get_attribute("confirm"); bool confirm = confirmAttribute ? (confirmAttribute->get_value() == "yes") : false; - AddPluginMenuNode(name, execute, confirm, menuNode); + AddCommandMenuNode(name, execute, confirm, menuNode); } } } @@ -127,18 +128,21 @@ MenuNode* MenuConfiguration::AddSubMenuNode(string name, MenuNode* menu) void MenuConfiguration::AddSystemMenuNode(string name, MenuNode* menu) { - menu->AddChild(new SystemMenuNode(name, MenuTextToVdrState(name))); + if (!ChildLock::IsMenuHidden(name.c_str())) + { + menu->AddChild(new SystemMenuNode(name, MenuTextToVdrState(name))); + } } void MenuConfiguration::AddPluginMenuNode(string pluginName, MenuNode* menu) { - const char* pluginMainMenuEntry; int pluginIndex; + cPlugin* plugin; - if (FindPluginByName(pluginName, &pluginMainMenuEntry, pluginIndex)) + if (FindPluginByName(pluginName, plugin, pluginIndex)) { _configuredPlugins.push_back(pluginName); - menu->AddChild(new PluginMenuNode(pluginMainMenuEntry, pluginIndex)); + AddPluginMenuNode(plugin, pluginIndex, menu); } } @@ -172,20 +176,17 @@ eOSState MenuConfiguration::MenuTextToVdrState(string menuText) return osContinue; } -bool MenuConfiguration::FindPluginByName(string name, const char** mainMenuEntry, int& pluginIndex) +bool MenuConfiguration::FindPluginByName(string name, cPlugin*& plugin, int& pluginIndex) { int i = 0; - while (cPlugin *plugin = cPluginManager::GetPlugin(i)) + while (cPlugin *currentPlugin = cPluginManager::GetPlugin(i)) { - if (name == plugin->Name()) + if (name == currentPlugin->Name()) { - if (const char *item = plugin->MainMenuEntry()) - { - pluginIndex = i; - *mainMenuEntry = item; - return true; - } + plugin = currentPlugin; + pluginIndex = i; + return true; } i++; } @@ -199,18 +200,26 @@ void MenuConfiguration::AddUnconfiguredPlugins(MenuNode* menu) while (cPlugin *plugin = cPluginManager::GetPlugin(i)) { - if (const char *item = plugin->MainMenuEntry()) + if (find(_configuredPlugins.begin(), _configuredPlugins.end(), plugin->Name()) == _configuredPlugins.end()) { - if (find(_configuredPlugins.begin(), _configuredPlugins.end(), plugin->Name()) == _configuredPlugins.end()) - { - menu->AddChild(new PluginMenuNode(item, i)); - } + AddPluginMenuNode(plugin, i, menu); } i++; } } -void MenuConfiguration::AddPluginMenuNode(string name, string command, bool confirm, MenuNode* menu) +void MenuConfiguration::AddCommandMenuNode(string name, string command, bool confirm, MenuNode* menu) { menu->AddChild(new CommandMenuNode(name, command, confirm)); } + +void MenuConfiguration::AddPluginMenuNode(cPlugin* plugin, int pluginIndex, MenuNode* menu) +{ + if (const char *item = plugin->MainMenuEntry()) + { + if (!ChildLock::IsPluginHidden(plugin)) + { + menu->AddChild(new PluginMenuNode(item, pluginIndex)); + } + } +} |