summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-07-22 13:51:47 +0000
committersvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-07-22 13:51:47 +0000
commit1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f (patch)
treecf9e5a2f477405e789a8613bf37ae6d81cb5b97a /src
parent2e1c7361dce4d44d980628537a679a9fbebd5546 (diff)
downloadvdr-plugin-menuorg-1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f.tar.gz
vdr-plugin-menuorg-1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f.tar.bz2
initial submenu checkin
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5628 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
Diffstat (limited to 'src')
-rw-r--r--src/plugincreator.cc7
-rw-r--r--src/submenu.cc3
-rw-r--r--src/submenu.h10
-rw-r--r--src/submenuplugin.cc134
-rw-r--r--src/submenuplugin.h40
-rw-r--r--src/submenuprovider.cc56
-rw-r--r--src/submenuprovider.h21
-rw-r--r--src/version.h6
8 files changed, 277 insertions, 0 deletions
diff --git a/src/plugincreator.cc b/src/plugincreator.cc
new file mode 100644
index 0000000..6b87179
--- /dev/null
+++ b/src/plugincreator.cc
@@ -0,0 +1,7 @@
+#include "submenuplugin.h"
+
+extern "C" void *VDRPluginCreator()
+{
+ SubMenuPlugin* plugin = new SubMenuPlugin();
+ return plugin;
+}
diff --git a/src/submenu.cc b/src/submenu.cc
new file mode 100644
index 0000000..d9c3ab7
--- /dev/null
+++ b/src/submenu.cc
@@ -0,0 +1,3 @@
+eOSState SubMenu::ProcessKey(eKeys Key)
+{
+}
diff --git a/src/submenu.h b/src/submenu.h
new file mode 100644
index 0000000..b26c47f
--- /dev/null
+++ b/src/submenu.h
@@ -0,0 +1,10 @@
+#ifndef ___SUBMENU_H
+#define ___SUBMENU_H
+
+class SubMenu : public cOsdMenu
+{
+ public:
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+#endif
diff --git a/src/submenuplugin.cc b/src/submenuplugin.cc
new file mode 100644
index 0000000..cd5f43a
--- /dev/null
+++ b/src/submenuplugin.cc
@@ -0,0 +1,134 @@
+/*
+ * submenu.c: A plugin for the Video Disk Recorder
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ * $Id$
+ */
+
+#include <vdr/plugin.h>
+#include <vdr/config.h>
+#include <vdr/tools.h>
+#include <vdr/submenupatch.h>
+#include <vector>
+#include "version.h"
+#include "submenuplugin.h"
+
+using namespace SubMenuPatch;
+
+SubMenuPlugin::SubMenuPlugin(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!
+}
+
+
+SubMenuPlugin::~SubMenuPlugin()
+{
+ // Clean up after yourself!
+}
+
+const char* SubMenuPlugin::Version(void)
+{
+ return VERSION;
+}
+
+const char* SubMenuPlugin::Description(void)
+{
+ return tr("TODO: Insert Description");
+}
+
+const char* SubMenuPlugin::MainMenuEntry(void)
+{
+ return tr("TODO: MainMenuEntry");
+}
+
+const char *SubMenuPlugin::CommandLineHelp(void)
+{
+ // Return a string that describes all known command line options.
+ return NULL;
+}
+
+bool SubMenuPlugin::ProcessArgs(int argc, char *argv[])
+{
+ // Implement command line argument processing here if applicable.
+ return true;
+}
+
+bool SubMenuPlugin::Initialize(void)
+{
+ // Initialize any background activities the plugin shall perform.
+ return true;
+}
+
+bool SubMenuPlugin::Start(void)
+{
+ // Start any background activities the plugin shall perform.
+ return true;
+}
+
+void SubMenuPlugin::Stop(void)
+{
+ // Stop any background activities the plugin shall perform.
+}
+
+void SubMenuPlugin::Housekeeping(void)
+{
+ // Perform any cleanup or other regular tasks.
+}
+
+void SubMenuPlugin::MainThreadHook(void)
+{
+ // Perform actions in the context of the main program thread.
+ // WARNING: Use with great care - see PLUGINS.html!
+}
+
+cString SubMenuPlugin::Active(void)
+{
+ // Return a message string if shutdown should be postponed
+ return NULL;
+}
+
+cOsdObject *SubMenuPlugin::MainMenuAction(void)
+{
+ // Perform the action when selected from the main VDR menu.
+ return NULL;
+}
+
+cMenuSetupPage *SubMenuPlugin::SetupMenu(void)
+{
+ // Return a setup menu in case the plugin supports one.
+ return NULL;
+}
+
+bool SubMenuPlugin::SetupParse(const char *Name, const char *Value)
+{
+ // Parse your own setup parameters and store their values.
+ return false;
+}
+
+bool SubMenuPlugin::Service(const char *Id, void *Data)
+{
+ if (strcmp(Id, "SubMenuPatch-v0.1::SubMenuProvider") == 0)
+ {
+ ISubMenuProvider** ptr = (ISubMenuProvider**)Data;
+ *ptr = &_subMenuProvider;
+
+ return true;
+ }
+
+ return false;
+}
+
+const char **SubMenuPlugin::SVDRPHelpPages(void)
+{
+ // Return help text for SVDRP commands this plugin implements
+ return NULL;
+}
+
+cString SubMenuPlugin::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
+{
+ // Process SVDRP commands this plugin implements
+ return NULL;
+}
diff --git a/src/submenuplugin.h b/src/submenuplugin.h
new file mode 100644
index 0000000..504af9c
--- /dev/null
+++ b/src/submenuplugin.h
@@ -0,0 +1,40 @@
+#ifndef ___SUBMENUPLUGIN_H
+#define ___SUBMENUPLUGIN_H
+
+#include <vdr/plugin.h>
+//#include <vdr/config.h>
+//#include <vdr/tools.h>
+#include "submenuprovider.h"
+
+using namespace SubMenuPatch;
+
+class SubMenuPlugin : public cPlugin
+{
+ private:
+ SubMenuProvider _subMenuProvider;
+
+ public:
+ SubMenuPlugin(void);
+ virtual ~SubMenuPlugin();
+ virtual const char *Version(void);
+ virtual const char *Description(void);
+ virtual const char *CommandLineHelp(void);
+ virtual bool ProcessArgs(int argc, char *argv[]);
+ virtual bool Initialize(void);
+ virtual bool Start(void);
+ virtual void Stop(void);
+ virtual void Housekeeping(void);
+ virtual void MainThreadHook(void);
+ virtual cString Active(void);
+ virtual const char *MainMenuEntry(void);
+ virtual cOsdObject *MainMenuAction(void);
+ virtual cMenuSetupPage *SetupMenu(void);
+ virtual bool SetupParse(const char *Name, const char *Value);
+ virtual bool Service(const char *Id, void *Data = NULL);
+ virtual const char **SVDRPHelpPages(void);
+ virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
+};
+
+extern "C" void* VDRPluginCreator();
+
+#endif
diff --git a/src/submenuprovider.cc b/src/submenuprovider.cc
new file mode 100644
index 0000000..ccbb3fc
--- /dev/null
+++ b/src/submenuprovider.cc
@@ -0,0 +1,56 @@
+#include "submenuprovider.h"
+#include <vdr/plugin.h>
+
+MainMenuItemsList* SubMenuProvider::MainMenuItems()
+{
+ ResetMainMenuItemsList();
+
+
+ _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem("A custom sub menu", osUser1)));
+// _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Schedule"), osSchedule)));
+// _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Channels"), osChannels)));
+// _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Timers"), osTimers)));
+// _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Recordings"), osRecordings)));
+
+ for (int i = 0; ; i++) {
+ cPlugin *p = cPluginManager::GetPlugin(i);
+ if (p) {
+ const char *item = p->MainMenuEntry();
+ if (item)
+ _osdItems.push_back(MainMenuItem::CreatePluginMenuItem(item, i));
+ }
+ else
+ break;
+ }
+
+ _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Setup"), osSetup)));
+
+ if (Commands.Count())
+ _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Commands"), osCommands)));
+
+ return &_osdItems;
+}
+
+void SubMenuProvider::ResetMainMenuItemsList()
+{
+ for( MainMenuItemsList::iterator i = _osdItems.begin(); i != _osdItems.end(); i++)
+ {
+ delete *i;
+ }
+ _osdItems.clear();
+}
+
+cOsdMenu* SubMenuProvider::OpenSubMenu(int mainMenuItemIndex)
+{
+ if (mainMenuItemIndex == 0)
+ {
+ cOsdMenu* fooMenu = new cOsdMenu("Foo-Submenu");
+ fooMenu->Add(new cOsdItem(tr("Schedule"), osSchedule));
+ fooMenu->Add(new cOsdItem(tr("Channels"), osChannels));
+ fooMenu->Add(new cOsdItem(tr("Timers"), osTimers));
+ fooMenu->Add(new cOsdItem(tr("Recordings"), osRecordings));
+ return fooMenu;
+ }
+
+ return NULL;
+}
diff --git a/src/submenuprovider.h b/src/submenuprovider.h
new file mode 100644
index 0000000..f15daf6
--- /dev/null
+++ b/src/submenuprovider.h
@@ -0,0 +1,21 @@
+#ifndef ___SUBMENUPROVIDER_H
+#define ___SUBMENUPROVIDER_H
+
+#include <vdr/submenupatch.h>
+
+using namespace SubMenuPatch;
+
+class SubMenuProvider: public ISubMenuProvider
+{
+ private:
+ MainMenuItemsList _osdItems;
+
+ public:
+ virtual MainMenuItemsList* MainMenuItems();
+ virtual cOsdMenu* OpenSubMenu(int mainMenuItemIndex);
+
+ private:
+ void ResetMainMenuItemsList();
+};
+
+#endif
diff --git a/src/version.h b/src/version.h
new file mode 100644
index 0000000..65226ac
--- /dev/null
+++ b/src/version.h
@@ -0,0 +1,6 @@
+#ifndef ___VERSION_H
+#define ___VERSION_H
+
+static const char VERSION[] = "0.1";
+
+#endif