Skip to content
Snippets Groups Projects
Commit 2142e53a authored by akiraohgaki's avatar akiraohgaki
Browse files

Organize functions

parent ad32bc1c
Branches
Tags
No related merge requests found
......@@ -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
......@@ -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
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment