From 4224ee0170e5ea627a0880b97bd83f9b21da36be Mon Sep 17 00:00:00 2001 From: martinrotter Date: Wed, 3 May 2017 08:03:53 +0200 Subject: [PATCH] Fixed #97. --- resources/text/CHANGELOG | 1 + src/core/messagesmodel.cpp | 7 ++++++- src/core/messagesmodel.h | 4 ++-- src/gui/messagesview.cpp | 2 +- src/services/abstract/serviceroot.cpp | 4 ++-- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG index 25af0168e..4265a11ae 100755 --- a/resources/text/CHANGELOG +++ b/resources/text/CHANGELOG @@ -3,6 +3,7 @@ Added: ▪ Auto-update status of feeds is now more general and complete. (issue #91) +▪ Display feed title in list of messages. (issue #97) Changed: ▪ Updating of RSS Guard now uses GitHub API. (issue #109) diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp index 3aa9cdd44..acbc43185 100755 --- a/src/core/messagesmodel.cpp +++ b/src/core/messagesmodel.cpp @@ -27,18 +27,23 @@ MessagesModel::MessagesModel(QObject *parent) - : QSqlTableModel(parent, qApp->database()->connection(QSL("MessagesModel"), DatabaseFactory::FromSettings)), + : QSqlRelationalTableModel(parent, qApp->database()->connection(QSL("MessagesModel"), DatabaseFactory::FromSettings)), m_messageHighlighter(NoHighlighting), m_customDateFormat(QString()) { setupFonts(); setupIcons(); setupHeaderData(); updateDateFormat(); + + // Set desired table and edit strategy. // NOTE: Changes to the database are actually NOT submitted // via model, but via DIRECT SQL calls are used to do persistent messages. setEditStrategy(QSqlTableModel::OnManualSubmit); setTable(QSL("Messages")); + + setJoinMode(QSqlRelationalTableModel::LeftJoin); + setRelation(MSG_DB_FEED_INDEX, QSqlRelation("Feeds", "custom_id", "title")); loadMessages(nullptr); } diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h index 260363024..bf3b8008b 100755 --- a/src/core/messagesmodel.h +++ b/src/core/messagesmodel.h @@ -18,7 +18,7 @@ #ifndef MESSAGESMODEL_H #define MESSAGESMODEL_H -#include +#include #include "definitions/definitions.h" #include "core/message.h" @@ -28,7 +28,7 @@ #include -class MessagesModel : public QSqlTableModel { +class MessagesModel : public QSqlRelationalTableModel { Q_OBJECT public: diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index e75a1365f..fc345a97f 100755 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -541,7 +541,7 @@ void MessagesView::adjustColumns() { // Hide columns. hideColumn(MSG_DB_ID_INDEX); hideColumn(MSG_DB_DELETED_INDEX); - hideColumn(MSG_DB_FEED_INDEX); + //hideColumn(MSG_DB_FEED_INDEX); hideColumn(MSG_DB_URL_INDEX); hideColumn(MSG_DB_CONTENTS_INDEX); hideColumn(MSG_DB_PDELETED_INDEX); diff --git a/src/services/abstract/serviceroot.cpp b/src/services/abstract/serviceroot.cpp index 59494d234..e8a562614 100755 --- a/src/services/abstract/serviceroot.cpp +++ b/src/services/abstract/serviceroot.cpp @@ -388,13 +388,13 @@ void ServiceRoot::setAccountId(int account_id) { bool ServiceRoot::loadMessagesForItem(RootItem *item, QSqlTableModel *model) { if (item->kind() == RootItemKind::Bin) { - model->setFilter(QString("is_deleted = 1 AND is_pdeleted = 0 AND account_id = %1").arg(QString::number(accountId()))); + model->setFilter(QString("Messages.is_deleted = 1 AND Messages.is_pdeleted = 0 AND Messages.account_id = %1").arg(QString::number(accountId()))); } else { QList children = item->getSubTreeFeeds(); QString filter_clause = textualFeedIds(children).join(QSL(", ")); - model->setFilter(QString("feed IN (%1) AND is_deleted = 0 AND is_pdeleted = 0 AND account_id = %2").arg(filter_clause, + model->setFilter(QString("Messages.feed IN (%1) AND Messages.is_deleted = 0 AND Messages.is_pdeleted = 0 AND Messages.account_id = %2").arg(filter_clause, QString::number(accountId()))); qDebug("Loading messages from feeds: %s.", qPrintable(filter_clause)); }