diff --git a/src/core/message.cpp b/src/core/message.cpp index 6459bd700..f8bd6788e 100755 --- a/src/core/message.cpp +++ b/src/core/message.cpp @@ -84,7 +84,7 @@ Message Message::fromSqlRecord(const QSqlRecord &record, bool *result) { message.m_id = record.value(MSG_DB_ID_INDEX).toInt(); message.m_isRead = record.value(MSG_DB_READ_INDEX).toBool(); message.m_isImportant = record.value(MSG_DB_IMPORTANT_INDEX).toBool(); - message.m_feedId = record.value(MSG_DB_FEED_INDEX).toString(); + message.m_feedId = record.value(MSG_DB_FEED_CUSTOM_ID_INDEX).toString(); message.m_title = record.value(MSG_DB_TITLE_INDEX).toString(); message.m_url = record.value(MSG_DB_URL_INDEX).toString(); message.m_author = record.value(MSG_DB_AUTHOR_INDEX).toString(); diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp index 6b67d0eb8..00a46d47e 100755 --- a/src/core/messagesmodel.cpp +++ b/src/core/messagesmodel.cpp @@ -39,8 +39,6 @@ MessagesModel::MessagesModel(QObject *parent) // via model, but via DIRECT SQL calls are used to do persistent messages. setEditStrategy(QSqlTableModel::OnManualSubmit); setTable(QSL("Messages")); - setRelation(MSG_DB_FEED_INDEX, QSqlRelation("Feeds", "custom_id", "title")); - loadMessages(nullptr); } @@ -76,7 +74,7 @@ void MessagesModel::loadMessages(RootItem *item) { m_selectedItem = item; if (item == nullptr) { - setFilter("true != true"); + setFilter("0 > 1"); } else { if (!item->getParentServiceRoot()->loadMessagesForItem(item, this)) { @@ -90,6 +88,8 @@ void MessagesModel::loadMessages(RootItem *item) { } } + qDebug("Select statement when selecting msg from item:\n'%s'", qPrintable(selectStatement())); + fetchAllData(); } @@ -167,7 +167,8 @@ void MessagesModel::setupHeaderData() { /*: Tooltip for attachments of message.*/ tr("Attachments") << /*: Tooltip for account ID of message.*/ tr("Account ID") << /*: Tooltip for custom ID of message.*/ tr("Custom ID") << - /*: Tooltip for custom hash string of message.*/ tr("Custom hash"); + /*: Tooltip for custom hash string of message.*/ tr("Custom hash") << + /*: Tooltip for custom ID of feed of message.*/ tr("Feed ID");; m_tooltipData << tr("Id of the message.") << tr("Is message read?") << tr("Is message deleted?") << tr("Is message important?") << @@ -176,7 +177,7 @@ void MessagesModel::setupHeaderData() { tr("Author of the message.") << tr("Creation date of the message.") << tr("Contents of the message.") << tr("Is message permanently deleted from recycle bin?") << tr("List of attachments.") << tr("Account ID of the message.") << tr("Custom ID of the message") << - tr("Custom hash of the message."); + tr("Custom hash of the message.") << tr("Custom ID of feed of the message."); } Qt::ItemFlags MessagesModel::flags(const QModelIndex &index) const { @@ -185,6 +186,14 @@ Qt::ItemFlags MessagesModel::flags(const QModelIndex &index) const { return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemNeverHasChildren; } +QString MessagesModel::selectStatement() const { + //return QSqlRelationalTableModel::selectStatement(); + + return QL1S("SELECT Messages.\"id\" as \"id\", \"is_read\", \"is_deleted\", \"is_important\", Feeds.\"title\" as \"feed_title\", Messages.\"title\" as \"title\", Messages.\"url\" as \"url\", \"author\", Messages.\"date_created\" as \"date_created\", \"contents\", \"is_pdeleted\", \"enclosures\", Messages.\"account_id\" as \"account_id\", Messages.\"custom_id\" as \"custom_id\", \"custom_hash\", Messages.\"feed\" as \"feed_custom_id\" " + "FROM Messages LEFT JOIN Feeds ON Messages.feed = Feeds.custom_id WHERE ") + + filter() + " " + orderByClause(); +} + QVariant MessagesModel::data(int row, int column, int role) const { return data(index(row, column), role); } diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h index f57d8aa37..3a85316b7 100755 --- a/src/core/messagesmodel.h +++ b/src/core/messagesmodel.h @@ -52,6 +52,8 @@ class MessagesModel : public QSqlRelationalTableModel { QVariant headerData(int section, Qt::Orientation orientation, int role) const; Qt::ItemFlags flags(const QModelIndex &index) const; + QString selectStatement() const; + // Returns message at given index. Message messageAt(int row_index) const; int messageId(int row_index) const; diff --git a/src/definitions/definitions.h b/src/definitions/definitions.h index 01c9e1fb5..9c62f77ac 100755 --- a/src/definitions/definitions.h +++ b/src/definitions/definitions.h @@ -151,7 +151,7 @@ #define MSG_DB_READ_INDEX 1 #define MSG_DB_DELETED_INDEX 2 #define MSG_DB_IMPORTANT_INDEX 3 -#define MSG_DB_FEED_INDEX 4 +#define MSG_DB_FEED_TITLE_INDEX 4 #define MSG_DB_TITLE_INDEX 5 #define MSG_DB_URL_INDEX 6 #define MSG_DB_AUTHOR_INDEX 7 @@ -162,6 +162,7 @@ #define MSG_DB_ACCOUNT_ID_INDEX 12 #define MSG_DB_CUSTOM_ID_INDEX 13 #define MSG_DB_CUSTOM_HASH_INDEX 14 +#define MSG_DB_FEED_CUSTOM_ID_INDEX 15 // Indexes of columns as they are DEFINED IN THE TABLE for CATEGORIES. #define CAT_DB_ID_INDEX 0 diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index 4ca49d44d..ffe24aba8 100755 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -530,7 +530,7 @@ void MessagesView::adjustColumns() { header()->setSectionResizeMode(MSG_DB_READ_INDEX, QHeaderView::ResizeToContents); header()->setSectionResizeMode(MSG_DB_DELETED_INDEX, QHeaderView::Interactive); header()->setSectionResizeMode(MSG_DB_IMPORTANT_INDEX, QHeaderView::ResizeToContents); - header()->setSectionResizeMode(MSG_DB_FEED_INDEX, QHeaderView::Interactive); + header()->setSectionResizeMode(MSG_DB_FEED_TITLE_INDEX, QHeaderView::Interactive); header()->setSectionResizeMode(MSG_DB_TITLE_INDEX, QHeaderView::Stretch); header()->setSectionResizeMode(MSG_DB_URL_INDEX, QHeaderView::Interactive); header()->setSectionResizeMode(MSG_DB_AUTHOR_INDEX, QHeaderView::Interactive); @@ -549,6 +549,7 @@ void MessagesView::adjustColumns() { hideColumn(MSG_DB_ACCOUNT_ID_INDEX); hideColumn(MSG_DB_CUSTOM_ID_INDEX); hideColumn(MSG_DB_CUSTOM_HASH_INDEX); + hideColumn(MSG_DB_FEED_CUSTOM_ID_INDEX); qDebug("Adjusting column resize modes for MessagesView."); } diff --git a/src/services/abstract/serviceroot.cpp b/src/services/abstract/serviceroot.cpp index e8a562614..78513a7b6 100755 --- a/src/services/abstract/serviceroot.cpp +++ b/src/services/abstract/serviceroot.cpp @@ -394,8 +394,8 @@ bool ServiceRoot::loadMessagesForItem(RootItem *item, QSqlTableModel *model) { QList children = item->getSubTreeFeeds(); QString filter_clause = textualFeedIds(children).join(QSL(", ")); - 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()))); + model->setFilter(QString("Feeds.custom_id 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)); }