diff options
-rw-r--r-- | xbmc/pictures/GUIWindowSlideShow.cpp | 18 | ||||
-rw-r--r-- | xbmc/pictures/GUIWindowSlideShow.h | 11 |
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; |