Ticket #8357: screensaver-xdg.2.cpp

File screensaver-xdg.2.cpp, 3.0 KB (added by Johnny Walker <johnnyjboss@…>, 16 years ago)

corrected tab stops and other misc. items

Line 
1
2// Own header
3#include "screensaver-xdg.h"
4
5// QT headers
6#include <QWidget>
7#include <QDateTime>
8#include <QTimer>
9#include <QX11Info>
10#include <QString>
11
12// Mythdb headers
13#include "mythverbose.h"
14#include "mythdb.h"
15
16// Mythui headers
17#include "mythsystem.h"
18#include "mythxdisplay.h"
19#include "mythmainwindow.h"
20
21// X11 headers
22#include <X11/Xlib.h>
23
24extern "C" {
25#include <X11/extensions/dpms.h>
26}
27
28#define LOC QString("ScreenSaverXDGPrivate: ")
29#define LOC_WARN QString("ScreenSaverXDGPrivate, Warning: ")
30#define LOC_ERR QString("ScreenSaverXDGPrivate, Error: ")
31
32class ScreenSaverXDGPrivate
33{
34 friend class ScreenSaverXDG;
35
36public:
37 ScreenSaverXDGPrivate(ScreenSaverXDG *outer) :
38 m_xdgscreensaverRunning(false),
39 m_display(NULL)
40 {
41 m_xdgscreensaverRunning =
42 myth_system("xdg-screensaver --version >&- 2>&-") == 0;
43
44 if (IsScreenSaverRunning())
45 {
46 if (m_xdgscreensaverRunning){
47 VERBOSE(VB_GENERAL, LOC + "XDGScreenSaver support enabled");
48 }
49
50 }
51
52 m_display = OpenMythXDisplay();
53 if (!m_display)
54 VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to open connection to X11 server");
55 }
56
57 ~ScreenSaverXDGPrivate()
58 {
59 delete m_display;
60 }
61
62 bool IsScreenSaverRunning(void) const
63 {
64 return m_xdgscreensaverRunning;
65 }
66
67 QString getXWindowId(void)
68 {
69 //return window id
70 WId myWId = GetMythMainWindow()->winId();
71 QString windowId = QString("0x%1").arg(myWId, 0, 16);
72 VERBOSE(VB_GENERAL, QString("XDG: xwindowid of MythMainWindow at this time is: %1").arg(windowId));
73 return windowId;
74 }
75
76 void ResetScreenSaver(void)
77 {
78 //nothing to do in this implementation
79 }
80
81private:
82 bool m_xdgscreensaverRunning;
83
84 MythXDisplay *m_display;
85};
86
87ScreenSaverXDG::ScreenSaverXDG() :
88 d(new ScreenSaverXDGPrivate(this))
89{
90}
91
92ScreenSaverXDG::~ScreenSaverXDG()
93{
94 delete d;
95}
96
97bool ScreenSaverXDG::isXDGInstalled(void)
98{
99 bool result = myth_system("xdg-screensaver --version >&- 2>&-") == 0;
100 if (result)
101 {
102 VERBOSE(VB_GENERAL, "XDG: XDG-screensaver is supported.");
103 }
104 else
105 {
106 VERBOSE(VB_GENERAL, "XDG: xdg-utils are NOT installed. Failing back to timers and pokes");
107 }
108 return result;
109}
110
111void ScreenSaverXDG::Disable(void)
112{
113 if (d->m_display)
114 {
115 VERBOSE(VB_GENERAL, "XDG: Calling xdg-screensaver suspend windowID");
116 myth_system(QString("xdg-screensaver suspend %1 >&- 2>&- &").arg(d->getXWindowId()));
117 }
118}
119
120void ScreenSaverXDG::Restore(void)
121{
122 if (d->m_display)
123 {
124 VERBOSE(VB_GENERAL, "XDG: Calling xdg-screensaver resume windowID");
125 myth_system(QString("xdg-screensaver resume %1 >&- 2>&- &").arg(d->getXWindowId()));
126 }
127}
128
129void ScreenSaverXDG::Reset(void)
130{
131 //nothing to do in this implementation
132}
133
134bool ScreenSaverXDG::Asleep(void)
135{
136 return false;
137}
138
139void ScreenSaverXDG::resetSlot(void)
140{
141 d->ResetScreenSaver();
142}