diff options
| author | louis <louis.braun@gmx.de> | 2014-11-15 09:47:22 +0100 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2014-11-15 09:47:22 +0100 |
| commit | be3b49f695ca8cffef906d893fb2f6f205f75898 (patch) | |
| tree | 5d10d1e1e481e22eaf84ef1d78e6625dca35377f /skindesigner.c | |
| parent | 7e7d7c994caa612f8520a772c8dcc964a5207414 (diff) | |
| download | vdr-plugin-skindesigner-be3b49f695ca8cffef906d893fb2f6f205f75898.tar.gz vdr-plugin-skindesigner-be3b49f695ca8cffef906d893fb2f6f205f75898.tar.bz2 | |
added Plugin Interface
Diffstat (limited to 'skindesigner.c')
| -rw-r--r-- | skindesigner.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/skindesigner.c b/skindesigner.c index c2f499a..daa7190 100644 --- a/skindesigner.c +++ b/skindesigner.c @@ -12,7 +12,7 @@ #include "config.h" #include "designer.h" #include "setup.h" - +#include "services.h" #if defined(APIVERSNUM) && APIVERSNUM < 20000 #error "VDR-2.0.0 API version or greater is required!" @@ -150,6 +150,34 @@ bool cPluginSkinDesigner::SetupParse(const char *Name, const char *Value) { } bool cPluginSkinDesigner::Service(const char *Id, void *Data) { + if (Data == NULL) + return false; + + if (strcmp(Id, "RegisterPlugin") == 0) { + RegisterPlugin* call = (RegisterPlugin*) Data; + if (call->menus.size() < 1) { + esyslog("skindesigner: error - plugin without menus registered"); + return false; + } + config.AddPlugin(call->name, call->menus); + dsyslog("skindesigner: plugin %s has registered %d templates", call->name.c_str(), call->menus.size()); + return true; + } else if (strcmp(Id, "GetDisplayMenu") == 0) { + GetDisplayMenu* call = (GetDisplayMenu*) Data; + cSkin *current = Skins.Current(); + for (vector<cSkinDesigner*>::iterator skin = skins.begin(); skin != skins.end(); skin++) { + if (*skin == current) { + cSDDisplayMenu *displayMenu = (*skin)->GetDisplayMenu(); + if (displayMenu) { + call->displayMenu = displayMenu; + return true; + } else + return false; + } + } + return false; + } + return false; } |
