[PVR][Estuary] Timer settings dialog: Show client name in timer type selection dialog...
[xbmc.git] / xbmc / interfaces / AnnouncementManager.h
blob44b6d97071a3d527d9f6ebef352b5c6aaa141a44
1 /*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #pragma once
11 #include "IAnnouncer.h"
12 #include "threads/CriticalSection.h"
13 #include "threads/Event.h"
14 #include "threads/Thread.h"
15 #include "utils/Variant.h"
17 #include <list>
18 #include <memory>
19 #include <vector>
21 class CFileItem;
22 class CVariant;
24 namespace ANNOUNCEMENT
26 class CAnnouncementManager : public CThread
28 public:
29 CAnnouncementManager();
30 ~CAnnouncementManager() override;
32 void Start();
33 void Deinitialize();
35 void AddAnnouncer(IAnnouncer *listener);
36 void RemoveAnnouncer(IAnnouncer *listener);
38 void Announce(AnnouncementFlag flag, const std::string& message);
39 void Announce(AnnouncementFlag flag, const std::string& message, const CVariant& data);
40 void Announce(AnnouncementFlag flag,
41 const std::string& message,
42 const std::shared_ptr<const CFileItem>& item);
43 void Announce(AnnouncementFlag flag,
44 const std::string& message,
45 const std::shared_ptr<const CFileItem>& item,
46 const CVariant& data);
48 void Announce(AnnouncementFlag flag, const std::string& sender, const std::string& message);
49 void Announce(AnnouncementFlag flag,
50 const std::string& sender,
51 const std::string& message,
52 const CVariant& data);
53 void Announce(AnnouncementFlag flag,
54 const std::string& sender,
55 const std::string& message,
56 const std::shared_ptr<const CFileItem>& item,
57 const CVariant& data);
59 // The sender is not related to the application name.
60 // Also it's part of Kodi's API - changing it will break
61 // a big number of python addons and third party json consumers.
62 static const std::string ANNOUNCEMENT_SENDER;
64 protected:
65 void Process() override;
66 void DoAnnounce(AnnouncementFlag flag,
67 const std::string& sender,
68 const std::string& message,
69 const std::shared_ptr<CFileItem>& item,
70 const CVariant& data);
71 void DoAnnounce(AnnouncementFlag flag,
72 const std::string& sender,
73 const std::string& message,
74 const CVariant& data);
76 struct CAnnounceData
78 AnnouncementFlag flag;
79 std::string sender;
80 std::string message;
81 std::shared_ptr<CFileItem> item;
82 CVariant data;
84 std::list<CAnnounceData> m_announcementQueue;
85 CEvent m_queueEvent;
87 private:
88 CAnnouncementManager(const CAnnouncementManager&) = delete;
89 CAnnouncementManager const& operator=(CAnnouncementManager const&) = delete;
91 CCriticalSection m_announcersCritSection;
92 CCriticalSection m_queueCritSection;
93 std::vector<IAnnouncer *> m_announcers;