MythTV master
newssite.h
Go to the documentation of this file.
1#ifndef NEWSSITE_H
2#define NEWSSITE_H
3
4// C++ headers
5#include <vector>
6
7// QT headers
8#include <QByteArray>
9#include <QDateTime>
10#include <QDomDocument>
11#include <QObject>
12#include <QString>
13#include <QUrl>
14#include <QVariant>
15#include <QRecursiveMutex>
16
17// MythTV headers
19
20// MythNews headers
21#include "newsarticle.h"
22
24{
25 public:
26 using List = std::vector<NewsSiteItem>;
27
28 QString m_name;
29 QString m_category;
30 QString m_url;
31 QString m_ico;
32 bool m_inDB { false };
33 bool m_podcast { false };
34};
36
38{
39 public:
40 using List = std::vector<NewsCategory>;
41
42 QString m_name;
44
45 void clear(void) { m_siteList.clear(); }
46};
48
49class NewsSite;
50class NewsSite : public QObject
51{
52 Q_OBJECT
53
54 public:
55
56 enum State : std::uint8_t {
61 };
62
63 class List : public std::vector<NewsSite*>
64 {
65 public:
66 void clear(void)
67 {
68 while (!empty())
69 {
70 NewsSite *tmp = back();
71 pop_back();
72 tmp->deleteLater();
73 }
74 }
75 };
76
77 NewsSite(QString name, const QString &url,
78 QDateTime updated, bool podcast);
79 virtual void deleteLater();
80
81 void customEvent(QEvent *event) override; // QObject
82
83 QString url(void) const;
84 QString name(void) const;
85 QString sortName(void) const;
86 QString description(void) const;
87 QDateTime lastUpdated(void) const;
88 QString imageURL(void) const;
89 bool podcast(void) const;
90 std::chrono::minutes timeSinceLastUpdate(void) const;
91
92 void insertNewsArticle(const NewsArticle &item);
93 void clearNewsArticles(void);
94
96
97 void retrieve(void);
98 void stop(void);
99 void process(void);
100 void parseRSS(const QDomDocument& domDoc);
101 void parseAtom(const QDomDocument& domDoc);
102 static bool sortByName(NewsSite *a, NewsSite *b)
103 { return StringUtil::naturalCompare(a->m_sortName, b->m_sortName) < 0; }
104
105 bool successful(void) const;
106 QString errorMsg(void) const;
107
108 private:
109 ~NewsSite() override;
110
111 mutable QRecursiveMutex m_lock;
112 QString m_name;
113 QString m_sortName;
114 QString m_url;
116 QString m_desc;
117 QDateTime m_updated;
118 QString m_destDir;
119 QByteArray m_data;
123 QString m_imageURL;
125
127 static QString ReplaceHtmlChar(const QString &orig);
128
129 signals:
130
131 void finished(NewsSite *item);
132};
134
135#endif // NEWSSITE_H
std::vector< NewsArticle > List
Definition: newsarticle.h:13
void clear(void)
Definition: newssite.h:45
NewsSiteItem::List m_siteList
Definition: newssite.h:43
QString m_name
Definition: newssite.h:42
std::vector< NewsCategory > List
Definition: newssite.h:40
bool m_podcast
Definition: newssite.h:33
QString m_category
Definition: newssite.h:29
bool m_inDB
Definition: newssite.h:32
std::vector< NewsSiteItem > List
Definition: newssite.h:26
QString m_name
Definition: newssite.h:28
QString m_ico
Definition: newssite.h:31
QString m_url
Definition: newssite.h:30
void clear(void)
Definition: newssite.h:66
bool m_podcast
Definition: newssite.h:124
void insertNewsArticle(const NewsArticle &item)
Definition: newssite.cpp:46
QString m_name
Definition: newssite.h:112
~NewsSite() override
Definition: newssite.cpp:39
QString imageURL(void) const
Definition: newssite.cpp:128
void stop(void)
Definition: newssite.cpp:71
void parseAtom(const QDomDocument &domDoc)
Definition: newssite.cpp:457
QUrl m_urlReq
Definition: newssite.h:115
static bool sortByName(NewsSite *a, NewsSite *b)
Definition: newssite.h:102
QString m_destDir
Definition: newssite.h:118
QString m_url
Definition: newssite.h:114
bool podcast(void) const
Definition: newssite.cpp:108
NewsSite(QString name, const QString &url, QDateTime updated, bool podcast)
Definition: newssite.cpp:19
NewsArticle::List m_articleList
Definition: newssite.h:126
QString m_errorString
Definition: newssite.h:121
QString errorMsg(void) const
Definition: newssite.cpp:84
QString sortName(void) const
Definition: newssite.cpp:102
NewsArticle::List GetArticleList(void) const
Definition: newssite.cpp:134
QString m_sortName
Definition: newssite.h:113
State m_state
Definition: newssite.h:120
void parseRSS(const QDomDocument &domDoc)
Definition: newssite.cpp:301
void customEvent(QEvent *event) override
Definition: newssite.cpp:155
QRecursiveMutex m_lock
Definition: newssite.h:111
bool successful(void) const
Definition: newssite.cpp:78
void finished(NewsSite *item)
QString name(void) const
Definition: newssite.cpp:96
void retrieve(void)
Definition: newssite.cpp:58
QDateTime m_updated
Definition: newssite.h:117
QString m_updateErrorString
Definition: newssite.h:122
QDateTime lastUpdated(void) const
Definition: newssite.cpp:140
static QString ReplaceHtmlChar(const QString &orig)
Definition: newssite.cpp:488
QString m_imageURL
Definition: newssite.h:123
@ WriteFailed
Definition: newssite.h:59
@ Retrieving
Definition: newssite.h:57
@ Success
Definition: newssite.h:60
@ RetrieveFailed
Definition: newssite.h:58
virtual void deleteLater()
Definition: newssite.cpp:30
QString url(void) const
Definition: newssite.cpp:90
QString m_desc
Definition: newssite.h:116
std::chrono::minutes timeSinceLastUpdate(void) const
Definition: newssite.cpp:146
QByteArray m_data
Definition: newssite.h:119
void clearNewsArticles(void)
Definition: newssite.cpp:52
QString description(void) const
Definition: newssite.cpp:114
void process(void)
Definition: newssite.cpp:221
static guint32 * back
Definition: goom_core.cpp:25
static guint32 * tmp
Definition: goom_core.cpp:26
Q_DECLARE_METATYPE(std::chrono::seconds)
MBASE_PUBLIC int naturalCompare(const QString &_a, const QString &_b, Qt::CaseSensitivity caseSensitivity=Qt::CaseSensitive)
This method chops the input a and b into pieces of digits and non-digits (a1.05 becomes a | 1 | .
Definition: stringutil.cpp:160