From e41621d535a6948b191396f9063f6bd17bb9e381 Mon Sep 17 00:00:00 2001 From: svntobi Date: Sun, 2 Sep 2007 00:39:06 +0000 Subject: Added Double Dispatch / Visitor Pattern to MenuNode in preparation of menu structure setup. git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/menuorg/trunk@6120 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f --- src/mainmenuitemsprovider.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/mainmenuitemsprovider.cpp') diff --git a/src/mainmenuitemsprovider.cpp b/src/mainmenuitemsprovider.cpp index 05fb021..9480fe6 100644 --- a/src/mainmenuitemsprovider.cpp +++ b/src/mainmenuitemsprovider.cpp @@ -24,9 +24,12 @@ #include "submenunode.h" #include "systemmenunode.h" #include "pluginmenunode.h" +#include "commandmenunode.h" #include #include "childlock.h" #include "menuconfiguration.h" +#include "osditemdefinition.h" +#include "pluginitemdefinition.h" MainMenuItemsProvider::MainMenuItemsProvider(MenuConfiguration& menuConfiguration) :_menuConfiguration(menuConfiguration) @@ -49,7 +52,8 @@ MenuItemDefinitions* MainMenuItemsProvider::MainMenuItems() { if (!(*i)->IsHidden()) { - _currentMainMenuItems.push_back((*i)->CreateMenuItemDefinition()); + (*i)->Process(this); + _currentMainMenuItems.push_back(_createdMenuItemDefinition); } } @@ -116,3 +120,24 @@ int MainMenuItemsProvider::IndexOfCustomOsdItem(cOsdItem* item) } return -1; } + +void MainMenuItemsProvider::ProcessCommandMenuNode(CommandMenuNode* node) +{ + _createdMenuItemDefinition = new OsdItemDefinition(new cOsdItem(node->Text().c_str(), osUser2)); +} + +void MainMenuItemsProvider::ProcessPluginMenuNode(PluginMenuNode* node) +{ + _createdMenuItemDefinition = new PluginItemDefinition(node->Title().c_str(), node->PluginIndex()); +} + +void MainMenuItemsProvider::ProcessSubMenuNode(SubMenuNode* node) +{ + _createdMenuItemDefinition = new OsdItemDefinition(new cOsdItem(node->Text().c_str(), osUser1)); +} + +void MainMenuItemsProvider::ProcessSystemMenuNode(SystemMenuNode* node) +{ + _createdMenuItemDefinition = new OsdItemDefinition(new cOsdItem(tr(node->Text().c_str()), node->State())); + +} -- cgit v1.2.3