summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2008-03-24 22:32:17 +0000
committersvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2008-03-24 22:32:17 +0000
commit5bb5cd34521baeff7a467c206f6ef917157a9d73 (patch)
tree8f58c6bc0b32a34b2dbe9b5fd71f473c1d58bab1
parent86250d36deb6ffde462617f8c47daf5e46b32443 (diff)
downloadvdr-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--HISTORY4
-rw-r--r--po/menuorg.pot2
-rw-r--r--sources.mk1
-rw-r--r--src/MainMenuItemsProvider.cpp12
-rw-r--r--src/MainMenuItemsProvider.h2
-rw-r--r--src/MenuItemDefinition.cpp12
-rw-r--r--src/MenuItemDefinition.h20
-rw-r--r--src/MenuItemDefinitionFactory.cpp12
-rw-r--r--src/MenuItemDefinitionFactory.h6
-rw-r--r--src/OsdItemDefinition.cpp3
-rw-r--r--src/OsdItemDefinition.h6
-rw-r--r--src/PluginItemDefinition.cpp3
-rw-r--r--src/PluginItemDefinition.h6
-rw-r--r--src/Version.h2
14 files changed, 68 insertions, 23 deletions
diff --git a/HISTORY b/HISTORY
index 63e1915..b5fad02 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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"
diff --git a/sources.mk b/sources.mk
index d6b1f41..675ed8b 100644
--- a/sources.mk
+++ b/sources.mk
@@ -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