diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-22 13:51:47 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-22 13:51:47 +0000 |
commit | 1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f (patch) | |
tree | cf9e5a2f477405e789a8613bf37ae6d81cb5b97a /src | |
parent | 2e1c7361dce4d44d980628537a679a9fbebd5546 (diff) | |
download | vdr-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.cc | 7 | ||||
-rw-r--r-- | src/submenu.cc | 3 | ||||
-rw-r--r-- | src/submenu.h | 10 | ||||
-rw-r--r-- | src/submenuplugin.cc | 134 | ||||
-rw-r--r-- | src/submenuplugin.h | 40 | ||||
-rw-r--r-- | src/submenuprovider.cc | 56 | ||||
-rw-r--r-- | src/submenuprovider.h | 21 | ||||
-rw-r--r-- | src/version.h | 6 |
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 |