From 6b777076e2d7d3e638690faf018e068a20db353e Mon Sep 17 00:00:00 2001
From: Akira Ohgaki <akiraohgaki@gmail.com>
Date: Wed, 28 Jun 2017 10:37:56 +0900
Subject: [PATCH] Add function to set schema with gsettings

---
 app/src/handlers/systemhandler.cpp | 24 ++++++++++--------------
 app/src/handlers/systemhandler.h   |  1 +
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/app/src/handlers/systemhandler.cpp b/app/src/handlers/systemhandler.cpp
index a5c3d10..82e5756 100644
--- a/app/src/handlers/systemhandler.cpp
+++ b/app/src/handlers/systemhandler.cpp
@@ -262,38 +262,34 @@ bool SystemHandler::applyKdeAuroraeTheme(const QString &path) const
     return false;
 }
 
+bool SystemHandler::setSchemaWithGsettings(const QString &schema, const QString &key, const QString &value) const
+{
+    return QProcess::startDetached("gsettings", QStringList() << "set" << schema << key << value);
+}
+
 bool SystemHandler::applyGnomeWallpaper(const QString &path) const
 {
-    QStringList arguments{"set", "org.gnome.desktop.background", "picture-uri", "file://" + path};
-    return QProcess::startDetached("gsettings", arguments);
+    return setSchemaWithGsettings("org.gnome.desktop.background", "picture-uri", "file://" + path);
 }
 
 bool SystemHandler::applyGnomeIcon(const QString &path) const
 {
-    auto themeName = QFileInfo(path).fileName();
-    QStringList arguments{"set", "org.gnome.desktop.interface", "icon-theme", themeName};
-    return QProcess::startDetached("gsettings", arguments);
+    return setSchemaWithGsettings("org.gnome.desktop.interface", "icon-theme", QFileInfo(path).fileName());
 }
 
 bool SystemHandler::applyGnomeCursor(const QString &path) const
 {
-    auto themeName = QFileInfo(path).fileName();
-    QStringList arguments{"set", "org.gnome.desktop.interface", "cursor-theme", themeName};
-    return QProcess::startDetached("gsettings", arguments);
+    return setSchemaWithGsettings("org.gnome.desktop.interface", "cursor-theme", QFileInfo(path).fileName());
 }
 
 bool SystemHandler::applyGnomeGtk3Theme(const QString &path) const
 {
-    auto themeName = QFileInfo(path).fileName();
-    QStringList arguments{"set", "org.gnome.desktop.interface", "gtk-theme", themeName};
-    return QProcess::startDetached("gsettings", arguments);
+    return setSchemaWithGsettings("org.gnome.desktop.interface", "gtk-theme", QFileInfo(path).fileName());
 }
 
 bool SystemHandler::applyGnomeGnomeShellTheme(const QString &path) const
 {
-    auto themeName = QFileInfo(path).fileName();
-    QStringList arguments{"set", "org.gnome.shell.extensions.user-theme", "name", themeName};
-    return QProcess::startDetached("gsettings", arguments);
+    return setSchemaWithGsettings("org.gnome.shell.extensions.user-theme", "name", QFileInfo(path).fileName());
 }
 
 bool SystemHandler::setPropertyWithXfconf(const QString &channel, const QString &property, const QDBusVariant &value) const
diff --git a/app/src/handlers/systemhandler.h b/app/src/handlers/systemhandler.h
index 1d61714..0ed6fb0 100644
--- a/app/src/handlers/systemhandler.h
+++ b/app/src/handlers/systemhandler.h
@@ -34,6 +34,7 @@ private:
     bool applyKdePlasmaDesktoptheme(const QString &path) const;
     bool applyKdeAuroraeTheme(const QString &path) const;
 
+    bool setSchemaWithGsettings(const QString &schema, const QString &key, const QString &value) const;
     bool applyGnomeWallpaper(const QString &path) const;
     bool applyGnomeIcon(const QString &path) const;
     bool applyGnomeCursor(const QString &path) const;
-- 
GitLab