diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-09-02 00:39:06 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-09-02 00:39:06 +0000 |
commit | e41621d535a6948b191396f9063f6bd17bb9e381 (patch) | |
tree | c0a918b22de1a874ebdf42fc1a5b82f806eb0a34 /src/mainmenuitemsprovider.cpp | |
parent | 024b9daf038ab85fe5d64b46d9d8dc0f172b4537 (diff) | |
download | vdr-plugin-menuorg-e41621d535a6948b191396f9063f6bd17bb9e381.tar.gz vdr-plugin-menuorg-e41621d535a6948b191396f9063f6bd17bb9e381.tar.bz2 |
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
Diffstat (limited to 'src/mainmenuitemsprovider.cpp')
-rw-r--r-- | src/mainmenuitemsprovider.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
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 <vdr/plugin.h> #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())); + +} |