summaryrefslogtreecommitdiff
path: root/skindesigner.c
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-02-12 18:50:58 +0100
committerlouis <louis.braun@gmx.de>2015-02-12 18:50:58 +0100
commit4d7700aecedf475038d57e10f45ab2dd4bcf806f (patch)
tree2fefc56fe77c8f4137187515a5f2b57d78425fea /skindesigner.c
parent00ac852820a09f676157a7b487acf51f4fe95ff4 (diff)
downloadvdr-plugin-skindesigner-4d7700aecedf475038d57e10f45ab2dd4bcf806f.tar.gz
vdr-plugin-skindesigner-4d7700aecedf475038d57e10f45ab2dd4bcf806f.tar.bz2
plugin interface
Diffstat (limited to 'skindesigner.c')
-rw-r--r--skindesigner.c30
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;