diff options
Diffstat (limited to 'settingsdialog.cpp')
| -rw-r--r-- | settingsdialog.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/settingsdialog.cpp b/settingsdialog.cpp new file mode 100644 index 0000000..644fa89 --- /dev/null +++ b/settingsdialog.cpp @@ -0,0 +1,66 @@ +#include "settingsdialog.h" +#include "ui_settingsdialog.h" +#include <QFontDialog> + +SettingsDialog::SettingsDialog(Database *db, QWidget *parent) + : QDialog(parent) + , ui(new Ui::SettingsDialog) + , database(db) + , currentAmountFont("Courier New", 10) + , weekStartDay(1) +{ + ui->setupUi(this); + + connect(ui->amountFontBtn, &QPushButton::clicked, this, &SettingsDialog::onChooseAmountFont); + connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &SettingsDialog::saveSettings); + + loadSettings(); +} + +SettingsDialog::~SettingsDialog() +{ + delete ui; +} + +void SettingsDialog::loadSettings() +{ + // Load settings from database + QString currency = database->getSetting("currency_symbol", "$"); + QString fontFamily = database->getSetting("amount_font", "Courier New"); + int fontSize = database->getSetting("amount_font_size", "10").toInt(); + int defaultPeriod = database->getSetting("default_period", "2").toInt(); + bool showAccountBalances = database->getSetting("show_account_balances", "0").toInt(); + weekStartDay = database->getSetting("week_start_day", "1").toInt(); + + // Set UI + ui->currencyEdit->setText(currency); + currentAmountFont = QFont(fontFamily, fontSize); + ui->amountFontBtn->setText(QString("%1, %2pt").arg(fontFamily).arg(fontSize)); + ui->defaultPeriodCombo->setCurrentIndex(defaultPeriod); + ui->defaultShowAccountBalancesCheck->setChecked(showAccountBalances); + ui->weekStartDayCombo->setCurrentIndex(weekStartDay - 1); +} + +void SettingsDialog::saveSettings() +{ + // Save to database + database->setSetting("currency_symbol", ui->currencyEdit->text()); + database->setSetting("amount_font", currentAmountFont.family()); + database->setSetting("amount_font_size", QString::number(currentAmountFont.pointSize())); + database->setSetting("default_period", QString::number(ui->defaultPeriodCombo->currentIndex())); + database->setSetting("show_account_balances", QString::number(ui->defaultShowAccountBalancesCheck->isChecked() ? 1 : 0)); + database->setSetting("week_start_day", QString::number(ui->weekStartDayCombo->currentIndex() + 1)); + + weekStartDay = ui->weekStartDayCombo->currentIndex() + 1; +} + +void SettingsDialog::onChooseAmountFont() +{ + bool ok; + QFont selectedFont = QFontDialog::getFont(&ok, currentAmountFont, this, "Choose Amount Font", QFontDialog::MonospacedFonts); + + if (ok) { + currentAmountFont = selectedFont; + ui->amountFontBtn->setText(QString("%1, %2pt").arg(selectedFont.family()).arg(selectedFont.pointSize())); + } +} |
