add currentLayout into the layoutManager

pull/1/head
Michail Vourlakos 8 years ago
parent f2de335d35
commit 673c398d32

@ -54,6 +54,10 @@ LayoutManager::~LayoutManager()
{ {
m_importer->deleteLater(); m_importer->deleteLater();
m_toggleLayoutAction->deleteLater(); m_toggleLayoutAction->deleteLater();
if (m_currentLayout) {
m_currentLayout->deleteLater();
}
} }
void LayoutManager::load() void LayoutManager::load()
@ -84,6 +88,11 @@ QAction *LayoutManager::addWidgetsAction()
return m_addWidgetsAction; return m_addWidgetsAction;
} }
LayoutSettings *LayoutManager::currentLayout()
{
return m_currentLayout;
}
QString LayoutManager::layoutPath(QString layoutName) QString LayoutManager::layoutPath(QString layoutName)
{ {
QString path = QDir::homePath() + "/.config/latte/" + layoutName + ".layout.latte"; QString path = QDir::homePath() + "/.config/latte/" + layoutName + ".layout.latte";
@ -106,6 +115,10 @@ void LayoutManager::toggleLayout()
bool LayoutManager::switchToLayout(QString layoutName) bool LayoutManager::switchToLayout(QString layoutName)
{ {
if (m_currentLayout && m_currentLayout->name() == layoutName) {
return false;
}
QString lPath = layoutPath(layoutName); QString lPath = layoutPath(layoutName);
if (lPath.isEmpty() && layoutName == i18n("Alternative")) { if (lPath.isEmpty() && layoutName == i18n("Alternative")) {
@ -123,6 +136,14 @@ bool LayoutManager::switchToLayout(QString layoutName)
m_corona->loadLatteLayout(lPath); m_corona->loadLatteLayout(lPath);
m_corona->universalSettings()->setCurrentLayoutName(layoutName); m_corona->universalSettings()->setCurrentLayoutName(layoutName);
if (m_currentLayout) {
m_currentLayout->deleteLater();
}
m_currentLayout = new LayoutSettings(this, lPath, layoutName);
emit currentLayoutChanged();
if (layoutName != i18n("Alternative")) { if (layoutName != i18n("Alternative")) {
m_toggleLayoutAction->setChecked(false); m_toggleLayoutAction->setChecked(false);
} else { } else {

@ -23,6 +23,7 @@
#include "dockcorona.h" #include "dockcorona.h"
#include "importer.h" #include "importer.h"
#include "layoutsettings.h"
#include <QAction> #include <QAction>
#include <QObject> #include <QObject>
@ -30,6 +31,7 @@
#include <KLocalizedString> #include <KLocalizedString>
class Importer; class Importer;
class LayoutSettings;
namespace Latte { namespace Latte {
@ -41,6 +43,8 @@ class LayoutManager : public QObject {
Q_PROPERTY(QAction *toggleLayoutAction READ toggleLayoutAction NOTIFY toggleLayoutActionChanged) Q_PROPERTY(QAction *toggleLayoutAction READ toggleLayoutAction NOTIFY toggleLayoutActionChanged)
Q_PROPERTY(QAction *addWidgetsAction READ addWidgetsAction NOTIFY addWidgetsActionChanged) Q_PROPERTY(QAction *addWidgetsAction READ addWidgetsAction NOTIFY addWidgetsActionChanged)
Q_PROPERTY(LayoutSettings *currentLayout READ currentLayout NOTIFY currentLayoutChanged)
public: public:
LayoutManager(QObject *parent = nullptr); LayoutManager(QObject *parent = nullptr);
~LayoutManager() override; ~LayoutManager() override;
@ -52,6 +56,8 @@ public:
QAction *addWidgetsAction(); QAction *addWidgetsAction();
QAction *toggleLayoutAction(); QAction *toggleLayoutAction();
LayoutSettings *currentLayout();
public slots: public slots:
//! switch to specified layout //! switch to specified layout
Q_INVOKABLE bool switchToLayout(QString layoutName); Q_INVOKABLE bool switchToLayout(QString layoutName);
@ -61,6 +67,7 @@ public slots:
signals: signals:
void addWidgetsActionChanged(); void addWidgetsActionChanged();
void currentLayoutChanged();
void toggleLayoutActionChanged(); void toggleLayoutActionChanged();
private slots: private slots:
@ -68,6 +75,7 @@ private slots:
private: private:
QString layoutPath(QString layoutName); QString layoutPath(QString layoutName);
//! it is used to activate / deactivate the Alternative Layout //! it is used to activate / deactivate the Alternative Layout
void toggleLayout(); void toggleLayout();
@ -75,6 +83,8 @@ private:
DockCorona *m_corona{nullptr}; DockCorona *m_corona{nullptr};
Importer *m_importer{nullptr}; Importer *m_importer{nullptr};
LayoutSettings *m_currentLayout{nullptr};
QString m_lastNonAlternativeLayout{QString(i18n("My Layout"))}; QString m_lastNonAlternativeLayout{QString(i18n("My Layout"))};
QAction *m_addWidgetsAction{nullptr}; QAction *m_addWidgetsAction{nullptr};

@ -25,21 +25,30 @@
namespace Latte { namespace Latte {
LayoutSettings::LayoutSettings(QObject *parent, KSharedConfig::Ptr config) /*LayoutSettings::LayoutSettings(QObject *parent, KSharedConfig::Ptr config)
: QObject(parent) : QObject(parent)
{ {
m_layoutGroup = KConfigGroup(config, "LayoutSettings"); m_layoutGroup = KConfigGroup(config, "LayoutSettings");
init(); init();
} }*/
LayoutSettings::LayoutSettings(QObject *parent, QString layoutFile) LayoutSettings::LayoutSettings(QObject *parent, QString layoutFile, QString layoutName)
: QObject(parent) : QObject(parent)
{ {
if (QFile(layoutFile).exists()) { if (QFile(layoutFile).exists()) {
if (layoutName.isEmpty()) {
int lastSlash = layoutFile.lastIndexOf("/");
layoutName = layoutFile.remove(0, lastSlash + 1);
int ext = layoutName.lastIndexOf(".latterc");
layoutName = layoutName.remove(ext, 8);
}
KSharedConfigPtr lConfig = KSharedConfig::openConfig(layoutFile); KSharedConfigPtr lConfig = KSharedConfig::openConfig(layoutFile);
m_layoutGroup = KConfigGroup(lConfig, "LayoutSettings"); m_layoutGroup = KConfigGroup(lConfig, "LayoutSettings");
m_layoutFile = layoutFile; setFile(layoutFile);
setName(layoutName);
init(); init();
} }
} }
@ -73,6 +82,38 @@ void LayoutSettings::setVersion(int ver)
emit versionChanged(); emit versionChanged();
} }
QString LayoutSettings::name() const
{
return m_layoutName;
}
void LayoutSettings::setName(QString name)
{
if (m_layoutName == name) {
return;
}
m_layoutName = name;
emit nameChanged();
}
QString LayoutSettings::file() const
{
return m_layoutFile;
}
void LayoutSettings::setFile(QString file)
{
if (m_layoutFile == file) {
return;
}
m_layoutFile = file;
emit fileChanged();
}
bool LayoutSettings::syncLaunchers() const bool LayoutSettings::syncLaunchers() const
{ {
return m_syncLaunchers; return m_syncLaunchers;

@ -38,13 +38,17 @@ namespace Latte {
class LayoutSettings : public QObject { class LayoutSettings : public QObject {
Q_OBJECT Q_OBJECT
Q_PROPERTY(bool syncLaunchers READ syncLaunchers WRITE setSyncLaunchers NOTIFY syncLaunchersChanged) Q_PROPERTY(bool syncLaunchers READ syncLaunchers WRITE setSyncLaunchers NOTIFY syncLaunchersChanged)
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
Q_PROPERTY(QStringList globalLaunchers READ globalLaunchers WRITE setGlobalLaunchers NOTIFY globalLaunchersChanged) Q_PROPERTY(QStringList globalLaunchers READ globalLaunchers WRITE setGlobalLaunchers NOTIFY globalLaunchersChanged)
public: public:
LayoutSettings(QObject *parent, QString layoutFile); LayoutSettings(QObject *parent, QString layoutFile, QString layoutName = QString());
LayoutSettings(QObject *parent, KSharedConfig::Ptr config); //LayoutSettings(QObject *parent, KSharedConfig::Ptr config);
~LayoutSettings() override; ~LayoutSettings() override;
QString name() const;
QString file() const;
QStringList globalLaunchers() const; QStringList globalLaunchers() const;
void setGlobalLaunchers(QStringList launchers); void setGlobalLaunchers(QStringList launchers);
@ -55,7 +59,9 @@ public:
void setSyncLaunchers(bool sync); void setSyncLaunchers(bool sync);
signals: signals:
void fileChanged();
void globalLaunchersChanged(); void globalLaunchersChanged();
void nameChanged();
void versionChanged(); void versionChanged();
void syncLaunchersChanged(); void syncLaunchersChanged();
@ -65,6 +71,8 @@ private slots:
private: private:
void init(); void init();
void setName(QString name);
void setFile(QString file);
private: private:
bool m_syncLaunchers{false}; bool m_syncLaunchers{false};
@ -72,6 +80,7 @@ private:
int m_version{1}; int m_version{1};
QString m_layoutFile; QString m_layoutFile;
QString m_layoutName;
QStringList m_globalLaunchers; QStringList m_globalLaunchers;
DockCorona *m_corona{nullptr}; DockCorona *m_corona{nullptr};

Loading…
Cancel
Save