From e40aff13427ae39718526b99e412b68dd0858f01 Mon Sep 17 00:00:00 2001 From: svntcreutz Date: Thu, 26 Jul 2007 01:33:38 +0000 Subject: plugin rename, some tests for navigate through the menus git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5634 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f --- src/menuorg.cpp | 133 ++++++++++++++++++++++++++++++++++++++++++++++++ src/menuorg.h | 40 +++++++++++++++ src/plugincreator.cc | 7 --- src/plugincreator.cpp | 7 +++ src/submenuplugin.cc | 134 ------------------------------------------------- src/submenuplugin.h | 38 -------------- src/submenuprovider.cc | 95 +++++++++++++++++++++++------------ src/submenuprovider.h | 25 +++++---- 8 files changed, 256 insertions(+), 223 deletions(-) create mode 100644 src/menuorg.cpp create mode 100644 src/menuorg.h delete mode 100644 src/plugincreator.cc create mode 100644 src/plugincreator.cpp delete mode 100644 src/submenuplugin.cc delete mode 100644 src/submenuplugin.h (limited to 'src') diff --git a/src/menuorg.cpp b/src/menuorg.cpp new file mode 100644 index 0000000..9864efe --- /dev/null +++ b/src/menuorg.cpp @@ -0,0 +1,133 @@ +/* + * menuorg.cpp: A plugin for the Video Disk Recorder + * + * See the README file for copyright information and how to reach the author. + * + */ + +#include +#include +#include +#include +#include +#include "version.h" +#include "menuorg.h" + +using namespace SubMenuPatch; + +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! +} + + +MenuOrgPlugin::~MenuOrgPlugin() +{ + // Clean up after yourself! +} + +const char* MenuOrgPlugin::Version(void) +{ + return VERSION; +} + +const char* MenuOrgPlugin::Description(void) +{ + return tr("TODO: Insert Description"); +} + +const char* MenuOrgPlugin::MainMenuEntry(void) +{ + return tr("TODO: MainMenuEntry"); +} + +const char *MenuOrgPlugin::CommandLineHelp(void) +{ + // Return a string that describes all known command line options. + return NULL; +} + +bool MenuOrgPlugin::ProcessArgs(int argc, char *argv[]) +{ + // Implement command line argument processing here if applicable. + return true; +} + +bool MenuOrgPlugin::Initialize(void) +{ + // Initialize any background activities the plugin shall perform. + return true; +} + +bool MenuOrgPlugin::Start(void) +{ + // Start any background activities the plugin shall perform. + return true; +} + +void MenuOrgPlugin::Stop(void) +{ + // Stop any background activities the plugin shall perform. +} + +void MenuOrgPlugin::Housekeeping(void) +{ + // Perform any cleanup or other regular tasks. +} + +void MenuOrgPlugin::MainThreadHook(void) +{ + // Perform actions in the context of the main program thread. + // WARNING: Use with great care - see PLUGINS.html! +} + +cString MenuOrgPlugin::Active(void) +{ + // Return a message string if shutdown should be postponed + return NULL; +} + +cOsdObject *MenuOrgPlugin::MainMenuAction(void) +{ + // Perform the action when selected from the main VDR menu. + return NULL; +} + +cMenuSetupPage *MenuOrgPlugin::SetupMenu(void) +{ + // Return a setup menu in case the plugin supports one. + return NULL; +} + +bool MenuOrgPlugin::SetupParse(const char *Name, const char *Value) +{ + // Parse your own setup parameters and store their values. + return false; +} + +bool MenuOrgPlugin::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 **MenuOrgPlugin::SVDRPHelpPages(void) +{ + // Return help text for SVDRP commands this plugin implements + return NULL; +} + +cString MenuOrgPlugin::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) +{ + // Process SVDRP commands this plugin implements + return NULL; +} diff --git a/src/menuorg.h b/src/menuorg.h new file mode 100644 index 0000000..04b6f62 --- /dev/null +++ b/src/menuorg.h @@ -0,0 +1,40 @@ +#ifndef ___MENUORGPLUGIN_H +#define ___MENUORGPLUGIN_H + +#include +//#include +//#include +#include "submenuprovider.h" + +using namespace SubMenuPatch; + +class MenuOrgPlugin : public cPlugin +{ + private: + SubMenuProvider _subMenuProvider; + + public: + MenuOrgPlugin(void); + virtual ~MenuOrgPlugin(); + 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/plugincreator.cc b/src/plugincreator.cc deleted file mode 100644 index 6b87179..0000000 --- a/src/plugincreator.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include "submenuplugin.h" - -extern "C" void *VDRPluginCreator() -{ - SubMenuPlugin* plugin = new SubMenuPlugin(); - return plugin; -} diff --git a/src/plugincreator.cpp b/src/plugincreator.cpp new file mode 100644 index 0000000..c91c629 --- /dev/null +++ b/src/plugincreator.cpp @@ -0,0 +1,7 @@ +#include "menuorg.h" + +extern "C" void *VDRPluginCreator() +{ + MenuOrgPlugin* plugin = new MenuOrgPlugin(); + return plugin; +} diff --git a/src/submenuplugin.cc b/src/submenuplugin.cc deleted file mode 100644 index cd5f43a..0000000 --- a/src/submenuplugin.cc +++ /dev/null @@ -1,134 +0,0 @@ -/* - * submenu.c: A plugin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#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 deleted file mode 100644 index e810a23..0000000 --- a/src/submenuplugin.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef ___SUBMENUPLUGIN_H -#define ___SUBMENUPLUGIN_H - -#include -#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 index 3b9389a..94861e0 100644 --- a/src/submenuprovider.cc +++ b/src/submenuprovider.cc @@ -1,42 +1,60 @@ #include "submenuprovider.h" #include +#include + +//using namespace std; SubMenuProvider::SubMenuProvider() { - _inSubMenu = false; + _OsdSet = false; + _inSubMenu = false; + } -MainMenuItemsList* SubMenuProvider::MainMenuItems() +void SubMenuProvider::CreateTestMenus() { - ResetMainMenuItemsList(); - - if (_inSubMenu) - { - _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))); - } - else - { - _subMenuItem = new cOsdItem("A custom sub menu\t1xxx", osUser1); - _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(_subMenuItem)); - 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))); + // Mainmenu + _myOsdItems[0].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("A custom sub menu1"), osUser1))); + _myOsdItems[0].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("A custom sub menu2"), osUser1))); + + // Submenu 1 + _myOsdItems[1].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Schedule"), osSchedule))); + _myOsdItems[1].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Channels"), osChannels))); + _myOsdItems[1].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Channels"), osChannels))); + _myOsdItems[1].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Timers"), osTimers))); + _myOsdItems[1].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Recordings"), osRecordings))); + + // Submenu 2 + _myOsdItems[2].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Setup"), osSetup))); if (Commands.Count()) - _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Commands"), osCommands))); - } + _myOsdItems[2].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Commands"), osCommands))); + +} + +MainMenuItemsList* SubMenuProvider::MainMenuItems() +{ + ResetMainMenuItemsList(); + + if (_OsdSet == false) + { + // create testmenu´s + CreateTestMenus(); + + // set mainmenu + _osdItems=_myOsdItems[0]; + + _OsdSet=true; + } + else + { + if (_inSubMenu) + _osdItems=_myOsdItems[1]; + else + _osdItems=_myOsdItems[0]; + + //_osdItems=_myOsdItemNext; + } return &_osdItems; } @@ -52,10 +70,21 @@ void SubMenuProvider::ResetMainMenuItemsList() void SubMenuProvider::EnterSubMenu(cOsdItem* item) { - if (item == _subMenuItem) - { - _inSubMenu = true; - } + if (_inSubMenu == false) + _inSubMenu = true; + +/* + for(int i=0; i<=2; i++) + { + + for( MainMenuItemsList::iterator oMenuItem = _myOsdItems[i].begin(); i != _myOsdItems[i].end(); i++) + { + if (oMenuItem==item) + isyslog("Item found\n"); + } + // Suche nach dem nächsten Submenu und speichere es dann in _myOsdItemNext + } +*/ } bool SubMenuProvider::LeaveSubMenu() diff --git a/src/submenuprovider.h b/src/submenuprovider.h index f0b9172..2fefe17 100644 --- a/src/submenuprovider.h +++ b/src/submenuprovider.h @@ -7,19 +7,22 @@ using namespace SubMenuPatch; class SubMenuProvider: public ISubMenuProvider { - private: - MainMenuItemsList _osdItems; - cOsdItem* _subMenuItem; - bool _inSubMenu; + private: + MainMenuItemsList _osdItems; + MainMenuItemsList _myOsdItems[5]; + MainMenuItemsList _myOsdItemNext; + bool _OsdSet; + bool _inSubMenu; - public: - SubMenuProvider(); - virtual MainMenuItemsList* MainMenuItems(); - virtual void EnterSubMenu(cOsdItem* item); - virtual bool LeaveSubMenu(); + public: + SubMenuProvider(); + virtual MainMenuItemsList* MainMenuItems(); + virtual void EnterSubMenu(cOsdItem* item); + virtual bool LeaveSubMenu(); - private: - void ResetMainMenuItemsList(); + private: + void ResetMainMenuItemsList(); + void CreateTestMenus(); }; #endif -- cgit v1.2.3