Construct SQL queries for the model manually. This will greatly help in the future.
This commit is contained in:
parent
33981c350a
commit
905d3c533d
6 changed files with 23 additions and 10 deletions
|
@ -84,7 +84,7 @@ Message Message::fromSqlRecord(const QSqlRecord &record, bool *result) {
|
||||||
message.m_id = record.value(MSG_DB_ID_INDEX).toInt();
|
message.m_id = record.value(MSG_DB_ID_INDEX).toInt();
|
||||||
message.m_isRead = record.value(MSG_DB_READ_INDEX).toBool();
|
message.m_isRead = record.value(MSG_DB_READ_INDEX).toBool();
|
||||||
message.m_isImportant = record.value(MSG_DB_IMPORTANT_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_title = record.value(MSG_DB_TITLE_INDEX).toString();
|
||||||
message.m_url = record.value(MSG_DB_URL_INDEX).toString();
|
message.m_url = record.value(MSG_DB_URL_INDEX).toString();
|
||||||
message.m_author = record.value(MSG_DB_AUTHOR_INDEX).toString();
|
message.m_author = record.value(MSG_DB_AUTHOR_INDEX).toString();
|
||||||
|
|
|
@ -39,8 +39,6 @@ MessagesModel::MessagesModel(QObject *parent)
|
||||||
// via model, but via DIRECT SQL calls are used to do persistent messages.
|
// via model, but via DIRECT SQL calls are used to do persistent messages.
|
||||||
setEditStrategy(QSqlTableModel::OnManualSubmit);
|
setEditStrategy(QSqlTableModel::OnManualSubmit);
|
||||||
setTable(QSL("Messages"));
|
setTable(QSL("Messages"));
|
||||||
setRelation(MSG_DB_FEED_INDEX, QSqlRelation("Feeds", "custom_id", "title"));
|
|
||||||
|
|
||||||
loadMessages(nullptr);
|
loadMessages(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,7 +74,7 @@ void MessagesModel::loadMessages(RootItem *item) {
|
||||||
m_selectedItem = item;
|
m_selectedItem = item;
|
||||||
|
|
||||||
if (item == nullptr) {
|
if (item == nullptr) {
|
||||||
setFilter("true != true");
|
setFilter("0 > 1");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!item->getParentServiceRoot()->loadMessagesForItem(item, this)) {
|
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();
|
fetchAllData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +167,8 @@ void MessagesModel::setupHeaderData() {
|
||||||
/*: Tooltip for attachments of message.*/ tr("Attachments") <<
|
/*: Tooltip for attachments of message.*/ tr("Attachments") <<
|
||||||
/*: Tooltip for account ID of message.*/ tr("Account ID") <<
|
/*: Tooltip for account ID of message.*/ tr("Account ID") <<
|
||||||
/*: Tooltip for custom ID of message.*/ tr("Custom 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?") <<
|
m_tooltipData << tr("Id of the message.") << tr("Is message read?") <<
|
||||||
tr("Is message deleted?") << tr("Is message important?") <<
|
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("Author of the message.") << tr("Creation date of the message.") <<
|
||||||
tr("Contents of the message.") << tr("Is message permanently deleted from recycle bin?") <<
|
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("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 {
|
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;
|
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 {
|
QVariant MessagesModel::data(int row, int column, int role) const {
|
||||||
return data(index(row, column), role);
|
return data(index(row, column), role);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,8 @@ class MessagesModel : public QSqlRelationalTableModel {
|
||||||
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
|
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
|
||||||
Qt::ItemFlags flags(const QModelIndex &index) const;
|
Qt::ItemFlags flags(const QModelIndex &index) const;
|
||||||
|
|
||||||
|
QString selectStatement() const;
|
||||||
|
|
||||||
// Returns message at given index.
|
// Returns message at given index.
|
||||||
Message messageAt(int row_index) const;
|
Message messageAt(int row_index) const;
|
||||||
int messageId(int row_index) const;
|
int messageId(int row_index) const;
|
||||||
|
|
|
@ -151,7 +151,7 @@
|
||||||
#define MSG_DB_READ_INDEX 1
|
#define MSG_DB_READ_INDEX 1
|
||||||
#define MSG_DB_DELETED_INDEX 2
|
#define MSG_DB_DELETED_INDEX 2
|
||||||
#define MSG_DB_IMPORTANT_INDEX 3
|
#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_TITLE_INDEX 5
|
||||||
#define MSG_DB_URL_INDEX 6
|
#define MSG_DB_URL_INDEX 6
|
||||||
#define MSG_DB_AUTHOR_INDEX 7
|
#define MSG_DB_AUTHOR_INDEX 7
|
||||||
|
@ -162,6 +162,7 @@
|
||||||
#define MSG_DB_ACCOUNT_ID_INDEX 12
|
#define MSG_DB_ACCOUNT_ID_INDEX 12
|
||||||
#define MSG_DB_CUSTOM_ID_INDEX 13
|
#define MSG_DB_CUSTOM_ID_INDEX 13
|
||||||
#define MSG_DB_CUSTOM_HASH_INDEX 14
|
#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.
|
// Indexes of columns as they are DEFINED IN THE TABLE for CATEGORIES.
|
||||||
#define CAT_DB_ID_INDEX 0
|
#define CAT_DB_ID_INDEX 0
|
||||||
|
|
|
@ -530,7 +530,7 @@ void MessagesView::adjustColumns() {
|
||||||
header()->setSectionResizeMode(MSG_DB_READ_INDEX, QHeaderView::ResizeToContents);
|
header()->setSectionResizeMode(MSG_DB_READ_INDEX, QHeaderView::ResizeToContents);
|
||||||
header()->setSectionResizeMode(MSG_DB_DELETED_INDEX, QHeaderView::Interactive);
|
header()->setSectionResizeMode(MSG_DB_DELETED_INDEX, QHeaderView::Interactive);
|
||||||
header()->setSectionResizeMode(MSG_DB_IMPORTANT_INDEX, QHeaderView::ResizeToContents);
|
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_TITLE_INDEX, QHeaderView::Stretch);
|
||||||
header()->setSectionResizeMode(MSG_DB_URL_INDEX, QHeaderView::Interactive);
|
header()->setSectionResizeMode(MSG_DB_URL_INDEX, QHeaderView::Interactive);
|
||||||
header()->setSectionResizeMode(MSG_DB_AUTHOR_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_ACCOUNT_ID_INDEX);
|
||||||
hideColumn(MSG_DB_CUSTOM_ID_INDEX);
|
hideColumn(MSG_DB_CUSTOM_ID_INDEX);
|
||||||
hideColumn(MSG_DB_CUSTOM_HASH_INDEX);
|
hideColumn(MSG_DB_CUSTOM_HASH_INDEX);
|
||||||
|
hideColumn(MSG_DB_FEED_CUSTOM_ID_INDEX);
|
||||||
|
|
||||||
qDebug("Adjusting column resize modes for MessagesView.");
|
qDebug("Adjusting column resize modes for MessagesView.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -394,7 +394,7 @@ bool ServiceRoot::loadMessagesForItem(RootItem *item, QSqlTableModel *model) {
|
||||||
QList<Feed*> children = item->getSubTreeFeeds();
|
QList<Feed*> children = item->getSubTreeFeeds();
|
||||||
QString filter_clause = textualFeedIds(children).join(QSL(", "));
|
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,
|
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())));
|
QString::number(accountId())));
|
||||||
qDebug("Loading messages from feeds: %s.", qPrintable(filter_clause));
|
qDebug("Loading messages from feeds: %s.", qPrintable(filter_clause));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue