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