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/organisedialog.cpp
|
||||||
ui/organiseerrordialog.cpp
|
ui/organiseerrordialog.cpp
|
||||||
ui/qtsystemtrayicon.cpp
|
ui/qtsystemtrayicon.cpp
|
||||||
|
ui/screensaver.cpp
|
||||||
ui/settingsdialog.cpp
|
ui/settingsdialog.cpp
|
||||||
ui/systemtrayicon.cpp
|
ui/systemtrayicon.cpp
|
||||||
|
|
||||||
|
@ -569,6 +570,9 @@ if(NOT APPLE AND NOT WIN32)
|
||||||
# DeviceKit lister source
|
# DeviceKit lister source
|
||||||
list(APPEND SOURCES devices/devicekitlister.cpp)
|
list(APPEND SOURCES devices/devicekitlister.cpp)
|
||||||
list(APPEND HEADERS devices/devicekitlister.h)
|
list(APPEND HEADERS devices/devicekitlister.h)
|
||||||
|
|
||||||
|
# Gnome Screensaver DBus interface
|
||||||
|
list(APPEND SOURCES ui/gnomescreensaver.cpp)
|
||||||
endif(NOT APPLE AND NOT WIN32)
|
endif(NOT APPLE AND NOT WIN32)
|
||||||
|
|
||||||
# Libgpod device backend
|
# 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 "visualisationselector.h"
|
||||||
#include "engines/gstengine.h"
|
#include "engines/gstengine.h"
|
||||||
#include "ui/iconloader.h"
|
#include "ui/iconloader.h"
|
||||||
|
#include "ui/screensaver.h"
|
||||||
|
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
@ -245,6 +246,10 @@ void VisualisationContainer::keyReleaseEvent(QKeyEvent *event) {
|
||||||
|
|
||||||
void VisualisationContainer::ToggleFullscreen() {
|
void VisualisationContainer::ToggleFullscreen() {
|
||||||
setWindowState(windowState() ^ Qt::WindowFullScreen);
|
setWindowState(windowState() ^ Qt::WindowFullScreen);
|
||||||
|
|
||||||
|
Screensaver* screensaver = Screensaver::GetScreensaver();
|
||||||
|
if (screensaver)
|
||||||
|
isFullScreen() ? screensaver->Inhibit() : screensaver->Uninhibit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualisationContainer::SetFps(int fps) {
|
void VisualisationContainer::SetFps(int fps) {
|
||||||
|
|
Loading…
Reference in New Issue