From f89f78b9643e1c5bea65b34d05e3fcb4001bb357 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 22 Jul 2017 23:15:54 +0300 Subject: [PATCH] support import configuration from command line --- app/importer.cpp | 29 +++++++++++++++++++++++++++++ app/importer.h | 1 + app/layoutconfigdialog.cpp | 10 ++++++++-- app/main.cpp | 4 ++-- 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/app/importer.cpp b/app/importer.cpp index cd8b7635d..1b748dc00 100644 --- a/app/importer.cpp +++ b/app/importer.cpp @@ -32,6 +32,7 @@ #include #include #include +#include namespace Latte { @@ -426,6 +427,34 @@ Importer::LatteFileVersion Importer::fileVersion(QString file) return Importer::UnknownFileType; } +bool Importer::importHelper(QString fileName) +{ + LatteFileVersion version = fileVersion(fileName); + + if ((version != ConfigVersion1) && (version != ConfigVersion2)) { + return false; + } + + KTar archive(fileName, QStringLiteral("application/x-tar")); + archive.open(QIODevice::ReadOnly); + + if (!archive.isOpen()) { + return false; + } + + QString latteDirPath(QDir::homePath() + "/.config/latte"); + QDir latteDir(latteDirPath); + + if (latteDir.exists()) { + latteDir.removeRecursively(); + } + + archive.directory()->copyTo(QString(QDir::homePath() + "/.config")); + + return true; +} + + QString Importer::nameOfConfigFile(const QString &fileName) { int lastSlash = fileName.lastIndexOf("/"); diff --git a/app/importer.h b/app/importer.h index d6a9fc73d..121df9245 100644 --- a/app/importer.h +++ b/app/importer.h @@ -66,6 +66,7 @@ public: static Importer::LatteFileVersion fileVersion(QString file); static QString nameOfConfigFile(const QString &fileName); + static bool importHelper(QString fileName); private: //! checks if this old layout can be imported. If it can it returns //! the new layout path and an empty string if it cant diff --git a/app/layoutconfigdialog.cpp b/app/layoutconfigdialog.cpp index f758124d8..e8fed81cd 100644 --- a/app/layoutconfigdialog.cpp +++ b/app/layoutconfigdialog.cpp @@ -30,9 +30,8 @@ #include #include #include -#include - #include +#include #include #include #include @@ -240,6 +239,13 @@ void LayoutConfigDialog::on_importButton_clicked() , this, [ &, file](bool check) { importLayoutsFromV1ConfigFile(file); }); + + connect(fullBtn, &QPushButton::clicked + , this, [ &, file](bool check) { + //!NOTE: Restart latte for import the new configuration + QProcess::startDetached(qGuiApp->applicationFilePath() + " --import \"" + file + "\""); + qGuiApp->exit(); + }); } }); diff --git a/app/main.cpp b/app/main.cpp index 8865fa1c7..4912db582 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -20,7 +20,7 @@ #include "dockcorona.h" #include "config-latte.h" -#include "globalsettings.h" +#include "importer.h" #include #include @@ -107,7 +107,7 @@ int main(int argc, char **argv) } if (parser.isSet(QStringLiteral("import"))) { - bool imported = Latte::GlobalSettings::importHelper(parser.value(QStringLiteral("import"))); + bool imported = Latte::Importer::importHelper(parser.value(QStringLiteral("import"))); if (!imported) { qInfo() << i18n("The configuration cannot be imported");