diff options
author | Javier S. Pedro <maemo@javispedro.com> | 2013-04-02 14:13:49 +0200 |
---|---|---|
committer | Javier S. Pedro <maemo@javispedro.com> | 2013-04-02 14:13:49 +0200 |
commit | 226690b61e546294ae102c4a4b48b56555609c57 (patch) | |
tree | e52865a90a3f81613e546ee9fe748720a21b909a | |
parent | 07abe301396f9b0fbfca67d4b4f6df6b9fdf6e82 (diff) | |
download | tapasboard-226690b61e546294ae102c4a4b48b56555609c57.tar.gz tapasboard-226690b61e546294ae102c4a4b48b56555609c57.zip |
add better support for subforums
-rw-r--r-- | board.h | 1 | ||||
-rw-r--r-- | boardmodel.cpp | 20 | ||||
-rw-r--r-- | boardmodel.h | 2 | ||||
-rw-r--r-- | qml/tapasboard/BoardPage.qml | 15 |
4 files changed, 22 insertions, 16 deletions
@@ -46,7 +46,6 @@ public: signals: void configChanged(); void forumsChanged(); - void imageChanged(const QString& imageUrl); void forumTopicsChanged(int forumId, int start, int end); void topicPostsChanged(int topicId, int start, int end); diff --git a/boardmodel.cpp b/boardmodel.cpp index f8da74e..c2421f7 100644 --- a/boardmodel.cpp +++ b/boardmodel.cpp @@ -14,7 +14,7 @@ BoardModel::BoardModel(QObject *parent) : roles[LogoRole] = QByteArray("logo"); roles[DescriptionRole] = QByteArray("description"); roles[ForumIdRole] = QByteArray("forumId"); - roles[ParentIdRole] = QByteArray("parentId"); + roles[SubOnlyRole] = QByteArray("subOnly"); roles[CategoryRole] = QByteArray("category"); setRoleNames(roles); } @@ -62,18 +62,18 @@ QVariant BoardModel::data(const QModelIndex &index, int role) const } switch (role) { + case ForumIdRole: + return _query.value(0); case NameRole: return _query.value(1); - break; + case LogoRole: + return _query.value(2); case DescriptionRole: + return _query.value(3); + case SubOnlyRole: return _query.value(4); - break; - case ForumIdRole: - return _query.value(0); - break; case CategoryRole: return _query.value(5); - break; } return QVariant(); @@ -124,10 +124,10 @@ void BoardModel::reload() Board *board = board_manager->getBoard(_boardUrl); connect(board, SIGNAL(forumsChanged()), SLOT(reload())); _query = QSqlQuery(board->database()); - _query.prepare("SELECT f1.forum_id,f1.forum_name,f1.parent_id,f1.logo_url,f1.description,f2.forum_name AS cat_name FROM forums f1 " + _query.prepare("SELECT f1.forum_id,f1.forum_name,f1.logo_url,f1.description,f1.sub_only,f2.forum_name AS cat_name FROM forums f1 " "LEFT JOIN forums f2 ON f2.forum_id = f1.parent_id " - "WHERE f1.sub_only=0 AND (f1.parent_id=:parent_id_1 OR f1.parent_id IN " - " (SELECT forum_id from forums WHERE parent_id=:parent_id_2 AND sub_only=1)) " + "WHERE (f1.parent_id=:parent_id_1 AND f1.sub_only = 0) OR f1.parent_id IN " + "(SELECT forum_id from forums WHERE parent_id=:parent_id_2 AND sub_only=1) " "ORDER by f1.sort_index ASC;"); _query.bindValue(0, _rootForumId); _query.bindValue(1, _rootForumId); diff --git a/boardmodel.h b/boardmodel.h index 974173e..3662642 100644 --- a/boardmodel.h +++ b/boardmodel.h @@ -21,7 +21,7 @@ public: DescriptionRole = Qt::StatusTipRole, ForumIdRole = Qt::UserRole, - ParentIdRole, + SubOnlyRole, CategoryRole }; diff --git a/qml/tapasboard/BoardPage.qml b/qml/tapasboard/BoardPage.qml index 57d362d..4aeba79 100644 --- a/qml/tapasboard/BoardPage.qml +++ b/qml/tapasboard/BoardPage.qml @@ -69,10 +69,17 @@ Page { } onClicked: { - pageStack.push(Qt.resolvedUrl("ForumPage.qml"), { - boardUrl: boardPage.boardUrl, - forumId: model.forumId - }); + if (model.subOnly) { + pageStack.push(Qt.resolvedUrl("BoardPage.qml"), { + boardUrl: boardPage.boardUrl, + rootForumId: model.forumId + }); + } else { + pageStack.push(Qt.resolvedUrl("ForumPage.qml"), { + boardUrl: boardPage.boardUrl, + forumId: model.forumId + }); + } } } } |