From a1059732ffdca86f4dc01afe25788e8e428b9aec Mon Sep 17 00:00:00 2001 From: svntobi Date: Sun, 26 Aug 2007 13:31:42 +0000 Subject: reparse the menu each time the the root menu is requested git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/menuorg/trunk@6003 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f --- src/mainmenuitemsprovider.cpp | 9 +++++---- src/mainmenuitemsprovider.h | 4 +++- src/menuorg.cpp | 15 ++++----------- 3 files changed, 12 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/mainmenuitemsprovider.cpp b/src/mainmenuitemsprovider.cpp index 6e0bb00..e0b6a7f 100644 --- a/src/mainmenuitemsprovider.cpp +++ b/src/mainmenuitemsprovider.cpp @@ -26,16 +26,17 @@ #include "pluginmenunode.h" #include #include "childlock.h" +#include "menuconfiguration.h" -MainMenuItemsProvider::MainMenuItemsProvider(MenuNode* rootMenu) +MainMenuItemsProvider::MainMenuItemsProvider(MenuConfiguration& menuConfiguration) + :_menuConfiguration(menuConfiguration) { - _currentMenu = _rootMenu = rootMenu; + EnterRootMenu(); } MainMenuItemsProvider::~MainMenuItemsProvider() { ResetMainMenuItemsList(); - delete _rootMenu; } MenuItemDefinitions* MainMenuItemsProvider::MainMenuItems() @@ -67,7 +68,7 @@ void MainMenuItemsProvider::ResetMainMenuItemsList() void MainMenuItemsProvider::EnterRootMenu() { - _currentMenu = _rootMenu; + _currentMenu = _rootMenu = _menuConfiguration.MenuTree();; } void MainMenuItemsProvider::EnterSubMenu(cOsdItem* item) diff --git a/src/mainmenuitemsprovider.h b/src/mainmenuitemsprovider.h index e7ae029..46f4748 100644 --- a/src/mainmenuitemsprovider.h +++ b/src/mainmenuitemsprovider.h @@ -26,6 +26,7 @@ #include class MenuNode; +class MenuConfiguration; class MainMenuItemsProvider: public IMainMenuItemsProvider { @@ -33,9 +34,10 @@ class MainMenuItemsProvider: public IMainMenuItemsProvider MenuNode* _rootMenu; MenuNode* _currentMenu; MenuItemDefinitions _currentMainMenuItems; + MenuConfiguration& _menuConfiguration; public: - MainMenuItemsProvider(MenuNode* rootMenu); + MainMenuItemsProvider(MenuConfiguration& menuConfiguration); ~MainMenuItemsProvider(); virtual MenuItemDefinitions* MainMenuItems(); virtual void EnterRootMenu(); diff --git a/src/menuorg.cpp b/src/menuorg.cpp index b764f07..d87fda0 100644 --- a/src/menuorg.cpp +++ b/src/menuorg.cpp @@ -50,8 +50,8 @@ MenuOrgPlugin::MenuOrgPlugin(void) MenuOrgPlugin::~MenuOrgPlugin() { - delete _subMenuProvider; - delete _menuConfiguration; + delete _subMenuProvider; + delete _menuConfiguration; } const char* MenuOrgPlugin::Version(void) @@ -110,16 +110,9 @@ bool MenuOrgPlugin::Initialize(void) configFile = (string) ConfigDirectory() + "/menuorg.xml"; _menuConfiguration = new MenuConfiguration(configFile); + // TODO need handling of unloadable config File here!!! - MenuNode* menu = _menuConfiguration->MenuTree(); - if (menu) - { - _subMenuProvider = new MainMenuItemsProvider(menu); - } - else - { - _subMenuProvider = NULL; - } + _subMenuProvider = new MainMenuItemsProvider(*_menuConfiguration); RegisterI18n(Phrases); -- cgit v1.2.3