Support for inhibiting gnome screensaver.
Update issue #879 Gnome support done.
This commit is contained in:
parent
2d19c2899a
commit
f0c3bf4332
|
@ -161,6 +161,7 @@ set(SOURCES
|
|||
ui/organisedialog.cpp
|
||||
ui/organiseerrordialog.cpp
|
||||
ui/qtsystemtrayicon.cpp
|
||||
ui/screensaver.cpp
|
||||
ui/settingsdialog.cpp
|
||||
ui/systemtrayicon.cpp
|
||||
|
||||
|
@ -569,6 +570,9 @@ if(NOT APPLE AND NOT WIN32)
|
|||
# DeviceKit lister source
|
||||
list(APPEND SOURCES devices/devicekitlister.cpp)
|
||||
list(APPEND HEADERS devices/devicekitlister.h)
|
||||
|
||||
# Gnome Screensaver DBus interface
|
||||
list(APPEND SOURCES ui/gnomescreensaver.cpp)
|
||||
endif(NOT APPLE AND NOT WIN32)
|
||||
|
||||
# Libgpod device backend
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
#include "gnomescreensaver.h"
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QDBusInterface>
|
||||
#include <QDBusReply>
|
||||
|
||||
void GnomeScreensaver::Inhibit() {
|
||||
QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver");
|
||||
QDBusReply<quint32> reply =
|
||||
gnome_screensaver.call("Inhibit", QCoreApplication::applicationName(), QObject::tr("Visualizations"));
|
||||
if (reply.isValid()) {
|
||||
cookie_ = reply.value();
|
||||
}
|
||||
}
|
||||
|
||||
void GnomeScreensaver::Uninhibit() {
|
||||
QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver");
|
||||
gnome_screensaver.call("UnInhibit", cookie_);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef GNOMESCREENSAVER_H
|
||||
#define GNOMESCREENSAVER_H
|
||||
|
||||
#include "screensaver.h"
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
class GnomeScreensaver : public Screensaver {
|
||||
public:
|
||||
void Inhibit();
|
||||
void Uninhibit();
|
||||
|
||||
private:
|
||||
quint32 cookie_;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,21 @@
|
|||
#include "screensaver.h"
|
||||
|
||||
#include "gnomescreensaver.h"
|
||||
|
||||
#ifdef Q_WS_X11
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
#endif
|
||||
|
||||
Screensaver* Screensaver::screensaver_ = 0;
|
||||
|
||||
Screensaver* Screensaver::GetScreensaver() {
|
||||
if (!screensaver_) {
|
||||
#ifdef Q_WS_X11
|
||||
if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.gnome.ScreenSaver")) {
|
||||
screensaver_ = new GnomeScreensaver();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return screensaver_;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
#ifndef SCREENSAVER_H
|
||||
#define SCREENSAVER_H
|
||||
|
||||
class Screensaver {
|
||||
public:
|
||||
virtual void Inhibit() = 0;
|
||||
virtual void Uninhibit() = 0;
|
||||
|
||||
static Screensaver* GetScreensaver();
|
||||
|
||||
private:
|
||||
static Screensaver* screensaver_;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -21,6 +21,7 @@
|
|||
#include "visualisationselector.h"
|
||||
#include "engines/gstengine.h"
|
||||
#include "ui/iconloader.h"
|
||||
#include "ui/screensaver.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QSettings>
|
||||
|
@ -245,6 +246,10 @@ void VisualisationContainer::keyReleaseEvent(QKeyEvent *event) {
|
|||
|
||||
void VisualisationContainer::ToggleFullscreen() {
|
||||
setWindowState(windowState() ^ Qt::WindowFullScreen);
|
||||
|
||||
Screensaver* screensaver = Screensaver::GetScreensaver();
|
||||
if (screensaver)
|
||||
isFullScreen() ? screensaver->Inhibit() : screensaver->Uninhibit();
|
||||
}
|
||||
|
||||
void VisualisationContainer::SetFps(int fps) {
|
||||
|
|
Loading…
Reference in New Issue