summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorphintuka <phintuka>2008-03-24 20:29:37 +0000
committerphintuka <phintuka>2008-03-24 20:29:37 +0000
commite88f61e1a23fa64c044f54ae3e5427424ccfa583 (patch)
treec11e9074e8c482edee6db95f144996be86958d5e
parentfdebda63796c26cd5583d7cb03e45970ac916dfd (diff)
downloadxineliboutput-e88f61e1a23fa64c044f54ae3e5427424ccfa583.tar.gz
xineliboutput-e88f61e1a23fa64c044f54ae3e5427424ccfa583.tar.bz2
Added service interface for launching media player
(Suggested by Tobias Grimm)
-rw-r--r--xineliboutput.c65
1 files changed, 64 insertions, 1 deletions
diff --git a/xineliboutput.c b/xineliboutput.c
index 80de0c72..3e5d42dc 100644
--- a/xineliboutput.c
+++ b/xineliboutput.c
@@ -21,7 +21,7 @@
*
* xineliboutput.c: VDR Plugin interface
*
- * $Id: xineliboutput.c,v 1.25 2007-10-15 00:15:07 phintuka Exp $
+ * $Id: xineliboutput.c,v 1.26 2008-03-24 20:29:37 phintuka Exp $
*
*/
@@ -33,6 +33,7 @@
#include "device.h"
#include "setup_menu.h"
#include "menu.h"
+#include "media_player.h"
#if VDRVERSNUM < 10400
# error VDR versions < 1.4.0 are not supported !
@@ -54,19 +55,29 @@ class cPluginXinelibOutput : public cPlugin
public:
cPluginXinelibOutput(void);
virtual ~cPluginXinelibOutput();
+
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 Initialize(void);
virtual bool Start(void);
virtual void Stop(void);
//virtual void Housekeeping(void);
virtual void MainThreadHook();
+ //virtual cString Active(void);
+ //virtual time_t WakeupTime(void);
+
virtual const char *MainMenuEntry(void) { return xc.hide_main_menu ? NULL : tr(MAINMENUENTRY); }
virtual cOsdObject *MainMenuAction(void);
+
virtual cMenuSetupPage *SetupMenu(void);
virtual bool SetupParse(const char *Name, const char *Value);
+
+ virtual bool Service(const char *Id, void *Data = NULL);
+ //virtual const char **SVDRPHelpPages(void);
+ //virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
};
cPluginXinelibOutput::cPluginXinelibOutput(void)
@@ -210,6 +221,58 @@ bool cPluginXinelibOutput::SetupParse(const char *Name, const char *Value)
return xc.SetupParse(Name, Value);
}
+bool cPluginXinelibOutput::Service(const char *Id, void *Data)
+{
+ if(Id) {
+ char *CData = (char*)Data;
+
+ if(!strcmp(Id, "MediaPlayer-1.0")) {
+ if(CData && *CData) {
+ LOGMSG("Service(%s, %s)", Id, CData);
+ cControl::Launch(new cXinelibPlayerControl(ShowFiles, CData));
+ return true;
+ }
+ LOGMSG("Service(%s) -> true", Id);
+ return true;
+ }
+
+ else if(!strcmp(Id, "MusicPlayer-1.0")) {
+ if(CData && *CData) {
+ LOGMSG("Service(%s, %s)", Id, CData);
+ cControl::Launch(new cXinelibPlayerControl(ShowMusic, CData));
+ return true;
+ }
+ LOGMSG("Service(%s) -> true", Id);
+ return true;
+ }
+
+ else if(!strcmp(Id, "DvdPlayer-1.0")) {
+ if(Data && *CData) {
+ LOGMSG("Service(%s, %s)", Id, CData);
+ cControl::Launch(new cXinelibDvdPlayerControl(CData));
+ return true;
+ }
+ LOGMSG("Service(%s) -> true", Id);
+ return true;
+ }
+
+ else if(!strcmp(Id, "ImagePlayer-1.0")) {
+ if(CData && *CData) {
+ LOGMSG("Service(%s, %s)", Id, CData);
+ char **list = new char*[2];
+ list[0] = strdup(CData);
+ list[1] = NULL;
+ cControl::Launch(new cXinelibImagesControl(list, 0, 1));
+ return true;
+ }
+ LOGMSG("Service(%s) -> true", Id);
+ return true;
+ }
+
+ }
+ return false;
+}
+
extern "C"
void *VDRPluginCreator(void) __attribute__((visibility("default")));