From 2142e53ae0c9e11df8b421d2c12e031428060dfd Mon Sep 17 00:00:00 2001 From: Akira Ohgaki <akiraohgaki@gmail.com> Date: Fri, 16 Jun 2017 02:48:58 +0900 Subject: [PATCH] Organize functions --- app/src/handlers/systemhandler.cpp | 187 +++++++++++++---------------- app/src/handlers/systemhandler.h | 11 +- 2 files changed, 88 insertions(+), 110 deletions(-) diff --git a/app/src/handlers/systemhandler.cpp b/app/src/handlers/systemhandler.cpp index d6f4fb4..dcc7b17 100644 --- a/app/src/handlers/systemhandler.cpp +++ b/app/src/handlers/systemhandler.cpp @@ -93,147 +93,122 @@ bool SystemHandler::isApplicableType(const QString &installType) const { auto desktop = desktopEnvironment(); - if (installType == "wallpapers" - && (desktop == "kde" || desktop == "gnome" || desktop == "xfce")) { - return true; + QStringList applicableTypes; + + if (desktop == "kde") { + applicableTypes << "wallpapers"; } - else if (installType == "icons" - && (desktop == "kde" || desktop == "gnome" || desktop == "xfce")) { - return true; + else if (desktop == "gnome") { + applicableTypes << "wallpapers" << "icons" << "cursors"; } - else if (installType == "cursors" - && (desktop == "kde" || desktop == "gnome" || desktop == "xfce")) { - return true; + else if (desktop == "xfce") { + applicableTypes << "wallpapers"; } - /*else if ((installType == "aurorae_themes" && desktop == "kde") - || (installType == "metacity_themes" && desktop == "gnome") - || (installType == "xfwm4_themes" && desktop == "xfce")) { - return true; - }*/ - return false; + + return applicableTypes.contains(installType); } #ifdef QTLIB_UNIX bool SystemHandler::applyFile(const QString &path, const QString &installType) const { if (QFileInfo::exists(path) && isApplicableType(installType)) { - if (installType == "wallpapers") { - return applyWallpaper(path); + auto desktop = desktopEnvironment(); + + if (desktop == "kde") { + if (installType == "wallpapers") { + return applyKdeWallpaper(path); + } } - else if (installType == "icons") { - return applyIcon(path); + else if (desktop == "gnome") { + if (installType == "wallpapers") { + return applyGnomeWallpaper(path); + } + else if (desktop == "icons") { + return applyGnomeIcon(path); + } + else if (desktop == "cursors") { + return applyGnomeCursor(path); + } } - else if (installType == "cursors") { - return applyCursor(path); + else if (desktop == "xfce") { + if (installType == "wallpapers") { + return applyXfceWallpaper(path); + } } - /*else if (installType == "aurorae_themes" - || installType == "metacity_themes" - || installType == "xfwm4_themes") { - return applyWindowTheme(path); - }*/ } + return false; } #endif #ifdef QTLIB_UNIX -bool SystemHandler::applyWallpaper(const QString &path) const +bool SystemHandler::applyKdeWallpaper(const QString &path) const { - auto desktop = desktopEnvironment(); - - if (desktop == "kde") { - auto message = QDBusMessage::createMethodCall("org.kde.plasmashell", "/PlasmaShell", "org.kde.PlasmaShell", "evaluateScript"); - QVariantList arguments; - - QString script; - QTextStream out(&script); - out << "for (var key in desktops()) {" - << "var d = desktops()[key];" - << "d.wallpaperPlugin = 'org.kde.image';" - << "d.currentConfigGroup = ['Wallpaper', 'org.kde.image', 'General'];" - << "d.writeConfig('Image', 'file://" + path + "');" - << "}"; - - arguments << QVariant(script); - message.setArguments(arguments); - - auto reply = QDBusConnection::sessionBus().call(message); - - if (reply.type() == QDBusMessage::ErrorMessage) { - qWarning() << reply.errorMessage(); - return false; - } - return true; - } - else if (desktop == "gnome") { - QStringList arguments{"set", "org.gnome.desktop.background", "picture-uri", "file://" + path}; - return QProcess::startDetached("gsettings", arguments); - } - else if (desktop == "xfce") { - auto message = QDBusMessage::createMethodCall("org.xfce.Xfconf", "/org/xfce/Xfconf", "org.xfce.Xfconf", "SetProperty"); - QVariantList arguments; + auto message = QDBusMessage::createMethodCall("org.kde.plasmashell", "/PlasmaShell", "org.kde.PlasmaShell", "evaluateScript"); - QString channelValue = "xfce4-desktop"; - //QString propertyValue = "/backdrop/screen0/monitor0/image-path"; - QString propertyValue = "/backdrop/screen0/monitor0/workspace0/last-image"; - QDBusVariant valueValue(path); + QString script; + QTextStream out(&script); + out << "for (var key in desktops()) {" + << "var d = desktops()[key];" + << "d.wallpaperPlugin = 'org.kde.image';" + << "d.currentConfigGroup = ['Wallpaper', 'org.kde.image', 'General'];" + << "d.writeConfig('Image', 'file://" + path + "');" + << "}"; - arguments << QVariant(channelValue) << QVariant(propertyValue) << QVariant::fromValue(valueValue); - message.setArguments(arguments); + QVariantList arguments; + arguments << QVariant(script); + message.setArguments(arguments); - auto reply = QDBusConnection::sessionBus().call(message); + auto reply = QDBusConnection::sessionBus().call(message); - if (reply.type() == QDBusMessage::ErrorMessage) { - qWarning() << reply.errorMessage(); - return false; - } - return true; + if (reply.type() == QDBusMessage::ErrorMessage) { + qWarning() << reply.errorMessage(); + return false; } - return false; + + return true; } -bool SystemHandler::applyIcon(const QString &path) const +bool SystemHandler::applyGnomeWallpaper(const QString &path) const { - auto desktop = desktopEnvironment(); - - if (desktop == "kde") { - } - else if (desktop == "gnome") { - auto themeName = QFileInfo(path).fileName(); - QStringList arguments{"set", "org.gnome.desktop.interface", "icon-theme", themeName}; - return QProcess::startDetached("gsettings", arguments); - } - else if (desktop == "xfce") { - } - return false; + QStringList arguments{"set", "org.gnome.desktop.background", "picture-uri", "file://" + path}; + return QProcess::startDetached("gsettings", arguments); } -bool SystemHandler::applyCursor(const QString &path) const +bool SystemHandler::applyGnomeIcon(const QString &path) const { - auto desktop = desktopEnvironment(); + auto themeName = QFileInfo(path).fileName(); + QStringList arguments{"set", "org.gnome.desktop.interface", "icon-theme", themeName}; + return QProcess::startDetached("gsettings", arguments); +} - if (desktop == "kde") { - } - else if (desktop == "gnome") { - auto themeName = QFileInfo(path).fileName(); - QStringList arguments{"set", "org.gnome.desktop.interface", "cursor-theme", themeName}; - return QProcess::startDetached("gsettings", arguments); - } - else if (desktop == "xfce") { - } - return false; +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); } -bool SystemHandler::applyWindowTheme(const QString &path) const +bool SystemHandler::applyXfceWallpaper(const QString &path) const { - auto desktop = desktopEnvironment(); + auto message = QDBusMessage::createMethodCall("org.xfce.Xfconf", "/org/xfce/Xfconf", "org.xfce.Xfconf", "SetProperty"); - if (desktop == "kde") { - } - else if (desktop == "gnome") { - } - else if (desktop == "xfce") { + QString channelValue = "xfce4-desktop"; + //QString propertyValue = "/backdrop/screen0/monitor0/image-path"; + QString propertyValue = "/backdrop/screen0/monitor0/workspace0/last-image"; + QDBusVariant valueValue(path); + + QVariantList arguments; + arguments << QVariant(channelValue) << QVariant(propertyValue) << QVariant::fromValue(valueValue); + message.setArguments(arguments); + + auto reply = QDBusConnection::sessionBus().call(message); + + if (reply.type() == QDBusMessage::ErrorMessage) { + qWarning() << reply.errorMessage(); + return false; } - return false; + + return true; } #endif diff --git a/app/src/handlers/systemhandler.h b/app/src/handlers/systemhandler.h index b469783..7145021 100644 --- a/app/src/handlers/systemhandler.h +++ b/app/src/handlers/systemhandler.h @@ -23,9 +23,12 @@ public slots: private: #ifdef QTLIB_UNIX - bool applyWallpaper(const QString &path) const; - bool applyIcon(const QString &path) const; - bool applyCursor(const QString &path) const; - bool applyWindowTheme(const QString &path) const; + bool applyKdeWallpaper(const QString &path) const; + + bool applyGnomeWallpaper(const QString &path) const; + bool applyGnomeIcon(const QString &path) const; + bool applyGnomeCursor(const QString &path) const; + + bool applyXfceWallpaper(const QString &path) const; #endif }; -- GitLab