summaryrefslogtreecommitdiff
path: root/boardmodel.h
diff options
context:
space:
mode:
authorJavier S. Pedro <maemo@javispedro.com>2013-04-01 15:04:58 +0200
committerJavier S. Pedro <maemo@javispedro.com>2013-04-01 15:04:58 +0200
commit5ef8b38e55c1883224fe1f01f47aba45b7b42666 (patch)
tree67a873c6a7c5263d202793314c3b3a61543fbb40 /boardmodel.h
downloadtapasboard-5ef8b38e55c1883224fe1f01f47aba45b7b42666.tar.gz
tapasboard-5ef8b38e55c1883224fe1f01f47aba45b7b42666.zip
initial import
Diffstat (limited to 'boardmodel.h')
-rw-r--r--boardmodel.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/boardmodel.h b/boardmodel.h
new file mode 100644
index 0000000..974173e
--- /dev/null
+++ b/boardmodel.h
@@ -0,0 +1,55 @@
+#ifndef BOARDMODEL_H
+#define BOARDMODEL_H
+
+#include <QtCore/QAbstractListModel>
+#include <QtSql/QSqlQuery>
+
+class Board;
+
+class BoardModel : public QAbstractListModel
+{
+ Q_OBJECT
+ Q_PROPERTY(QString boardUrl READ boardUrl WRITE setBoardUrl NOTIFY boardUrlChanged)
+ Q_PROPERTY(int rootForumId READ rootForumId WRITE setRootForumId NOTIFY rootForumIdChanged)
+
+public:
+ BoardModel(QObject *parent = 0);
+
+ enum DataRoles {
+ NameRole = Qt::DisplayRole,
+ LogoRole = Qt::DecorationRole,
+ DescriptionRole = Qt::StatusTipRole,
+
+ ForumIdRole = Qt::UserRole,
+ ParentIdRole,
+ CategoryRole
+ };
+
+ QString boardUrl() const;
+ void setBoardUrl(const QString& url);
+
+ int rootForumId() const;
+ void setRootForumId(const int id);
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QVariant data(const QModelIndex &index, int role) const;
+
+ bool canFetchMore(const QModelIndex &parent = QModelIndex()) const;
+ void fetchMore(const QModelIndex &parent = QModelIndex());
+
+signals:
+ void boardUrlChanged();
+ void rootForumIdChanged();
+
+private slots:
+ void reload();
+
+private:
+ QString _boardUrl;
+ int _rootForumId;
+ mutable QSqlQuery _query;
+ int _records;
+ bool _eof;
+};
+
+#endif // BOARDMODEL_H