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
18 #include <libmythbase/stringutil.h>
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 
49 class NewsSite;
50 class NewsSite : public QObject
51 {
52  Q_OBJECT
53 
54  public:
55 
56  enum State {
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;
115  QUrl m_urlReq;
116  QString m_desc;
117  QDateTime m_updated;
118  QString m_destDir;
119  QByteArray m_data;
121  QString m_errorString;
123  QString m_imageURL;
124  bool m_podcast;
125 
127  static QString ReplaceHtmlChar(const QString &orig);
128 
129  signals:
130 
131  void finished(NewsSite *item);
132 };
134 
135 #endif // NEWSSITE_H
NewsSite::Success
@ Success
Definition: newssite.h:60
NewsSite::stop
void stop(void)
Definition: newssite.cpp:71
NewsSite::url
QString url(void) const
Definition: newssite.cpp:90
NewsSite::imageURL
QString imageURL(void) const
Definition: newssite.cpp:128
NewsSiteItem::m_inDB
bool m_inDB
Definition: newssite.h:32
NewsCategory
Definition: newssite.h:37
NewsSite::RetrieveFailed
@ RetrieveFailed
Definition: newssite.h:58
NewsSite::podcast
bool podcast(void) const
Definition: newssite.cpp:108
back
static guint32 * back
Definition: goom_core.cpp:25
NewsSite::List::clear
void clear(void)
Definition: newssite.h:66
NewsSiteItem::m_category
QString m_category
Definition: newssite.h:29
NewsSite::customEvent
void customEvent(QEvent *event) override
Definition: newssite.cpp:155
NewsSite::finished
void finished(NewsSite *item)
NewsCategory::m_siteList
NewsSiteItem::List m_siteList
Definition: newssite.h:43
NewsSite::description
QString description(void) const
Definition: newssite.cpp:114
NewsSite::m_data
QByteArray m_data
Definition: newssite.h:119
NewsCategory::List
std::vector< NewsCategory > List
Definition: newssite.h:40
NewsSiteItem::m_podcast
bool m_podcast
Definition: newssite.h:33
NewsSite::sortByName
static bool sortByName(NewsSite *a, NewsSite *b)
Definition: newssite.h:102
NewsSite::m_articleList
NewsArticle::List m_articleList
Definition: newssite.h:126
NewsSite::ReplaceHtmlChar
static QString ReplaceHtmlChar(const QString &orig)
Definition: newssite.cpp:488
tmp
static guint32 * tmp
Definition: goom_core.cpp:26
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(StandardSetting *)
NewsSite::Retrieving
@ Retrieving
Definition: newssite.h:57
NewsSiteItem
Definition: newssite.h:23
NewsSite::m_urlReq
QUrl m_urlReq
Definition: newssite.h:115
NewsSite::m_destDir
QString m_destDir
Definition: newssite.h:118
NewsCategory::clear
void clear(void)
Definition: newssite.h:45
NewsSite::m_updateErrorString
QString m_updateErrorString
Definition: newssite.h:122
NewsSite::m_podcast
bool m_podcast
Definition: newssite.h:124
NewsSite::m_state
State m_state
Definition: newssite.h:120
NewsSite::m_lock
QRecursiveMutex m_lock
Definition: newssite.h:111
NewsSiteItem::m_url
QString m_url
Definition: newssite.h:30
NewsArticle
Definition: newsarticle.h:10
NewsSite::WriteFailed
@ WriteFailed
Definition: newssite.h:59
NewsSite::errorMsg
QString errorMsg(void) const
Definition: newssite.cpp:84
NewsSite::m_imageURL
QString m_imageURL
Definition: newssite.h:123
NewsSite::timeSinceLastUpdate
std::chrono::minutes timeSinceLastUpdate(void) const
Definition: newssite.cpp:146
StringUtil::naturalCompare
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
NewsSite::clearNewsArticles
void clearNewsArticles(void)
Definition: newssite.cpp:52
stringutil.h
NewsSite::name
QString name(void) const
Definition: newssite.cpp:96
NewsSite::lastUpdated
QDateTime lastUpdated(void) const
Definition: newssite.cpp:140
NewsSite::GetArticleList
NewsArticle::List GetArticleList(void) const
Definition: newssite.cpp:134
NewsSite::State
State
Definition: newssite.h:56
NewsSite::m_errorString
QString m_errorString
Definition: newssite.h:121
NewsSite
Definition: newssite.h:50
NewsSiteItem::m_name
QString m_name
Definition: newssite.h:28
NewsSite::process
void process(void)
Definition: newssite.cpp:221
NewsSite::List
Definition: newssite.h:63
NewsArticle::List
std::vector< NewsArticle > List
Definition: newsarticle.h:13
NewsSite::m_name
QString m_name
Definition: newssite.h:112
NewsSite::retrieve
void retrieve(void)
Definition: newssite.cpp:58
NewsSite::deleteLater
virtual void deleteLater()
Definition: newssite.cpp:30
NewsSite::m_url
QString m_url
Definition: newssite.h:114
NewsSite::m_desc
QString m_desc
Definition: newssite.h:116
NewsSite::insertNewsArticle
void insertNewsArticle(const NewsArticle &item)
Definition: newssite.cpp:46
NewsSite::~NewsSite
~NewsSite() override
Definition: newssite.cpp:39
NewsSite::NewsSite
NewsSite(QString name, const QString &url, QDateTime updated, bool podcast)
Definition: newssite.cpp:19
NewsSiteItem::m_ico
QString m_ico
Definition: newssite.h:31
NewsSite::m_sortName
QString m_sortName
Definition: newssite.h:113
NewsSiteItem::List
std::vector< NewsSiteItem > List
Definition: newssite.h:26
NewsCategory::m_name
QString m_name
Definition: newssite.h:42
NewsSite::m_updated
QDateTime m_updated
Definition: newssite.h:117
NewsSite::parseAtom
void parseAtom(const QDomDocument &domDoc)
Definition: newssite.cpp:457
newsarticle.h
NewsSite::successful
bool successful(void) const
Definition: newssite.cpp:78
NewsSite::parseRSS
void parseRSS(const QDomDocument &domDoc)
Definition: newssite.cpp:301
NewsSite::sortName
QString sortName(void) const
Definition: newssite.cpp:102