You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
latte-dock/app/settings/detailsdialog/detailsdialog.cpp

116 lines
2.7 KiB
C++

/*
SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
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());
}
}
}
}