diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2002-05-09 16:26:56 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2002-05-09 16:26:56 +0200 |
commit | b527b2770868bccde05ad47393951fde5d51f79a (patch) | |
tree | c939c1b42f0be0840d7cdbfc61af4c182a955cbf /PLUGINS/src/hello/hello.c | |
parent | bf4a5a678d56f3fca45110f1536ce2c3c8f3b816 (diff) | |
download | vdr-b527b2770868bccde05ad47393951fde5d51f79a.tar.gz vdr-b527b2770868bccde05ad47393951fde5d51f79a.tar.bz2 |
Implemented plugin interface1.1.0
Diffstat (limited to 'PLUGINS/src/hello/hello.c')
-rw-r--r-- | PLUGINS/src/hello/hello.c | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/PLUGINS/src/hello/hello.c b/PLUGINS/src/hello/hello.c new file mode 100644 index 00000000..5db4f2a2 --- /dev/null +++ b/PLUGINS/src/hello/hello.c @@ -0,0 +1,105 @@ +/* + * hello.c: A plugin for the Video Disk Recorder + * + * See the README file for copyright information and how to reach the author. + * + * $Id: hello.c 1.1 2002/05/09 15:28:51 kls Exp $ + */ + +#include <getopt.h> +#include <vdr/interface.h> +#include <vdr/plugin.h> +#include "i18n.h" + +static const char *VERSION = "0.0.1"; +static const char *DESCRIPTION = "A friendly greeting"; +static const char *MAINMENUENTRY = "Hello"; + +class cPluginHello : public cPlugin { +private: + // Add any member variables or functions you may need here. + const char *option_a; + bool option_b; +public: + cPluginHello(void); + virtual ~cPluginHello(); + virtual const char *Version(void) { return VERSION; } + virtual const char *Description(void) { return tr(DESCRIPTION); } + virtual const char *CommandLineHelp(void); + virtual bool ProcessArgs(int argc, char *argv[]); + virtual void Start(void); + virtual const char *MainMenuEntry(void) { return tr(MAINMENUENTRY); } + virtual cOsdMenu *MainMenuAction(void); + virtual cMenuSetupPage *SetupMenu(void); + virtual bool SetupParse(const char *Name, const char *Value); + }; + +cPluginHello::cPluginHello(void) +{ + // Initialize any member varaiables here. + // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL + // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! + option_a = NULL; + option_b = false; +} + +cPluginHello::~cPluginHello() +{ + // Clean up after yourself! +} + +const char *cPluginHello::CommandLineHelp(void) +{ + // Return a string that describes all known command line options. + return " -a ABC, --aaa=ABC do something nice with ABC\n" + " -b, --bbb activate 'plan B'\n"; +} + +bool cPluginHello::ProcessArgs(int argc, char *argv[]) +{ + // Implement command line argument processing here if applicable. + static struct option long_options[] = { + { "aaa", required_argument, NULL, 'a' }, + { "bbb", no_argument, NULL, 'b' }, + { NULL } + }; + + int c; + while ((c = getopt_long(argc, argv, "a:b", long_options, NULL)) != -1) { + switch (c) { + case 'a': option_a = optarg; + break; + case 'b': option_b = true; + break; + default: return false; + } + } + return true; +} + +void cPluginHello::Start(void) +{ + // Start any background activities the plugin shall perform. + RegisterI18n(Phrases); +} + +cOsdMenu *cPluginHello::MainMenuAction(void) +{ + // Perform the action when selected from the main VDR menu. + Interface->Info(tr("Hello world!")); + return NULL; +} + +cMenuSetupPage *cPluginHello::SetupMenu(void) +{ + // Return a setup menu in case the plugin supports one. + return NULL; +} + +bool cPluginHello::SetupParse(const char *Name, const char *Value) +{ + // Parse your own setup parameters and store their values. + return false; +} + +VDRPLUGINCREATOR(cPluginHello); // Don't touch this! |