#include "settingsdialog.h" #include "ui_settingsdialog.h" #include 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(); int projectionMonths = database->getSetting("projection_months", "3").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); ui->projectionMonthsSpin->setValue(projectionMonths); } 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)); database->setSetting("projection_months", QString::number(ui->projectionMonthsSpin->value())); 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())); } }