Inhibit KDE screensavers as well as Gnome
Update issue #879 KDE support done.
This commit is contained in:
parent
5c81e4794d
commit
5d0a2ff5cd
|
@ -574,7 +574,7 @@ if(NOT APPLE AND NOT WIN32)
|
|||
list(APPEND HEADERS devices/devicekitlister.h)
|
||||
|
||||
# Gnome Screensaver DBus interface
|
||||
list(APPEND SOURCES ui/gnomescreensaver.cpp)
|
||||
list(APPEND SOURCES ui/dbusscreensaver.cpp)
|
||||
endif(NOT APPLE AND NOT WIN32)
|
||||
|
||||
# Libgpod device backend
|
||||
|
|
|
@ -1,10 +1,18 @@
|
|||
#include "gnomescreensaver.h"
|
||||
#include "dbusscreensaver.h"
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QDBusInterface>
|
||||
#include <QDBusReply>
|
||||
|
||||
void GnomeScreensaver::Inhibit() {
|
||||
DBusScreensaver::DBusScreensaver(const QString& service, const QString& path,
|
||||
const QString& interface)
|
||||
: service_(service),
|
||||
path_(path),
|
||||
interface_(interface)
|
||||
{
|
||||
}
|
||||
|
||||
void DBusScreensaver::Inhibit() {
|
||||
QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver");
|
||||
QDBusReply<quint32> reply =
|
||||
gnome_screensaver.call("Inhibit", QCoreApplication::applicationName(), QObject::tr("Visualizations"));
|
||||
|
@ -13,7 +21,7 @@ void GnomeScreensaver::Inhibit() {
|
|||
}
|
||||
}
|
||||
|
||||
void GnomeScreensaver::Uninhibit() {
|
||||
void DBusScreensaver::Uninhibit() {
|
||||
QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver");
|
||||
gnome_screensaver.call("UnInhibit", cookie_);
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
#ifndef DBUSSCREENSAVER_H
|
||||
#define DBUSSCREENSAVER_H
|
||||
|
||||
#include "screensaver.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
class DBusScreensaver : public Screensaver {
|
||||
public:
|
||||
DBusScreensaver(const QString& service, const QString& path,
|
||||
const QString& interface);
|
||||
|
||||
void Inhibit();
|
||||
void Uninhibit();
|
||||
|
||||
private:
|
||||
QString service_;
|
||||
QString path_;
|
||||
QString interface_;
|
||||
|
||||
quint32 cookie_;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef GNOMESCREENSAVER_H
|
||||
#define GNOMESCREENSAVER_H
|
||||
|
||||
#include "screensaver.h"
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
class GnomeScreensaver : public Screensaver {
|
||||
public:
|
||||
void Inhibit();
|
||||
void Uninhibit();
|
||||
|
||||
private:
|
||||
quint32 cookie_;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -3,28 +3,36 @@
|
|||
#include <QtGlobal>
|
||||
|
||||
#ifdef Q_WS_X11
|
||||
#include "gnomescreensaver.h"
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
#include "dbusscreensaver.h"
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_DARWIN
|
||||
#include "macscreensaver.h"
|
||||
#include "macscreensaver.h"
|
||||
#endif
|
||||
|
||||
#include <QtDebug>
|
||||
|
||||
const char* Screensaver::kGnomeService = "org.gnome.ScreenSaver";
|
||||
const char* Screensaver::kGnomePath = "/";
|
||||
const char* Screensaver::kGnomeInterface = "org.gnome.ScreenSaver";
|
||||
const char* Screensaver::kKdeService = "org.kde.ScreenSaver";
|
||||
const char* Screensaver::kKdePath = "/ScreenSaver/";
|
||||
const char* Screensaver::kKdeInterface = "org.freedesktop.ScreenSaver";
|
||||
|
||||
Screensaver* Screensaver::screensaver_ = 0;
|
||||
|
||||
Screensaver* Screensaver::GetScreensaver() {
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
if (!screensaver_) {
|
||||
#if defined(Q_WS_X11)
|
||||
if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.gnome.ScreenSaver")) {
|
||||
screensaver_ = new GnomeScreensaver();
|
||||
}
|
||||
if (QDBusConnection::sessionBus().interface()->isServiceRegistered(kGnomeService)) {
|
||||
screensaver_ = new DBusScreensaver(kGnomeService, kGnomePath, kGnomeInterface);
|
||||
} else if (QDBusConnection::sessionBus().interface()->isServiceRegistered(kKdeService)) {
|
||||
screensaver_ = new DBusScreensaver(kKdeService, kKdePath, kKdeInterface);
|
||||
}
|
||||
#elif defined(Q_OS_DARWIN)
|
||||
screensaver_ = new MacScreensaver();
|
||||
screensaver_ = new MacScreensaver();
|
||||
#endif
|
||||
}
|
||||
return screensaver_;
|
||||
|
|
|
@ -5,6 +5,14 @@ class Screensaver {
|
|||
public:
|
||||
virtual ~Screensaver() {}
|
||||
|
||||
static const char* kGnomeService;
|
||||
static const char* kGnomePath;
|
||||
static const char* kGnomeInterface;
|
||||
|
||||
static const char* kKdeService;
|
||||
static const char* kKdePath;
|
||||
static const char* kKdeInterface;
|
||||
|
||||
virtual void Inhibit() = 0;
|
||||
virtual void Uninhibit() = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue