diff options
-rw-r--r-- | src/menuconfiguration.cpp | 8 | ||||
-rw-r--r-- | src/menuconfiguration.h | 2 | ||||
-rw-r--r-- | src/pluginmenunode.cpp | 13 | ||||
-rw-r--r-- | src/pluginmenunode.h | 5 |
4 files changed, 21 insertions, 7 deletions
diff --git a/src/menuconfiguration.cpp b/src/menuconfiguration.cpp index 4845f44..c8b0f0e 100644 --- a/src/menuconfiguration.cpp +++ b/src/menuconfiguration.cpp @@ -115,8 +115,8 @@ void MenuConfiguration::ParseElement(const Element* element, MenuNode* menuNode) else if (type == "plugin") { const xmlpp::Attribute* titleAttribute = childElement->get_attribute("title"); - name = titleAttribute ? (string) UnicodeToLocaleOrIso8859(titleAttribute->get_value()) : name; - AddPluginMenuNode(name, menuNode); + string title = titleAttribute ? (string) UnicodeToLocaleOrIso8859(titleAttribute->get_value()) : name; + AddPluginMenuNode(name, menuNode, title); } else if (type == "command") { @@ -139,7 +139,7 @@ void MenuConfiguration::AddSystemMenuNode(string name, MenuNode* menu) menu->AddChild(new SystemMenuNode(name, MenuTextToVdrState(name))); } -void MenuConfiguration::AddPluginMenuNode(string pluginName, MenuNode* menu) +void MenuConfiguration::AddPluginMenuNode(string pluginName, MenuNode* menu, string title) { int pluginIndex; cPlugin* plugin; @@ -147,7 +147,7 @@ void MenuConfiguration::AddPluginMenuNode(string pluginName, MenuNode* menu) if (FindPluginByName(pluginName, plugin, pluginIndex)) { _configuredPlugins.push_back(pluginName); - menu->AddChild(new PluginMenuNode(plugin, pluginIndex)); + menu->AddChild(new PluginMenuNode(plugin, pluginIndex, title)); } } diff --git a/src/menuconfiguration.h b/src/menuconfiguration.h index 5979150..f11d2f4 100644 --- a/src/menuconfiguration.h +++ b/src/menuconfiguration.h @@ -47,7 +47,7 @@ class MenuConfiguration bool FindPluginByName(std::string name, cPlugin*& plugin, int& pluginIndex); MenuNode* AddSubMenuNode(std::string name, MenuNode* menu); void AddSystemMenuNode(std::string name, MenuNode* menu); - void AddPluginMenuNode(std::string pluginName, MenuNode* menu); + void AddPluginMenuNode(std::string pluginName, MenuNode* menu, std::string title); void AddUnconfiguredPlugins(MenuNode* menu); void AddCommandMenuNode(std::string name, std::string command, bool confirm, MenuNode* menu); std::string UnicodeToLocaleOrIso8859(Glib::ustring unicodeString); diff --git a/src/pluginmenunode.cpp b/src/pluginmenunode.cpp index 3296c0c..996cffc 100644 --- a/src/pluginmenunode.cpp +++ b/src/pluginmenunode.cpp @@ -20,21 +20,32 @@ * */ +#include <string> #include "pluginmenunode.h" #include <vdr/mainmenuitemsprovider.h> #include <vdr/plugin.h> #include "pluginitemdefinition.h" #include "childlock.h" +using namespace std; + PluginMenuNode::PluginMenuNode(cPlugin* plugin, int pluginIndex) { _plugin = plugin; _pluginIndex = pluginIndex; } +PluginMenuNode::PluginMenuNode(cPlugin* plugin, int pluginIndex, string title) +{ + _plugin = plugin; + _pluginIndex = pluginIndex; + _title = title; +} + IMenuItemDefinition* PluginMenuNode::CreateMenuItemDefinition() { - return new PluginItemDefinition(_plugin->MainMenuEntry(), _pluginIndex); + const char* title = _title.empty() ? _plugin->MainMenuEntry() : _title.c_str(); + return new PluginItemDefinition(title, _pluginIndex); } bool PluginMenuNode::IsHidden() diff --git a/src/pluginmenunode.h b/src/pluginmenunode.h index 4281701..5698fb1 100644 --- a/src/pluginmenunode.h +++ b/src/pluginmenunode.h @@ -23,6 +23,7 @@ #ifndef ___PLUGINMENUNODE_H #define ___PLUGINMENUNODE_H +#include <string> #include "menunode.h" class cPlugin; @@ -32,12 +33,14 @@ class PluginMenuNode: public MenuNode private: cPlugin* _plugin; int _pluginIndex; + std::string _title; public: PluginMenuNode(cPlugin* plugin, int pluginIndex); + PluginMenuNode(cPlugin* plugin, int pluginIndex, std::string title); IMenuItemDefinition* CreateMenuItemDefinition(); bool IsHidden(); - + private: bool HasMainMenuEntry(); }; |