mirror of
https://github.com/KDE/latte-dock.git
synced 2025-03-27 14:50:21 +03:00
LayoutsEditor:load shares for SharedLayouts
This commit is contained in:
parent
1b21e26dfa
commit
c27de681d1
@ -35,6 +35,7 @@
|
||||
#include "delegates/colorcmbboxdelegate.h"
|
||||
#include "delegates/activitycmbboxdelegate.h"
|
||||
#include "delegates/layoutnamedelegate.h"
|
||||
#include "delegates/sharedcmbboxdelegate.h"
|
||||
|
||||
// Qt
|
||||
#include <QButtonGroup>
|
||||
@ -121,6 +122,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, Latte::Corona *corona)
|
||||
ui->layoutsView->setItemDelegateForColumn(MENUCOLUMN, new CheckBoxDelegate(this));
|
||||
ui->layoutsView->setItemDelegateForColumn(BORDERSCOLUMN, new CheckBoxDelegate(this));
|
||||
ui->layoutsView->setItemDelegateForColumn(ACTIVITYCOLUMN, new ActivityCmbBoxDelegate(this));
|
||||
ui->layoutsView->setItemDelegateForColumn(SHAREDCOLUMN, new SharedCmbBoxDelegate(this));
|
||||
|
||||
m_inMemoryButtons = new QButtonGroup(this);
|
||||
m_inMemoryButtons->addButton(ui->singleToolBtn, Latte::Types::SingleLayout);
|
||||
@ -823,6 +825,7 @@ void SettingsDialog::loadSettings()
|
||||
{
|
||||
m_initLayoutPaths.clear();
|
||||
m_model->clear();
|
||||
m_sharesMap.clear();
|
||||
|
||||
int i = 0;
|
||||
QStringList brokenLayouts;
|
||||
@ -840,6 +843,7 @@ void SettingsDialog::loadSettings()
|
||||
|
||||
QString background = central->background();
|
||||
|
||||
//! add central layout properties
|
||||
if (background.isEmpty()) {
|
||||
insertLayoutInfoAtRow(i, layoutPath, central->color(), QString(), central->name(),
|
||||
central->showInMenu(), central->disableBordersForMaximizedWindows(),
|
||||
@ -850,6 +854,12 @@ void SettingsDialog::loadSettings()
|
||||
central->activities(), !central->isWritable());
|
||||
}
|
||||
|
||||
//! create initial SHARES maps
|
||||
QString shared = central->sharedLayoutName();
|
||||
if (!shared.isEmpty()) {
|
||||
m_sharesMap[shared].append(layout);
|
||||
}
|
||||
|
||||
qDebug() << "counter:" << i << " total:" << m_model->rowCount();
|
||||
|
||||
i++;
|
||||
@ -865,6 +875,16 @@ void SettingsDialog::loadSettings()
|
||||
}
|
||||
}
|
||||
|
||||
qDebug() << "SHARES MAP ::: " << m_sharesMap;
|
||||
|
||||
for(QHash<const QString, QStringList>::iterator i=m_sharesMap.begin(); i!=m_sharesMap.end(); ++i) {
|
||||
int sharedPos = rowForId(QString(QDir::homePath() + "/.config/latte/" + i.key() + ".layout.latte"));
|
||||
|
||||
if (sharedPos >= 0) {
|
||||
m_model->setData(m_model->index(sharedPos, SHAREDCOLUMN), i.value(), Qt::UserRole);
|
||||
}
|
||||
}
|
||||
|
||||
recalculateAvailableActivities();
|
||||
|
||||
m_model->setHorizontalHeaderItem(IDCOLUMN, new QStandardItem(QString("#path")));
|
||||
@ -873,6 +893,7 @@ void SettingsDialog::loadSettings()
|
||||
m_model->setHorizontalHeaderItem(MENUCOLUMN, new QStandardItem(QString(i18nc("column for layout to show in menu", "In Menu"))));
|
||||
m_model->setHorizontalHeaderItem(BORDERSCOLUMN, new QStandardItem(QString(i18nc("column for layout to hide borders for maximized windows", "Borderless"))));
|
||||
m_model->setHorizontalHeaderItem(ACTIVITYCOLUMN, new QStandardItem(QString(i18nc("column for layout to show which activities is assigned to", "Activities"))));
|
||||
m_model->setHorizontalHeaderItem(SHAREDCOLUMN, new QStandardItem(QString(i18nc("column for shared layout to show which layouts is assigned to", "Shared To"))));
|
||||
|
||||
//! this line should be commented for debugging layouts window functionality
|
||||
ui->layoutsView->setColumnHidden(IDCOLUMN, true);
|
||||
@ -1005,6 +1026,8 @@ void SettingsDialog::insertLayoutInfoAtRow(int row, QString path, QString color,
|
||||
|
||||
QStandardItem *activitiesItem = new QStandardItem(activities.join(","));
|
||||
|
||||
QStandardItem *sharesItem = new QStandardItem();
|
||||
|
||||
QList<QStandardItem *> items;
|
||||
|
||||
items.append(pathItem);
|
||||
@ -1014,6 +1037,7 @@ void SettingsDialog::insertLayoutInfoAtRow(int row, QString path, QString color,
|
||||
items.append(menuItem);
|
||||
items.append(bordersItem);
|
||||
items.append(activitiesItem);
|
||||
items.append(sharesItem);
|
||||
|
||||
if (row > m_model->rowCount() - 1) {
|
||||
m_model->appendRow(items);
|
||||
@ -1563,6 +1587,19 @@ int SettingsDialog::ascendingRowFor(QString name)
|
||||
return m_model->rowCount();
|
||||
}
|
||||
|
||||
int SettingsDialog::rowForId(QString id)
|
||||
{
|
||||
for (int i = 0; i < m_model->rowCount(); ++i) {
|
||||
QString rowId = m_model->data(m_model->index(i, IDCOLUMN), Qt::DisplayRole).toString();
|
||||
|
||||
if (rowId == id) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
QString SettingsDialog::uniqueTempDirectory()
|
||||
{
|
||||
QTemporaryDir tempDir;
|
||||
|
@ -102,6 +102,7 @@ private:
|
||||
bool nameExistsInModel(QString name);
|
||||
bool saveAllChanges();
|
||||
|
||||
int rowForId(QString id);
|
||||
int ascendingRowFor(QString name);
|
||||
|
||||
QString uniqueTempDirectory();
|
||||
@ -127,6 +128,8 @@ private:
|
||||
QStandardItemModel *m_model{nullptr};
|
||||
Ui::SettingsDialog *ui;
|
||||
|
||||
//! ShareLayout #id, Shares LayoutIds
|
||||
QHash<const QString, QStringList> m_sharesMap;
|
||||
QHash<const QString, Latte::CentralLayout *> m_layouts;
|
||||
|
||||
QList<int> o_settings;
|
||||
|
Loading…
x
Reference in New Issue
Block a user