import and load a layout from command line

pull/2/head
Michail Vourlakos 7 years ago
parent 9f16ef5d4e
commit f1e4d455e6

@ -343,7 +343,7 @@ Importer::LatteFileVersion Importer::fileVersion(QString file)
return UnknownFileType;
if (file.endsWith(".layout.latte")) {
KSharedConfigPtr lConfig = KSharedConfig::openConfig(file);
KSharedConfigPtr lConfig = KSharedConfig::openConfig(QFileInfo(file).absoluteFilePath());
KConfigGroup layoutGroup = KConfigGroup(lConfig, "LayoutSettings");
int version = layoutGroup.readEntry("version", 1);
@ -450,6 +450,23 @@ bool Importer::importHelper(QString fileName)
return true;
}
QString Importer::importLayoutHelper(QString fileName)
{
LatteFileVersion version = fileVersion(fileName);
if (version != LayoutVersion2) {
return QString();
}
QString newLayoutName = LayoutSettings::layoutName(fileName);
newLayoutName = uniqueLayoutName(newLayoutName);
QFile(fileName).copy(QDir::homePath() + "/.config/latte/" + newLayoutName + ".layout.latte");
return newLayoutName;
}
QStringList Importer::availableLayouts()
{
QDir layoutDir(QDir::homePath() + "/.config/latte");

@ -69,6 +69,9 @@ public:
static bool importHelper(QString fileName);
//! check if this layout exists already in the latte directory
static bool layoutExists(QString layoutName);
//! imports the specific layout and return the new layout name.
//! if the function didnt succeed return an empty string
static QString importLayoutHelper(QString fileName);
static QString nameOfConfigFile(const QString &fileName);
static QString uniqueLayoutName(QString name);

@ -84,7 +84,8 @@ int main(int argc, char **argv)
, {"default-layout", i18nc("command line", "Import and load default layout on startup.")}
, {"available-layouts", i18nc("command line", "Print available layouts")}
, {"layout", i18nc("command line", "Load specific layout on startup."), i18nc("command line: load", "layout_name")}
, {"import", i18nc("command line", "Import full configuration."), i18nc("command line: import", "file_name")}
, {"import-layout", i18nc("command line", "Import and load a layout."), i18nc("command line: import", "file_name")}
, {"import-full", i18nc("command line", "Import full configuration."), i18nc("command line: import", "file_name")}
, {"graphics", i18nc("command line", "Draw boxes around of the applets.")}
, {"with-window", i18nc("command line", "Open a window with much debug information.")}
, {"mask", i18nc("command line" , "Show messages of debugging for the mask (Only useful to devs).")}
@ -130,7 +131,7 @@ int main(int argc, char **argv)
int timeout {100};
if (parser.isSet(QStringLiteral("replace")) || parser.isSet(QStringLiteral("import"))) {
if (parser.isSet(QStringLiteral("replace")) || parser.isSet(QStringLiteral("import-full"))) {
qint64 pid{ -1};
if (lockFile.getLockInfo(&pid, nullptr, nullptr)) {
@ -145,8 +146,8 @@ int main(int argc, char **argv)
return 0;
}
if (parser.isSet(QStringLiteral("import"))) {
bool imported = Latte::Importer::importHelper(parser.value(QStringLiteral("import")));
if (parser.isSet(QStringLiteral("import-full"))) {
bool imported = Latte::Importer::importHelper(parser.value(QStringLiteral("import-full")));
if (!imported) {
qInfo() << i18n("The configuration cannot be imported");
@ -155,6 +156,18 @@ int main(int argc, char **argv)
}
}
if (parser.isSet(QStringLiteral("import-layout"))) {
QString importedLayout = Latte::Importer::importLayoutHelper(parser.value(QStringLiteral("import-layout")));
if (importedLayout.isEmpty()) {
qInfo() << i18n("The layout cannot be imported");
qGuiApp->exit();
return 0;
} else {
layoutNameOnStartup = importedLayout;
}
}
if (parser.isSet(QStringLiteral("debug")) || parser.isSet(QStringLiteral("mask"))) {
//! set pattern for debug messages
//! [%{type}] [%{function}:%{line}] - %{message} [%{backtrace}]

Loading…
Cancel
Save