1 // For license of this file, see <project-root-folder>/LICENSE.md.
2 
3 #ifndef GREADERSERVICEROOT_H
4 #define GREADERSERVICEROOT_H
5 
6 #include "services/abstract/cacheforserviceroot.h"
7 #include "services/abstract/serviceroot.h"
8 
9 class GreaderNetwork;
10 
11 class GreaderServiceRoot : public ServiceRoot, public CacheForServiceRoot {
12   Q_OBJECT
13 
14   public:
15     enum class Service {
16       FreshRss = 1,
17       TheOldReader = 2,
18       Bazqux = 4,
19       Reedah = 8,
20       Inoreader = 16,
21       Other = 1024
22     };
23 
24     explicit GreaderServiceRoot(RootItem* parent = nullptr);
25 
26     virtual bool isSyncable() const;
27     virtual bool canBeEdited() const;
28     virtual bool editViaGui();
29     virtual void start(bool freshly_activated);
30     virtual QString code() const;
31     virtual void saveAllCachedData(bool ignore_errors);
32     virtual LabelOperation supportedLabelOperations() const;
33     virtual QVariantHash customDatabaseData() const;
34     virtual void setCustomDatabaseData(const QVariantHash& data);
35     virtual void aboutToBeginFeedFetching(const QList<Feed*>& feeds,
36                                           const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_messages,
37                                           const QHash<QString, QStringList>& tagged_messages);
38     virtual QList<Message> obtainNewMessages(Feed* feed,
39                                              const QHash<ServiceRoot::BagOfMessages, QStringList>& stated_messages,
40                                              const QHash<QString, QStringList>& tagged_messages);
41     virtual bool wantsBaggedIdsOfExistingMessages() const;
42 
43     GreaderNetwork* network() const;
44 
45     static QString serviceToString(Service service);
46 
47   protected:
48     virtual RootItem* obtainNewTreeForSyncIn() const;
49 
50   private:
51     void updateTitleIcon();
52 
53   private:
54     GreaderNetwork* m_network;
55 };
56 
Q_DECLARE_METATYPE(GreaderServiceRoot::Service)57 Q_DECLARE_METATYPE(GreaderServiceRoot::Service)
58 
59 inline GreaderNetwork* GreaderServiceRoot::network() const {
60   return m_network;
61 }
62 
63 #endif // GREADERSERVICEROOT_H
64