From 22ef2280d2f862e9c4ba4663d19af9495ccbeaf4 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 27 Jan 2018 02:05:33 +0200 Subject: [PATCH] enable universal settings in Latte Settings Window --- app/dockconfigview.cpp | 1 - app/latteconfigdialog.cpp | 39 ++++++++++++++++++- app/latteconfigdialog.h | 1 + app/latteconfigdialog.ui | 15 +++++-- app/layoutmanager.cpp | 4 +- app/universalsettings.cpp | 18 +++++++++ app/universalsettings.h | 7 ++++ liblattedock/dock.h | 7 ++++ .../contents/configuration/TweaksConfig.qml | 21 ---------- 9 files changed, 85 insertions(+), 28 deletions(-) diff --git a/app/dockconfigview.cpp b/app/dockconfigview.cpp index 30cb071f5..3814ec0a3 100644 --- a/app/dockconfigview.cpp +++ b/app/dockconfigview.cpp @@ -112,7 +112,6 @@ void DockConfigView::init() auto *dockCorona = qobject_cast(m_dockView->corona()); if (dockCorona) { - rootContext()->setContextProperty(QStringLiteral("universalSettings"), dockCorona->universalSettings()); rootContext()->setContextProperty(QStringLiteral("layoutManager"), dockCorona->layoutManager()); } diff --git a/app/latteconfigdialog.cpp b/app/latteconfigdialog.cpp index 8e28d780e..4bbc9ce87 100644 --- a/app/latteconfigdialog.cpp +++ b/app/latteconfigdialog.cpp @@ -84,8 +84,6 @@ LatteConfigDialog::LatteConfigDialog(QWidget *parent, DockCorona *corona) connect(m_corona->layoutManager(), &LayoutManager::currentLayoutNameChanged, this, &LatteConfigDialog::layoutsChanged); connect(m_corona->layoutManager(), &LayoutManager::activeLayoutsChanged, this, &LatteConfigDialog::layoutsChanged); - loadLayouts(); - QString iconsPath(m_corona->kPackage().path() + "../../plasmoids/org.kde.latte.containment/contents/icons/"); //!find the available colors @@ -119,6 +117,20 @@ LatteConfigDialog::LatteConfigDialog(QWidget *parent, DockCorona *corona) ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true); }); + m_mouseSensitivityButtons = new QButtonGroup(this); + m_mouseSensitivityButtons->addButton(ui->lowSensitivityBtn, Latte::Dock::LowSensitivity); + m_mouseSensitivityButtons->addButton(ui->mediumSensitivityBtn, Latte::Dock::MediumSensitivity); + m_mouseSensitivityButtons->addButton(ui->highSensitivityBtn, Latte::Dock::HighSensitivity); + m_mouseSensitivityButtons->setExclusive(true); + connect(m_mouseSensitivityButtons, QOverload::of(&QButtonGroup::buttonPressed), + [ = ](QAbstractButton * button) { + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); + ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true); + }); + + + loadLayouts(); + //! About Menu QMenuBar *menuBar = new QMenuBar(this); QMenuBar *rightAlignedMenuBar = new QMenuBar(menuBar); @@ -150,6 +162,7 @@ LatteConfigDialog::~LatteConfigDialog() } m_inMemoryButtons->deleteLater(); + m_mouseSensitivityButtons->deleteLater(); foreach (auto tempDir, m_tempDirectories) { QDir tDir(tempDir); @@ -643,6 +656,17 @@ void LatteConfigDialog::loadLayouts() ui->multipleToolBtn->setChecked(true); } + ui->autostartChkBox->setChecked(m_corona->universalSettings()->autostart()); + ui->infoWindowChkBox->setChecked(m_corona->universalSettings()->showInfoWindow()); + + if (m_corona->universalSettings()->mouseSensitivity() == Dock::LowSensitivity) { + ui->lowSensitivityBtn->setChecked(true); + } else if (m_corona->universalSettings()->mouseSensitivity() == Dock::MediumSensitivity) { + ui->mediumSensitivityBtn->setChecked(true); + } else if (m_corona->universalSettings()->mouseSensitivity() == Dock::HighSensitivity) { + ui->highSensitivityBtn->setChecked(true); + } + //! there are broken layouts and the user must be informed! if (brokenLayouts.count() > 0) { auto msg = new QMessageBox(this); @@ -855,6 +879,17 @@ bool LatteConfigDialog::saveAllChanges() return false; } + //! Update universal settings + Latte::Dock::MouseSensitivity sensitivity = static_cast(m_mouseSensitivityButtons->checkedId()); + bool autostart = ui->autostartChkBox->isChecked(); + bool showInfoWindow = ui->infoWindowChkBox->isChecked(); + + m_corona->universalSettings()->setMouseSensitivity(sensitivity); + m_corona->universalSettings()->setAutostart(autostart); + m_corona->universalSettings()->setShowInfoWindow(showInfoWindow); + + + //! Update Layouts QStringList knownActivities = activities(); QTemporaryDir layoutTempDir; diff --git a/app/latteconfigdialog.h b/app/latteconfigdialog.h index 60f48186a..c53a8738d 100644 --- a/app/latteconfigdialog.h +++ b/app/latteconfigdialog.h @@ -97,6 +97,7 @@ private: QStringList m_initLayoutPaths; QButtonGroup *m_inMemoryButtons; + QButtonGroup *m_mouseSensitivityButtons; DockCorona *m_corona{nullptr}; diff --git a/app/latteconfigdialog.ui b/app/latteconfigdialog.ui index 115de7586..ea056afe9 100644 --- a/app/latteconfigdialog.ui +++ b/app/latteconfigdialog.ui @@ -17,7 +17,7 @@ - 0 + 1 @@ -102,7 +102,7 @@ false - true + false true @@ -591,6 +591,9 @@ Low + + true + @@ -607,10 +610,13 @@ Medium + + true + - + 0 @@ -623,6 +629,9 @@ High + + true + diff --git a/app/layoutmanager.cpp b/app/layoutmanager.cpp index 5b6145cce..af63d7c9f 100644 --- a/app/layoutmanager.cpp +++ b/app/layoutmanager.cpp @@ -1026,8 +1026,10 @@ bool LayoutManager::layoutIsAssigned(QString layoutName) void LayoutManager::showLatteConfigDialog() { - if (!m_latteConfigDialog) + if (!m_latteConfigDialog) { m_latteConfigDialog = new LatteConfigDialog(nullptr, m_corona); + m_latteConfigDialog->setAttribute(Qt::WA_DeleteOnClose); + } m_latteConfigDialog->show(); diff --git a/app/universalsettings.cpp b/app/universalsettings.cpp index 3a3e2045d..30c210441 100644 --- a/app/universalsettings.cpp +++ b/app/universalsettings.cpp @@ -33,6 +33,7 @@ UniversalSettings::UniversalSettings(KSharedConfig::Ptr config, QObject *parent) connect(this, &UniversalSettings::lastNonAssignedLayoutNameChanged, this, &UniversalSettings::saveConfig); connect(this, &UniversalSettings::launchersChanged, this, &UniversalSettings::saveConfig); connect(this, &UniversalSettings::layoutsMemoryUsageChanged, this, &UniversalSettings::saveConfig); + connect(this, &UniversalSettings::mouseSensitivityChanged, this, &UniversalSettings::saveConfig); connect(this, &UniversalSettings::showInfoWindowChanged, this, &UniversalSettings::saveConfig); connect(this, &UniversalSettings::versionChanged, this, &UniversalSettings::saveConfig); } @@ -201,6 +202,21 @@ void UniversalSettings::setLayoutsMemoryUsage(Dock::LayoutsMemoryUsage layoutsMe emit layoutsMemoryUsageChanged(); } +Dock::MouseSensitivity UniversalSettings::mouseSensitivity() const +{ + return m_mouseSensitivity; +} + +void UniversalSettings::setMouseSensitivity(Dock::MouseSensitivity sensitivity) +{ + if (m_mouseSensitivity == sensitivity) { + return; + } + + m_mouseSensitivity = sensitivity; + emit mouseSensitivityChanged(); +} + void UniversalSettings::loadConfig() { m_version = m_universalGroup.readEntry("version", 1); @@ -210,6 +226,7 @@ void UniversalSettings::loadConfig() m_launchers = m_universalGroup.readEntry("launchers", QStringList()); m_showInfoWindow = m_universalGroup.readEntry("showInfoWindow", true); m_memoryUsage = static_cast(m_universalGroup.readEntry("memoryUsage", (int)Dock::SingleLayout)); + m_mouseSensitivity = static_cast(m_universalGroup.readEntry("mouseSensitivity", (int)Dock::HighSensitivity)); } void UniversalSettings::saveConfig() @@ -221,6 +238,7 @@ void UniversalSettings::saveConfig() m_universalGroup.writeEntry("launchers", m_launchers); m_universalGroup.writeEntry("showInfoWindow", m_showInfoWindow); m_universalGroup.writeEntry("memoryUsage", (int)m_memoryUsage); + m_universalGroup.writeEntry("mouseSensitivity", (int)m_mouseSensitivity); m_universalGroup.sync(); } diff --git a/app/universalsettings.h b/app/universalsettings.h index 2d045e6be..06467973c 100644 --- a/app/universalsettings.h +++ b/app/universalsettings.h @@ -42,6 +42,8 @@ class UniversalSettings : public QObject { Q_PROPERTY(QString currentLayoutName READ currentLayoutName WRITE setCurrentLayoutName NOTIFY currentLayoutNameChanged) Q_PROPERTY(QStringList launchers READ launchers WRITE setLaunchers NOTIFY launchersChanged) + + Q_PROPERTY(Latte::Dock::MouseSensitivity mouseSensitivity READ mouseSensitivity WRITE setMouseSensitivity NOTIFY mouseSensitivityChanged) public: UniversalSettings(KSharedConfig::Ptr config, QObject *parent = nullptr); ~UniversalSettings() override; @@ -69,6 +71,9 @@ public: QStringList launchers() const; void setLaunchers(QStringList launcherList); + Dock::MouseSensitivity mouseSensitivity() const; + void setMouseSensitivity(Dock::MouseSensitivity sensitivity); + signals: void autostartChanged(); void currentLayoutNameChanged(); @@ -76,6 +81,7 @@ signals: void layoutsWindowSizeChanged(); void launchersChanged(); void layoutsMemoryUsageChanged(); + void mouseSensitivityChanged(); void showInfoWindowChanged(); void versionChanged(); @@ -100,6 +106,7 @@ private: QSize m_layoutsWindowSize{700, 450}; QStringList m_launchers; Dock::LayoutsMemoryUsage m_memoryUsage; + Dock::MouseSensitivity m_mouseSensitivity{Dock::HighSensitivity}; KConfigGroup m_universalGroup; KSharedConfig::Ptr m_config; diff --git a/liblattedock/dock.h b/liblattedock/dock.h index 0e787541e..a2509f425 100644 --- a/liblattedock/dock.h +++ b/liblattedock/dock.h @@ -117,6 +117,13 @@ public: MultipleLayouts /* multiple layouts are loaded on runtime,based on Activities and one central layout for the rest unassigned Activities */ }; Q_ENUM(LayoutsMemoryUsage) + + enum MouseSensitivity { + LowSensitivity = 0, + MediumSensitivity, + HighSensitivity + }; + Q_ENUM(MouseSensitivity) }; }//end of namespace diff --git a/shell/package/contents/configuration/TweaksConfig.qml b/shell/package/contents/configuration/TweaksConfig.qml index e7bfeac67..964a0bfbb 100644 --- a/shell/package/contents/configuration/TweaksConfig.qml +++ b/shell/package/contents/configuration/TweaksConfig.qml @@ -143,16 +143,6 @@ PlasmaComponents.Page { text: i18n("Behavior") } - PlasmaComponents.CheckBox { - Layout.leftMargin: units.smallSpacing * 2 - text: i18n("Enable autostart during startup") - checked: universalSettings.autostart - - onClicked: { - universalSettings.autostart = checked; - } - } - PlasmaComponents.CheckBox { Layout.leftMargin: units.smallSpacing * 2 text: i18n("Decrease applets size when it is needed") @@ -190,17 +180,6 @@ PlasmaComponents.Page { } } - PlasmaComponents.CheckBox { - Layout.leftMargin: units.smallSpacing * 2 - text: i18n("Show info for layouts automatic switching") - checked: universalSettings.showInfoWindow - tooltip: i18n("It shows a Latte specific info window") - - onClicked: { - universalSettings.showInfoWindow = checked; - } - } - PlasmaComponents.CheckBox { Layout.leftMargin: units.smallSpacing * 2 text: i18n("Raise dock on desktop change")