viewsdialog:update active state after ::save()

work/spdx
Michail Vourlakos 4 years ago
parent 4d76005325
commit 49faec250c

@ -102,7 +102,7 @@ bool View::operator==(const View &rhs) const
{ {
return (id == rhs.id) return (id == rhs.id)
&& (name == rhs.name) && (name == rhs.name)
&& (isActive == rhs.isActive) //&& (isActive == rhs.isActive) /*activeness is a state and is not considered*/
&& (onPrimary == rhs.onPrimary) && (onPrimary == rhs.onPrimary)
&& (screen == rhs.screen) && (screen == rhs.screen)
&& (screenEdgeMargin == rhs.screenEdgeMargin) && (screenEdgeMargin == rhs.screenEdgeMargin)
@ -127,6 +127,18 @@ View::operator QString() const
result += id; result += id;
result +=" : "; result +=" : ";
result += isActive ? "Active" : "Inactive"; result += isActive ? "Active" : "Inactive";
result += " : ";
if (m_state == IsInvalid) {
result += "IsInvalid";
} else if (m_state == IsCreated) {
result += "IsCreated";
} else if (m_state == OriginFromViewTemplate) {
result += "OriginFromViewTemplate";
} else if (m_state == OriginFromLayout) {
result += "OriginFromLayout";
}
result += " : "; result += " : ";
result += onPrimary ? "Primary" : "Explicit"; result += onPrimary ? "Primary" : "Explicit";
result += " : "; result += " : ";

@ -265,6 +265,10 @@ void Views::save()
//! update model original data //! update model original data
m_model->setOriginalData(currentViews); m_model->setOriginalData(currentViews);
if (central->isActive()) {
m_model->updateActiveStatesBasedOn(central);
}
} }
QString Views::uniqueViewName(QString name) QString Views::uniqueViewName(QString name)

@ -208,6 +208,32 @@ bool Views::isVertical(const Plasma::Types::Location &location) const
return (location == Plasma::Types::LeftEdge || location == Plasma::Types::RightEdge); return (location == Plasma::Types::LeftEdge || location == Plasma::Types::RightEdge);
} }
void Views::updateActiveStatesBasedOn(const CentralLayout *layout)
{
if (!layout) {
return;
}
QVector<int> roles;
roles << Qt::DisplayRole;
roles << Qt::UserRole;
roles << ISCHANGEDROLE;
roles << ISACTIVEROLE;
roles << HASCHANGEDVIEWROLE;
for (int i=0; i<m_viewsTable.rowCount(); ++i) {
uint viewid = m_viewsTable[i].id.toUInt();
auto view = layout->viewForContainment(viewid);
bool currentactivestate = (view != nullptr);
if (currentactivestate != m_viewsTable[i].isActive) {
m_viewsTable[i].isActive = currentactivestate;
emit dataChanged(this->index(i, IDCOLUMN), this->index(i, SUBCONTAINMENTSCOLUMN), roles);
}
}
}
Latte::Data::Screen Views::screenData(const QString &viewId) const Latte::Data::Screen Views::screenData(const QString &viewId) const
{ {
int row = rowForId(viewId); int row = rowForId(viewId);

@ -27,6 +27,7 @@
#include "../../data/screendata.h" #include "../../data/screendata.h"
#include "../../data/viewdata.h" #include "../../data/viewdata.h"
#include "../../data/viewstable.h" #include "../../data/viewstable.h"
#include "../../layout/centrallayout.h"
// Qt // Qt
#include <QAbstractTableModel> #include <QAbstractTableModel>
@ -108,6 +109,8 @@ public:
void setOriginalData(Latte::Data::ViewsTable &data); void setOriginalData(Latte::Data::ViewsTable &data);
void setOriginalView(QString currentViewId, Latte::Data::View &view); void setOriginalView(QString currentViewId, Latte::Data::View &view);
void updateActiveStatesBasedOn(const CentralLayout *layout);
Latte::Data::ViewsTable alteredViews() const; Latte::Data::ViewsTable alteredViews() const;
Latte::Data::ViewsTable newViews() const; Latte::Data::ViewsTable newViews() const;

Loading…
Cancel
Save