From 8d2edd4c48ebb0f5e4b928dbb516f629e37062a5 Mon Sep 17 00:00:00 2001 From: Robert Carlsen Date: Mon, 5 Jan 2009 01:47:37 +0000 Subject: [PATCH] Added a user preference to change the Ride List sorting. Default should be ascending by date, as it has been. Disabling the "Sort ride list ascending" preference will sort the ride list descending by date. Also, added margins to the widgets in the main window. --- src/ConfigDialog.cpp | 3 ++- src/MainWindow.cpp | 16 ++++++++++++++-- src/Pages.cpp | 9 +++++++++ src/Pages.h | 2 ++ src/RideFile.cpp | 9 ++++++++- src/Settings.h | 2 +- 6 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/ConfigDialog.cpp b/src/ConfigDialog.cpp index 491bd50a6..b44358619 100644 --- a/src/ConfigDialog.cpp +++ b/src/ConfigDialog.cpp @@ -113,7 +113,8 @@ void ConfigDialog::save_Clicked() { QSettings settings(GC_SETTINGS_CO, GC_SETTINGS_APP); settings.setValue(GC_UNIT, configPage->unitCombo->currentText()); - + settings.setValue(GC_ALLRIDES_ASCENDING, configPage->allRidesAscending->checkState()); + //If the user never switched pages, then make sure we have up to date data. if (cyclistPage->getCurrentRange() == 0 || cyclistPage->getCurrentRange() == zones->getRangeSize() - 1) { diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 2cc0eece3..91cb6f01b 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -91,6 +91,7 @@ MainWindow::MainWindow(const QDir &home) : splitter = new QSplitter(this); setCentralWidget(splitter); + splitter->setContentsMargins(10, 20, 10, 10); // attempting to follow some UI guides treeWidget = new QTreeWidget; treeWidget->setColumnCount(3); @@ -393,8 +394,19 @@ MainWindow::MainWindow(const QDir &home) : QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(tr("&About GoldenCheetah"), this, SLOT(aboutDialog())); - if (last != NULL) - treeWidget->setCurrentItem(last); + // This will read the user preferences and change the file list order as necessary: + QSettings settings(GC_SETTINGS_CO, GC_SETTINGS_APP); + QVariant isAscending = settings.value(GC_ALLRIDES_ASCENDING,Qt::Checked); + if(isAscending.toInt()>0){ + if (last != NULL) + treeWidget->setCurrentItem(last); + } else { + // selects the first ride in the list: + if (allRides->child(0) != NULL){ + treeWidget->scrollToItem(allRides->child(0), QAbstractItemView::EnsureVisible); + treeWidget->setCurrentItem(allRides->child(0)); + } + } } void diff --git a/src/Pages.cpp b/src/Pages.cpp index 41e8fff75..147d2e363 100644 --- a/src/Pages.cpp +++ b/src/Pages.cpp @@ -21,6 +21,14 @@ ConfigurationPage::ConfigurationPage(QWidget *parent) else unitCombo->setCurrentIndex(1); + allRidesAscending = new QCheckBox("Sort ride list ascending.", this); + QVariant isAscending = settings.value(GC_ALLRIDES_ASCENDING,Qt::Checked); // default is ascending sort + if(isAscending.toInt() > 0 ){ + allRidesAscending->setCheckState(Qt::Checked); + } else { + allRidesAscending->setCheckState(Qt::Unchecked); + } + QLabel *warningLabel = new QLabel(tr("Requires Restart To Take Effect")); QHBoxLayout *unitLayout = new QHBoxLayout; @@ -32,6 +40,7 @@ ConfigurationPage::ConfigurationPage(QWidget *parent) QVBoxLayout *configLayout = new QVBoxLayout; configLayout->addLayout(unitLayout); + configLayout->addWidget(allRidesAscending); configLayout->addLayout(warningLayout); configGroup->setLayout(configLayout); diff --git a/src/Pages.h b/src/Pages.h index 90268e520..fa6fccca7 100644 --- a/src/Pages.h +++ b/src/Pages.h @@ -9,12 +9,14 @@ #include "Zones.h" #include #include +#include class ConfigurationPage : public QWidget { public: ConfigurationPage(QWidget *parent = 0); QComboBox *unitCombo; + QCheckBox *allRidesAscending; }; class CyclistPage : public QWidget diff --git a/src/RideFile.cpp b/src/RideFile.cpp index c6ad20c89..fba46157b 100644 --- a/src/RideFile.cpp +++ b/src/RideFile.cpp @@ -19,6 +19,7 @@ #include "RideFile.h" #include #include +#include "Settings.h" static void markInterval(QDomDocument &xroot, QDomNode &xride, QDomNode &xintervals, @@ -140,6 +141,12 @@ QStringList RideFileFactory::listRideFiles(const QDir &dir) const i.next(); filters << ("*." + i.key()); } - return dir.entryList(filters, QDir::Files, QDir::Name); + // This will read the user preferences and change the file list order as necessary: + QSettings settings(GC_SETTINGS_CO, GC_SETTINGS_APP); + QVariant isAscending = settings.value(GC_ALLRIDES_ASCENDING,Qt::Checked); + if(isAscending.toInt()>0){ + return dir.entryList(filters, QDir::Files, QDir::Name); + } + return dir.entryList(filters, QDir::Files, QDir::Name|QDir::Reversed); } diff --git a/src/Settings.h b/src/Settings.h index cb44e1d95..6a6d8ed71 100644 --- a/src/Settings.h +++ b/src/Settings.h @@ -31,7 +31,7 @@ #define GC_DATETIME_FORMAT "ddd MMM dd, yyyy, hh:mm AP" #define GC_UNIT "unit" #define GC_SETTINGS_LAST_IMPORT_PATH "mainwindow/lastImportPath" - +#define GC_ALLRIDES_ASCENDING "allRidesAscending" #endif // _GC_Settings_h