From 5d8d6fed3fd7dd796a5a3093a7dbd46fab8d380a Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Thu, 4 Apr 2013 00:00:38 +0200 Subject: pass Board objects instead of boardUrls around QML --- board.h | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) (limited to 'board.h') diff --git a/board.h b/board.h index deb1dfb..588219c 100644 --- a/board.h +++ b/board.h @@ -3,10 +3,11 @@ #include #include -#include #include #include #include +#include +#include #include class Action; @@ -15,22 +16,36 @@ class XmlRpcInterface; class Board : public QObject { Q_OBJECT + Q_PROPERTY(bool busy READ busy NOTIFY busyChanged) + Q_PROPERTY(bool loggedIn READ loggedIn NOTIFY loggedInChanged) + Q_PROPERTY(int rootForumId READ rootForumId CONSTANT) + public: - explicit Board(const QString& boardUrl, QObject *parent = 0); + explicit Board(QObject *parent = 0); + Board(const QUrl& url, const QString& username, const QString& password, QObject *parent = 0); ~Board(); static const QLatin1String CURRENT_DB_VERSION; bool busy() const; + void enqueueAction(Action* action); QSqlDatabase database(); XmlRpcInterface *service(); + int rootForumId() const; + // Configuration table QString getConfig(const QString& key) const; void setConfig(const QString& key, const QString &value); + // Login/logout stuff + QVariant getLoginInfo(const QString& key) const; + bool loggedIn() const; + void login(const QString& username, const QString& password); + void logout(); + // Some helper functions QString removeHtml(QString text) const; QString removeBbcode(QString text) const; @@ -40,20 +55,27 @@ public: QString renderHumanDate(const QDateTime& dateTime); QString renderHumanTime(const QDateTime& dateTime); +public slots: + void cancelAllActions(); + // These functions wrap emitting the signals below void notifyConfigChanged(const QString& key = QString()); void notifyForumsChanged(); void notifyForumTopicsChanged(int forumId, int start, int end); void notifyTopicPostsChanged(int topicId, int start, int end); + void notifyLogin(const QMap& info); + void notifyLogout(); signals: + void busyChanged(); + void loggedInChanged(); void configChanged(const QString& key); void forumsChanged(); void forumTopicsChanged(int forumId, int start, int end); void topicPostsChanged(int topicId, int start, int end); private: - static QString createSlug(const QString& forumUrl); + static QString createSlug(const QUrl& url); static QString getDbPathFor(const QString& slug); static QString getTempDbPathFor(const QString& slug); bool checkCompatibleDb(); @@ -72,13 +94,14 @@ private slots: void handleActionError(Action *action, const QString& message); private: - QString _url; + QUrl _url; QString _slug; QSqlDatabase _db; XmlRpcInterface *_iface; QQueue _queue; /** Configuration cache */ mutable QHash _config; + QMap _loginInfo; QList< QPair > _bbcodes; QHash _smilies; QRegExp _smilieRegexp; @@ -89,6 +112,16 @@ inline bool Board::busy() const return !_queue.empty(); } +inline bool Board::loggedIn() const +{ + return !_loginInfo.empty(); +} + +inline int Board::rootForumId() const +{ + return 0; +} + inline QSqlDatabase Board::database() { return _db; -- cgit v1.2.3