summaryrefslogtreecommitdiff
path: root/src/menuconfiguration.cpp
diff options
context:
space:
mode:
authorsvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-08-19 22:04:15 +0000
committersvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-08-19 22:04:15 +0000
commit02c6596cb35774e222840724a8843da593530b60 (patch)
tree05ddd2fda200e4ce60a7e5a54945e6c3b384a47a /src/menuconfiguration.cpp
parentb916f43b2d857d2f86aeae48016f9c55c8b4ca41 (diff)
downloadvdr-plugin-menuorg-02c6596cb35774e222840724a8843da593530b60.tar.gz
vdr-plugin-menuorg-02c6596cb35774e222840724a8843da593530b60.tar.bz2
add unconfigured plugins at the end of the root main menu
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5836 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
Diffstat (limited to 'src/menuconfiguration.cpp')
-rw-r--r--src/menuconfiguration.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/menuconfiguration.cpp b/src/menuconfiguration.cpp
index ec3de5e..78df2ac 100644
--- a/src/menuconfiguration.cpp
+++ b/src/menuconfiguration.cpp
@@ -60,6 +60,8 @@ MenuNode* MenuConfiguration::LoadMenu(string menuFileName)
const Element* rootElement = parser.get_document()->get_root_node();
ParseElement(rootElement, menuRoot);
+
+ AddUnconfiguredPlugins(menuRoot);
}
catch(const std::exception& ex)
{
@@ -123,6 +125,7 @@ void MenuConfiguration::AddPluginMenuNode(string pluginName, MenuNode* menu)
if (FindPluginByName(pluginName, &pluginMainMenuEntry, pluginIndex))
{
+ _configuredPlugins.push_back(pluginName);
menu->AddChild(new PluginMenuNode(pluginMainMenuEntry, pluginIndex));
}
}
@@ -177,3 +180,20 @@ bool MenuConfiguration::FindPluginByName(string name, const char** mainMenuEntry
return false;
}
+
+void MenuConfiguration::AddUnconfiguredPlugins(MenuNode* menu)
+{
+ int i = 0;
+
+ while (cPlugin *plugin = cPluginManager::GetPlugin(i))
+ {
+ if (const char *item = plugin->MainMenuEntry())
+ {
+ if (find(_configuredPlugins.begin(), _configuredPlugins.end(), plugin->Name()) == _configuredPlugins.end())
+ {
+ menu->AddChild(new PluginMenuNode(item, i));
+ }
+ }
+ i++;
+ }
+}