aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/pictures/GUIWindowSlideShow.cpp18
-rw-r--r--xbmc/pictures/GUIWindowSlideShow.h11
2 files changed, 28 insertions, 1 deletions
diff --git a/xbmc/pictures/GUIWindowSlideShow.cpp b/xbmc/pictures/GUIWindowSlideShow.cpp
index 6dc76a5c9a..fbe77a374f 100644
--- a/xbmc/pictures/GUIWindowSlideShow.cpp
+++ b/xbmc/pictures/GUIWindowSlideShow.cpp
@@ -152,12 +152,30 @@ CGUIWindowSlideShow::CGUIWindowSlideShow(void)
m_loadType = KEEP_IN_MEMORY;
m_bLoadNextPic = false;
CServiceBroker::GetSlideShowDelegator().SetDelegate(this);
+ CServiceBroker::GetAnnouncementManager()->AddAnnouncer(this);
Reset();
}
CGUIWindowSlideShow::~CGUIWindowSlideShow()
{
CServiceBroker::GetSlideShowDelegator().ResetDelegate();
+ CServiceBroker::GetAnnouncementManager()->RemoveAnnouncer(this);
+}
+
+void CGUIWindowSlideShow::Announce(ANNOUNCEMENT::AnnouncementFlag flag,
+ const std::string& sender,
+ const std::string& message,
+ const CVariant& data)
+{
+ if (flag & ANNOUNCEMENT::Player)
+ {
+ if (message == "OnPlay" || message == "OnResume")
+ {
+ if (data.isMember("player") && data["player"].isMember("playerid") &&
+ data["player"]["playerid"] == static_cast<int>(PLAYLIST::Id::TYPE_VIDEO))
+ Close();
+ }
+ }
}
void CGUIWindowSlideShow::AnnouncePlayerPlay(const CFileItemPtr& item)
diff --git a/xbmc/pictures/GUIWindowSlideShow.h b/xbmc/pictures/GUIWindowSlideShow.h
index 0033a39667..5c6e82268a 100644
--- a/xbmc/pictures/GUIWindowSlideShow.h
+++ b/xbmc/pictures/GUIWindowSlideShow.h
@@ -10,6 +10,7 @@
#include "SlideShowPicture.h"
#include "guilib/GUIDialog.h"
+#include "interfaces/IAnnouncer.h"
#include "interfaces/ISlideShowDelegate.h"
#include "threads/Event.h"
#include "threads/Thread.h"
@@ -48,7 +49,9 @@ private:
CGUIWindowSlideShow* m_pCallback = nullptr;
};
-class CGUIWindowSlideShow : public CGUIDialog, public ISlideShowDelegate
+class CGUIWindowSlideShow : public CGUIDialog,
+ public ISlideShowDelegate,
+ public ANNOUNCEMENT::IAnnouncer
{
public:
CGUIWindowSlideShow(void);
@@ -87,6 +90,12 @@ public:
void Shuffle() override;
int GetDirection() const override { return m_iDirection; }
+ // implementation of IAnnouncer
+ void Announce(ANNOUNCEMENT::AnnouncementFlag flag,
+ const std::string& sender,
+ const std::string& message,
+ const CVariant& data) override;
+
bool OnMessage(CGUIMessage& message) override;
EVENT_RESULT OnMouseEvent(const CPoint& point, const KODI::MOUSE::CMouseEvent& event) override;
bool OnAction(const CAction& action) override;