/* SPDX-FileCopyrightText: 2020 Michail Vourlakos SPDX-License-Identifier: GPL-2.0-or-later */ #include "detailsdialog.h" // local #include "ui_detailsdialog.h" #include "detailshandler.h" #include "../settingsdialog/layoutscontroller.h" namespace Latte { namespace Settings { namespace Dialog { DetailsDialog::DetailsDialog(SettingsDialog *parent, Controller::Layouts *controller) : GenericDialog(parent), m_parentDlg(parent), m_ui(new Ui::DetailsDialog), m_layoutsController(controller), m_storage(KConfigGroup(KSharedConfig::openConfig(),"LatteSettingsDialog").group("DetailsDialog")) { setAttribute(Qt::WA_DeleteOnClose, true); loadConfig(); //! first we need to setup the ui m_ui->setupUi(this); //! we must create handlers after creating/adjusting the ui m_handler = new Handler::DetailsHandler(this); connect(m_handler, &Handler::DetailsHandler::currentLayoutChanged, this, &DetailsDialog::updateApplyButtonsState); connect(m_handler, &Handler::DetailsHandler::dataChanged, this, &DetailsDialog::updateApplyButtonsState); connect(m_ui->buttonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &DetailsDialog::onOk); connect(m_ui->buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &DetailsDialog::onCancel); connect(m_ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, this, &DetailsDialog::onReset); resize(m_windowSize); updateApplyButtonsState(); } DetailsDialog::~DetailsDialog() { saveConfig(); } Controller::Layouts *DetailsDialog::layoutsController() const { return m_layoutsController; } Ui::DetailsDialog *DetailsDialog::ui() const { return m_ui; } Latte::Corona *DetailsDialog::corona() const { return m_parentDlg->corona(); } void DetailsDialog::updateApplyButtonsState() { if (m_handler->hasChangedData()) { m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); m_ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(true); } else { m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); m_ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(false); } } void DetailsDialog::accept() { qDebug() << Q_FUNC_INFO; } void DetailsDialog::onOk() { qDebug() << Q_FUNC_INFO; m_handler->save(); close(); } void DetailsDialog::onCancel() { qDebug() << Q_FUNC_INFO; close(); } void DetailsDialog::onReset() { qDebug() << Q_FUNC_INFO; m_handler->reset(); } void DetailsDialog::loadConfig() { m_windowSize = m_storage.readEntry("windowSize", QSize(560, 640)); } void DetailsDialog::saveConfig() { m_storage.writeEntry("windowSize", size()); } } } }