00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef NEWSENGINE_H
00023 #define NEWSENGINE_H
00024
00025 #include <qstring.h>
00026 #include <qptrlist.h>
00027 #include <qobject.h>
00028 #include <qdatetime.h>
00029 #include <qcstring.h>
00030
00031 class QUrlOperator;
00032 class QNetworkOperation;
00033 class NewsSite;
00034
00035
00036
00037 class NewsArticle
00038 {
00039 public:
00040
00041 typedef QPtrList<NewsArticle> List;
00042
00043 NewsArticle(NewsSite *parent, const QString& title,
00044 const QString& desc, const QString& artURL,
00045 const QString& thumbnail, const QString& mediaURL,
00046 const QString& enclosure);
00047 ~NewsArticle();
00048
00049 const QString& title() const { return m_title; }
00050 const QString& description() const { return m_desc; }
00051 const QString& articleURL() const { return m_articleURL; }
00052 const QString& thumbnail() const { return m_thumbnail; }
00053 const QString& mediaURL() const { return m_mediaURL; }
00054 const QString& enclosure() const { return m_enclosure; }
00055
00056 private:
00057
00058 QString m_title;
00059 QString m_desc;
00060 NewsSite *m_parent;
00061 QString m_articleURL;
00062 QString m_thumbnail;
00063 QString m_mediaURL;
00064 QString m_enclosure;
00065 QString m_enclosureType;
00066 };
00067
00068
00069
00070 class NewsSite : public QObject
00071 {
00072 Q_OBJECT
00073
00074 public:
00075
00076 enum State {
00077 Retrieving = 0,
00078 RetrieveFailed,
00079 WriteFailed,
00080 Success
00081 };
00082
00083 typedef QPtrList<NewsSite> List;
00084
00085 NewsSite(const QString& name, const QString& url,
00086 const QDateTime& updated);
00087 ~NewsSite();
00088
00089 const QString& url() const;
00090 const QString& name() const;
00091 QString description() const;
00092 const QDateTime& lastUpdated() const;
00093 const QString& imageURL() const;
00094 unsigned int timeSinceLastUpdate() const;
00095
00096 void insertNewsArticle(NewsArticle* item);
00097 void clearNewsArticles();
00098 NewsArticle::List& articleList();
00099
00100 void retrieve();
00101 void stop();
00102 void process();
00103
00104 bool successful() const;
00105 QString errorMsg() const;
00106
00107 private:
00108
00109 QString m_name;
00110 QString m_url;
00111 QString m_desc;
00112 QDateTime m_updated;
00113 QString m_destDir;
00114 QByteArray m_data;
00115 State m_state;
00116 QString m_errorString;
00117 QString m_imageURL;
00118
00119 NewsArticle::List m_articleList;
00120 QUrlOperator *m_urlOp;
00121
00122 void ReplaceHtmlChar( QString &s);
00123
00124 signals:
00125
00126 void finished(NewsSite* item);
00127
00128 private slots:
00129
00130 void slotFinished(QNetworkOperation*);
00131 void slotGotData(const QByteArray& data,
00132 QNetworkOperation* op);
00133 };
00134
00135 #endif