diff options
| author | louis <louis.braun@gmx.de> | 2015-02-12 18:50:58 +0100 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2015-02-12 18:50:58 +0100 |
| commit | 4d7700aecedf475038d57e10f45ab2dd4bcf806f (patch) | |
| tree | 2fefc56fe77c8f4137187515a5f2b57d78425fea /skindesigner.c | |
| parent | 00ac852820a09f676157a7b487acf51f4fe95ff4 (diff) | |
| download | vdr-plugin-skindesigner-4d7700aecedf475038d57e10f45ab2dd4bcf806f.tar.gz vdr-plugin-skindesigner-4d7700aecedf475038d57e10f45ab2dd4bcf806f.tar.bz2 | |
plugin interface
Diffstat (limited to 'skindesigner.c')
| -rw-r--r-- | skindesigner.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/skindesigner.c b/skindesigner.c index b641cd8..dff54a7 100644 --- a/skindesigner.c +++ b/skindesigner.c @@ -162,13 +162,17 @@ bool cPluginSkinDesigner::Service(const char *Id, void *Data) { return false; if (strcmp(Id, "RegisterPlugin") == 0) { - RegisterPlugin* call = (RegisterPlugin*) Data; - if (call->menus.size() < 1) { - esyslog("skindesigner: error - plugin without menus registered"); + RegisterPlugin *call = (RegisterPlugin*) Data; + if (call->menus.size() < 1 && call->views.size() < 1) { + esyslog("skindesigner: error - plugin without menus or views registered"); return false; } - config.AddPlugin(call->name, call->menus); - dsyslog("skindesigner: plugin %s has registered %ld templates", call->name.c_str(), call->menus.size()); + config.AddPluginMenus(call->name, call->menus); + config.AddPluginViews(call->name, call->views, call->viewElements, call->viewGrids); + if (call->menus.size() > 0) + dsyslog("skindesigner: plugin %s has registered %ld menus", call->name.c_str(), call->menus.size()); + if (call->views.size() > 0) + dsyslog("skindesigner: plugin %s has registered %ld views", call->name.c_str(), call->views.size()); return true; } else if (strcmp(Id, "GetDisplayMenu") == 0) { GetDisplayMenu* call = (GetDisplayMenu*) Data; @@ -184,6 +188,22 @@ bool cPluginSkinDesigner::Service(const char *Id, void *Data) { } } return false; + } else if (strcmp(Id, "GetDisplayPlugin") == 0) { + GetDisplayPlugin* call = (GetDisplayPlugin*) Data; + if (call->pluginName.size() == 0 || call->viewID < 0) + return false; + cSkin *current = Skins.Current(); + for (vector<cSkinDesigner*>::iterator skin = skins.begin(); skin != skins.end(); skin++) { + if (*skin == current) { + cSkinDisplayPlugin *displayPlugin = (*skin)->DisplayPlugin(call->pluginName, call->viewID); + if (displayPlugin) { + call->displayPlugin = displayPlugin; + return true; + } else + return false; + } + } + return false; } return false; |
