From 21fc8b087abec5323fa093db491aec6b89e0e804 Mon Sep 17 00:00:00 2001 From: martinrotter Date: Tue, 9 May 2017 11:24:24 +0200 Subject: [PATCH] Activate multicolumn on CTRL. --- src/core/messagesmodel.cpp | 14 +++++++++++--- src/core/messagesmodel.h | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp index a1d233531..53057cd21 100755 --- a/src/core/messagesmodel.cpp +++ b/src/core/messagesmodel.cpp @@ -83,7 +83,7 @@ QString MessagesModel::orderByClause() const { else { QStringList sorts; - for (int i = m_sortColumn.size() - 1; i >= 0; i--) { + for (int i = 0; i < m_sortColumn.size(); i++) { QString field_name(m_fieldNames[m_sortColumn[i]]); sorts.append(field_name + (m_sortOrder[i] == Qt::AscendingOrder ? QSL(" ASC") : QSL(" DESC"))); @@ -109,6 +109,7 @@ void MessagesModel::fetchAllData() { void MessagesModel::addSortState(int column, Qt::SortOrder order) { int existing = m_sortColumn.indexOf(column); + bool is_ctrl_pressed = (QApplication::queryKeyboardModifiers() & Qt::ControlModifier) == Qt::ControlModifier; if (existing >= 0) { m_sortColumn.removeAt(existing); @@ -122,8 +123,15 @@ void MessagesModel::addSortState(int column, Qt::SortOrder order) { m_sortOrder.removeAt(0); } - m_sortColumn.append(column); - m_sortOrder.append(order); + if (is_ctrl_pressed) { + // User is activating the multicolumn sort mode. + m_sortColumn.append(column); + m_sortOrder.append(order); + } + else { + m_sortColumn.prepend(column); + m_sortOrder.prepend(order); + } qDebug("Added sort state, select statement is now:\n'%s'", qPrintable(selectStatement())); } diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h index 3093e1e35..611e23cb0 100755 --- a/src/core/messagesmodel.h +++ b/src/core/messagesmodel.h @@ -108,7 +108,7 @@ class MessagesModel : public QSqlRelationalTableModel { // NOTE: These two lists contain data for multicolumn sorting. // They are always same length. Most important sort column/order - // are located in the end of these lists. + // are located at the start of lists; QMap m_fieldNames; QList m_sortColumn; QList m_sortOrder;