kodi
RssManager.h
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 
19 class CRssReader;
20 class IRssObserver;
21 
22 typedef struct
23 {
24  bool rtl;
25  std::vector<int> interval;
26  std::vector<std::string> url;
27 } RssSet;
28 typedef std::map<int, RssSet> RssUrls;
29 
31 {
32 public:
33  static CRssManager& GetInstance();
34 
35  void OnSettingsLoaded() override;
36  void OnSettingsUnloaded() override;
37 
38  void OnSettingAction(const 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 
50 protected:
51  CRssManager();
52  ~CRssManager() override;
53 
54 private:
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 };
void OnSettingsUnloaded() override
Setting values have been unloaded.
Definition: RssManager.cpp:53
Definition: ISettingCallback.h:16
Definition: RssReader.h:25
Interface defining methods being called by the settings system if an action is performed on multiple/...
Definition: ISettingsHandler.h:16
Definition: RssManager.h:22
void OnSettingsLoaded() override
Settings have been loaded.
Definition: RssManager.cpp:48
void OnSettingAction(const std::shared_ptr< const CSetting > &setting) override
The given setting has been activated.
Definition: RssManager.cpp:58
Definition: RssManager.h:30
Definition: IRssObserver.h:16