1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Copyright (C) 2012 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
5** Contact: https://www.qt.io/licensing/
6**
7** This file is part of the QtGui module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial License Usage
11** Licensees holding valid commercial Qt licenses may use this file in
12** accordance with the commercial license agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and The Qt Company. For licensing terms
15** and conditions see https://www.qt.io/terms-conditions. For further
16** information use the contact form at https://www.qt.io/contact-us.
17**
18** GNU Lesser General Public License Usage
19** Alternatively, this file may be used under the terms of the GNU Lesser
20** General Public License version 3 as published by the Free Software
21** Foundation and appearing in the file LICENSE.LGPL3 included in the
22** packaging of this file. Please review the following information to
23** ensure the GNU Lesser General Public License version 3 requirements
24** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
25**
26** GNU General Public License Usage
27** Alternatively, this file may be used under the terms of the GNU
28** General Public License version 2.0 or (at your option) the GNU General
29** Public license version 3 or any later version approved by the KDE Free
30** Qt Foundation. The licenses are as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
32** included in the packaging of this file. Please review the following
33** information to ensure the GNU General Public License requirements will
34** be met: https://www.gnu.org/licenses/gpl-2.0.html and
35** https://www.gnu.org/licenses/gpl-3.0.html.
36**
37** $QT_END_LICENSE$
38**
39****************************************************************************/
40
41#include "qplatformsystemtrayicon.h"
42
43#include <QtGui/private/qguiapplication_p.h>
44#include <QtGui/qpa/qplatformtheme.h>
45
46#ifndef QT_NO_SYSTEMTRAYICON
47
48QT_BEGIN_NAMESPACE
49
50/*!
51 \class QPlatformSystemTrayIcon
52 \inmodule QtGui
53 \brief The QPlatformSystemTrayIcon class abstracts the system tray icon and interaction.
54
55 \internal
56 \sa QSystemTrayIcon
57*/
58
59/*!
60 \enum QPlatformSystemTrayIcon::MessageIcon
61
62 This enum describes the icon that is shown when a balloon message is displayed.
63
64 \value NoIcon No icon is shown.
65 \value Information An information icon is shown.
66 \value Warning A standard warning icon is shown.
67 \value Critical A critical warning icon is shown.
68
69 \sa updateIcon(), showMessage(), QMessageBox
70*/
71
72/*!
73 \enum QPlatformSystemTrayIcon::ActivationReason
74
75 This enum describes the reason the system tray was activated.
76
77 \value Unknown Unknown reason
78 \value Context The context menu for the system tray entry was requested
79 \value DoubleClick The system tray entry was double clicked
80 \value Trigger The system tray entry was clicked
81 \value MiddleClick The system tray entry was clicked with the middle mouse button
82
83 \sa activated()
84*/
85
86QPlatformSystemTrayIcon::QPlatformSystemTrayIcon()
87{
88}
89
90QPlatformSystemTrayIcon::~QPlatformSystemTrayIcon()
91{
92}
93
94/*!
95 \fn void QPlatformSystemTrayIcon::init()
96 This method is called to initialize the platform dependent implementation.
97*/
98
99/*!
100 \fn void QPlatformSystemTrayIcon::cleanup()
101 This method is called to cleanup the platform dependent implementation.
102*/
103
104/*!
105 \fn void QPlatformSystemTrayIcon::updateIcon(const QIcon &icon)
106 This method is called when the \a icon did change.
107*/
108
109/*!
110 \fn void QPlatformSystemTrayIcon::updateToolTip(const QString &tooltip)
111 This method is called when the \a tooltip text did change.
112*/
113
114/*!
115 \fn void QPlatformSystemTrayIcon::updateMenu(QPlatformMenu *menu)
116 This method is called when the system tray \a menu did change.
117*/
118
119/*!
120 \fn QRect QPlatformSystemTrayIcon::geometry() const
121 This method returns the geometry of the platform dependent system tray icon on the screen.
122*/
123
124/*!
125 \fn void QPlatformSystemTrayIcon::showMessage(const QString &title, const QString &msg,
126 const QIcon &icon, MessageIcon iconType, int msecs)
127 Shows a balloon message for the entry with the given \a title, message \a msg and \a icon for
128 the time specified in \a msecs. \a iconType is used as a hint for the implementing platform.
129 \sa QSystemTrayIcon::showMessage()
130*/
131
132/*!
133 \fn bool QPlatformSystemTrayIcon::isSystemTrayAvailable() const
134 Returns \c true if the system tray is available on the platform.
135*/
136
137/*!
138 \fn bool QPlatformSystemTrayIcon::supportsMessages() const
139 Returns \c true if the system tray supports messages on the platform.
140*/
141
142/*!
143 \fn void QPlatformSystemTrayIcon::contextMenuRequested(QPoint globalPos, const QPlatformScreen *screen)
144 This signal is emitted when the context menu is requested.
145 In particular, on platforms where createMenu() returns nullptr,
146 its emission will cause QSystemTrayIcon to show a QMenu-based menu.
147 \sa activated()
148 \since 5.10
149*/
150
151/*!
152 \fn void QPlatformSystemTrayIcon::activated(QPlatformSystemTrayIcon::ActivationReason reason)
153 This signal is emitted when the user activates the system tray icon.
154 \a reason specifies the reason for activation.
155 \sa QSystemTrayIcon::ActivationReason, contextMenuRequested()
156*/
157
158/*!
159 \fn void QPlatformSystemTrayIcon::messageClicked()
160
161 This signal is emitted when the message displayed using showMessage()
162 was clicked by the user.
163
164 \sa activated()
165*/
166
167/*!
168 This method allows platforms to use a different QPlatformMenu for system
169 tray menus than what would normally be used for e.g. menu bars. The default
170 implementation falls back to a platform menu created by the platform theme,
171 which may be null on platforms without native menus.
172
173 \sa updateMenu()
174 \since 5.3
175 */
176
177QPlatformMenu *QPlatformSystemTrayIcon::createMenu() const
178{
179 return QGuiApplicationPrivate::platformTheme()->createPlatformMenu();
180}
181
182QT_END_NAMESPACE
183
184#include "moc_qplatformsystemtrayicon.cpp"
185
186#endif // QT_NO_SYSTEMTRAYICON
187