summaryrefslogtreecommitdiff
path: root/forummodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'forummodel.cpp')
-rw-r--r--forummodel.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/forummodel.cpp b/forummodel.cpp
index c66d3a8..bdc2d17 100644
--- a/forummodel.cpp
+++ b/forummodel.cpp
@@ -8,7 +8,7 @@
#include "forummodel.h"
ForumModel::ForumModel(QObject *parent) :
- QAbstractListModel(parent), _boardUrl(), _board(0), _forumId(-1)
+ QAbstractListModel(parent), _board(0), _forumId(-1), _eof(false)
{
QHash<int, QByteArray> roles = roleNames();
roles[TitleRole] = QByteArray("title");
@@ -17,21 +17,20 @@ ForumModel::ForumModel(QObject *parent) :
setRoleNames(roles);
}
-QString ForumModel::boardUrl() const
+Board * ForumModel::board() const
{
- return _boardUrl;
+ return _board;
}
-void ForumModel::setBoardUrl(const QString &url)
+void ForumModel::setBoard(Board *board)
{
- if (_boardUrl != url) {
+ if (_board != board) {
disconnect(this, SLOT(handleForumTopicsChanged(int,int,int)));
clearModel();
- _board = 0;
- _boardUrl = url;
- if (!_boardUrl.isEmpty()) {
- _board = board_manager->getBoard(_boardUrl);
+ _board = board;
+
+ if (_board) {
connect(_board, SIGNAL(forumTopicsChanged(int,int,int)),
SLOT(handleForumTopicsChanged(int,int,int)));
if (_forumId >= 0) {
@@ -39,7 +38,7 @@ void ForumModel::setBoardUrl(const QString &url)
reload();
}
}
- emit boardUrlChanged();
+ emit boardChanged();
}
}
@@ -91,14 +90,14 @@ QVariant ForumModel::data(const QModelIndex &index, int role) const
bool ForumModel::canFetchMore(const QModelIndex &parent) const
{
- if (parent.isValid() || !_board) return false; // Invalid state
+ if (parent.isValid() || !_board || _forumId < 0) return false; // Invalid state
return !_eof;
}
void ForumModel::fetchMore(const QModelIndex &parent)
{
if (parent.isValid()) return;
- if (!_board) return;
+ if (!_board || _forumId < 0) return;
if (_eof) return;
const int start = _data.size();