summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sources.mk1
-rw-r--r--src/menuconfiguration.cpp2
-rw-r--r--src/menuconfiguration.h4
-rw-r--r--src/menuorg.cpp54
-rw-r--r--src/menuorg.h8
-rw-r--r--src/pluginconfiguration.cpp87
-rw-r--r--src/pluginconfiguration.h58
-rw-r--r--src/pluginsetup.cpp24
-rw-r--r--src/pluginsetup.h19
9 files changed, 178 insertions, 79 deletions
diff --git a/sources.mk b/sources.mk
index 21075f1..4e1349e 100644
--- a/sources.mk
+++ b/sources.mk
@@ -6,6 +6,7 @@ SRCS = \
src/menunode.cpp \
src/menuorg.cpp \
src/osditemdefinition.cpp \
+ src/pluginconfiguration.cpp \
src/plugincreator.cpp \
src/pluginitemdefinition.cpp \
src/pluginmenunode.cpp \
diff --git a/src/menuconfiguration.cpp b/src/menuconfiguration.cpp
index a51f3ce..e426f16 100644
--- a/src/menuconfiguration.cpp
+++ b/src/menuconfiguration.cpp
@@ -51,7 +51,7 @@ const string MenuConfiguration::_dtd =
" execute CDATA #REQUIRED\n"
" confirm (yes|no) #IMPLIED>";
-MenuConfiguration::MenuConfiguration(string menuFileName, bool* unconfiguredPluginsShouldBeIncluded)
+MenuConfiguration::MenuConfiguration(string menuFileName, bool unconfiguredPluginsShouldBeIncluded)
{
_configuration = NULL;
_unconfiguredPluginsShouldBeIncluded = unconfiguredPluginsShouldBeIncluded;
diff --git a/src/menuconfiguration.h b/src/menuconfiguration.h
index d9aa8a8..6ae377b 100644
--- a/src/menuconfiguration.h
+++ b/src/menuconfiguration.h
@@ -37,13 +37,13 @@ class MenuConfiguration
{
private:
static const std::string _dtd;
- bool* _unconfiguredPluginsShouldBeIncluded;
+ bool _unconfiguredPluginsShouldBeIncluded;
std::vector<std::string> _configuredPlugins;
xmlpp::Element* _configuration;
xmlpp::DomParser _parser;
public:
- MenuConfiguration(std::string menuFileName, bool* unconfiguredPluginsShouldBeIncluded);
+ MenuConfiguration(std::string menuFileName, bool unconfiguredPluginsShouldBeIncluded);
MenuNode* MenuTree();
xmlpp::Element* Configuration();
diff --git a/src/menuorg.cpp b/src/menuorg.cpp
index 3e90024..7d6e547 100644
--- a/src/menuorg.cpp
+++ b/src/menuorg.cpp
@@ -40,15 +40,12 @@ using namespace std;
MenuOrgPlugin::MenuOrgPlugin(void)
{
- // Initialize any member variables here.
- // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL
- // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
- _customMenuShouldBeActive = true;
- _unconfiguredPluginsShouldBeIncluded = true;
- _hideMainMenuEntry = true;
- _flatMenuSetup = false;
+ // Initialize any member variables here.
+ // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL
+ // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
+
_subMenuProvider = NULL;
- _menuConfiguration = NULL;
+ _configFile = (string) ConfigDirectory() + "/menuorg.xml";
}
MenuOrgPlugin::~MenuOrgPlugin()
@@ -64,12 +61,12 @@ const char* MenuOrgPlugin::Version(void)
const char* MenuOrgPlugin::Description(void)
{
- return tr("organize your Mainmenu");
+ return tr("reorganize main menu");
}
const char* MenuOrgPlugin::MainMenuEntry(void)
{
- if(_hideMainMenuEntry)
+ if(_pluginConfiguration.MainMenuEntryHidden())
return NULL;
else
return tr("Menu-Organizer");
@@ -99,7 +96,7 @@ bool MenuOrgPlugin::ProcessArgs(int argc, char *argv[])
switch (optionChar)
{
case 'c':
- configFile = optarg;
+ _configFile = optarg;
break;
default:
@@ -112,10 +109,7 @@ bool MenuOrgPlugin::ProcessArgs(int argc, char *argv[])
bool MenuOrgPlugin::Initialize(void)
{
- if(configFile.empty())
- configFile = (string) ConfigDirectory() + "/menuorg.xml";
-
- _menuConfiguration = new MenuConfiguration(configFile, &_unconfiguredPluginsShouldBeIncluded);
+ _menuConfiguration = new MenuConfiguration(_configFile, _pluginConfiguration.UnconfiguredPluginsInluded());
// TODO need handling of unloadable config File here!!!
_subMenuProvider = new MainMenuItemsProvider(*_menuConfiguration);
@@ -127,43 +121,22 @@ bool MenuOrgPlugin::Initialize(void)
cOsdObject *MenuOrgPlugin::MainMenuAction(void)
{
- // Perform the action when selected from the main VDR menu.
- return new cMenuOrgSetup(*_menuConfiguration, _flatMenuSetup);
+ return new cMenuOrgSetup(*_menuConfiguration, _pluginConfiguration.MenuSetupStyle());
}
cMenuSetupPage *MenuOrgPlugin::SetupMenu(void)
{
- // Return a setup menu in case the plugin supports one.
- return new PluginSetup(_customMenuShouldBeActive, _unconfiguredPluginsShouldBeIncluded, _hideMainMenuEntry, _flatMenuSetup, *_menuConfiguration);
+ return new PluginSetup(_pluginConfiguration, *_menuConfiguration);
}
bool MenuOrgPlugin::SetupParse(const char *Name, const char *Value)
{
- if (!strcasecmp(Name, PluginSetup::SetupName::CustomMenuActive))
- {
- _customMenuShouldBeActive = (atoi(Value) != 0);
- }
- else if(!strcasecmp(Name, PluginSetup::SetupName::UnconfiguredPluginsIncluded))
- {
- _unconfiguredPluginsShouldBeIncluded = (atoi(Value) != 0);
- }
- else if(!strcasecmp(Name, PluginSetup::SetupName::HideMainMenuEntry))
- {
- _hideMainMenuEntry = (atoi(Value) != 0);
- }
- else if(!strcasecmp(Name, PluginSetup::SetupName::MenuSetupStyle))
- {
- _flatMenuSetup = (atoi(Value) != 0);
- }
- else
- return false;
-
- return true;
+ return _pluginConfiguration.SetConfigurationOptionByName(Name, Value);
}
bool MenuOrgPlugin::Service(const char *Id, void *Data)
{
- if (strcmp(Id, MENU_ITEMS_PROVIDER_SERVICE_ID) == 0 && _customMenuShouldBeActive)
+ if (strcmp(Id, MENU_ITEMS_PROVIDER_SERVICE_ID) == 0 && _pluginConfiguration.CustomMenuActive())
{
if (_subMenuProvider)
{
@@ -174,6 +147,7 @@ bool MenuOrgPlugin::Service(const char *Id, void *Data)
}
else
{
+ // TODO; Handling of unloadable config file should not be done here
Skins.Message(mtError, tr("Failed to load MenuOrg's config file!"));
}
}
diff --git a/src/menuorg.h b/src/menuorg.h
index 7b9dece..3ce939d 100644
--- a/src/menuorg.h
+++ b/src/menuorg.h
@@ -25,6 +25,7 @@
#include <vdr/plugin.h>
#include <string>
+#include "pluginconfiguration.h"
class MainMenuItemsProvider;
class MenuConfiguration;
@@ -33,11 +34,8 @@ class MenuOrgPlugin : public cPlugin
{
private:
MainMenuItemsProvider* _subMenuProvider;
- std::string configFile;
- bool _customMenuShouldBeActive;
- bool _unconfiguredPluginsShouldBeIncluded;
- bool _hideMainMenuEntry;
- bool _flatMenuSetup;
+ std::string _configFile;
+ PluginConfiguration _pluginConfiguration;
MenuConfiguration* _menuConfiguration;
public:
diff --git a/src/pluginconfiguration.cpp b/src/pluginconfiguration.cpp
new file mode 100644
index 0000000..681d010
--- /dev/null
+++ b/src/pluginconfiguration.cpp
@@ -0,0 +1,87 @@
+/*
+ * vdr-menuorg - A plugin for the Linux Video Disk Recorder
+ * Copyright (C) 2007 Thomas Creutz, Tobias Grimm
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id: pluginsetup.h 6098 2007-08-28 12:20:45Z svntcreutz $
+ *
+ */
+
+#include "pluginconfiguration.h"
+#include <stdlib.h>
+#include <strings.h>
+
+const char* PluginConfiguration::SetupName::CustomMenuActive = "customMenuActive";
+const char* PluginConfiguration::SetupName::UnconfiguredPluginsIncluded = "unconfiguredPluginsIncluded";
+const char* PluginConfiguration::SetupName::HideMainMenuEntry = "hideMainMenuEntry";
+const char* PluginConfiguration::SetupName::MenuSetupStyle = "menuSetupStyle";
+
+PluginConfiguration::PluginConfiguration()
+{
+ SetDefaults();
+}
+
+bool PluginConfiguration::CustomMenuActive()
+{
+ return _customMenuActive;
+}
+
+bool PluginConfiguration::UnconfiguredPluginsInluded()
+{
+ return _unconfiguredPluginsIncluded;
+}
+
+bool PluginConfiguration::MainMenuEntryHidden()
+{
+ return _hideMainMenuEntry;
+}
+
+int PluginConfiguration::MenuSetupStyle()
+{
+ return _menuSetupStyle;
+}
+
+void PluginConfiguration::SetDefaults()
+{
+ _customMenuActive = true;
+ _hideMainMenuEntry = true;
+ _menuSetupStyle = 0;
+ _unconfiguredPluginsIncluded = true;
+}
+
+bool PluginConfiguration::SetConfigurationOptionByName(const char* Name, const char* Value)
+{
+ if (!strcasecmp(Name, SetupName::CustomMenuActive))
+ {
+ _customMenuActive = (atoi(Value) != 0);
+ }
+ else if(!strcasecmp(Name, SetupName::UnconfiguredPluginsIncluded))
+ {
+ _unconfiguredPluginsIncluded = (atoi(Value) != 0);
+ }
+ else if(!strcasecmp(Name, SetupName::HideMainMenuEntry))
+ {
+ _hideMainMenuEntry = (atoi(Value) != 0);
+ }
+ else if(!strcasecmp(Name, SetupName::MenuSetupStyle))
+ {
+ _menuSetupStyle = (atoi(Value) != 0);
+ }
+ else
+ return false;
+
+ return true;
+}
diff --git a/src/pluginconfiguration.h b/src/pluginconfiguration.h
new file mode 100644
index 0000000..56aa93f
--- /dev/null
+++ b/src/pluginconfiguration.h
@@ -0,0 +1,58 @@
+/*
+ * vdr-menuorg - A plugin for the Linux Video Disk Recorder
+ * Copyright (C) 2007 Thomas Creutz, Tobias Grimm
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id$
+ *
+ */
+
+#ifndef ___PLUGINCONFIGURATION_H_
+#define ___PLUGINCONFIGURATION_H_
+
+class PluginConfiguration
+{
+ friend class PluginSetup;
+
+ private:
+ struct SetupName
+ {
+ static const char* CustomMenuActive;
+ static const char* UnconfiguredPluginsIncluded;
+ static const char* HideMainMenuEntry;
+ static const char* MenuSetupStyle;
+ };
+
+ private:
+ bool _customMenuActive;
+ bool _unconfiguredPluginsIncluded;
+ bool _hideMainMenuEntry;
+ int _menuSetupStyle;
+
+ public:
+ PluginConfiguration();
+ bool SetConfigurationOptionByName(const char* Name, const char* Value);
+ bool CustomMenuActive();
+ bool UnconfiguredPluginsInluded();
+ bool MainMenuEntryHidden();
+ int MenuSetupStyle();
+
+ private:
+ void SetDefaults();
+};
+
+#endif
+
diff --git a/src/pluginsetup.cpp b/src/pluginsetup.cpp
index 96477aa..ed676f0 100644
--- a/src/pluginsetup.cpp
+++ b/src/pluginsetup.cpp
@@ -26,28 +26,18 @@
#include "pluginsetup.h"
#include "menusetup.h"
-const char* PluginSetup::SetupName::CustomMenuActive = "customMenuActive";
-const char* PluginSetup::SetupName::UnconfiguredPluginsIncluded = "unconfiguredPluginsIncluded";
-const char* PluginSetup::SetupName::HideMainMenuEntry = "hideMainMenuEntry";
-const char* PluginSetup::SetupName::MenuSetupStyle = "menuSetupStyle";
-
-PluginSetup::PluginSetup(bool& customMenuActive, bool& unconfiguredPluginsIncluded, bool& hideMainMenuEntry, bool& menuSetupStyle, MenuConfiguration& menuConfiguration)
- :_customMenuActive(customMenuActive), _unconfiguredPluginsIncluded(unconfiguredPluginsIncluded), _hideMainMenuEntry(hideMainMenuEntry), _menuSetupStyle(menuSetupStyle),
- _menuConfiguration(menuConfiguration)
+PluginSetup::PluginSetup(PluginConfiguration& pluginConfiguration, MenuConfiguration& menuConfiguration)
+ :_pluginConfiguration(pluginConfiguration), _menuConfiguration(menuConfiguration)
{
- _newCustomMenuActive = _customMenuActive;
- _newUnconfiguredPluginsIncluded = _unconfiguredPluginsIncluded;
- _newHideMainMenuEntry = _hideMainMenuEntry;
- _newMenuSetupStyle = _menuSetupStyle;
CreateMenuItems();
}
void PluginSetup::Store(void)
{
- SetupStore(SetupName::CustomMenuActive, _customMenuActive = _newCustomMenuActive);
- SetupStore(SetupName::UnconfiguredPluginsIncluded, _unconfiguredPluginsIncluded = _newUnconfiguredPluginsIncluded);
- SetupStore(SetupName::HideMainMenuEntry, _hideMainMenuEntry = _newHideMainMenuEntry);
- SetupStore(SetupName::MenuSetupStyle, _menuSetupStyle = _newMenuSetupStyle);
+ SetupStore(PluginConfiguration::SetupName::CustomMenuActive, _pluginConfiguration._customMenuActive = _newCustomMenuActive);
+ SetupStore(PluginConfiguration::SetupName::UnconfiguredPluginsIncluded, _pluginConfiguration._unconfiguredPluginsIncluded = _newUnconfiguredPluginsIncluded);
+ SetupStore(PluginConfiguration::SetupName::HideMainMenuEntry, _pluginConfiguration._hideMainMenuEntry = _newHideMainMenuEntry);
+ SetupStore(PluginConfiguration::SetupName::MenuSetupStyle, _pluginConfiguration._menuSetupStyle = _newMenuSetupStyle);
}
eOSState PluginSetup::ProcessKey(eKeys Key)
@@ -61,7 +51,7 @@ eOSState PluginSetup::ProcessKey(eKeys Key)
switch(state)
{
case osUser1:
- return AddSubMenu(new cMenuOrgSetup(_menuConfiguration, _menuSetupStyle));
+ return AddSubMenu(new cMenuOrgSetup(_menuConfiguration, _pluginConfiguration._menuSetupStyle));
break;
case osContinue:
diff --git a/src/pluginsetup.h b/src/pluginsetup.h
index fc2f578..99ff705 100644
--- a/src/pluginsetup.h
+++ b/src/pluginsetup.h
@@ -25,6 +25,9 @@
#include <vdr/menu.h>
+class PluginConfiguration;
+class MenuConfiguration;
+
class PluginSetup : public cMenuSetupPage
{
private:
@@ -32,23 +35,11 @@ class PluginSetup : public cMenuSetupPage
int _newUnconfiguredPluginsIncluded;
int _newHideMainMenuEntry;
int _newMenuSetupStyle;
- bool& _customMenuActive;
- bool& _unconfiguredPluginsIncluded;
- bool& _hideMainMenuEntry;
- bool& _menuSetupStyle;
+ PluginConfiguration& _pluginConfiguration;
MenuConfiguration& _menuConfiguration;
public:
- struct SetupName
- {
- static const char* CustomMenuActive;
- static const char* UnconfiguredPluginsIncluded;
- static const char* HideMainMenuEntry;
- static const char* MenuSetupStyle;
- };
-
- public:
- PluginSetup(bool& customMenuActive, bool& unconfiguredPluginsIncluded, bool& hideMainMenuEntry, bool& menuSetupStyle, MenuConfiguration& menuConfiguration);
+ PluginSetup(PluginConfiguration& pluginConfiguration, MenuConfiguration& menuConfiguration);
virtual eOSState ProcessKey(eKeys Key);
protected: