17#include "ScreensConfiguration.h"
20#include "WorkspaceManager.h"
23#include <QJsonDocument>
26#include <QStandardPaths>
30QJsonArray jsonScreens;
33ScreensConfiguration::ScreensConfiguration()
35 const QString dbPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QStringLiteral(
"/lomiri/");
36 QFile f(dbPath +
"workspaces");
38 if (f.open(QIODevice::ReadOnly)) {
39 QByteArray saveData = f.readAll();
40 QJsonDocument loadDoc(QJsonDocument::fromJson(saveData));
41 QJsonObject json(loadDoc.object());
42 jsonScreens = json[
"screens"].toArray();
46ScreensConfiguration::~ScreensConfiguration()
48 const QString dbPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QStringLiteral(
"/lomiri/");
49 QFile f(dbPath +
"workspaces");
50 if (f.open(QIODevice::WriteOnly)) {
52 json[
"screens"] = jsonScreens;
53 QJsonDocument saveDoc(json);
54 f.write(saveDoc.toJson());
58void ScreensConfiguration::load(Screen *screen)
61 for (
auto iter = jsonScreens.begin(); iter != jsonScreens.end(); ++iter) {
62 QJsonObject jsonScreen = (*iter).toObject();
63 if (jsonScreen[
"name"] == screen->name()) {
64 QJsonValue jsonWorkspaces = jsonScreen[
"workspaces"];
65 workspaces = qMax(jsonWorkspaces.toInt(workspaces), 1);
70 for (
int i = 0; i < workspaces; i++) {
71 WorkspaceManager::instance()->createWorkspace()->assign(screen->workspaces());
75void ScreensConfiguration::save(Screen *screen)
77 QJsonObject newJsonScreen;
78 newJsonScreen[
"name"] = screen->name();
79 newJsonScreen[
"workspaces"] = qMax(screen->workspaces()->rowCount(), 1);
81 auto iter = jsonScreens.begin();
82 for (; iter != jsonScreens.end(); ++iter) {
83 QJsonObject jsonScreen = (*iter).toObject();
84 if (jsonScreen[
"name"] == screen->name()) {
89 if (iter == jsonScreens.end()) {
90 jsonScreens.push_back(newJsonScreen);
92 *iter = newJsonScreen;