From 14e61b3a5967c265e2ca415c3eb5a183a1b4293e Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Mon, 3 Jul 2017 12:58:02 +0300 Subject: [PATCH] update currentLayout,create Alternative if !exists --- app/dockcorona.cpp | 5 +++++ app/layoutmanager.cpp | 20 ++++++++++++++++++++ app/layoutmanager.h | 3 +++ 3 files changed, 28 insertions(+) diff --git a/app/dockcorona.cpp b/app/dockcorona.cpp index 668bb1eec..2a9f822cb 100644 --- a/app/dockcorona.cpp +++ b/app/dockcorona.cpp @@ -230,11 +230,16 @@ void DockCorona::loadLatteLayout(QString layoutName) { QString layoutPath = m_layoutManager->layoutPath(layoutName); + if (layoutPath.isEmpty() && layoutName == i18n("Alternative")) { + layoutPath = m_layoutManager->requestLayout(i18n("Alternative"), i18n("Default")); + } + if (!layoutPath.isEmpty()) { qDebug() << "corona is unloading the interface..."; unload(); qDebug() << "loading config file for layout:" << layoutName << " - " << layoutPath; loadLayout(layoutPath); + universalSettings()->setCurrentLayoutName(layoutName); foreach (auto containment, containments()) addDock(containment); diff --git a/app/layoutmanager.cpp b/app/layoutmanager.cpp index e79a8ef95..3a060e1c9 100644 --- a/app/layoutmanager.cpp +++ b/app/layoutmanager.cpp @@ -20,6 +20,11 @@ #include "layoutmanager.h" +#include +#include + +#include + namespace Latte { LayoutManager::LayoutManager(QObject *parent) @@ -64,4 +69,19 @@ QString LayoutManager::layoutPath(QString layoutName) } +QString LayoutManager::requestLayout(QString layoutName, QString preset) +{ + QString newFile = QDir::homePath() + "/.config/latte/" + layoutName + ".layout.latte"; + QString resFile; + qDebug() << "adding layout : " << layoutName << " based on preset:" << preset; + + if (preset == i18n("Default") && !QFile(newFile).exists()) { + qDebug() << "adding layout : succeed"; + QFile(m_corona->kPackage().filePath("preset1")).copy(newFile); + resFile = newFile; + } + + return resFile; +} + } diff --git a/app/layoutmanager.h b/app/layoutmanager.h index 58f6c2088..58f10ac2c 100644 --- a/app/layoutmanager.h +++ b/app/layoutmanager.h @@ -45,6 +45,9 @@ public: QString layoutPath(QString layoutName); + //! creates a new layout with layoutName based on the preset + QString requestLayout(QString layoutName, QString preset); + private: DockCorona *m_corona{nullptr}; Importer *m_importer{nullptr};