From 09c599a2d7e5eea2ff6e84d58797a9ee5290c962 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Tue, 10 Mar 2020 21:01:01 +0200 Subject: [PATCH] update how layouts settings are stored in editor --- app/settings/data/layoutstable.cpp | 28 ++++++++++++++++++ app/settings/data/layoutstable.h | 4 +++ app/settings/settingsdialog.cpp | 47 +++++++++++++----------------- app/settings/settingsdialog.h | 7 +++-- 4 files changed, 57 insertions(+), 29 deletions(-) diff --git a/app/settings/data/layoutstable.cpp b/app/settings/data/layoutstable.cpp index 1076cd3a4..7c4954de2 100644 --- a/app/settings/data/layoutstable.cpp +++ b/app/settings/data/layoutstable.cpp @@ -70,6 +70,34 @@ bool LayoutsTable::operator!=(const LayoutsTable &rhs) const return !(*this == rhs); } +Layout &LayoutsTable::operator[](const QString &id) +{ + Layout tmp; + + if (m_layouts.contains(id)) { + return m_layouts[id]; + } + + return tmp; +} + +const Layout &LayoutsTable::operator[](const QString &id) const +{ + Layout tmp; + + if (m_layouts.contains(id)) { + return m_layouts[id]; + } + + return tmp; +} + +bool LayoutsTable::contains(const QString &id) const +{ + return m_layouts.contains(id); +} + + } } } diff --git a/app/settings/data/layoutstable.h b/app/settings/data/layoutstable.h index 5fabd7a8c..b1dbe25c6 100644 --- a/app/settings/data/layoutstable.h +++ b/app/settings/data/layoutstable.h @@ -41,6 +41,10 @@ public: LayoutsTable &operator<<(const Layout &rhs); bool operator==(const LayoutsTable &rhs) const; bool operator!=(const LayoutsTable &rhs) const; + Layout &operator[](const QString &id); + const Layout &operator[](const QString &id) const; + + bool contains(const QString &id) const; protected: //! #id, layout_record diff --git a/app/settings/settingsdialog.cpp b/app/settings/settingsdialog.cpp index 6da54cb9e..08159435a 100644 --- a/app/settings/settingsdialog.cpp +++ b/app/settings/settingsdialog.cpp @@ -34,6 +34,7 @@ #include "../layouts/synchronizer.h" #include "../liblatte2/types.h" #include "../plasma/extended/theme.h" +#include "data/layout.h" #include "delegates/activitiesdelegate.h" #include "delegates/checkboxdelegate.h" #include "delegates/colorcmbboxdelegate.h" @@ -878,8 +879,8 @@ void SettingsDialog::apply() qDebug() << Q_FUNC_INFO; saveAllChanges(); - o_settings = currentSettings(); - o_settingsLayouts = currentLayoutsSettings(); + o_settingsOriginalData = currentSettings(); + o_layoutsOriginalData = currentLayoutsSettings(); updateApplyButtonsState(); updatePerLayoutButtonsState(); @@ -1113,8 +1114,8 @@ void SettingsDialog::loadSettings() ui->highSensitivityBtn->setChecked(true); } - o_settings = currentSettings(); - o_settingsLayouts = currentLayoutsSettings(); + o_settingsOriginalData = currentSettings(); + o_layoutsOriginalData = currentLayoutsSettings(); updateApplyButtonsState(); updateSharedLayoutsUiElements(); @@ -1148,30 +1149,24 @@ QList SettingsDialog::currentSettings() return settings; } -QStringList SettingsDialog::currentLayoutsSettings() +Settings::Data::LayoutsTable SettingsDialog::currentLayoutsSettings() { - QStringList layoutSettings; + Settings::Data::LayoutsTable layoutSettings; for (int i = 0; i < m_model->rowCount(); ++i) { - QString id = m_model->data(m_model->index(i, IDCOLUMN), Qt::DisplayRole).toString(); - QString color = m_model->data(m_model->index(i, COLORCOLUMN), Qt::BackgroundRole).toString(); - QString textColor = m_model->data(m_model->index(i, COLORCOLUMN), Qt::UserRole).toString(); - QString name = m_model->data(m_model->index(i, NAMECOLUMN), Qt::DisplayRole).toString(); - bool locked = m_model->data(m_model->index(i, NAMECOLUMN), Qt::UserRole).toBool(); - bool menu = m_model->data(m_model->index(i, MENUCOLUMN), Qt::DisplayRole).toString() == CheckMark; - bool borders = m_model->data(m_model->index(i, BORDERSCOLUMN), Qt::DisplayRole).toString() == CheckMark; - QStringList lActivities = m_model->data(m_model->index(i, ACTIVITYCOLUMN), Qt::UserRole).toStringList(); - QStringList shares = m_model->data(m_model->index(i, SHAREDCOLUMN), Qt::UserRole).toStringList(); + Settings::Data::Layout layoutData; + + layoutData.id = m_model->data(m_model->index(i, IDCOLUMN), Qt::DisplayRole).toString(); + layoutData.background = m_model->data(m_model->index(i, COLORCOLUMN), Qt::BackgroundRole).toString(); + layoutData.backgroundTextColor = m_model->data(m_model->index(i, COLORCOLUMN), Qt::UserRole).toString(); + layoutData.name = m_model->data(m_model->index(i, NAMECOLUMN), Qt::DisplayRole).toString(); + layoutData.isLocked = m_model->data(m_model->index(i, NAMECOLUMN), Qt::UserRole).toBool(); + layoutData.isShownInMenu = m_model->data(m_model->index(i, MENUCOLUMN), Qt::DisplayRole).toString() == CheckMark; + layoutData.hasDisabledBorders = m_model->data(m_model->index(i, BORDERSCOLUMN), Qt::DisplayRole).toString() == CheckMark; + layoutData.activities = m_model->data(m_model->index(i, ACTIVITYCOLUMN), Qt::UserRole).toStringList(); + layoutData.shares = m_model->data(m_model->index(i, SHAREDCOLUMN), Qt::UserRole).toStringList(); - layoutSettings << id; - layoutSettings << color; - layoutSettings << textColor; - layoutSettings << name; - layoutSettings << QString::number((int)locked); - layoutSettings << QString::number((int)menu); - layoutSettings << QString::number((int)borders); - layoutSettings << lActivities; - layoutSettings << shares; + layoutSettings << layoutData; } return layoutSettings; @@ -1391,8 +1386,8 @@ void SettingsDialog::updateApplyButtonsState() bool changed{false}; //! Ok, Apply Buttons - if ((o_settings != currentSettings()) - || (o_settingsLayouts != currentLayoutsSettings())) { + if ((o_settingsOriginalData != currentSettings()) + || (o_layoutsOriginalData != currentLayoutsSettings())) { changed = true; } diff --git a/app/settings/settingsdialog.h b/app/settings/settingsdialog.h index 181ee441d..ff9775eb0 100644 --- a/app/settings/settingsdialog.h +++ b/app/settings/settingsdialog.h @@ -24,6 +24,7 @@ // local #include "../liblatte2/types.h" +#include "data/layoutstable.h" // Qt #include @@ -148,7 +149,7 @@ private: QString uniqueLayoutName(QString name); QList currentSettings(); - QStringList currentLayoutsSettings(); + Settings::Data::LayoutsTable currentLayoutsSettings(); private: int m_currentFreeActivitiesLayout{-1}; @@ -179,8 +180,8 @@ private: //! Layout #settingsid, #original_layout_name QHash m_originalLayoutNames; - QList o_settings; - QStringList o_settingsLayouts; + QList o_settingsOriginalData; + Settings::Data::LayoutsTable o_layoutsOriginalData; }; }