From 5101a1314e476006b199705f35e7738911c54536 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sun, 30 Aug 2020 17:14:20 +0300 Subject: [PATCH] fix switch button for single layout mode --- .../controllers/layoutscontroller.cpp | 18 ++++++++- app/settings/controllers/layoutscontroller.h | 4 ++ app/settings/handlers/tablayoutshandler.cpp | 12 ++++-- app/settings/models/layoutsmodel.cpp | 37 +++++++++++++------ app/settings/models/layoutsmodel.h | 6 ++- 5 files changed, 60 insertions(+), 17 deletions(-) diff --git a/app/settings/controllers/layoutscontroller.cpp b/app/settings/controllers/layoutscontroller.cpp index feddea90c..184d5d399 100644 --- a/app/settings/controllers/layoutscontroller.cpp +++ b/app/settings/controllers/layoutscontroller.cpp @@ -158,6 +158,21 @@ bool Layouts::dataAreChanged() const return m_model->dataAreChanged(); } +bool Layouts::layoutsAreChanged() const +{ + return m_model->layoutsAreChanged(); +} + +bool Layouts::modeIsChanged() const +{ + return m_model-modeIsChanged(); +} + +void Layouts::setOriginalInMultipleMode(const bool &inmultiple) +{ + m_model->setOriginalInMultipleMode(inmultiple); +} + bool Layouts::hasSelectedLayout() const { int selectedRow = m_view->currentIndex().row(); @@ -382,7 +397,8 @@ void Layouts::initLayouts() } //! Send original loaded data to model - m_model->setOriginalData(layouts, inMultiple); + m_model->setOriginalInMultipleMode(inMultiple); + m_model->setOriginalData(layouts); QStringList currentLayoutNames = m_handler->corona()->layoutsManager()->currentLayoutsNames(); if (currentLayoutNames.count() > 0) { diff --git a/app/settings/controllers/layoutscontroller.h b/app/settings/controllers/layoutscontroller.h index e5f2dd1a0..5b76f7d45 100644 --- a/app/settings/controllers/layoutscontroller.h +++ b/app/settings/controllers/layoutscontroller.h @@ -65,6 +65,8 @@ public: QTableView *view() const; bool dataAreChanged() const; + bool layoutsAreChanged() const; + bool modeIsChanged() const; bool inMultipleMode() const; void setInMultipleMode(bool inMultiple); @@ -89,6 +91,8 @@ public: QString layoutNameForFreeActivities() const; void setOriginalLayoutForFreeActivities(const QString &id); + void setOriginalInMultipleMode(const bool &inmultiple); + void copySelectedLayout(); const Latte::Data::Layout addLayoutForFile(QString file, QString layoutName = QString(), bool newTempDirectory = true); const Latte::Data::Layout addLayoutByText(QString rawLayoutText); diff --git a/app/settings/handlers/tablayoutshandler.cpp b/app/settings/handlers/tablayoutshandler.cpp index d55d6d8dd..004c35eae 100644 --- a/app/settings/handlers/tablayoutshandler.cpp +++ b/app/settings/handlers/tablayoutshandler.cpp @@ -309,16 +309,20 @@ void TabLayouts::switchLayout() Latte::Data::Layout selectedLayoutOriginal = m_layoutsController->selectedLayoutOriginalData(); selectedLayoutOriginal = selectedLayoutOriginal.isEmpty() ? selectedLayoutCurrent : selectedLayoutOriginal; - if (m_layoutsController->dataAreChanged()) { + if (m_layoutsController->layoutsAreChanged()) { showInlineMessage(i18nc("settings:not permitted switching layout","You need to apply your changes first to switch layout..."), KMessageWidget::Warning); return; } if (!m_layoutsController->inMultipleMode()) { - m_corona->layoutsManager()->switchToLayout(selectedLayoutOriginal.name); + m_corona->layoutsManager()->switchToLayout(selectedLayoutOriginal.name, MemoryUsage::SingleLayout); + m_layoutsController->setOriginalInMultipleMode(false); } else { - CentralLayout singleLayout(this, selectedLayoutCurrent.id); + m_corona->layoutsManager()->switchToLayout(selectedLayoutOriginal.name, MemoryUsage::MultipleLayouts); + m_layoutsController->setOriginalInMultipleMode(true); + + /*CentralLayout singleLayout(this, selectedLayoutCurrent.id); QString switchToActivity; @@ -354,7 +358,7 @@ void TabLayouts::switchLayout() } m_corona->layoutsManager()->synchronizer()->activitiesController()->setCurrentActivity(switchToActivity); - } + }*/ } updatePerLayoutButtonsState(); diff --git a/app/settings/models/layoutsmodel.cpp b/app/settings/models/layoutsmodel.cpp index 1d8d397f0..de2c14692 100644 --- a/app/settings/models/layoutsmodel.cpp +++ b/app/settings/models/layoutsmodel.cpp @@ -73,7 +73,17 @@ bool Layouts::containsCurrentName(const QString &name) const bool Layouts::dataAreChanged() const { - return ((o_inMultipleMode != m_inMultipleMode) || (o_layoutsTable != m_layoutsTable)); + return modeIsChanged() || layoutsAreChanged(); +} + +bool Layouts::modeIsChanged() const +{ + return o_inMultipleMode != m_inMultipleMode; +} + +bool Layouts::layoutsAreChanged() const +{ + return o_layoutsTable != m_layoutsTable; } bool Layouts::inMultipleMode() const @@ -151,7 +161,8 @@ void Layouts::applyData() void Layouts::resetData() { clear(); - setOriginalData(o_layoutsTable, o_inMultipleMode); + setOriginalInMultipleMode(o_inMultipleMode); + setOriginalData(o_layoutsTable); } void Layouts::removeLayout(const QString &id) @@ -779,23 +790,27 @@ const Latte::Data::LayoutsTable &Layouts::currentLayoutsData() return m_layoutsTable; } -void Layouts::setOriginalData(Latte::Data::LayoutsTable &data, const bool &inmultiple) +void Layouts::setOriginalInMultipleMode(const bool &inmultiple) +{ + setInMultipleMode(inmultiple); + + if (o_inMultipleMode == inmultiple) { + return; + } + + o_inMultipleMode = inmultiple; + emit inMultipleModeChanged(); +} + +void Layouts::setOriginalData(Latte::Data::LayoutsTable &data) { clear(); beginInsertRows(QModelIndex(), 0, data.rowCount() - 1); - o_inMultipleMode = inmultiple; o_layoutsTable = data; - m_layoutsTable = data; - - for(int i=0; ilayoutsManager()->synchronizer()->layout(originalData(m_layoutsTable[i].id).name); - } endInsertRows(); - setInMultipleMode(inmultiple); - emit rowsInserted(); } diff --git a/app/settings/models/layoutsmodel.h b/app/settings/models/layoutsmodel.h index b67f0ceca..569640475 100644 --- a/app/settings/models/layoutsmodel.h +++ b/app/settings/models/layoutsmodel.h @@ -87,6 +87,8 @@ public: bool containsCurrentName(const QString &name) const; bool dataAreChanged() const; + bool layoutsAreChanged() const; + bool modeIsChanged() const; bool inMultipleMode() const; void setInMultipleMode(bool inMultiple); @@ -129,7 +131,9 @@ public: const Latte::Data::LayoutsTable ¤tLayoutsData(); const Latte::Data::LayoutsTable &originalLayoutsData(); - void setOriginalData(Latte::Data::LayoutsTable &data, const bool &inmultiple); + + void setOriginalInMultipleMode(const bool &inmultiple); + void setOriginalData(Latte::Data::LayoutsTable &data); signals: void inMultipleModeChanged();