diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2008-03-24 22:32:17 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2008-03-24 22:32:17 +0000 |
commit | 5bb5cd34521baeff7a467c206f6ef917157a9d73 (patch) | |
tree | 8f58c6bc0b32a34b2dbe9b5fd71f473c1d58bab1 | |
parent | 86250d36deb6ffde462617f8c47daf5e46b32443 (diff) | |
download | vdr-plugin-menuorg-5bb5cd34521baeff7a467c206f6ef917157a9d73.tar.gz vdr-plugin-menuorg-5bb5cd34521baeff7a467c206f6ef917157a9d73.tar.bz2 |
Fixed small bug caused by hidden menu entries
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/menuorg/trunk@7083 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | po/menuorg.pot | 2 | ||||
-rw-r--r-- | sources.mk | 1 | ||||
-rw-r--r-- | src/MainMenuItemsProvider.cpp | 12 | ||||
-rw-r--r-- | src/MainMenuItemsProvider.h | 2 | ||||
-rw-r--r-- | src/MenuItemDefinition.cpp | 12 | ||||
-rw-r--r-- | src/MenuItemDefinition.h | 20 | ||||
-rw-r--r-- | src/MenuItemDefinitionFactory.cpp | 12 | ||||
-rw-r--r-- | src/MenuItemDefinitionFactory.h | 6 | ||||
-rw-r--r-- | src/OsdItemDefinition.cpp | 3 | ||||
-rw-r--r-- | src/OsdItemDefinition.h | 6 | ||||
-rw-r--r-- | src/PluginItemDefinition.cpp | 3 | ||||
-rw-r--r-- | src/PluginItemDefinition.h | 6 | ||||
-rw-r--r-- | src/Version.h | 2 |
14 files changed, 68 insertions, 23 deletions
@@ -37,3 +37,7 @@ VDR Plugin 'menuorg' Revision History - The custom menu can now be enabled/disabled in the plug-in's setup - If the timestamp of the menuorg.xml changes, it will be reloaded when opening the root menu + +2008-03-24: Version 0.4.1 + +- Fixed small bug caused by hidden menu entries diff --git a/po/menuorg.pot b/po/menuorg.pot index 58999d9..4f64213 100644 --- a/po/menuorg.pot +++ b/po/menuorg.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: <vdr@e-tobi.net>\n" -"POT-Creation-Date: 2008-03-23 13:04+0100\n" +"POT-Creation-Date: 2008-03-24 23:11+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -3,6 +3,7 @@ SRCS = \ src/CommandMenuNode.cpp \ src/MainMenuItemsProvider.cpp \ src/MenuConfigurationRepository.cpp \ + src/MenuItemDefinition.cpp \ src/MenuNode.cpp \ src/MenuOrgPlugin.cpp \ src/OsdItemDefinition.cpp \ diff --git a/src/MainMenuItemsProvider.cpp b/src/MainMenuItemsProvider.cpp index abe922d..28e07cb 100644 --- a/src/MainMenuItemsProvider.cpp +++ b/src/MainMenuItemsProvider.cpp @@ -26,6 +26,7 @@ #include "MenuConfigurationRepository.h" #include "MenuItemDefinitionFactory.h" #include "PluginConfiguration.h" +#include "MenuItemDefinition.h" MainMenuItemsProvider::MainMenuItemsProvider(MenuConfigurationRepository& menuConfigurationRepository, PluginConfiguration& pluginConfiguration) :_menuConfigurationRepository(menuConfigurationRepository), _pluginConfiguration(pluginConfiguration) @@ -54,7 +55,9 @@ MenuItemDefinitions* MainMenuItemsProvider::MainMenuItems() if (!(*i)->IsHidden()) { bool isSelected = ((*i) == _previousMenu); - _currentMainMenuItems.push_back(MenuItemDefinitionFactory::CreateFromMenuNode(*i, isSelected)); + MenuItemDefinition* menuItemDefinition = MenuItemDefinitionFactory::CreateFromMenuNode(*i, isSelected); + _currentMainMenuItems.push_back(menuItemDefinition); + _currentMenuItemDefinitions.push_back(menuItemDefinition); } } @@ -69,6 +72,7 @@ void MainMenuItemsProvider::ResetMainMenuItemsList() delete *i; } _currentMainMenuItems.clear(); + _currentMenuItemDefinitions.clear(); } void MainMenuItemsProvider::EnterRootMenu() @@ -110,12 +114,12 @@ cOsdMenu* MainMenuItemsProvider::Execute(cOsdItem* item) MenuNode* MainMenuItemsProvider::MenuNodeMatchingOsdItem(cOsdItem* item) { - for(unsigned int itemIndex=0; itemIndex < _currentMainMenuItems.size(); itemIndex++) + for(unsigned int itemIndex=0; itemIndex < _currentMenuItemDefinitions.size(); itemIndex++) { - IMenuItemDefinition* menuItem = _currentMainMenuItems.at(itemIndex); + MenuItemDefinition* menuItem = _currentMenuItemDefinitions.at(itemIndex); if (menuItem->IsCustomOsdItem() && (menuItem->CustomOsdItem() == item)) { - return _currentMenu->Childs()->at(itemIndex); + return menuItem->AssignedMenuNode(); } } return NULL; diff --git a/src/MainMenuItemsProvider.h b/src/MainMenuItemsProvider.h index e015c90..8423427 100644 --- a/src/MainMenuItemsProvider.h +++ b/src/MainMenuItemsProvider.h @@ -30,6 +30,7 @@ class MenuNode; class MenuConfigurationRepository; class PluginConfiguration; +class MenuItemDefinition; class MainMenuItemsProvider: public IMainMenuItemsProvider, public IMenuNodeProcessor { @@ -37,6 +38,7 @@ class MainMenuItemsProvider: public IMainMenuItemsProvider, public IMenuNodeProc SubMenuNode* _currentMenu; SubMenuNode* _previousMenu; MenuItemDefinitions _currentMainMenuItems; + std::vector<MenuItemDefinition*> _currentMenuItemDefinitions; MenuConfigurationRepository& _menuConfigurationRepository; PluginConfiguration& _pluginConfiguration; diff --git a/src/MenuItemDefinition.cpp b/src/MenuItemDefinition.cpp new file mode 100644 index 0000000..9ed5391 --- /dev/null +++ b/src/MenuItemDefinition.cpp @@ -0,0 +1,12 @@ +#include "MenuItemDefinition.h" +#include "MenuNode.h" + +MenuItemDefinition::MenuItemDefinition(MenuNode* menuNode) + :_menuNode(menuNode) +{ +} + +MenuNode* MenuItemDefinition::AssignedMenuNode() +{ + return _menuNode; +} diff --git a/src/MenuItemDefinition.h b/src/MenuItemDefinition.h new file mode 100644 index 0000000..962e459 --- /dev/null +++ b/src/MenuItemDefinition.h @@ -0,0 +1,20 @@ +#ifndef MENUITEMDEFINITION_H_ +#define MENUITEMDEFINITION_H_ + +#include <vdr/mainmenuitemsprovider.h> + +class MenuNode; + +class MenuItemDefinition: public IMenuItemDefinition +{ + private: + MenuNode* _menuNode; + bool _isSelected; + + public: + MenuItemDefinition(MenuNode* menuNode); + MenuNode* AssignedMenuNode(); +}; + + +#endif diff --git a/src/MenuItemDefinitionFactory.cpp b/src/MenuItemDefinitionFactory.cpp index d6c0744..85a61bf 100644 --- a/src/MenuItemDefinitionFactory.cpp +++ b/src/MenuItemDefinitionFactory.cpp @@ -34,7 +34,7 @@ using namespace std; -IMenuItemDefinition* MenuItemDefinitionFactory::CreateFromMenuNode(MenuNode* menuNode, bool isSelected) +MenuItemDefinition* MenuItemDefinitionFactory::CreateFromMenuNode(MenuNode* menuNode, bool isSelected) { MenuItemDefinitionFactory* factory = new MenuItemDefinitionFactory(isSelected); menuNode->Process(factory); @@ -48,25 +48,25 @@ MenuItemDefinitionFactory::MenuItemDefinitionFactory(bool isSelected) void MenuItemDefinitionFactory::ProcessSystemMenuNode(SystemMenuNode* node) { - _createdMenuItemDefinition = new OsdItemDefinition(new cOsdItem(node->DisplayText().c_str(), node->State().OSState()), false); + _createdMenuItemDefinition = new OsdItemDefinition(node, new cOsdItem(node->DisplayText().c_str(), node->State().OSState()), false); } void MenuItemDefinitionFactory::ProcessPluginMenuNode(PluginMenuNode* node) { - _createdMenuItemDefinition = new PluginItemDefinition(node->DisplayText(), node->PluginIndex()); + _createdMenuItemDefinition = new PluginItemDefinition(node, node->DisplayText(), node->PluginIndex()); } void MenuItemDefinitionFactory::ProcessSubMenuNode(SubMenuNode* node) { - _createdMenuItemDefinition = new OsdItemDefinition(new cOsdItem(node->Text().c_str(), osUser1), _isSelected); + _createdMenuItemDefinition = new OsdItemDefinition(node, new cOsdItem(node->Text().c_str(), osUser1), _isSelected); } void MenuItemDefinitionFactory::ProcessCommandMenuNode(CommandMenuNode* node) { - _createdMenuItemDefinition = new OsdItemDefinition(new cOsdItem(node->Text().c_str(), osUser2), _isSelected); + _createdMenuItemDefinition = new OsdItemDefinition(node, new cOsdItem(node->Text().c_str(), osUser2), _isSelected); } void MenuItemDefinitionFactory::ProcessSeparatorMenuNode(SeparatorMenuNode* node) { - _createdMenuItemDefinition = new OsdItemDefinition(new cOsdSeparatorItem(node->DisplayText().c_str()), false); + _createdMenuItemDefinition = new OsdItemDefinition(node, new cOsdSeparatorItem(node->DisplayText().c_str()), false); } diff --git a/src/MenuItemDefinitionFactory.h b/src/MenuItemDefinitionFactory.h index 9509345..9bb35bc 100644 --- a/src/MenuItemDefinitionFactory.h +++ b/src/MenuItemDefinitionFactory.h @@ -24,7 +24,6 @@ #ifndef MENUITEMDEFINITIONFACTORY_H_ #define MENUITEMDEFINITIONFACTORY_H_ -#include <vdr/mainmenuitemsprovider.h> #include "IMenuNodeProcessor.h" class MenuNode; @@ -33,15 +32,16 @@ class PluginMenuNode; class SubMenuNode; class CommandMenuNode; class SeparatorMenuNode; +class MenuItemDefinition; class MenuItemDefinitionFactory: IMenuNodeProcessor { private: - IMenuItemDefinition* _createdMenuItemDefinition; + MenuItemDefinition* _createdMenuItemDefinition; bool _isSelected; public: - static IMenuItemDefinition* CreateFromMenuNode(MenuNode* menuNode, bool isSelected); + static MenuItemDefinition* CreateFromMenuNode(MenuNode* menuNode, bool isSelected); // IMenuNodeProcessor void ProcessSystemMenuNode(SystemMenuNode* node); diff --git a/src/OsdItemDefinition.cpp b/src/OsdItemDefinition.cpp index 78a7757..e70e120 100644 --- a/src/OsdItemDefinition.cpp +++ b/src/OsdItemDefinition.cpp @@ -23,7 +23,8 @@ #include "OsdItemDefinition.h" -OsdItemDefinition::OsdItemDefinition(cOsdItem* osdItem, bool isSelected) +OsdItemDefinition::OsdItemDefinition(MenuNode* menuNode, cOsdItem* osdItem, bool isSelected) + :MenuItemDefinition(menuNode) { _osdItem = osdItem; _isSelected = isSelected; diff --git a/src/OsdItemDefinition.h b/src/OsdItemDefinition.h index 32b0733..3124de9 100644 --- a/src/OsdItemDefinition.h +++ b/src/OsdItemDefinition.h @@ -24,16 +24,16 @@ #ifndef ___OSDITEMDEFINITION_H #define ___OSDITEMDEFINITION_H -#include <vdr/mainmenuitemsprovider.h> +#include "MenuItemDefinition.h" -class OsdItemDefinition: public IMenuItemDefinition +class OsdItemDefinition: public MenuItemDefinition { private: cOsdItem* _osdItem; bool _isSelected; public: - OsdItemDefinition(cOsdItem* osdItem, bool isSelected); + OsdItemDefinition(MenuNode* menuNode, cOsdItem* osdItem, bool isSelected); virtual bool IsCustomOsdItem(); virtual bool IsPluginItem(); virtual cOsdItem* CustomOsdItem(); diff --git a/src/PluginItemDefinition.cpp b/src/PluginItemDefinition.cpp index 15e880c..0652fb1 100644 --- a/src/PluginItemDefinition.cpp +++ b/src/PluginItemDefinition.cpp @@ -25,7 +25,8 @@ using namespace std; -PluginItemDefinition::PluginItemDefinition(string mainMenuEntry, int pluginIndex) +PluginItemDefinition::PluginItemDefinition(MenuNode* menuNode, string mainMenuEntry, int pluginIndex) + :MenuItemDefinition(menuNode) { _mainMenuEntry = mainMenuEntry; _pluginIndex = pluginIndex; diff --git a/src/PluginItemDefinition.h b/src/PluginItemDefinition.h index b150280..9db237e 100644 --- a/src/PluginItemDefinition.h +++ b/src/PluginItemDefinition.h @@ -24,17 +24,17 @@ #ifndef ___PLUGINITEMDEFINITION_H #define ___PLUGINITEMDEFINITION_H -#include <vdr/mainmenuitemsprovider.h> #include <string> +#include "MenuItemDefinition.h" -class PluginItemDefinition: public IMenuItemDefinition +class PluginItemDefinition: public MenuItemDefinition { private: std::string _mainMenuEntry; int _pluginIndex; public: - PluginItemDefinition(std::string mainMenuEntry, int pluginIndex); + PluginItemDefinition(MenuNode* menuNode, std::string mainMenuEntry, int pluginIndex); virtual bool IsCustomOsdItem(); virtual bool IsPluginItem(); virtual cOsdItem* CustomOsdItem(); diff --git a/src/Version.h b/src/Version.h index 30896b9..bc93cf6 100644 --- a/src/Version.h +++ b/src/Version.h @@ -24,6 +24,6 @@ #ifndef ___VERSION_H #define ___VERSION_H -static const char VERSION[] = "0.4"; +static const char VERSION[] = "0.4.1"; #endif |