#include "qt/preferences_dialog.hpp" #include "platform/measurement_utils.hpp" #include "platform/settings.hpp" #include #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) #include #include #include #include #include #include #include #include #include #else #include #include #include #include #include #include #include #include #include #endif using namespace measurement_utils; namespace qt { PreferencesDialog::PreferencesDialog(QWidget * parent) : QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint) { QIcon icon(":/ui/logo.png"); setWindowIcon(icon); setWindowTitle(tr("Preferences")); m_pUnits = new QButtonGroup(this); QGroupBox * radioBox = new QGroupBox("System of measurement"); { QHBoxLayout * pLayout = new QHBoxLayout(); QRadioButton * p = new QRadioButton("Metric"); pLayout->addWidget(p); m_pUnits->addButton(p, static_cast(Units::Metric)); p = new QRadioButton("Imperial (foot)"); pLayout->addWidget(p); m_pUnits->addButton(p, static_cast(Units::Imperial)); radioBox->setLayout(pLayout); Units u; if (!settings::Get(settings::kMeasurementUnits, u)) { // set default measurement from system locale if (QLocale::system().measurementSystem() == QLocale::MetricSystem) u = Units::Metric; else u = Units::Imperial; } m_pUnits->button(static_cast(u))->setChecked(true); connect(m_pUnits, SIGNAL(buttonClicked(int)), this, SLOT(OnUnitsChanged(int))); } QHBoxLayout * bottomLayout = new QHBoxLayout(); { QPushButton * closeButton = new QPushButton(tr("Close")); closeButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); closeButton->setDefault(true); connect(closeButton, SIGNAL(clicked()), this, SLOT(OnCloseClick())); bottomLayout->addStretch(1); bottomLayout->setSpacing(0); bottomLayout->addWidget(closeButton); } QVBoxLayout * finalLayout = new QVBoxLayout(); finalLayout->addWidget(radioBox); finalLayout->addLayout(bottomLayout); setLayout(finalLayout); } void PreferencesDialog::OnCloseClick() { done(0); } void PreferencesDialog::OnUnitsChanged(int i) { using namespace settings; Units u; switch (i) { case 0: u = Units::Metric; break; case 1: u = Units::Imperial; break; } settings::Set(kMeasurementUnits, u); } }