support renaming for not running layouts

pull/1/head
Michail Vourlakos 8 years ago
parent e0b7c9f322
commit db7da1221a

@ -31,6 +31,7 @@
#include <QMessageBox>
#include <QStandardItem>
#include <QStandardItemModel>
#include <QTemporaryDir>
#include <KLocalizedString>
@ -335,7 +336,13 @@ bool LayoutConfigDialog::saveAllChanges()
QStringList knownActivities = activities();
QStringList menuLayouts;
QTemporaryDir layoutTempDir;
qDebug() << "Temporary Directory ::: " << layoutTempDir.path();
QStringList fromRenamePaths;
QStringList toRenamePaths;
QStringList toRenameNames;
for (int i = 0; i < m_model->rowCount(); ++i) {
QString id = m_model->data(m_model->index(i, 0), Qt::DisplayRole).toString();
@ -369,13 +376,40 @@ bool LayoutConfigDialog::saveAllChanges()
layout->setActivities(cleanedActivities);
}
//! publish the layouts for the menus
if (menu) {
menuLayouts.append(name);
if (layout->name() != name && layout->name() != m_manager->currentLayoutName()) {
QString tempFile = layoutTempDir.filePath(QString(layout->name() + ".layout.latte"));
qDebug() << "new temp file ::: " << tempFile;
layout = m_layouts.take(id);
delete layout;
QFile(id).rename(tempFile);
fromRenamePaths.append(id);
toRenamePaths.append(tempFile);
toRenameNames.append(name);
}
}
//! this is necessary in case two layouts have to swap names
//! so we copy first the layouts in a temp directory and afterwards all
//! together we move them in the official layout directory
for (int i = 0; i < toRenamePaths.count(); ++i) {
QString newFile = QDir::homePath() + "/.config/latte/" + toRenameNames[i] + ".layout.latte";
QFile(toRenamePaths[i]).rename(newFile);
LayoutSettings *nLayout = new LayoutSettings(this, newFile);
m_layouts[newFile] = nLayout;
for (int j = 0; j < m_model->rowCount(); ++j) {
QString tId = m_model->data(m_model->index(j, 0), Qt::DisplayRole).toString();
if (tId == fromRenamePaths[i]) {
m_model->setData(m_model->index(j, 0), newFile, Qt::DisplayRole);
}
}
}
m_manager->setMenuLayouts(menuLayouts);
m_manager->loadLayouts();
return true;
}

Loading…
Cancel
Save