From 9f1ab080ee6642fd36ae9d1049e74ce015e57321 Mon Sep 17 00:00:00 2001 From: Florian Geyer Date: Wed, 30 May 2012 16:37:46 +0200 Subject: [PATCH] Make history view sortable. --- src/gui/entry/EditEntryWidget.cpp | 12 +++++++++++- src/gui/entry/EditEntryWidgetHistory.ui | 6 +++++- src/gui/entry/EntryHistoryModel.cpp | 9 +++++++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index aa0a3491..bbb5145f 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include "core/Database.h" #include "core/Entry.h" @@ -89,7 +90,15 @@ EditEntryWidget::EditEntryWidget(QWidget* parent) connect(m_mainUi->passwordRepeatEdit, SIGNAL(textEdited(QString)), SLOT(setPasswordCheckColors())); m_historyModel = new EntryHistoryModel(this); - m_historyUi->historyView->setModel(m_historyModel); + + QSortFilterProxyModel* sortModel = new QSortFilterProxyModel(this); + sortModel->setSourceModel(m_historyModel); + sortModel->setDynamicSortFilter(true); + sortModel->setSortLocaleAware(true); + sortModel->setSortCaseSensitivity(Qt::CaseInsensitive); + sortModel->setSortRole(Qt::UserRole); + + m_historyUi->historyView->setModel(sortModel); m_historyUi->historyView->setRootIsDecorated(false); connect(m_historyUi->historyView, SIGNAL(activated(const QModelIndex&)), @@ -230,6 +239,7 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore) if (!m_history && !restore) { m_historyModel->setEntries(entry->historyItems()); + m_historyUi->historyView->sortByColumn(0, Qt::DescendingOrder); } if (m_historyModel->rowCount() > 0) { m_historyUi->deleteAllButton->setEnabled(true); diff --git a/src/gui/entry/EditEntryWidgetHistory.ui b/src/gui/entry/EditEntryWidgetHistory.ui index d0d8abca..29aec545 100644 --- a/src/gui/entry/EditEntryWidgetHistory.ui +++ b/src/gui/entry/EditEntryWidgetHistory.ui @@ -12,7 +12,11 @@ - + + + true + + diff --git a/src/gui/entry/EntryHistoryModel.cpp b/src/gui/entry/EntryHistoryModel.cpp index 2d410090..32d4e077 100644 --- a/src/gui/entry/EntryHistoryModel.cpp +++ b/src/gui/entry/EntryHistoryModel.cpp @@ -56,10 +56,15 @@ QVariant EntryHistoryModel::data(const QModelIndex& index, int role) const TimeInfo timeInfo = entry->timeInfo(); QDateTime lastModificationLocalTime = timeInfo.lastModificationTime().toLocalTime(); - if (role == Qt::DisplayRole) { + if (role == Qt::DisplayRole || role == Qt::UserRole) { switch (index.column()) { case 0: - return lastModificationLocalTime.toString(Qt::SystemLocaleShortDate); + if (role == Qt::DisplayRole) { + return lastModificationLocalTime.toString(Qt::SystemLocaleShortDate); + } + else { + return lastModificationLocalTime; + } case 1: return entry->title(); case 2: