aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/platform/qquickplatformsystemtrayicon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/platform/qquickplatformsystemtrayicon.cpp')
-rw-r--r--src/imports/platform/qquickplatformsystemtrayicon.cpp91
1 files changed, 67 insertions, 24 deletions
diff --git a/src/imports/platform/qquickplatformsystemtrayicon.cpp b/src/imports/platform/qquickplatformsystemtrayicon.cpp
index 8b5d5f7b..202bc3bf 100644
--- a/src/imports/platform/qquickplatformsystemtrayicon.cpp
+++ b/src/imports/platform/qquickplatformsystemtrayicon.cpp
@@ -67,7 +67,7 @@ QT_BEGIN_NAMESPACE
\code
SystemTrayIcon {
visible: true
- iconSource: "qrc:/images/tray-icon.png"
+ icon.source: "qrc:/images/tray-icon.png"
onActivated: {
window.show()
@@ -88,7 +88,7 @@ QT_BEGIN_NAMESPACE
\code
SystemTrayIcon {
visible: true
- iconSource: "qrc:/images/tray-icon.png"
+ icon.source: "qrc:/images/tray-icon.png"
menu: Menu {
MenuItem {
@@ -111,7 +111,7 @@ QT_BEGIN_NAMESPACE
\code
SystemTrayIcon {
visible: true
- iconSource: "qrc:/images/tray-icon.png"
+ icon.source: "qrc:/images/tray-icon.png"
onMessageClicked: console.log("Message clicked")
Component.onCompleted: showMessage("Message title", "Something important came up. Click this to know more.")
@@ -254,49 +254,43 @@ void QQuickPlatformSystemTrayIcon::setVisible(bool visible)
/*!
\qmlproperty url Qt.labs.platform::SystemTrayIcon::iconSource
-
- This property holds the url of the system tray icon.
-
- \sa iconName
+ \deprecated Use icon.source instead.
+ \sa icon
*/
QUrl QQuickPlatformSystemTrayIcon::iconSource() const
{
- if (!m_iconLoader)
- return QUrl();
-
- return m_iconLoader->iconSource();
+ return icon().source();
}
void QQuickPlatformSystemTrayIcon::setIconSource(const QUrl& source)
{
- if (source == iconSource())
+ QQuickPlatformIcon newIcon = icon();
+ if (source == newIcon.source())
return;
- iconLoader()->setIconSource(source);
+ newIcon.setSource(source);
+ iconLoader()->setIcon(newIcon);
emit iconSourceChanged();
}
/*!
\qmlproperty string Qt.labs.platform::SystemTrayIcon::iconName
-
- This property holds the theme name of the system tray icon.
-
- \sa iconSource, QIcon::fromTheme()
+ \deprecated Use icon.name instead.
+ \sa icon
*/
QString QQuickPlatformSystemTrayIcon::iconName() const
{
- if (!m_iconLoader)
- return QString();
-
- return m_iconLoader->iconName();
+ return icon().name();
}
void QQuickPlatformSystemTrayIcon::setIconName(const QString& name)
{
- if (name == iconName())
+ QQuickPlatformIcon newIcon = icon();
+ if (name == newIcon.name())
return;
- iconLoader()->setIconName(name);
+ newIcon.setName(name);
+ iconLoader()->setIcon(newIcon);
emit iconNameChanged();
}
@@ -350,6 +344,50 @@ void QQuickPlatformSystemTrayIcon::setMenu(QQuickPlatformMenu *menu)
}
/*!
+ \since Qt.labs.platform 1.1 (Qt 5.12)
+ \qmlproperty rect Qt.labs.platform::SystemTrayIcon::geometry
+
+ This property holds the geometry of the system tray icon.
+*/
+QRect QQuickPlatformSystemTrayIcon::geometry() const
+{
+ return m_handle ? m_handle->geometry() : QRect();
+}
+
+/*!
+ \since Qt.labs.platform 1.1 (Qt 5.12)
+ \qmlpropertygroup Qt.labs.platform::SystemTrayIcon::icon
+ \qmlproperty url Qt.labs.platform::SystemTrayIcon::icon.source
+ \qmlproperty string Qt.labs.platform::SystemTrayIcon::icon.name
+ \qmlproperty bool Qt.labs.platform::SystemTrayIcon::icon.mask
+
+ This property holds the system tray icon.
+
+ \code
+ SystemTrayIcon {
+ icon.mask: true
+ icon.source: "qrc:/images/tray-icon.png"
+ }
+ \endcode
+*/
+QQuickPlatformIcon QQuickPlatformSystemTrayIcon::icon() const
+{
+ if (!m_iconLoader)
+ return QQuickPlatformIcon();
+
+ return m_iconLoader->icon();
+}
+
+void QQuickPlatformSystemTrayIcon::setIcon(const QQuickPlatformIcon &icon)
+{
+ if (iconLoader()->icon() == icon)
+ return;
+
+ iconLoader()->setIcon(icon);
+ emit iconChanged();
+}
+
+/*!
\qmlmethod void Qt.labs.platform::SystemTrayIcon::show()
Shows the system tray icon.
@@ -435,7 +473,12 @@ void QQuickPlatformSystemTrayIcon::updateIcon()
if (!m_handle || !m_iconLoader)
return;
- m_handle->updateIcon(m_iconLoader->icon());
+ const QRect oldGeometry = m_handle->geometry();
+
+ m_handle->updateIcon(m_iconLoader->toQIcon());
+
+ if (oldGeometry != m_handle->geometry())
+ emit geometryChanged();
}
QT_END_NAMESPACE