diff --git a/app/settings/models/layoutsmodel.cpp b/app/settings/models/layoutsmodel.cpp index be51f9c23..57827141a 100644 --- a/app/settings/models/layoutsmodel.cpp +++ b/app/settings/models/layoutsmodel.cpp @@ -24,6 +24,7 @@ #include "../data/layoutdata.h" #include "../../layouts/manager.h" #include "../../layouts/synchronizer.h" +#include "../../settings/universalsettings.h" // Qt #include <QDebug> @@ -61,6 +62,11 @@ Layouts::Layouts(QObject *parent, Latte::Corona *corona) connect(m_corona->layoutsManager(), &Latte::Layouts::Manager::currentLayoutNameChanged, this, &Layouts::updateActiveStates); connect(m_corona->layoutsManager(), &Latte::Layouts::Manager::centralLayoutsChanged, this, &Layouts::updateActiveStates); + + connect(m_corona->universalSettings(), &Latte::UniversalSettings::lastNonAssignedLayoutNameChanged, this, [&]() { + //FREE ACTIVITES LAYOUT changed and our model must be updated... + assignFreeActivitiesLayoutAt(m_corona->universalSettings()->lastNonAssignedLayoutName()); + }); } Layouts::~Layouts() @@ -417,6 +423,22 @@ QStringList Layouts::cleanStrings(const QStringList &original, const QStringList } +void Layouts::assignFreeActivitiesLayoutAt(const QString &layoutName) +{ + QString reqId = m_layoutsTable.idForOriginalName(layoutName); + + if (reqId.isEmpty()) { + reqId = m_layoutsTable.idForCurrentName(layoutName); + if (reqId.isEmpty()) { + return; + } + } + + int row = m_layoutsTable.indexOf(reqId); + setActivities(row, QStringList(Data::Layout::FREEACTIVITIESID)); + setShares(row, QStringList()); +} + void Layouts::autoAssignFreeActivitiesLayout() { QVector<int> roles; diff --git a/app/settings/models/layoutsmodel.h b/app/settings/models/layoutsmodel.h index 8cd76bda6..f4bbecb3d 100644 --- a/app/settings/models/layoutsmodel.h +++ b/app/settings/models/layoutsmodel.h @@ -123,7 +123,9 @@ private slots: private: void initActivities(); + void assignFreeActivitiesLayoutAt(const QString &layoutName); void autoAssignFreeActivitiesLayout(); + void setActivities(const int &row, const QStringList &activities); void setId(const int &row, const QString &newId); void setShares(const int &row, const QStringList &shares);