/* *openPilot Log - A FOSS Pilot Logbook Application *Copyright (C) 2020 Felix Turowsky * *This program is free software: you can redistribute it and/or modify *it under the terms of the GNU General Public License as published by *the Free Software Foundation, either version 3 of the License, or *(at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program. If not, see . */ #include "settingswidget.h" #include "ui_settingswidget.h" #include "src/database/dbinfo.h" SettingsWidget::SettingsWidget(QWidget *parent) : QWidget(parent), ui(new Ui::SettingsWidget) { ui->setupUi(this); ui->tabWidget->setCurrentIndex(0); QSettings settings; /* * General Tab */ auto *themeGroup = new QButtonGroup; themeGroup->addButton(ui->systemThemeCheckBox, 0); themeGroup->addButton(ui->lightThemeCheckBox, 1); themeGroup->addButton(ui->darkThemeCheckBox, 2); connect(themeGroup, SIGNAL(buttonClicked(int)), this, SLOT(themeGroup_toggled(int))); switch (settings.value("main/theme").toInt()) { case 0: ui->systemThemeCheckBox->setChecked(true); break; case 1: ui->lightThemeCheckBox->setChecked(true); break; case 2: ui->darkThemeCheckBox->setChecked(true); } /* * Flight Logging Tab */ //QString storedPrefix = db::singleSelect("setting","settings","setting_id","50",sql::exactMatch); QString storedPrefix = settings.value("userdata/flightnumberPrefix").toString(); if (storedPrefix.length() != 0) { ui->flightNumberPrefixLineEdit->setText(storedPrefix); } QRegExp flightNumberPrefix_rx("[a-zA-Z0-9]?[a-zA-Z0-9]?[a-zA-Z0-9]"); // allow max 3 letters (upper and lower) and numbers QValidator *flightNumberPrefixValidator = new QRegExpValidator(flightNumberPrefix_rx, this); ui->flightNumberPrefixLineEdit->setValidator(flightNumberPrefixValidator); /* * Aircraft Tab */ ui->acSortComboBox->setCurrentIndex(settings.value("userdata/acSortColumn").toInt()); } SettingsWidget::~SettingsWidget() { delete ui; } /* * Slots */ void SettingsWidget::on_flightNumberPrefixLineEdit_textEdited(const QString &arg1) { QSettings settings; settings.setValue("userdata/flightnumberPrefix", arg1); } void SettingsWidget::themeGroup_toggled(int id) { QSettings settings; settings.setValue("main/theme", id); QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "Changing Themes", "Changing the theme requires restarting the Application.\n\nWould you like to restart now?", QMessageBox::Yes | QMessageBox::No); if (reply == QMessageBox::Yes) { qApp->quit(); QProcess::startDetached(qApp->arguments()[0], qApp->arguments()); } else { QMessageBox *info = new QMessageBox(this); info->setText("Theme change will take effect the next time you start the application."); info->exec(); } } void SettingsWidget::on_aboutPushButton_clicked() { auto mb = new QMessageBox(this); QString SQLITE_VERSION = DbInfo().version; QString text = QMessageBox::tr( "

About openPilotLog

" "
" "(c) 2020 Felix Turowsky" "
" "

This is a collaboratively developed Free and Open Source Application. " "Visit us here for more information.

" "

This program is free software: you can redistribute it and/or modify " "it under the terms of the GNU General Public License as published by " "the Free Software Foundation, either version 3 of the License, or " "(at your option) any later version.

" "

This program is distributed in the hope that it will be useful, " "but WITHOUT ANY WARRANTY; without even the implied warranty of " "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public License for more details.

" "

You should have received a copy of the GNU General Public License " "along with this program. If not, " "please click here.

" "
" "

This program uses Qt version %3 and " "SQLite version %4

" ).arg(QLatin1String("github.com/fiffty-50/openpilotlog"), QLatin1String("qt.io"), QLatin1String(QT_VERSION_STR), QString(SQLITE_VERSION)); mb->setText(text); mb->open(); } void SettingsWidget::on_acSortComboBox_currentIndexChanged(int index) { QSettings settings; settings.setValue("userdata/acSortColumn", index); } void SettingsWidget::on_acAllowIncompleteComboBox_currentIndexChanged(int index) { QSettings settings; settings.setValue("userdata/acAllowIncomplete", index); if (index) { QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "Warning", "Warning: Enabling incomplete logging will enable you to add aircraft with incomplete data.\n\n" "If you do not fill out the aircraft details, " "it will be impossible to automatically determine Single/Multi Pilot Times or Single/Multi Engine Time." "This will also impact statistics and auto-logging capabilites.\n\n" "It is highly recommended to keep this option off unless you have a specific reason not to.\n\n" "Are you sure you want to proceed?", QMessageBox::Yes | QMessageBox::No); if (reply == QMessageBox::Yes) { QSettings settings; settings.setValue("userdata/acAllowIncomplete", index); } else { ui->acAllowIncompleteComboBox->setCurrentIndex(0); } } }