introduce initial LayoutsModel

pull/11/head
Michail Vourlakos 5 years ago
parent be4e088f5e
commit 5e75b889e0

@ -16,6 +16,7 @@ add_subdirectory(plasma/extended)
add_subdirectory(settings)
add_subdirectory(settings/data)
add_subdirectory(settings/delegates)
add_subdirectory(settings/models)
add_subdirectory(settings/tools)
add_subdirectory(shortcuts)
add_subdirectory(view)

@ -1,6 +1,6 @@
set(lattedock-app_SRCS
${lattedock-app_SRCS}
${CMAKE_CURRENT_SOURCE_DIR}/layout.cpp
${CMAKE_CURRENT_SOURCE_DIR}/layoutdata.cpp
${CMAKE_CURRENT_SOURCE_DIR}/layoutstable.cpp
PARENT_SCOPE
)

@ -18,7 +18,7 @@
*
*/
#include "layout.h"
#include "layoutdata.h"
namespace Latte {
namespace Settings {

@ -124,6 +124,11 @@ bool LayoutsTable::contains(const QString &id) const
return false;
}
int LayoutsTable::rowCount() const
{
return m_layouts.count();
}
}
}
}

@ -21,7 +21,7 @@
#ifndef SETTINGSDATALAYOUTSTABLE_H
#define SETTINGSDATALAYOUTSTABLE_H
#include "layout.h"
#include "layoutdata.h"
#include <QList>
@ -47,6 +47,7 @@ public:
const Layout operator[](const uint &index) const;
bool contains(const QString &id) const;
int rowCount() const;
protected:
//! #id, layout_record

@ -0,0 +1,5 @@
set(lattedock-app_SRCS
${lattedock-app_SRCS}
${CMAKE_CURRENT_SOURCE_DIR}/layoutsmodel.cpp
PARENT_SCOPE
)

@ -0,0 +1,51 @@
/*
* Copyright 2020 Michail Vourlakos <mvourlakos@gmail.com>
*
* This file is part of Latte-Dock
*
* Latte-Dock is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* Latte-Dock is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include "layoutsmodel.h"
namespace Latte {
namespace Settings {
namespace Model {
Layouts::Layouts(QObject *parent)
: QAbstractTableModel(parent)
{
}
int Layouts::rowCount(const QModelIndex &parent) const
{
return m_layoutsTable.rowCount();
}
int Layouts::columnCount(const QModelIndex &parent) const
{
return SHAREDCOLUMN;
}
QVariant Layouts::data(const QModelIndex &index, int role) const
{
return QVariant();
}
}
}
}

@ -0,0 +1,62 @@
/*
* Copyright 2020 Michail Vourlakos <mvourlakos@gmail.com>
*
* This file is part of Latte-Dock
*
* Latte-Dock is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* Latte-Dock is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef SETTINGSLAYOUTSMODEL_H
#define SETTINGSLAYOUTSMODEL_H
// local
#include "../data/layoutstable.h"
// Qt
#include <QAbstractTableModel>
#include <QModelIndex>
namespace Latte {
namespace Settings {
namespace Model {
class Layouts : public QAbstractTableModel
{
public:
const int IDCOLUMN = 0;
const int HIDDENTEXTCOLUMN = 1;
const int COLORCOLUMN = 2;
const int NAMECOLUMN = 3;
const int MENUCOLUMN = 4;
const int BORDERSCOLUMN = 5;
const int ACTIVITYCOLUMN = 6;
const int SHAREDCOLUMN = 7;
explicit Layouts(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent) const override;
int columnCount(const QModelIndex &parent) const override;
QVariant data(const QModelIndex &index, int role) const override;
private:
Data::LayoutsTable m_layoutsTable;
};
}
}
}
#endif

@ -34,7 +34,7 @@
#include "../layouts/synchronizer.h"
#include "../liblatte2/types.h"
#include "../plasma/extended/theme.h"
#include "data/layout.h"
#include "data/layoutdata.h"
#include "delegates/activitiesdelegate.h"
#include "delegates/checkboxdelegate.h"
#include "delegates/colorcmbboxdelegate.h"
@ -1714,7 +1714,8 @@ bool SettingsDialog::saveAllChanges()
//qDebug() << i << ". " << id << " - " << color << " - " << name << " - " << menu << " - " << lActivities;
//! update the generic parts of the layouts
Layout::GenericLayout *genericActive= m_corona->layoutsManager()->synchronizer()->layout(o_layoutsOriginalData[id].name);
bool isOriginalLayout = o_layoutsOriginalData.contains(id);
Layout::GenericLayout *genericActive= isOriginalLayout ?m_corona->layoutsManager()->synchronizer()->layout(o_layoutsOriginalData[id].name) : nullptr;
Layout::GenericLayout *generic = genericActive ? genericActive : m_layouts[id];
//! unlock read-only layout
@ -1740,7 +1741,7 @@ bool SettingsDialog::saveAllChanges()
}
//! update only the Central-specific layout parts
CentralLayout *centralActive= m_corona->layoutsManager()->synchronizer()->centralLayout(o_layoutsOriginalData[id].name);
CentralLayout *centralActive = isOriginalLayout ? m_corona->layoutsManager()->synchronizer()->centralLayout(o_layoutsOriginalData[id].name) : nullptr;
CentralLayout *central = centralActive ? centralActive : m_layouts[id];
if (central->showInMenu() != menu) {
@ -1853,7 +1854,8 @@ bool SettingsDialog::saveAllChanges()
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();
Layout::GenericLayout *generic = m_corona->layoutsManager()->synchronizer()->layout(o_layoutsOriginalData[id].name);
bool isOriginalLayout{o_layoutsOriginalData.contains(id)};
Layout::GenericLayout *generic = isOriginalLayout ? m_corona->layoutsManager()->synchronizer()->layout(o_layoutsOriginalData[id].name) : nullptr;
Layout::GenericLayout *layout = generic ? generic : m_layouts[id];
if (layout && locked && layout->isWritable()) {

Loading…
Cancel
Save