# HG changeset patch # User Andre Heinecke # Date 1430844395 -7200 # Node ID 4e16fbd1094546adf736dbe4a769335cc26e98bf # Parent 5bd14af5bce5270734f13df77cbbc4ae1298e87d (issue3-5) Make the default sort order configurable diff -r 5bd14af5bce5 -r 4e16fbd10945 src/constants.h --- a/src/constants.h Tue May 05 18:45:49 2015 +0200 +++ b/src/constants.h Tue May 05 18:46:35 2015 +0200 @@ -32,7 +32,7 @@ #define DESCRIPTION "A tool to replay recorded user sessions." /**@def Short copyright notice to show users. */ -#define COPYRIGHT "Copyright (C) 2015 Intevation GmbH \n\n" \ +#define COPYRIGHT "Copyright (C) 2015 ETH Zürich \n\n" \ "This file is Free Software under the GNU GPL (v>=2)\n" \ "and comes with ABSOLUTELY NO WARRANTY!\n" @@ -70,4 +70,16 @@ /**@def The seperator used in the patterns. */ #define PATTERN_SEPERATOR "_" +/**@def The default sort column */ +#define SORT_COLUMN_KEY "Sort" + +/**@def The default value for the sort column */ +#define SORT_COLUMN_DEFAULT "Date" + +/**@def The default sort order (boolean) */ +#define SORT_ORDER_KEY "SortAscending" + +/**@def The default sort order value. */ +#define SORT_ORDER_VALUE true + #endif // CONSTANTS_H diff -r 5bd14af5bce5 -r 4e16fbd10945 src/filterwidget.cpp --- a/src/filterwidget.cpp Tue May 05 18:45:49 2015 +0200 +++ b/src/filterwidget.cpp Tue May 05 18:46:35 2015 +0200 @@ -54,6 +54,7 @@ QString filterText = mEditLine->text(); mModel->setFilterKeyColumn(mColFilterMap.value(mCombo->currentIndex())); mModel->setFilterWildcard(filterText); + emit filterHasChanged(); } void FilterWidget::setupGUI() { diff -r 5bd14af5bce5 -r 4e16fbd10945 src/filterwidget.h --- a/src/filterwidget.h Tue May 05 18:45:49 2015 +0200 +++ b/src/filterwidget.h Tue May 05 18:46:35 2015 +0200 @@ -22,6 +22,9 @@ FilterWidget (QSortFilterProxyModel *model, QWidget * parent = 0, Qt::WindowFlags f = 0); +Q_SIGNALS: + void filterHasChanged(); + protected: void setupGUI(); diff -r 5bd14af5bce5 -r 4e16fbd10945 src/l10n/main_de_DE.ts --- a/src/l10n/main_de_DE.ts Tue May 05 18:45:49 2015 +0200 +++ b/src/l10n/main_de_DE.ts Tue May 05 18:46:35 2015 +0200 @@ -4,12 +4,12 @@ FilterWidget - + Filter Filter - + Filter expression Filter-Ausdruck @@ -17,22 +17,22 @@ FolderSelectDialog - + Select folder Ordner auswählen - + Go - + Ok Ok - + Select %1 @@ -40,52 +40,52 @@ MainWindow - + Player Player - + Filter/Details Filter/Details - + Error! Fehler! - + Failed to access directory: '%1' Auf das Verzeichnis '%1' konnte nicht zugegriffen werden. - + Failed to access meta data file: '%1' Auf die Metadaten-Datei: '%1' konnte nicht zugegriffen werden. - + Parsed: '%1' '%1' eingelesen - + Showing: '%1' Zeige: '%1' - + Persons Personen - + Exams Prüfungen - + Root-Path Wurzelverzeichnis @@ -93,7 +93,7 @@ MetaDataView - + Failed to parse file: '%1' Die Datei '%1' konnte nicht eingelesen werden. @@ -101,32 +101,32 @@ PNGPlayer - + Speed: Geschwindigkeit: - + Screenshot Nr.: Screenshot Nr.: - + Timestamp: Zeitstempel: - + Unknown Unbekannt - + %1 second per Picture %1 Sekunde pro Bild - + %1 seconds per Picture %1 Sekunden pro Bild @@ -134,12 +134,12 @@ main - + The folder containing the data to replay. Der Ordner mit den Replaydaten - + Print debug output. Debugausgaben anzeigen diff -r 5bd14af5bce5 -r 4e16fbd10945 src/metadataview.cpp --- a/src/metadataview.cpp Tue May 05 18:45:49 2015 +0200 +++ b/src/metadataview.cpp Tue May 05 18:46:35 2015 +0200 @@ -8,6 +8,7 @@ #include "metadataview.h" #include "qxtcsvmodel.h" #include "filterwidget.h" +#include "constants.h" #include #include @@ -18,6 +19,7 @@ #include #include #include +#include MetaDataView::MetaDataView(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) { @@ -37,6 +39,8 @@ QVBoxLayout *baseLayout = new QVBoxLayout; FilterWidget *filterWidget = new FilterWidget(mSortModel); + connect(filterWidget, &FilterWidget::filterHasChanged, + this, &MetaDataView::applyDefaultSort); baseLayout->addWidget(filterWidget); mView = new QTableView; @@ -63,6 +67,7 @@ mSortModel->setSourceModel(mCSVModel); qDebug() << "Parsed: " << mCSVModel->rowCount() << " rows."; + applyDefaultSort(); return QString(); } @@ -159,3 +164,25 @@ QModelIndex newIdx = mSortModel->index(row, col); selection->select(newIdx, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); } + +void MetaDataView::applyDefaultSort() { + QSettings settings; + QString sortField = settings.value(SORT_COLUMN_KEY, SORT_COLUMN_DEFAULT).toString(); + bool sortAsc = settings.value(SORT_ORDER_KEY, SORT_ORDER_VALUE).toBool(); + + int idx = -1; + for (int i=0; i < mSortModel->columnCount(); i++) { + QString entry = mSortModel->headerData(i, Qt::Horizontal).toString(); + if (entry.toLower() == sortField.toLower()) { + idx = 1; + break; + } + } + if (idx == -1) { + qDebug() << "Failed to find configured sort column: " << sortField; + return; + } + qDebug() << "Applying default sort order on column " << idx; + mView->sortByColumn(idx, sortAsc ? Qt::AscendingOrder : Qt::DescendingOrder); +} + diff -r 5bd14af5bce5 -r 4e16fbd10945 src/metadataview.h --- a/src/metadataview.h Tue May 05 18:45:49 2015 +0200 +++ b/src/metadataview.h Tue May 05 18:46:35 2015 +0200 @@ -56,6 +56,9 @@ /**@brief select a specific row. */ void selectRow(int row); + /**@brief applies the default sort order from configuration */ + void applyDefaultSort(); + protected: QxtCsvModel *mCSVModel; QSortFilterProxyModel *mSortModel;