summaryrefslogtreecommitdiffstats
path: root/xbmc/utils/RssManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/utils/RssManager.h')
-rw-r--r--xbmc/utils/RssManager.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/xbmc/utils/RssManager.h b/xbmc/utils/RssManager.h
new file mode 100644
index 0000000..399cfa4
--- /dev/null
+++ b/xbmc/utils/RssManager.h
@@ -0,0 +1,68 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#include "settings/lib/ISettingCallback.h"
12#include "settings/lib/ISettingsHandler.h"
13#include "threads/CriticalSection.h"
14
15#include <map>
16#include <string>
17#include <vector>
18
19class CRssReader;
20class IRssObserver;
21
22typedef struct
23{
24 bool rtl;
25 std::vector<int> interval;
26 std::vector<std::string> url;
27} RssSet;
28typedef std::map<int, RssSet> RssUrls;
29
30class CRssManager : public ISettingCallback, public ISettingsHandler
31{
32public:
33 static CRssManager& GetInstance();
34
35 void OnSettingsLoaded() override;
36 void OnSettingsUnloaded() override;
37
38 void OnSettingAction(std::shared_ptr<const CSetting> setting) override;
39
40 void Start();
41 void Stop();
42 bool Load();
43 bool Reload();
44 void Clear();
45 bool IsActive() const { return m_bActive; }
46
47 bool GetReader(int controlID, int windowID, IRssObserver* observer, CRssReader *&reader);
48 const RssUrls& GetUrls() const { return m_mapRssUrls; }
49
50protected:
51 CRssManager();
52 ~CRssManager() override;
53
54private:
55 CRssManager(const CRssManager&) = delete;
56 CRssManager& operator=(const CRssManager&) = delete;
57 struct READERCONTROL
58 {
59 int controlID;
60 int windowID;
61 CRssReader *reader;
62 };
63
64 std::vector<READERCONTROL> m_readers;
65 RssUrls m_mapRssUrls;
66 bool m_bActive;
67 CCriticalSection m_critical;
68};