Changeset View
Changeset View
Standalone View
Standalone View
src/widgetbasedpoller.cpp
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries | ||
---|---|---|---|---|---|
2 | * SPDX-FileCopyrightText: 2009 Dario Freddi <drf at kde.org> | 2 | * SPDX-FileCopyrightText: 2009 Dario Freddi <drf at kde.org> | ||
3 | * | 3 | * | ||
4 | * SPDX-License-Identifier: LGPL-2.0-only | 4 | * SPDX-License-Identifier: LGPL-2.0-only | ||
5 | */ | 5 | */ | ||
6 | 6 | | |||
7 | #include "widgetbasedpoller.h" | 7 | #include "widgetbasedpoller.h" | ||
8 | 8 | | |||
9 | #include <QWidget> | | |||
10 | #include <QTimer> | 9 | #include <QTimer> | ||
11 | #include <QEvent> | 10 | #include <QEvent> | ||
11 | #include <QWindow> | ||||
12 | 12 | | |||
13 | WidgetBasedPoller::WidgetBasedPoller(QObject *parent) | 13 | WidgetBasedPoller::WidgetBasedPoller(QObject *parent) | ||
14 | : AbstractSystemPoller(parent) | 14 | : AbstractSystemPoller(parent) | ||
15 | { | 15 | { | ||
16 | } | 16 | } | ||
17 | 17 | | |||
18 | WidgetBasedPoller::~WidgetBasedPoller() | 18 | WidgetBasedPoller::~WidgetBasedPoller() | ||
19 | { | 19 | { | ||
20 | } | 20 | } | ||
21 | 21 | | |||
22 | bool WidgetBasedPoller::isAvailable() | 22 | bool WidgetBasedPoller::isAvailable() | ||
23 | { | 23 | { | ||
24 | return true; | 24 | return true; | ||
25 | } | 25 | } | ||
26 | 26 | | |||
27 | bool WidgetBasedPoller::setUpPoller() | 27 | bool WidgetBasedPoller::setUpPoller() | ||
28 | { | 28 | { | ||
29 | m_pollTimer = new QTimer(this); | 29 | m_pollTimer = new QTimer(this); | ||
30 | 30 | | |||
31 | //setup idle timer, with some smart polling | 31 | //setup idle timer, with some smart polling | ||
32 | connect(m_pollTimer, &QTimer::timeout, this, &WidgetBasedPoller::poll); | 32 | connect(m_pollTimer, &QTimer::timeout, this, &WidgetBasedPoller::poll); | ||
33 | 33 | | |||
34 | // This code was taken from Lithium/KDE4Powersave | 34 | m_grabber = new QWindow(); | ||
35 | m_grabber = new QWidget(nullptr, Qt::X11BypassWindowManagerHint); | 35 | m_grabber->setFlag(Qt::X11BypassWindowManagerHint); | ||
36 | m_grabber->move(-1000, -1000); | 36 | m_grabber->setPosition(-1000, -1000); | ||
37 | m_grabber->setMouseTracking(true); | | |||
38 | m_grabber->installEventFilter(this); | 37 | m_grabber->installEventFilter(this); | ||
39 | m_grabber->setObjectName(QStringLiteral("KIdleGrabberWidget")); | 38 | m_grabber->setObjectName(QStringLiteral("KIdleGrabberWidget")); | ||
40 | 39 | | |||
41 | return additionalSetUp(); | 40 | return additionalSetUp(); | ||
42 | } | 41 | } | ||
43 | 42 | | |||
44 | void WidgetBasedPoller::unloadPoller() | 43 | void WidgetBasedPoller::unloadPoller() | ||
45 | { | 44 | { | ||
Show All 25 Lines | 61 | { | |||
71 | 70 | | |||
72 | // Otherwise, simply ignore it | 71 | // Otherwise, simply ignore it | ||
73 | return false; | 72 | return false; | ||
74 | 73 | | |||
75 | } | 74 | } | ||
76 | 75 | | |||
77 | void WidgetBasedPoller::waitForActivity() | 76 | void WidgetBasedPoller::waitForActivity() | ||
78 | { | 77 | { | ||
79 | // This code was taken from Lithium/KDE4Powersave | | |||
80 | | ||||
81 | m_grabber->show(); | 78 | m_grabber->show(); | ||
82 | m_grabber->grabMouse(); | 79 | m_grabber->setMouseGrabEnabled(true); | ||
83 | m_grabber->grabKeyboard(); | 80 | m_grabber->setKeyboardGrabEnabled(true); | ||
84 | 81 | | |||
85 | } | 82 | } | ||
86 | 83 | | |||
87 | void WidgetBasedPoller::detectedActivity() | 84 | void WidgetBasedPoller::detectedActivity() | ||
88 | { | 85 | { | ||
89 | stopCatchingIdleEvents(); | 86 | stopCatchingIdleEvents(); | ||
90 | emit resumingFromIdle(); | 87 | emit resumingFromIdle(); | ||
91 | } | 88 | } | ||
92 | 89 | | |||
93 | void WidgetBasedPoller::releaseInputLock() | 90 | void WidgetBasedPoller::releaseInputLock() | ||
94 | { | 91 | { | ||
95 | m_grabber->releaseMouse(); | 92 | m_grabber->setMouseGrabEnabled(false); | ||
96 | m_grabber->releaseKeyboard(); | 93 | m_grabber->setKeyboardGrabEnabled(false); | ||
97 | m_grabber->hide(); | 94 | m_grabber->hide(); | ||
98 | } | 95 | } | ||
99 | 96 | | |||
100 | int WidgetBasedPoller::poll() | 97 | int WidgetBasedPoller::poll() | ||
101 | { | 98 | { | ||
102 | int idle = getIdleTime(); | 99 | int idle = getIdleTime(); | ||
103 | 100 | | |||
104 | // Check if we reached a timeout.. | 101 | // Check if we reached a timeout.. | ||
▲ Show 20 Lines • Show All 48 Lines • Show Last 20 Lines |