diff options
author | svntcreutz <svntcreutz@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-28 23:34:29 +0000 |
---|---|---|
committer | svntcreutz <svntcreutz@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-28 23:34:29 +0000 |
commit | 615f3d362c14d4e076fddab6e33491b7bfc22af6 (patch) | |
tree | 8fb600f066cf4a15d399047b72a642dc78ca95d9 | |
parent | 6415ce5eee666040471b016055abdd021af33662 (diff) | |
download | vdr-plugin-menuorg-615f3d362c14d4e076fddab6e33491b7bfc22af6.tar.gz vdr-plugin-menuorg-615f3d362c14d4e076fddab6e33491b7bfc22af6.tar.bz2 |
- main menu translation fixed
- added error vars for get xml file loading errors and display message in mainmenu
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5669 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
-rw-r--r-- | src/menuorg.cpp | 10 | ||||
-rw-r--r-- | src/submenuprovider.cpp | 40 | ||||
-rw-r--r-- | src/submenuprovider.h | 3 | ||||
-rw-r--r-- | src/vdrmenuitem.cpp | 2 | ||||
-rw-r--r-- | src/xmlmenu.cpp | 9 | ||||
-rw-r--r-- | src/xmlmenu.h | 2 |
6 files changed, 35 insertions, 31 deletions
diff --git a/src/menuorg.cpp b/src/menuorg.cpp index b1d644c..0663ca0 100644 --- a/src/menuorg.cpp +++ b/src/menuorg.cpp @@ -41,7 +41,12 @@ const char* MenuOrgPlugin::Description(void) const char* MenuOrgPlugin::MainMenuEntry(void) { - return tr("TODO: MainMenuEntry"); + if(_subMenuProvider->getSomeError()) + { + return tr("Failed to load XML File"); + } + else + return NULL; } const char *MenuOrgPlugin::CommandLineHelp(void) @@ -94,6 +99,7 @@ cString MenuOrgPlugin::Active(void) cOsdObject *MenuOrgPlugin::MainMenuAction(void) { // Perform the action when selected from the main VDR menu. + //TODO: when the MenuItem is called, than ask for reloading the xml-file return NULL; } @@ -111,7 +117,7 @@ bool MenuOrgPlugin::SetupParse(const char *Name, const char *Value) bool MenuOrgPlugin::Service(const char *Id, void *Data) { - if (strcmp(Id, "SubMenuPatch-v0.1::SubMenuProvider") == 0) + if (strcmp(Id, "SubMenuPatch-v0.1::SubMenuProvider") == 0 && _subMenuProvider->getSomeError() == false) { ISubMenuProvider** ptr = (ISubMenuProvider**)Data; *ptr = _subMenuProvider; diff --git a/src/submenuprovider.cpp b/src/submenuprovider.cpp index 4ea1401..9844abc 100644 --- a/src/submenuprovider.cpp +++ b/src/submenuprovider.cpp @@ -8,33 +8,16 @@ SubMenuProvider::SubMenuProvider() { //CreateTestMenus(); _oXmlMenu.LoadXmlMenu(); - _currentMenu = _oXmlMenu.GetMenuTree(); -} -/* -void SubMenuProvider::CreateTestMenus() -{ - MenuNode* subMenu1 =_rootMenuNode.AddChild(new SubMenuItem("Custom menu 1")); - subMenu1->AddChild(new VdrMenuItem(tr("Schedule"), osSchedule)); - subMenu1->AddChild(new VdrMenuItem(tr("Channels"), osChannels)); - MenuNode* subMenu1_1 = subMenu1->AddChild(new SubMenuItem("Custom menu 1.1")); - subMenu1_1->AddChild(new VdrMenuItem(tr("Timers"), osTimers)); - subMenu1_1->AddChild(new VdrMenuItem(tr("Recordings"), osRecordings)); - MenuNode* subMenu2 =_rootMenuNode.AddChild(new SubMenuItem("Custom menu 2")); - //plugins - int i=0; - while (cPlugin *p = cPluginManager::GetPlugin(i)) - { - if (const char *item = p->MainMenuEntry()) - { - subMenu2->AddChild(new PluginMenuItem(item, i)); - } - i++; - } - _rootMenuNode.AddChild(new VdrMenuItem(tr("Setup"), osSetup)); - if (Commands.Count()) - _rootMenuNode.AddChild(new VdrMenuItem(tr("Commands"), osCommands)); + if(_oXmlMenu.getErrorStatus() == false) + { + _currentMenu = _oXmlMenu.GetMenuTree(); + _someError=false; + } + else + { + _someError=true; + } } -*/ MainMenuItemsList* SubMenuProvider::MainMenuItems() { ResetMainMenuItemsList(); @@ -89,3 +72,8 @@ bool SubMenuProvider::LeaveSubMenu() return false; } } + +bool SubMenuProvider::getSomeError() +{ + return _someError; +} diff --git a/src/submenuprovider.h b/src/submenuprovider.h index 2f7ae56..2a798df 100644 --- a/src/submenuprovider.h +++ b/src/submenuprovider.h @@ -10,8 +10,8 @@ using namespace SubMenuPatch; class SubMenuProvider: public ISubMenuProvider { private: + bool _someError; XmlMenu _oXmlMenu; - //MenuNode _rootMenuNode; MenuNode* _currentMenu; MainMenuItemsList _currentMainMenuItems; @@ -21,6 +21,7 @@ class SubMenuProvider: public ISubMenuProvider virtual void EnterRootMenu(); virtual void EnterSubMenu(cOsdItem* item); virtual bool LeaveSubMenu(); + bool getSomeError(); private: void ResetMainMenuItemsList(); diff --git a/src/vdrmenuitem.cpp b/src/vdrmenuitem.cpp index e36d25d..f2f3090 100644 --- a/src/vdrmenuitem.cpp +++ b/src/vdrmenuitem.cpp @@ -10,5 +10,5 @@ VdrMenuItem::VdrMenuItem(std::string itemText, eOSState itemState) SubMenuPatch::IMainMenuItem* VdrMenuItem::CreateMainMenuItem() { - return new CustomMainMenuItem(new cOsdItem(_itemText.c_str(), _itemState)); + return new CustomMainMenuItem(new cOsdItem(tr(_itemText.c_str()), _itemState)); } diff --git a/src/xmlmenu.cpp b/src/xmlmenu.cpp index 2f57335..6893038 100644 --- a/src/xmlmenu.cpp +++ b/src/xmlmenu.cpp @@ -30,14 +30,16 @@ void XmlMenu::LoadXmlMenu() MenuCount=0; const Element* rootElement = parser.get_document()->get_root_node(); //deleted by DomParser. ParseElement(rootElement, &_rootMenuNode); + _xmlLoadError=false; } } catch(const std::exception& ex) { //TODO: print output to syslog (isyslog or dsyslog?) cout << "Exception caught: " << ex.what() << endl; - + isyslog("Exception caught: %s", ex.what()); //TODO: display message on osd + _xmlLoadError=true; } } @@ -150,3 +152,8 @@ bool XmlMenu::FindPluginByName(string name, const char** mainMenuEntry, int& plu } return false; } + +bool XmlMenu::getErrorStatus() +{ + return _xmlLoadError; +} diff --git a/src/xmlmenu.h b/src/xmlmenu.h index f3cf372..84abc8b 100644 --- a/src/xmlmenu.h +++ b/src/xmlmenu.h @@ -10,12 +10,14 @@ namespace xmlpp { class Element; } class XmlMenu { private: + bool _xmlLoadError; int MenuCount; MenuNode _rootMenuNode; public: MenuNode* GetMenuTree(); void LoadXmlMenu(); + bool getErrorStatus(); private: void ParseElement(const xmlpp::Element* a_node, MenuNode* menuNode); |