diff --git a/src/exportdialog.cpp b/src/exportdialog.cpp index 4c272afc..d510e020 100644 --- a/src/exportdialog.cpp +++ b/src/exportdialog.cpp @@ -22,9 +22,6 @@ ExportDialog::ExportDialog(Export *exp, QWidget *parent) { int index; - _units = QLocale::system().measurementSystem() == QLocale::ImperialSystem ? - QPrinter::Inch : QPrinter::Millimeter; - _fileSelect = new FileSelectWidget(); _fileSelect->setFilter(tr("PDF files (*.pdf);;All files (*)")); _fileSelect->setFile(_export->fileName); @@ -53,12 +50,12 @@ ExportDialog::ExportDialog(Export *exp, QWidget *parent) _bottomMargin = new QDoubleSpinBox(); _leftMargin = new QDoubleSpinBox(); _rightMargin = new QDoubleSpinBox(); - QString us = (_units == QPrinter::Inch) ? tr("in") : tr("mm"); + QString us = (_export->units == Imperial) ? tr("in") : tr("mm"); _topMargin->setSuffix(UNIT_SPACE + us); _bottomMargin->setSuffix(UNIT_SPACE + us); _leftMargin->setSuffix(UNIT_SPACE + us); _rightMargin->setSuffix(UNIT_SPACE + us); - if (_units == QPrinter::Inch) { + if (_export->units == Imperial) { _topMargin->setValue(_export->margins.top() * MM2IN); _bottomMargin->setValue(_export->margins.bottom() * MM2IN); _leftMargin->setValue(_export->margins.left() * MM2IN); @@ -169,7 +166,7 @@ void ExportDialog::accept() _export->fileName = _fileSelect->file(); _export->paperSize = paperSize; _export->orientation = orientation; - if (_units == QPrinter::Inch) + if (_export->units == Imperial) _export->margins = MarginsF(_leftMargin->value() / MM2IN, _topMargin->value() / MM2IN, _rightMargin->value() / MM2IN, _bottomMargin->value() / MM2IN); diff --git a/src/exportdialog.h b/src/exportdialog.h index b2957a66..5765a836 100644 --- a/src/exportdialog.h +++ b/src/exportdialog.h @@ -4,6 +4,7 @@ #include #include #include "margins.h" +#include "units.h" class QComboBox; class QRadioButton; @@ -15,6 +16,8 @@ struct Export { QPrinter::PaperSize paperSize; QPrinter::Orientation orientation; MarginsF margins; + + Units units; }; class ExportDialog : public QDialog @@ -31,7 +34,6 @@ private: bool checkFile(); Export *_export; - QPrinter::Unit _units; FileSelectWidget *_fileSelect; QComboBox *_paperSize; diff --git a/src/gui.cpp b/src/gui.cpp index c1f5ef4d..338e226a 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -1143,6 +1143,9 @@ void GUI::updatePathView() void GUI::setUnits(Units units) { + _export.units = units; + _options.units = units; + _pathView->setUnits(units); for (int i = 0; i <_tabs.count(); i++) _tabs.at(i)->setUnits(units); @@ -1389,10 +1392,12 @@ void GUI::readSettings() settings.beginGroup(SETTINGS_SETTINGS_GROUP); if (settings.value(UNITS_SETTING, UNITS_DEFAULT).toInt() == Imperial) { - setImperialUnits(); + setUnits(Imperial); _imperialUnitsAction->setChecked(true); - } else + } else { + setUnits(Metric); _metricUnitsAction->setChecked(true); + } if (!settings.value(SHOW_TOOLBARS_SETTING, SHOW_TOOLBARS_DEFAULT).toBool()) showToolbars(false); else diff --git a/src/optionsdialog.cpp b/src/optionsdialog.cpp index 3c007cc0..637f83de 100644 --- a/src/optionsdialog.cpp +++ b/src/optionsdialog.cpp @@ -11,13 +11,13 @@ #include #include #include "config.h" -#include "units.h" #include "icons.h" #include "colorbox.h" #include "stylecombobox.h" #include "optionsdialog.h" #define MENU_MARGIN 20 +#define MENU_ICON_SIZE 32 QWidget *OptionsDialog::createAppearancePage() @@ -43,34 +43,53 @@ QWidget *OptionsDialog::createAppearancePage() _trackWidth->setMinimum(1); _trackStyle = new StyleComboBox(); _trackStyle->setValue(_options->trackStyle); - QGroupBox *trackBox = new QGroupBox(tr("Tracks")); QFormLayout *trackLayout = new QFormLayout(); - trackLayout->addRow(tr("Line width:"), _trackWidth); - trackLayout->addRow(tr("Line style:"), _trackStyle); + trackLayout->addRow(tr("Track width:"), _trackWidth); + trackLayout->addRow(tr("Track style:"), _trackStyle); +#ifndef Q_OS_MAC + QGroupBox *trackBox = new QGroupBox(tr("Tracks")); trackBox->setLayout(trackLayout); +#endif _routeWidth = new QSpinBox(); _routeWidth->setValue(_options->routeWidth); _routeWidth->setMinimum(1); _routeStyle = new StyleComboBox(); _routeStyle->setValue(_options->routeStyle); - QGroupBox *routeBox = new QGroupBox(tr("Routes")); QFormLayout *routeLayout = new QFormLayout(); - routeLayout->addRow(tr("Line width:"), _routeWidth); - routeLayout->addRow(tr("Line style:"), _routeStyle); + routeLayout->addRow(tr("Route width:"), _routeWidth); + routeLayout->addRow(tr("Route style:"), _routeStyle); +#ifndef Q_OS_MAC + QGroupBox *routeBox = new QGroupBox(tr("Routes")); routeBox->setLayout(routeLayout); +#endif // Q_OS_MAC _pathAA = new QCheckBox(tr("Use anti-aliasing")); _pathAA->setChecked(_options->pathAntiAliasing); + QFormLayout *pathAALayout = new QFormLayout(); + pathAALayout->addWidget(_pathAA); QWidget *pathTab = new QWidget(); QVBoxLayout *pathTabLayout = new QVBoxLayout(); +#ifdef Q_OS_MAC + QFrame *l1 = new QFrame(); + l1->setFrameShape(QFrame::HLine); + l1->setFrameShadow(QFrame::Sunken); + QFrame *l2 = new QFrame(); + l2->setFrameShape(QFrame::HLine); + l2->setFrameShadow(QFrame::Sunken); + + pathTabLayout->addLayout(trackLayout); + pathTabLayout->addWidget(l1); + pathTabLayout->addLayout(routeLayout); + pathTabLayout->addWidget(l2); +#else pathTabLayout->addWidget(trackBox); pathTabLayout->addWidget(routeBox); - pathTabLayout->addWidget(_pathAA); +#endif + pathTabLayout->addLayout(pathAALayout); pathTab->setLayout(pathTabLayout); - _graphWidth = new QSpinBox(); _graphWidth->setValue(_options->graphWidth); _graphWidth->setMinimum(1); @@ -79,11 +98,14 @@ QWidget *OptionsDialog::createAppearancePage() _graphAA = new QCheckBox(tr("Use anti-aliasing")); _graphAA->setChecked(_options->graphAntiAliasing); + QFormLayout *graphAALayout = new QFormLayout(); + graphAALayout->addWidget(_graphAA); + QWidget *graphTab = new QWidget(); QVBoxLayout *graphTabLayout = new QVBoxLayout(); graphTabLayout->addLayout(graphLayout); - graphTabLayout->addWidget(_graphAA); + graphTabLayout->addLayout(graphAALayout); graphTabLayout->addStretch(); graphTab->setLayout(graphTabLayout); @@ -100,8 +122,13 @@ QWidget *OptionsDialog::createPOIPage() _poiRadius = new QDoubleSpinBox(); _poiRadius->setSingleStep(1); _poiRadius->setDecimals(1); - _poiRadius->setValue(_options->poiRadius / 1000); - _poiRadius->setSuffix(UNIT_SPACE + tr("km")); + if (_options->units == Imperial) { + _poiRadius->setValue(_options->poiRadius / MIINM); + _poiRadius->setSuffix(UNIT_SPACE + tr("mi")); + } else { + _poiRadius->setValue(_options->poiRadius / KMINM); + _poiRadius->setSuffix(UNIT_SPACE + tr("km")); + } QFormLayout *poiLayout = new QFormLayout(); poiLayout->addRow(tr("POI radius:"), _poiRadius); @@ -118,12 +145,16 @@ QWidget *OptionsDialog::createPOIPage() QWidget *OptionsDialog::createSystemPage() { _useOpenGL = new QCheckBox(tr("Use OpenGL")); +#if defined(Q_OS_WIN32) || defined(Q_OS_MAC) #ifdef Q_OS_WIN32 - if (QSysInfo::WindowsVersion < QSysInfo::WV_VISTA) { - _useOpenGL->setChecked(false); - _useOpenGL->setEnabled(false); - } else + if (QSysInfo::WindowsVersion < QSysInfo::WV_VISTA) { #endif // Q_OS_WIN32 + _useOpenGL->setChecked(false); + _useOpenGL->setEnabled(false); +#ifdef Q_OS_WIN32 + } else +#endif // Q_OS_WIN32 +#endif // Q_OS_WIN32 || Q_OS_MAC _useOpenGL->setChecked(_options->useOpenGL); QFormLayout *systemLayout = new QFormLayout(); @@ -147,6 +178,7 @@ OptionsDialog::OptionsDialog(Options *options, QWidget *parent) pages->addWidget(createSystemPage()); QListWidget *menu = new QListWidget(); + menu->setIconSize(QSize(MENU_ICON_SIZE, MENU_ICON_SIZE)); new QListWidgetItem(QIcon(QPixmap(APPEARANCE_ICON)), tr("Appearance"), menu); new QListWidgetItem(QIcon(QPixmap(POI_ICON)), tr("POI"), menu); @@ -195,7 +227,10 @@ void OptionsDialog::accept() _options->graphWidth = _graphWidth->value(); _options->graphAntiAliasing = _graphAA->isChecked(); - _options->poiRadius = _poiRadius->value() * 1000; + if (_options->units == Imperial) + _options->poiRadius = _poiRadius->value() * MIINM; + else + _options->poiRadius = _poiRadius->value() * KMINM; _options->useOpenGL = _useOpenGL->isChecked(); diff --git a/src/optionsdialog.h b/src/optionsdialog.h index 82c08807..d667dc6b 100644 --- a/src/optionsdialog.h +++ b/src/optionsdialog.h @@ -3,6 +3,7 @@ #include #include "palette.h" +#include "units.h" class ColorBox; class StyleComboBox; @@ -25,6 +26,8 @@ struct Options { int poiRadius; // System bool useOpenGL; + + Units units; }; class OptionsDialog : public QDialog diff --git a/src/settings.h b/src/settings.h index 71b646ad..3a8c3ab5 100644 --- a/src/settings.h +++ b/src/settings.h @@ -89,7 +89,7 @@ #define GRAPH_AA_SETTING "graphAntiAliasing" #define GRAPH_AA_DEFAULT false #define POI_RADIUS_SETTING "poiRadius" -#define POI_RADIUS_DEFAULT 1000 /* m */ +#define POI_RADIUS_DEFAULT (IMPERIAL_UNITS() ? KMINM : MIINM) #define USE_OPENGL_SETTING "useOpenGL" #define USE_OPENGL_DEFAULT false diff --git a/src/stylecombobox.cpp b/src/stylecombobox.cpp index c256f540..8811b6e1 100644 --- a/src/stylecombobox.cpp +++ b/src/stylecombobox.cpp @@ -4,7 +4,7 @@ #include "stylecombobox.h" -#define MIN_LINE_LENGTH 50 +#define MIN_LINE_LENGTH 60 #define LINE_WIDTH_RATIO 7 #define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a)) @@ -42,26 +42,3 @@ void StyleComboBox::setValue(Qt::PenStyle value) } } } - -void StyleComboBox::resizeEvent(QResizeEvent *event) -{ - QSize is = iconSize(); - setIconSize(QSize(qMax(event->size().width() - 40, MIN_LINE_LENGTH), - is.height())); - is = iconSize(); - - for (int i = 0; i < count(); i++) { - QPixmap pm(is); - pm.fill(Qt::transparent); - - QBrush brush(Qt::black); - QPen pen(brush, is.height() / LINE_WIDTH_RATIO, - (Qt::PenStyle) itemData(i).toInt()); - - QPainter painter(&pm); - painter.setPen(pen); - painter.drawLine(0, is.height() / 2, is.width(), is.height() / 2); - - setItemIcon(i, QIcon(pm)); - } -} diff --git a/src/stylecombobox.h b/src/stylecombobox.h index 2e30637a..c31a6d10 100644 --- a/src/stylecombobox.h +++ b/src/stylecombobox.h @@ -11,9 +11,6 @@ public: StyleComboBox(QWidget *parent = 0); void setValue(Qt::PenStyle value); - -private: - void resizeEvent(QResizeEvent *event); }; #endif // STYLECOMBOBOX_H diff --git a/src/units.h b/src/units.h index 734c661e..a9d45026 100644 --- a/src/units.h +++ b/src/units.h @@ -16,14 +16,14 @@ enum Units { #define H2S 0.000277777778 // h -> s #define MIN2S 0.016666666667 // min -> s -#define KMINM 1000 // 1 km in m -#define MIINFT 5280 // 1 mi in ft +#define KMINM 1000.0 // 1 km in m +#define MIINFT 5280.0 // 1 mi in ft #define MIINM 1609.344 // 1 mi in m -#define MININS 60 // 1 min in s -#define HINS 3600 // 1 hins +#define MININS 60.0 // 1 min in s +#define HINS 3600.0 // 1 hins -#define C2FS 1.8 // Celsius to Farenheit - scale -#define C2FO 32 // Celsius to Farenheit - offset +#define C2FS 1.8 // Celsius to Farenheit - scale +#define C2FO 32.0 // Celsius to Farenheit - offset #ifdef Q_OS_WIN32 #define UNIT_SPACE QString(" ")