diff options
-rw-r--r-- | src/imports/platform/platform.pri | 2 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformicon.cpp | 71 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformicon_p.h | 81 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformiconloader.cpp | 28 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformiconloader_p.h | 15 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformmenu.cpp | 65 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformmenu_p.h | 7 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformmenuitem.cpp | 82 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformmenuitem_p.h | 7 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformsystemtrayicon.cpp | 73 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformsystemtrayicon_p.h | 7 | ||||
-rw-r--r-- | src/imports/platform/qtlabsplatformplugin.cpp | 5 |
12 files changed, 332 insertions, 111 deletions
diff --git a/src/imports/platform/platform.pri b/src/imports/platform/platform.pri index 2227d89c..ec6e8616 100644 --- a/src/imports/platform/platform.pri +++ b/src/imports/platform/platform.pri @@ -4,6 +4,7 @@ HEADERS += \ $$PWD/qquickplatformfiledialog_p.h \ $$PWD/qquickplatformfolderdialog_p.h \ $$PWD/qquickplatformfontdialog_p.h \ + $$PWD/qquickplatformicon_p.h \ $$PWD/qquickplatformiconloader_p.h \ $$PWD/qquickplatformmenu_p.h \ $$PWD/qquickplatformmenubar_p.h \ @@ -19,6 +20,7 @@ SOURCES += \ $$PWD/qquickplatformfiledialog.cpp \ $$PWD/qquickplatformfolderdialog.cpp \ $$PWD/qquickplatformfontdialog.cpp \ + $$PWD/qquickplatformicon.cpp \ $$PWD/qquickplatformiconloader.cpp \ $$PWD/qquickplatformmenu.cpp \ $$PWD/qquickplatformmenubar.cpp \ diff --git a/src/imports/platform/qquickplatformicon.cpp b/src/imports/platform/qquickplatformicon.cpp new file mode 100644 index 00000000..98fc045f --- /dev/null +++ b/src/imports/platform/qquickplatformicon.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Labs Platform module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qquickplatformicon_p.h" + +QT_BEGIN_NAMESPACE + +QUrl QQuickPlatformIcon::source() const +{ + return m_source; +} + +void QQuickPlatformIcon::setSource(const QUrl& source) +{ + m_source = source; +} + +QString QQuickPlatformIcon::name() const +{ + return m_name; +} + +void QQuickPlatformIcon::setName(const QString& name) +{ + m_name = name; +} + +bool QQuickPlatformIcon::operator==(const QQuickPlatformIcon &other) const +{ + return m_source == other.m_source && m_name == other.m_name; +} + +bool QQuickPlatformIcon::operator!=(const QQuickPlatformIcon &other) const +{ + return !(*this == other); +} + +QT_END_NAMESPACE diff --git a/src/imports/platform/qquickplatformicon_p.h b/src/imports/platform/qquickplatformicon_p.h new file mode 100644 index 00000000..270b3000 --- /dev/null +++ b/src/imports/platform/qquickplatformicon_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Labs Platform module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUICKPLATFORMICON_P_H +#define QQUICKPLATFORMICON_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtCore/qurl.h> +#include <QtCore/qstring.h> + +QT_BEGIN_NAMESPACE + +class QObject; + +class QQuickPlatformIcon +{ + Q_GADGET + Q_PROPERTY(QUrl source READ source WRITE setSource) + Q_PROPERTY(QString name READ name WRITE setName) + +public: + QUrl source() const; + void setSource(const QUrl &source); + + QString name() const; + void setName(const QString &name); + + bool operator==(const QQuickPlatformIcon &other) const; + bool operator!=(const QQuickPlatformIcon &other) const; + +private: + QUrl m_source; + QString m_name; +}; + +QT_END_NAMESPACE + +#endif // QQUICKPLATFORMICON_P_H diff --git a/src/imports/platform/qquickplatformiconloader.cpp b/src/imports/platform/qquickplatformiconloader.cpp index 11ebd476..6d4d486e 100644 --- a/src/imports/platform/qquickplatformiconloader.cpp +++ b/src/imports/platform/qquickplatformiconloader.cpp @@ -62,42 +62,30 @@ void QQuickPlatformIconLoader::setEnabled(bool enabled) loadIcon(); } -QIcon QQuickPlatformIconLoader::icon() const +QIcon QQuickPlatformIconLoader::toQIcon() const { QIcon fallback = QPixmap::fromImage(image()); - return QIcon::fromTheme(m_iconName, fallback); + return QIcon::fromTheme(m_icon.name(), fallback); } -QUrl QQuickPlatformIconLoader::iconSource() const +QQuickPlatformIcon QQuickPlatformIconLoader::icon() const { - return m_iconSource; + return m_icon; } -void QQuickPlatformIconLoader::setIconSource(const QUrl& source) +void QQuickPlatformIconLoader::setIcon(const QQuickPlatformIcon& icon) { - m_iconSource = source; - if (m_enabled) - loadIcon(); -} - -QString QQuickPlatformIconLoader::iconName() const -{ - return m_iconName; -} - -void QQuickPlatformIconLoader::setIconName(const QString& name) -{ - m_iconName = name; + m_icon = icon; if (m_enabled) loadIcon(); } void QQuickPlatformIconLoader::loadIcon() { - if (m_iconSource.isEmpty()) { + if (m_icon.source().isEmpty()) { clear(m_parent); } else { - load(qmlEngine(m_parent), m_iconSource); + load(qmlEngine(m_parent), m_icon.source()); if (m_slot != -1 && isLoading()) { connectFinished(m_parent, m_slot); m_slot = -1; diff --git a/src/imports/platform/qquickplatformiconloader_p.h b/src/imports/platform/qquickplatformiconloader_p.h index dd26a65b..d284a513 100644 --- a/src/imports/platform/qquickplatformiconloader_p.h +++ b/src/imports/platform/qquickplatformiconloader_p.h @@ -53,6 +53,8 @@ #include <QtGui/qicon.h> #include <QtQuick/private/qquickpixmapcache_p.h> +#include "qquickplatformicon_p.h" + QT_BEGIN_NAMESPACE class QObject; @@ -65,13 +67,10 @@ public: bool isEnabled() const; void setEnabled(bool enabled); - QIcon icon() const; - - QUrl iconSource() const; - void setIconSource(const QUrl &source); + QIcon toQIcon() const; - QString iconName() const; - void setIconName(const QString &name); + QQuickPlatformIcon icon() const; + void setIcon(const QQuickPlatformIcon &icon); private: void loadIcon(); @@ -79,9 +78,7 @@ private: QObject *m_parent; int m_slot; bool m_enabled; - QIcon m_icon; - QUrl m_iconSource; - QString m_iconName; + QQuickPlatformIcon m_icon; }; QT_END_NAMESPACE diff --git a/src/imports/platform/qquickplatformmenu.cpp b/src/imports/platform/qquickplatformmenu.cpp index 0a5ce8e4..c263f0a6 100644 --- a/src/imports/platform/qquickplatformmenu.cpp +++ b/src/imports/platform/qquickplatformmenu.cpp @@ -543,57 +543,48 @@ void QQuickPlatformMenu::setTitle(const QString &title) /*! \qmlproperty url Qt.labs.platform::Menu::iconSource - - This property holds the url of the menu's icon. - - \sa iconName + \deprecated Use icon.source instead */ QUrl QQuickPlatformMenu::iconSource() const { - if (!m_iconLoader) - return QUrl(); - - return m_iconLoader->iconSource(); + return icon().source(); } void QQuickPlatformMenu::setIconSource(const QUrl& source) { - if (source == iconSource()) + QQuickPlatformIcon newIcon = icon(); + if (source == newIcon.source()) return; if (m_menuItem) m_menuItem->setIconSource(source); - iconLoader()->setIconSource(source); + newIcon.setSource(source); + iconLoader()->setIcon(newIcon); emit iconSourceChanged(); } /*! \qmlproperty string Qt.labs.platform::Menu::iconName - - This property holds the theme name of the menu's icon. - - \sa iconSource, QIcon::fromTheme() + \deprecated Use icon.name instead */ QString QQuickPlatformMenu::iconName() const { - if (!m_iconLoader) - return QString(); - - return m_iconLoader->iconName(); + return icon().name(); } void QQuickPlatformMenu::setIconName(const QString& name) { - if (name == iconName()) + QQuickPlatformIcon newIcon = icon(); + if (name == newIcon.name()) return; if (m_menuItem) m_menuItem->setIconName(name); - iconLoader()->setIconName(name); - emit iconNameChanged(); -} + newIcon.setName(name); + iconLoader()->setIcon(newIcon); + emit iconNameChanged();} /*! \qmlproperty font Qt.labs.platform::Menu::font @@ -618,6 +609,34 @@ void QQuickPlatformMenu::setFont(const QFont& font) } /*! + \since Qt.labs.platform 1.1 (Qt 5.12) + \qmlpropertygroup Qt.labs.platform::MenuItem::icon + \qmlproperty url Qt.labs.platform::MenuItem::icon.source + \qmlproperty string Qt.labs.platform::MenuItem::icon.name + + This property holds the menu item's icon. +*/ +QQuickPlatformIcon QQuickPlatformMenu::icon() const +{ + if (!m_iconLoader) + return QQuickPlatformIcon(); + + return iconLoader()->icon(); +} + +void QQuickPlatformMenu::setIcon(const QQuickPlatformIcon &icon) +{ + if (iconLoader()->icon() == icon) + return; + + if (m_menuItem) + m_menuItem->setIcon(icon); + + iconLoader()->setIcon(icon); + emit iconChanged(); +} + +/*! \qmlmethod void Qt.labs.platform::Menu::addItem(MenuItem item) Adds an \a item to the end of the menu. @@ -913,7 +932,7 @@ void QQuickPlatformMenu::updateIcon() if (!m_handle || !m_iconLoader) return; - m_handle->setIcon(m_iconLoader->icon()); + m_handle->setIcon(m_iconLoader->toQIcon()); sync(); } diff --git a/src/imports/platform/qquickplatformmenu_p.h b/src/imports/platform/qquickplatformmenu_p.h index 14f083dd..eb18f66b 100644 --- a/src/imports/platform/qquickplatformmenu_p.h +++ b/src/imports/platform/qquickplatformmenu_p.h @@ -56,6 +56,8 @@ #include <QtQml/qqmllist.h> #include <QtQml/qqml.h> +#include "qquickplatformicon_p.h" + QT_BEGIN_NAMESPACE class QIcon; @@ -86,6 +88,7 @@ class QQuickPlatformMenu : public QObject, public QQmlParserStatus Q_PROPERTY(QUrl iconSource READ iconSource WRITE setIconSource NOTIFY iconSourceChanged FINAL) Q_PROPERTY(QString iconName READ iconName WRITE setIconName NOTIFY iconNameChanged FINAL) Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged FINAL) + Q_PROPERTY(QQuickPlatformIcon icon READ icon WRITE setIcon NOTIFY iconChanged FINAL REVISION 1) Q_ENUMS(QPlatformMenu::MenuType) Q_CLASSINFO("DefaultProperty", "data") @@ -136,6 +139,9 @@ public: QFont font() const; void setFont(const QFont &font); + QQuickPlatformIcon icon() const; + void setIcon(const QQuickPlatformIcon &icon); + Q_INVOKABLE void addItem(QQuickPlatformMenuItem *item); Q_INVOKABLE void insertItem(int index, QQuickPlatformMenuItem *item); Q_INVOKABLE void removeItem(QQuickPlatformMenuItem *item); @@ -166,6 +172,7 @@ Q_SIGNALS: void minimumWidthChanged(); void fontChanged(); void typeChanged(); + Q_REVISION(1) void iconChanged(); protected: void classBegin() override; diff --git a/src/imports/platform/qquickplatformmenuitem.cpp b/src/imports/platform/qquickplatformmenuitem.cpp index bc6d97e1..62a75d60 100644 --- a/src/imports/platform/qquickplatformmenuitem.cpp +++ b/src/imports/platform/qquickplatformmenuitem.cpp @@ -443,63 +443,41 @@ void QQuickPlatformMenuItem::setText(const QString &text) /*! \qmlproperty url Qt.labs.platform::MenuItem::iconSource - - This property holds the url of the menu item's icon. - - \code - MenuItem { - iconName: "edit-undo" - iconSource: "qrc:/images/undo.png" - } - \endcode - - \sa iconName + \deprecated Use icon.source instead */ QUrl QQuickPlatformMenuItem::iconSource() const { - if (!m_iconLoader) - return QUrl(); - - return m_iconLoader->iconSource(); + return icon().source(); } void QQuickPlatformMenuItem::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::MenuItem::iconName - - This property holds the theme name of the menu item's icon. - - \code - MenuItem { - iconName: "edit-undo" - iconSource: "qrc:/images/undo.png" - } - \endcode - - \sa iconSource, QIcon::fromTheme() + \deprecated Use icon.name instead */ QString QQuickPlatformMenuItem::iconName() const { - if (!m_iconLoader) - return QString(); - - return m_iconLoader->iconName(); + return icon().name(); } void QQuickPlatformMenuItem::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(); } @@ -560,6 +538,40 @@ void QQuickPlatformMenuItem::setFont(const QFont& font) } /*! + \since Qt.labs.platform 1.1 (Qt 5.12) + \qmlpropertygroup Qt.labs.platform::MenuItem::icon + \qmlproperty url Qt.labs.platform::MenuItem::icon.source + \qmlproperty string Qt.labs.platform::MenuItem::icon.name + + This property holds the menu item's icon. + + \code + MenuItem { + icon.name: "edit-undo" + icon.source: "qrc:/images/undo.png" + } + \endcode + + \sa QIcon::fromTheme() +*/ +QQuickPlatformIcon QQuickPlatformMenuItem::icon() const +{ + if (!m_iconLoader) + return QQuickPlatformIcon(); + + return m_iconLoader->icon(); +} + +void QQuickPlatformMenuItem::setIcon(const QQuickPlatformIcon &icon) +{ + if (iconLoader()->icon() == icon) + return; + + iconLoader()->setIcon(icon); + emit iconChanged(); +} + +/*! \qmlmethod void Qt.labs.platform::MenuItem::toggle() Toggles the \l checked state to its opposite state. @@ -604,7 +616,7 @@ void QQuickPlatformMenuItem::updateIcon() if (!m_handle || !m_iconLoader) return; - m_handle->setIcon(m_iconLoader->icon()); + m_handle->setIcon(m_iconLoader->toQIcon()); sync(); } diff --git a/src/imports/platform/qquickplatformmenuitem_p.h b/src/imports/platform/qquickplatformmenuitem_p.h index 6ff3ad81..f1143e64 100644 --- a/src/imports/platform/qquickplatformmenuitem_p.h +++ b/src/imports/platform/qquickplatformmenuitem_p.h @@ -55,6 +55,8 @@ #include <QtQml/qqmlparserstatus.h> #include <QtQml/qqml.h> +#include "qquickplatformicon_p.h" + QT_BEGIN_NAMESPACE class QPlatformMenuItem; @@ -80,6 +82,7 @@ class QQuickPlatformMenuItem : public QObject, public QQmlParserStatus Q_PROPERTY(QString iconName READ iconName WRITE setIconName NOTIFY iconNameChanged FINAL) Q_PROPERTY(QVariant shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged FINAL) Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged FINAL) + Q_PROPERTY(QQuickPlatformIcon icon READ icon WRITE setIcon NOTIFY iconChanged FINAL REVISION 1) Q_ENUMS(QPlatformMenuItem::MenuRole) public: @@ -132,6 +135,9 @@ public: QFont font() const; void setFont(const QFont &font); + QQuickPlatformIcon icon() const; + void setIcon(const QQuickPlatformIcon &icon); + public Q_SLOTS: void toggle(); @@ -153,6 +159,7 @@ Q_SIGNALS: void iconNameChanged(); void shortcutChanged(); void fontChanged(); + Q_REVISION(1) void iconChanged(); protected: void classBegin() override; diff --git a/src/imports/platform/qquickplatformsystemtrayicon.cpp b/src/imports/platform/qquickplatformsystemtrayicon.cpp index 0663e878..a27e2245 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(); } @@ -361,6 +355,37 @@ QRect QQuickPlatformSystemTrayIcon::geometry() const } /*! + \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 + + This property holds the system tray icon. + + \code + SystemTrayIcon { + 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. @@ -448,7 +473,7 @@ void QQuickPlatformSystemTrayIcon::updateIcon() const QRect oldGeometry = m_handle->geometry(); - m_handle->updateIcon(m_iconLoader->icon()); + m_handle->updateIcon(m_iconLoader->toQIcon()); if (oldGeometry != m_handle->geometry()) emit geometryChanged(); diff --git a/src/imports/platform/qquickplatformsystemtrayicon_p.h b/src/imports/platform/qquickplatformsystemtrayicon_p.h index dc037dab..e43366cb 100644 --- a/src/imports/platform/qquickplatformsystemtrayicon_p.h +++ b/src/imports/platform/qquickplatformsystemtrayicon_p.h @@ -54,6 +54,8 @@ #include <QtQml/qqmlparserstatus.h> #include <QtQml/qqml.h> +#include "qquickplatformicon_p.h" + QT_REQUIRE_CONFIG(systemtrayicon); QT_BEGIN_NAMESPACE @@ -73,6 +75,7 @@ class QQuickPlatformSystemTrayIcon : public QObject, public QQmlParserStatus Q_PROPERTY(QString tooltip READ tooltip WRITE setTooltip NOTIFY tooltipChanged FINAL) Q_PROPERTY(QQuickPlatformMenu *menu READ menu WRITE setMenu NOTIFY menuChanged FINAL) Q_PROPERTY(QRect geometry READ geometry NOTIFY geometryChanged FINAL REVISION 1) + Q_PROPERTY(QQuickPlatformIcon icon READ icon WRITE setIcon NOTIFY iconChanged FINAL REVISION 1) Q_ENUMS(QPlatformSystemTrayIcon::ActivationReason QPlatformSystemTrayIcon::MessageIcon) public: @@ -101,6 +104,9 @@ public: QRect geometry() const; + QQuickPlatformIcon icon() const; + void setIcon(const QQuickPlatformIcon &icon); + public Q_SLOTS: void show(); void hide(); @@ -117,6 +123,7 @@ Q_SIGNALS: void tooltipChanged(); void menuChanged(); Q_REVISION(1) void geometryChanged(); + Q_REVISION(1) void iconChanged(); protected: void init(); diff --git a/src/imports/platform/qtlabsplatformplugin.cpp b/src/imports/platform/qtlabsplatformplugin.cpp index 6f2fda57..22a59d72 100644 --- a/src/imports/platform/qtlabsplatformplugin.cpp +++ b/src/imports/platform/qtlabsplatformplugin.cpp @@ -56,6 +56,8 @@ # include "qquickplatformsystemtrayicon_p.h" #endif +#include "qquickplatformicon_p.h" + static inline void initResources() { #ifdef QT_STATIC @@ -112,6 +114,9 @@ void QtLabsPlatformPlugin::registerTypes(const char *uri) qRegisterMetaType<QPlatformSystemTrayIcon::ActivationReason>(); qRegisterMetaType<QPlatformSystemTrayIcon::MessageIcon>(); #endif + + qmlRegisterType<QQuickPlatformIcon>(); + qRegisterMetaType<QQuickPlatformIcon>(); } QT_END_NAMESPACE |