From ceec503cecf904cb32096b892f6535c18a4e07b0 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 5 Jun 2021 22:32:07 +0300 Subject: [PATCH] screensdialog:update remove button enablement --- app/settings/screensdialog/screenshandler.cpp | 13 ++++++++++- app/settings/screensdialog/screenshandler.h | 3 +++ app/settings/screensdialog/screensmodel.cpp | 23 ++++++++++++++----- app/settings/screensdialog/screensmodel.h | 3 ++- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/app/settings/screensdialog/screenshandler.cpp b/app/settings/screensdialog/screenshandler.cpp index 18824649f..903afcce5 100644 --- a/app/settings/screensdialog/screenshandler.cpp +++ b/app/settings/screensdialog/screenshandler.cpp @@ -40,7 +40,7 @@ void ScreensHandler::init() m_ui->screensTable->verticalHeader()->setVisible(false); //! Data Changed - connect(m_screensModel, &Settings::Model::Screens::screensDataChanged, this, &ScreensHandler::dataChanged); + connect(m_screensModel, &Settings::Model::Screens::screenDataChanged, this, &ScreensHandler::dataChanged); //! Screens Proxy Model m_screensProxyModel = new QSortFilterProxyModel(this); @@ -61,6 +61,11 @@ void ScreensHandler::init() //! load data m_screensModel->setData(m_dialog->layoutsController()->screensData()); + + //! signals + connect(m_screensModel, &Settings::Model::Screens::screenDataChanged, this, &ScreensHandler::onScreenDataChanged); + + onScreenDataChanged(); } bool ScreensHandler::hasChangedData() const @@ -90,6 +95,12 @@ void ScreensHandler::resetDefaults() reset(); } +void ScreensHandler::onScreenDataChanged() +{ + m_dialog->removeNowButton()->setEnabled(m_screensModel->hasSelected()); +} + + void ScreensHandler::save() { //do nothing diff --git a/app/settings/screensdialog/screenshandler.h b/app/settings/screensdialog/screenshandler.h index 2a519f958..8632487fd 100644 --- a/app/settings/screensdialog/screenshandler.h +++ b/app/settings/screensdialog/screenshandler.h @@ -55,6 +55,9 @@ private: void init(); void initDefaults(); +private: + void onScreenDataChanged(); + private: Dialog::ScreensDialog *m_dialog{nullptr}; Ui::ScreensDialog *m_ui{nullptr}; diff --git a/app/settings/screensdialog/screensmodel.cpp b/app/settings/screensdialog/screensmodel.cpp index c34aa54e2..077080828 100644 --- a/app/settings/screensdialog/screensmodel.cpp +++ b/app/settings/screensdialog/screensmodel.cpp @@ -31,6 +31,17 @@ bool Screens::hasChangedData() const return c_screens != o_screens; } +bool Screens::hasSelected() const +{ + for(int i=0; i 0 ? true : false); - emit screensDataChanged(); + emit screenDataChanged(); return true; } break; diff --git a/app/settings/screensdialog/screensmodel.h b/app/settings/screensdialog/screensmodel.h index cf2fd5e0d..6dcf91e53 100644 --- a/app/settings/screensdialog/screensmodel.h +++ b/app/settings/screensdialog/screensmodel.h @@ -51,6 +51,7 @@ public: ~Screens(); bool hasChangedData() const; + bool hasSelected() const; bool inDefaultValues() const; int rowCount() const; @@ -73,7 +74,7 @@ public: void reset(); signals: - void screensDataChanged(); + void screenDataChanged(); private: void initDefaults();