diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h index 327fc34a5..ed40a219b 100644 --- a/src/core/messagesmodel.h +++ b/src/core/messagesmodel.h @@ -124,6 +124,8 @@ class MessagesModel : public QSqlTableModel { void setupIcons(); private: + DisplayFilter m_filter; + QList m_currentFeeds; QList m_headerData; QList m_tooltipData; diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index 50242ea52..f48f239d7 100644 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -194,9 +194,11 @@ void FeedMessageViewer::switchFeedComponentVisibility() { void FeedMessageViewer::createConnections() { FormMain *form_main = FormMain::instance(); - // Filtering. + // Filtering & searching. connect(m_toolBarMessages, SIGNAL(messageSearchPatternChanged(QString)), - m_messagesView, SLOT(filterMessages(QString))); + m_messagesView, SLOT(searchMessages(QString))); + /*connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::DisplayFilter)), + m_messagesView, SLOT(filterMessages(MessagesModel::DisplayFilter)));*/ // Message changers. connect(m_messagesView, SIGNAL(currentMessagesRemoved()), diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index 24f2d186d..ad0b904cd 100644 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -373,11 +373,16 @@ void MessagesView::switchSelectedMessagesImportance() { void MessagesView::reselectIndexes(const QModelIndexList &indexes) { selectionModel()->clearSelection(); + QItemSelection selection; + foreach (const QModelIndex &index, indexes) { - selectionModel()->select(index, - QItemSelectionModel::Select | - QItemSelectionModel::Rows); + // TODO: THIS IS very slow. Try to select 4000 messages + // and hit "mark as read" button. + selection.merge(QItemSelection(index, index), QItemSelectionModel::Select); } + + selectionModel()->select(selection, + QItemSelectionModel::Select | QItemSelectionModel::Rows); } void MessagesView::selectNextItem() { @@ -398,7 +403,7 @@ void MessagesView::selectPreviousItem() { } } -void MessagesView::filterMessages(const QString &pattern) { +void MessagesView::searchMessages(const QString &pattern) { m_proxyModel->setFilterWildcard(pattern); if (selectionModel()->selectedRows().size() == 0) { diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h index 1e34cd500..86511bc83 100755 --- a/src/gui/messagesview.h +++ b/src/gui/messagesview.h @@ -76,8 +76,8 @@ class MessagesView : public QTreeView { void selectNextItem(); void selectPreviousItem(); - // Filters the visible message according to given pattern. - void filterMessages(const QString &pattern); + // Searchs the visible message according to given pattern. + void searchMessages(const QString &pattern); protected slots: // Marks given indexes as selected.