KWin
Loading...
Searching...
No Matches
osd.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2016 Martin Graesslin <mgraesslin@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5
6*/
7#include "osd.h"
8#include "main.h"
10#include "scripting/scripting.h"
11#include "workspace.h"
12
13#include <QQmlEngine>
14#include <QThread>
15
16namespace KWin
17{
18namespace OSD
19{
20
21static OnScreenNotification *create()
22{
23 auto osd = new OnScreenNotification(workspace());
24 osd->setConfig(kwinApp()->config());
25 osd->setEngine(Scripting::self()->qmlEngine());
26 return osd;
27}
28
29static OnScreenNotification *osd()
30{
31 static OnScreenNotification *s_osd = create();
32 return s_osd;
33}
34
35void show(const QString &message, const QString &iconName, int timeout)
36{
37 if (!kwinApp()->shouldUseWaylandForCompositing()) {
38 // FIXME: only supported on Wayland
39 return;
40 }
41
42 if (QThread::currentThread() != qGuiApp->thread()) {
43 QTimer::singleShot(0, QCoreApplication::instance(), [message, iconName, timeout] {
44 show(message, iconName, timeout);
45 });
46 return;
47 }
48
49 auto notification = osd();
50 notification->setIconName(iconName);
51 notification->setMessage(message);
52 notification->setTimeout(timeout);
53 notification->setVisible(true);
54}
55
56void show(const QString &message, int timeout)
57{
58 show(message, QString(), timeout);
59}
60
61void show(const QString &message, const QString &iconName)
62{
63 show(message, iconName, 0);
64}
65
66void hide(HideFlags flags)
67{
68 if (!kwinApp()->shouldUseWaylandForCompositing()) {
69 // FIXME: only supported on Wayland
70 return;
71 }
73 osd()->setVisible(false);
74}
75
76}
77}
void setConfig(KSharedConfigPtr config)
void setEngine(QQmlEngine *engine)
static Scripting * self()
Definition scripting.h:393
void show(const QString &message, const QString &iconName, int timeout)
Definition osd.cpp:35
void hide(HideFlags flags)
Definition osd.cpp:66
Workspace * workspace()
Definition workspace.h:830