From 02c6596cb35774e222840724a8843da593530b60 Mon Sep 17 00:00:00 2001 From: svntobi Date: Sun, 19 Aug 2007 22:04:15 +0000 Subject: 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 --- src/menuconfiguration.cpp | 20 ++++++++++++++++++++ src/menuconfiguration.h | 3 +++ 2 files changed, 23 insertions(+) (limited to 'src') 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++; + } +} diff --git a/src/menuconfiguration.h b/src/menuconfiguration.h index ca24e1e..5518e4e 100644 --- a/src/menuconfiguration.h +++ b/src/menuconfiguration.h @@ -24,6 +24,7 @@ #define ___MENUCONFIGURATION_H #include +#include #include namespace xmlpp { class Element; } @@ -33,6 +34,7 @@ class MenuConfiguration { private: static const std::string _dtd; + std::vector _configuredPlugins; public: MenuNode* LoadMenu(std::string menuFileName); @@ -44,6 +46,7 @@ class MenuConfiguration MenuNode* AddSubMenuNode(std::string name, MenuNode* menu); void AddSystemMenuNode(std::string name, MenuNode* menu); void AddPluginMenuNode(std::string pluginName, MenuNode* menu); + void AddUnconfiguredPlugins(MenuNode* menu); }; #endif -- cgit v1.2.3