-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfeeddata.h
79 lines (69 loc) · 2.27 KB
/
feeddata.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#ifndef FEEDDATA_H
#define FEEDDATA_H
#include <QObject>
#include <QUrl>
#include <QString>
#include <QSet>
#include <QMutex>
class IFeedInformationFetcher;
class FeedData : public QObject
{
Q_OBJECT
Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
Q_PROPERTY(QString dir READ dir WRITE setDir NOTIFY dirChanged)
Q_PROPERTY(QString prefix READ prefix WRITE setPrefix NOTIFY prefixChanged)
Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
Q_PROPERTY(bool empty READ empty WRITE setEmpty NOTIFY emptyChanged)
Q_PROPERTY(bool isAggregateStub READ isAggregateStub WRITE setIsAggregateStub NOTIFY isAggregateStubChanged)
public:
FeedData(QObject* parent = nullptr);
FeedData(QString feedTitle, QString feedUrl, QString feedDir, QString feedPrefix, QObject *parent);
void addProcessedGuid(const QString &guid);
bool isContainsAmongProcessed(const QString& guid);
QSet<QString> getProcessedGuids();
QUrl url() const;
QString dir() const;
QString prefix() const;
QString title() const;
bool empty() const;
bool isAggregateStub() const;
virtual void queueFeedToFetch(IFeedInformationFetcher* fetcher);
public slots:
void setUrl(QUrl arg);
void setDir(QString arg);
void setPrefix(QString arg);
void setTitle(QString arg);
void setEmpty(bool arg);
void setIsAggregateStub(bool arg);
signals:
void urlChanged(QUrl arg, FeedData* feed);
void dirChanged(QString arg);
void prefixChanged(QString arg);
void titleChanged(QString arg);
void emptyChanged(bool arg);
void isAggregateStubChanged(bool arg);
private:
QSet<QString> _processedGuids;
QMutex _mutex;
QUrl _url;
QString _dir;
QString _prefix;
QString _title;
bool _empty;
bool _isAggregateStub;
};
class FeedDataAggregate : public FeedData {
Q_OBJECT
public:
FeedDataAggregate(QObject* parent = nullptr);
FeedDataAggregate(QString feedTitle, QString feedUrl, QString feedDir, QString feedPrefix, QObject *parent);
// FeedData interface
public:
void queueFeedToFetch(IFeedInformationFetcher *fetcher);
public slots:
void addFeed(FeedData* feed);
void removeFeed(FeedData* feed);
private:
QList<FeedData*> _agregatedFeeds;
};
#endif // FEEDDATA_H