This commit is contained in:
martinrotter 2017-05-03 08:03:53 +02:00
parent 3b4ac7cc96
commit 4224ee0170
5 changed files with 12 additions and 6 deletions

View File

@ -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)

View File

@ -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);
}

View File

@ -18,7 +18,7 @@
#ifndef MESSAGESMODEL_H
#define MESSAGESMODEL_H
#include <QSqlTableModel>
#include <QSqlRelationalTableModel>
#include "definitions/definitions.h"
#include "core/message.h"
@ -28,7 +28,7 @@
#include <QIcon>
class MessagesModel : public QSqlTableModel {
class MessagesModel : public QSqlRelationalTableModel {
Q_OBJECT
public:

View File

@ -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);

View File

@ -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<Feed*> 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));
}