diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-05-25 22:53:27 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-06-16 06:50:40 +0000 |
commit | a3f27162103286bf4a3f0a74ee44b29077888da2 (patch) | |
tree | 5ebdd9666b024128533baa17c6a76f244a2d6d6b /src/imports/platform/qquickplatformmenu.cpp | |
parent | e9e68baf652eca70c6a4c080ed9e49c70c8c9984 (diff) |
Platform system tray icon
Change-Id: I25190e1ae485e86cfbed524a418884d47f21e83d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/platform/qquickplatformmenu.cpp')
-rw-r--r-- | src/imports/platform/qquickplatformmenu.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/imports/platform/qquickplatformmenu.cpp b/src/imports/platform/qquickplatformmenu.cpp index 7849adf0..4409564d 100644 --- a/src/imports/platform/qquickplatformmenu.cpp +++ b/src/imports/platform/qquickplatformmenu.cpp @@ -38,6 +38,7 @@ #include "qquickplatformmenubar_p.h" #include "qquickplatformmenuitem_p.h" #include "qquickplatformiconloader_p.h" +#include "qquickplatformsystemtrayicon_p.h" #include <QtGui/qicon.h> #include <QtGui/qcursor.h> @@ -127,6 +128,7 @@ QQuickPlatformMenu::QQuickPlatformMenu(QObject *parent) m_type(QPlatformMenu::DefaultMenu), m_menuBar(nullptr), m_parentMenu(nullptr), + m_systemTrayIcon(nullptr), m_menuItem(nullptr), m_iconLoader(nullptr), m_handle(nullptr) @@ -162,10 +164,13 @@ QPlatformMenu * QQuickPlatformMenu::create() m_handle = m_menuBar->handle()->createMenu(); else if (m_parentMenu && m_parentMenu->handle()) m_handle = m_parentMenu->handle()->createSubMenu(); + else if (m_systemTrayIcon && m_systemTrayIcon->handle()) + m_handle = m_systemTrayIcon->handle()->createMenu(); // TODO: implement ^ // - QCocoaMenuBar::createMenu() // - QCocoaMenu::createSubMenu() + // - QCocoaSystemTrayIcon::createMenu() if (!m_handle) m_handle = QGuiApplicationPrivate::platformTheme()->createPlatformMenu(); @@ -208,6 +213,8 @@ void QQuickPlatformMenu::sync() if (m_menuBar && m_menuBar->handle()) m_menuBar->handle()->syncMenu(m_handle); + else if (m_systemTrayIcon && m_systemTrayIcon->handle()) + m_systemTrayIcon->handle()->updateMenu(m_handle); for (QQuickPlatformMenuItem *item : m_items) item->sync(); @@ -284,6 +291,28 @@ void QQuickPlatformMenu::setParentMenu(QQuickPlatformMenu *menu) /*! \readonly + \qmlproperty SystemTrayIcon Qt.labs.platform::Menu::systemTrayIcon + + This property holds the system tray icon that the menu belongs to, or \c null + if the menu is not in a system tray icon. +*/ +QQuickPlatformSystemTrayIcon *QQuickPlatformMenu::systemTrayIcon() const +{ + return m_systemTrayIcon; +} + +void QQuickPlatformMenu::setSystemTrayIcon(QQuickPlatformSystemTrayIcon *icon) +{ + if (m_systemTrayIcon == icon) + return; + + m_systemTrayIcon = icon; + destroy(); + emit systemTrayIconChanged(); +} + +/*! + \readonly \qmlproperty MenuItem Qt.labs.platform::Menu::menuItem This property holds the item that presents the menu (in a parent menu). |