diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-08-25 18:22:48 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-08-25 18:22:48 +0000 |
commit | 5335274e49dee2a125dcfec4548ba52c8292a05a (patch) | |
tree | 5ba77942398f0c74846d0feb06492b168c9499a3 | |
parent | b410af45eaf4fa5c053967963dc346f6b165e8d0 (diff) | |
download | vdr-plugin-menuorg-5335274e49dee2a125dcfec4548ba52c8292a05a.tar.gz vdr-plugin-menuorg-5335274e49dee2a125dcfec4548ba52c8292a05a.tar.bz2 |
Don't call teh Plugin's main menu entry, before the main menu is requested.
Some Plugins may do Things in cPlugin::MainMenuEntry() that may require
cPlugin::Initialize() and cPlugin::Start() to be called first. (e.g. vdr-burn)
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/menuorg/trunk@5982 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
-rw-r--r-- | src/menuconfiguration.cpp | 12 | ||||
-rw-r--r-- | src/menuconfiguration.h | 1 | ||||
-rw-r--r-- | src/pluginmenunode.cpp | 7 | ||||
-rw-r--r-- | src/pluginmenunode.h | 3 |
4 files changed, 11 insertions, 12 deletions
diff --git a/src/menuconfiguration.cpp b/src/menuconfiguration.cpp index 9a24e85..f096ba2 100644 --- a/src/menuconfiguration.cpp +++ b/src/menuconfiguration.cpp @@ -138,7 +138,7 @@ void MenuConfiguration::AddPluginMenuNode(string pluginName, MenuNode* menu) if (FindPluginByName(pluginName, plugin, pluginIndex)) { _configuredPlugins.push_back(pluginName); - AddPluginMenuNode(plugin, pluginIndex, menu); + menu->AddChild(new PluginMenuNode(plugin, pluginIndex)); } } @@ -198,7 +198,7 @@ void MenuConfiguration::AddUnconfiguredPlugins(MenuNode* menu) { if (find(_configuredPlugins.begin(), _configuredPlugins.end(), plugin->Name()) == _configuredPlugins.end()) { - AddPluginMenuNode(plugin, i, menu); + menu->AddChild(new PluginMenuNode(plugin, i)); } i++; } @@ -208,11 +208,3 @@ void MenuConfiguration::AddCommandMenuNode(string name, string command, bool con { menu->AddChild(new CommandMenuNode(name, command, confirm)); } - -void MenuConfiguration::AddPluginMenuNode(cPlugin* plugin, int pluginIndex, MenuNode* menu) -{ - if (plugin->MainMenuEntry()) - { - menu->AddChild(new PluginMenuNode(plugin, pluginIndex)); - } -} diff --git a/src/menuconfiguration.h b/src/menuconfiguration.h index f5c7cf5..292567e 100644 --- a/src/menuconfiguration.h +++ b/src/menuconfiguration.h @@ -48,7 +48,6 @@ class MenuConfiguration MenuNode* AddSubMenuNode(std::string name, MenuNode* menu); void AddSystemMenuNode(std::string name, MenuNode* menu); void AddPluginMenuNode(std::string pluginName, MenuNode* menu); - void AddPluginMenuNode(cPlugin* plugin, int pluginIndex, MenuNode* menu); void AddUnconfiguredPlugins(MenuNode* menu); void AddCommandMenuNode(std::string name, std::string command, bool confirm, MenuNode* menu); }; diff --git a/src/pluginmenunode.cpp b/src/pluginmenunode.cpp index 1f2eec9..3296c0c 100644 --- a/src/pluginmenunode.cpp +++ b/src/pluginmenunode.cpp @@ -39,5 +39,10 @@ IMenuItemDefinition* PluginMenuNode::CreateMenuItemDefinition() bool PluginMenuNode::IsHidden() { - return ChildLock::IsPluginHidden(_plugin); + return (!HasMainMenuEntry()) || ChildLock::IsPluginHidden(_plugin); +} + +bool PluginMenuNode::HasMainMenuEntry() +{ + return (_plugin->MainMenuEntry() != NULL); } diff --git a/src/pluginmenunode.h b/src/pluginmenunode.h index 4954752..4281701 100644 --- a/src/pluginmenunode.h +++ b/src/pluginmenunode.h @@ -37,6 +37,9 @@ class PluginMenuNode: public MenuNode PluginMenuNode(cPlugin* plugin, int pluginIndex); IMenuItemDefinition* CreateMenuItemDefinition(); bool IsHidden(); + + private: + bool HasMainMenuEntry(); }; #endif |