diff options
author | Javier S. Pedro <maemo@javispedro.com> | 2013-04-04 00:00:38 +0200 |
---|---|---|
committer | Javier S. Pedro <maemo@javispedro.com> | 2013-04-04 00:00:38 +0200 |
commit | 5d8d6fed3fd7dd796a5a3093a7dbd46fab8d380a (patch) | |
tree | 56d1aa55260d0081cfd99b52c53f5ddc78cba200 /board.h | |
parent | a6d8b23fd03993c0b94d21806ac3a36e251c8b9c (diff) | |
download | tapasboard-5d8d6fed3fd7dd796a5a3093a7dbd46fab8d380a.tar.gz tapasboard-5d8d6fed3fd7dd796a5a3093a7dbd46fab8d380a.zip |
pass Board objects instead of boardUrls around QML
Diffstat (limited to 'board.h')
-rw-r--r-- | board.h | 41 |
1 files changed, 37 insertions, 4 deletions
@@ -3,10 +3,11 @@ #include <QtCore/QDateTime> #include <QtCore/QHash> -#include <QtCore/QObject> #include <QtCore/QPair> #include <QtCore/QRegExp> #include <QtCore/QQueue> +#include <QtCore/QUrl> +#include <QtCore/QVariant> #include <QtSql/QSqlDatabase> 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<QString, QVariant>& 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<Action*> _queue; /** Configuration cache */ mutable QHash<QString, QString> _config; + QMap<QString, QVariant> _loginInfo; QList< QPair<QRegExp, QString> > _bbcodes; QHash<QString, QString> _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; |