summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/menuorg.cpp10
-rw-r--r--src/submenuprovider.cpp40
-rw-r--r--src/submenuprovider.h3
-rw-r--r--src/vdrmenuitem.cpp2
-rw-r--r--src/xmlmenu.cpp9
-rw-r--r--src/xmlmenu.h2
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);