summaryrefslogtreecommitdiff
path: root/image.c
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2006-01-29 19:05:18 +0000
committerAndreas Brachold <vdr07@deltab.de>2006-01-29 19:05:18 +0000
commit9eb107e0b73ebdc46e1f126d8612961fed28a19b (patch)
treea74d32923af52056e526a3dbd103a77254a352f2 /image.c
parent58239a47c37e4b4aaf6c85402949bbd7f34647ed (diff)
downloadvdr-plugin-image-9eb107e0b73ebdc46e1f126d8612961fed28a19b.tar.gz
vdr-plugin-image-9eb107e0b73ebdc46e1f126d8612961fed28a19b.tar.bz2
- Add service wrapper
- Remove unnecessary DVBDIR from Makefile - Rename README.de to LIESMICH
Diffstat (limited to 'image.c')
-rw-r--r--image.c54
1 files changed, 53 insertions, 1 deletions
diff --git a/image.c b/image.c
index 29a45a6..6ddca0f 100644
--- a/image.c
+++ b/image.c
@@ -32,6 +32,7 @@
#include "setup-image.h"
#include "data-image.h"
#include "menu-image.h"
+#include "control-image.h"
#include "i18n.h"
#include "commands.h"
#include "liboutput/encode.h"
@@ -41,7 +42,11 @@ static const char *DESCRIPTION = "A Image Viewer plugin";
static const char *MAINMENUENTRY = "Image";
class cPluginImage : public cPlugin {
+ cDirItem* m_pServiceDirItem;
+ cFileSource* m_pServiceFileSource;
+
public:
+ cPluginImage();
virtual ~cPluginImage();
virtual const char *Version(void) { return VERSION; }
virtual const char *Description(void) { return tr(DESCRIPTION); }
@@ -52,7 +57,10 @@ public:
virtual cOsdMenu *MainMenuAction(void);
virtual cMenuSetupPage *SetupMenu(void);
virtual bool SetupParse(const char *Name, const char *Value);
- };
+ virtual bool Service(const char *Id, void *Data);
+private:
+ void RemoveServiceSource();
+};
bool cPluginImage::SetupParse(const char *szName, const char *szValue)
{
@@ -117,11 +125,30 @@ bool cPluginImage::Start(void)
return true;
}
+cPluginImage::cPluginImage()
+{
+ m_pServiceDirItem = NULL;
+ m_pServiceFileSource = NULL;
+}
+
cPluginImage::~cPluginImage()
{
cEncode::UnRegister();
+ RemoveServiceSource();
}
+void cPluginImage::RemoveServiceSource()
+{
+ if(m_pServiceDirItem) {
+ delete m_pServiceDirItem;
+ m_pServiceDirItem = NULL;
+ }
+ if(m_pServiceFileSource)
+ {
+ delete m_pServiceFileSource;
+ m_pServiceFileSource = NULL;
+ }
+}
cOsdMenu *cPluginImage::MainMenuAction(void)
{
@@ -133,5 +160,30 @@ cMenuSetupPage *cPluginImage::SetupMenu(void)
return new cMenuSetupImage;
}
+bool cPluginImage::Service(const char *Id, void *Data = NULL)
+{
+ if (Id && strcmp(Id, "Image-ShowImage-v1.0") == 0) {
+ if (Data == NULL)
+ return true;
+ char* Basedir=strdup((char*)Data);
+ char* Name=strrchr(Basedir, '/');
+ if(Name==NULL)
+ return false;
+ *Name++='\0';
+ RemoveServiceSource();
+ m_pServiceFileSource=new cFileSource(Basedir, "called via Service()", false);
+ m_pServiceDirItem=new cDirItem(m_pServiceFileSource, NULL, Name, itFile);
+ cSlideShow *newss = new cSlideShow(m_pServiceDirItem);
+ free(Basedir);
+ if(newss->Load() && newss->Count()) {
+ cImageControl::SetSlideShow(newss);
+ return true;
+ }
+ delete newss;
+ RemoveServiceSource();
+ }
+ return false;
+}
+
VDRPLUGINCREATOR(cPluginImage); // Don't touch this!