📄 hello.c
字号:
/* * 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.15 2008/03/18 17:13:25 kls Exp $ */#include <getopt.h>#include <stdlib.h>#include <vdr/i18n.h>#include <vdr/interface.h>#include <vdr/plugin.h>static const char *VERSION = "0.2.2";static const char *DESCRIPTION = trNOOP("A friendly greeting");static const char *MAINMENUENTRY = trNOOP("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 bool Start(void); virtual void Housekeeping(void); virtual const char *MainMenuEntry(void) { return tr(MAINMENUENTRY); } virtual cOsdObject *MainMenuAction(void); virtual cMenuSetupPage *SetupMenu(void); virtual bool SetupParse(const char *Name, const char *Value); };// Global variables that control the overall behaviour:int GreetingTime = 3;int UseAlternateGreeting = false;// --- cMenuSetupHello -------------------------------------------------------class cMenuSetupHello : public cMenuSetupPage {private: int newGreetingTime; int newUseAlternateGreeting;protected: virtual void Store(void);public: cMenuSetupHello(void); };cMenuSetupHello::cMenuSetupHello(void){ newGreetingTime = GreetingTime; newUseAlternateGreeting = UseAlternateGreeting; Add(new cMenuEditIntItem( tr("Greeting time (s)"), &newGreetingTime)); Add(new cMenuEditBoolItem(tr("Use alternate greeting"), &newUseAlternateGreeting));}void cMenuSetupHello::Store(void){ SetupStore("GreetingTime", GreetingTime = newGreetingTime); SetupStore("UseAlternateGreeting", UseAlternateGreeting = newUseAlternateGreeting);}// --- cPluginHello ----------------------------------------------------------cPluginHello::cPluginHello(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! 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;}bool cPluginHello::Start(void){ // Start any background activities the plugin shall perform. return true;}void cPluginHello::Housekeeping(void){ // Perform any cleanup or other regular tasks.}cOsdObject *cPluginHello::MainMenuAction(void){ // Perform the action when selected from the main VDR menu. Interface->Confirm(UseAlternateGreeting ? tr("Howdy folks!") : tr("Hello world!"), GreetingTime); return NULL;}cMenuSetupPage *cPluginHello::SetupMenu(void){ // Return a setup menu in case the plugin supports one. return new cMenuSetupHello;}bool cPluginHello::SetupParse(const char *Name, const char *Value){ // Parse your own setup parameters and store their values. if (!strcasecmp(Name, "GreetingTime")) GreetingTime = atoi(Value); else if (!strcasecmp(Name, "UseAlternateGreeting")) UseAlternateGreeting = atoi(Value); else return false; return true;}VDRPLUGINCREATOR(cPluginHello); // Don't touch this!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -