update how layouts settings are stored in editor

pull/11/head
Michail Vourlakos 5 years ago
parent 7bb01f150a
commit 09c599a2d7

@ -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);
}
}
}
}

@ -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

@ -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<int> 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;
}

@ -24,6 +24,7 @@
// local
#include "../liblatte2/types.h"
#include "data/layoutstable.h"
// Qt
#include <QObject>
@ -148,7 +149,7 @@ private:
QString uniqueLayoutName(QString name);
QList<int> currentSettings();
QStringList currentLayoutsSettings();
Settings::Data::LayoutsTable currentLayoutsSettings();
private:
int m_currentFreeActivitiesLayout{-1};
@ -179,8 +180,8 @@ private:
//! Layout #settingsid, #original_layout_name
QHash<const QString, QString> m_originalLayoutNames;
QList<int> o_settings;
QStringList o_settingsLayouts;
QList<int> o_settingsOriginalData;
Settings::Data::LayoutsTable o_layoutsOriginalData;
};
}

Loading…
Cancel
Save