diff --git a/app/settings/controllers/layoutscontroller.cpp b/app/settings/controllers/layoutscontroller.cpp index 93e4f11b2..110bce365 100644 --- a/app/settings/controllers/layoutscontroller.cpp +++ b/app/settings/controllers/layoutscontroller.cpp @@ -358,6 +358,11 @@ void Layouts::selectRow(int index) m_view->selectRow(index); } +void Layouts::setLayoutProperties(const Data::Layout &layout) +{ + m_model->setLayoutProperties(layout); +} + QString Layouts::layoutNameForFreeActivities() const { return m_model->layoutNameForFreeActivities(); diff --git a/app/settings/controllers/layoutscontroller.h b/app/settings/controllers/layoutscontroller.h index 22e90b0ea..efb56791a 100644 --- a/app/settings/controllers/layoutscontroller.h +++ b/app/settings/controllers/layoutscontroller.h @@ -73,6 +73,7 @@ public: const Data::Layout selectedLayoutOriginalData() const; void selectRow(int index); + void setLayoutProperties(const Data::Layout &layout); //! actions void reset(); diff --git a/app/settings/dialogs/detailsdialog.cpp b/app/settings/dialogs/detailsdialog.cpp index 1cf885dd1..91a1c0edb 100644 --- a/app/settings/dialogs/detailsdialog.cpp +++ b/app/settings/dialogs/detailsdialog.cpp @@ -40,6 +40,12 @@ DetailsDialog::DetailsDialog(SettingsDialog *parent, Controller::Layouts *contro m_ui->setupUi(this); //! we must create handlers after creating/adjusting the ui m_handler = new Handler::DetailsHandler(this); + + connect(m_ui->buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked, + this, &DetailsDialog::on_apply); + + connect(m_ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, + this, &DetailsDialog::on_reset); } DetailsDialog::~DetailsDialog() @@ -56,6 +62,23 @@ Ui::DetailsDialog *DetailsDialog::ui() const return m_ui; } +void DetailsDialog::accept() +{ + qDebug() << Q_FUNC_INFO; +} + +void DetailsDialog::on_apply() +{ + qDebug() << Q_FUNC_INFO; + m_layoutsController->setLayoutProperties(m_handler->currentData()); +} + +void DetailsDialog::on_reset() +{ + qDebug() << Q_FUNC_INFO; + m_handler->reset(); +} + } } } diff --git a/app/settings/dialogs/detailsdialog.h b/app/settings/dialogs/detailsdialog.h index 08916bf0a..8b3df89d8 100644 --- a/app/settings/dialogs/detailsdialog.h +++ b/app/settings/dialogs/detailsdialog.h @@ -59,6 +59,12 @@ public: Ui::DetailsDialog *ui() const; Controller::Layouts *layoutsController() const; +private slots: + void accept() override; + + void on_apply(); + void on_reset(); + private: SettingsDialog *m_parentDlg{nullptr}; Ui::DetailsDialog *m_ui; diff --git a/app/settings/dialogs/detailsdialog.ui b/app/settings/dialogs/detailsdialog.ui index 118856f9a..5c75de2a2 100644 --- a/app/settings/dialogs/detailsdialog.ui +++ b/app/settings/dialogs/detailsdialog.ui @@ -11,7 +11,7 @@ - Dialog + Details @@ -68,7 +68,7 @@ - 160 + 220 60 @@ -317,7 +317,7 @@ - 160 + 220 60 @@ -374,7 +374,7 @@ - + Qt::Horizontal @@ -396,7 +396,7 @@ - mainButtonBox + buttonBox accepted() DetailsDialog accept() @@ -412,7 +412,7 @@ - mainButtonBox + buttonBox rejected() DetailsDialog reject() diff --git a/app/settings/dialogs/settingsdialog.cpp b/app/settings/dialogs/settingsdialog.cpp index 7dcf83057..521fa877e 100644 --- a/app/settings/dialogs/settingsdialog.cpp +++ b/app/settings/dialogs/settingsdialog.cpp @@ -50,10 +50,6 @@ #include -#define TWINENABLED "Enabled" -#define TWINVISIBLE "Visible" -#define TWINCHECKED "Checked" - namespace Latte { namespace Settings { namespace Dialog { @@ -74,12 +70,12 @@ SettingsDialog::SettingsDialog(QWidget *parent, Latte::Corona *corona) loadConfig(); - connect(m_ui->buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked - , this, &SettingsDialog::apply); - connect(m_ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked - , this, &SettingsDialog::reset); - connect(m_ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked - , this, &SettingsDialog::restoreDefaults); + connect(m_ui->buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked, + this, &SettingsDialog::apply); + connect(m_ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, + this, &SettingsDialog::reset); + connect(m_ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, + this, &SettingsDialog::restoreDefaults); //! Global Menu initGlobalMenu(); diff --git a/app/settings/handlers/detailshandler.cpp b/app/settings/handlers/detailshandler.cpp index 99030e585..557a4af6c 100644 --- a/app/settings/handlers/detailshandler.cpp +++ b/app/settings/handlers/detailshandler.cpp @@ -85,6 +85,8 @@ bool DetailsHandler::inDefaultValues() const void DetailsHandler::reset() { + c_data = o_data; + emit currentLayoutChanged(); } void DetailsHandler::resetDefaults() @@ -103,6 +105,16 @@ void DetailsHandler::on_currentIndexChanged(int index) emit currentLayoutChanged(); } +void DetailsHandler::setIsShownInMenu(bool inMenu) +{ + c_data.isShownInMenu = inMenu; +} + +void DetailsHandler::setHasDisabledBorders(bool disabled) +{ + c_data.hasDisabledBorders = disabled; +} + } } } diff --git a/app/settings/handlers/detailshandler.h b/app/settings/handlers/detailshandler.h index f46a78267..3c750a57c 100644 --- a/app/settings/handlers/detailshandler.h +++ b/app/settings/handlers/detailshandler.h @@ -62,6 +62,9 @@ public: Data::Layout currentData() const; + void setIsShownInMenu(bool inMenu); + void setHasDisabledBorders(bool disabled); + signals: void currentLayoutChanged(); diff --git a/app/settings/handlers/detailsinfohandler.cpp b/app/settings/handlers/detailsinfohandler.cpp index 38ee015c0..c6e5cae4d 100644 --- a/app/settings/handlers/detailsinfohandler.cpp +++ b/app/settings/handlers/detailsinfohandler.cpp @@ -60,6 +60,14 @@ void DetailsInfoHandler::init() } }); + connect(m_ui->inMenuChk, &QCheckBox::stateChanged, this, [&]() { + m_parentHandler->setIsShownInMenu(m_ui->inMenuChk->isChecked()); + }); + + connect(m_ui->borderlessChk, &QCheckBox::stateChanged, this, [&]() { + m_parentHandler->setHasDisabledBorders(m_ui->borderlessChk->isChecked()); + }); + connect(m_parentHandler, &DetailsHandler::currentLayoutChanged, this, &DetailsInfoHandler::reload); reload(); diff --git a/app/settings/models/layoutsmodel.cpp b/app/settings/models/layoutsmodel.cpp index bb850f551..0ed2ca65f 100644 --- a/app/settings/models/layoutsmodel.cpp +++ b/app/settings/models/layoutsmodel.cpp @@ -165,6 +165,19 @@ void Layouts::removeLayout(const QString &id) } } +void Layouts::setLayoutProperties(const Data::Layout &layout) +{ + if (m_layoutsTable.containsId(layout.id) && m_layoutsTable[layout.id] != layout) { + m_layoutsTable[layout.id] = layout; + int dataRow = m_layoutsTable.indexOf(layout.id); + + QVector roles; + roles << Qt::DisplayRole; + roles << Qt::UserRole; + emit dataChanged(index(dataRow, IDCOLUMN), index(dataRow, SHAREDCOLUMN), roles); + } +} + bool Layouts::removeRows(int row, int count, const QModelIndex &parent) { Q_UNUSED(parent) diff --git a/app/settings/models/layoutsmodel.h b/app/settings/models/layoutsmodel.h index c4b38f85e..9c64e8bd5 100644 --- a/app/settings/models/layoutsmodel.h +++ b/app/settings/models/layoutsmodel.h @@ -118,8 +118,9 @@ public: //! all original data will become also current void resetData(); - void appendLayout(const Settings::Data::Layout &layout); + void appendLayout(const Data::Layout &layout); void removeLayout(const QString &id); + void setLayoutProperties(const Data::Layout &layout); QString layoutNameForFreeActivities() const; void setCurrentLayoutForFreeActivities(const QString &id);