@@ -15,6 +15,7 @@
17#include "Screens.h"
17#include "Screens.h"
18+#include "ScreensConfiguration.h"
18#include "Screen.h"
19#include "Screen.h"
19#include "WorkspaceManager.h"
20#include "WorkspaceManager.h"
@@ -90,8 +91,9 @@ void Screens::activateScreen(const QVariant& vindex)
93−ConcreteScreens::ConcreteScreens(const QSharedPointer<qtmir::Screens> &model)
94+ConcreteScreens::ConcreteScreens(const QSharedPointer<qtmir::Screens> &model, ScreensConfiguration* config)
94 : Screens(model)
95 : Screens(model)
96 m_self = this;
98 m_self = this;
97 connect(m_wrapped.data(), &qtmir::Screens::screenAdded, this, &ConcreteScreens::onScreenAdded);
99 connect(m_wrapped.data(), &qtmir::Screens::screenAdded, this, &ConcreteScreens::onScreenAdded);
@@ -100,11 +102,21 @@ ConcreteScreens::ConcreteScreens(const QSharedPointer<qtmir::Screens> &model)
101 Q_FOREACH(qtmir::Screen* screen, m_wrapped->screens()) {
103 Q_FOREACH(qtmir::Screen* screen, m_wrapped->screens()) {
102 auto screenWrapper(new ConcreteScreen(screen));
104 auto screenWrapper(new ConcreteScreen(screen));
105+ m_config->load(screenWrapper);
103 QQmlEngine::setObjectOwnership(screenWrapper, QQmlEngine::CppOwnership);
107 QQmlEngine::setObjectOwnership(screenWrapper, QQmlEngine::CppOwnership);
104 m_screens.push_back(screenWrapper);
108 m_screens.push_back(screenWrapper);
112+ConcreteScreens::~ConcreteScreens()
114+ Q_FOREACH(Screen* screen, m_screens) {
115+ m_config->save(screen);
108ConcreteScreens *ConcreteScreens::self()
120ConcreteScreens *ConcreteScreens::self()
110 return ConcreteScreens::m_self;
122 return ConcreteScreens::m_self;
@@ -141,6 +153,8 @@ void ConcreteScreens::onScreenAdded(qtmir::Screen *added)
142 beginInsertRows(QModelIndex(), count(), count());
154 beginInsertRows(QModelIndex(), count(), count());
143 auto screenWrapper(new ConcreteScreen(added));
155 auto screenWrapper(new ConcreteScreen(added));
156+ m_config->load(screenWrapper);
144 QQmlEngine::setObjectOwnership(screenWrapper, QQmlEngine::CppOwnership);
158 QQmlEngine::setObjectOwnership(screenWrapper, QQmlEngine::CppOwnership);
145 m_screens.push_back(screenWrapper);
159 m_screens.push_back(screenWrapper);
146 endInsertRows();
160 endInsertRows();
@@ -155,6 +169,7 @@ void ConcreteScreens::onScreenRemoved(qtmir::Screen *removed)
155 while(iter.hasNext()) {
169 while(iter.hasNext()) {
156 auto screenWrapper = iter.next();
170 auto screenWrapper = iter.next();
157 if (screenWrapper->wrapped() == removed) {
171 if (screenWrapper->wrapped() == removed) {
172+ m_config->save(screenWrapper);
159 beginRemoveRows(QModelIndex(), index, index);
174 beginRemoveRows(QModelIndex(), index, index);
160 iter.remove();
175 iter.remove();