diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-11-03 18:26:22 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-11-06 14:26:29 +0000 |
commit | f0f66c1aa001c630a6b246e312bef7f8e83958d2 (patch) | |
tree | 388cd87156d06120ee2bdef444213a3c49b165ce | |
parent | 430fe83ecb7106118cbebd735637aee9e9253914 (diff) |
Qt.labs.platform: declare and register enums to the meta system
To make them correctly available in QML so that they also work as
signal arguments.
Task-number: QTBUG-64259
Change-Id: I5fa00871f96357d924661c4b8af323a0f1748c9d
Reviewed-by: Liang Qi <liang.qi@qt.io>
-rw-r--r-- | src/imports/platform/qquickplatformmenu_p.h | 1 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformstandardpaths_p.h | 2 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformsystemtrayicon_p.h | 2 | ||||
-rw-r--r-- | src/imports/platform/qtlabsplatformplugin.cpp | 6 | ||||
-rw-r--r-- | tests/auto/platform/data/tst_messagedialog.qml | 42 | ||||
-rw-r--r-- | tests/auto/platform/data/tst_systemtrayicon.qml | 32 |
6 files changed, 82 insertions, 3 deletions
diff --git a/src/imports/platform/qquickplatformmenu_p.h b/src/imports/platform/qquickplatformmenu_p.h index 7456c660..b5c23b61 100644 --- a/src/imports/platform/qquickplatformmenu_p.h +++ b/src/imports/platform/qquickplatformmenu_p.h @@ -209,5 +209,6 @@ private: QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickPlatformMenu) +Q_DECLARE_METATYPE(QPlatformMenu::MenuType) #endif // QQUICKPLATFORMMENU_P_H diff --git a/src/imports/platform/qquickplatformstandardpaths_p.h b/src/imports/platform/qquickplatformstandardpaths_p.h index c3d879b0..e2f4e11e 100644 --- a/src/imports/platform/qquickplatformstandardpaths_p.h +++ b/src/imports/platform/qquickplatformstandardpaths_p.h @@ -86,5 +86,7 @@ private: QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickPlatformStandardPaths) +Q_DECLARE_METATYPE(QStandardPaths::StandardLocation) +Q_DECLARE_METATYPE(QStandardPaths::LocateOptions) #endif // QQUICKPLATFORMSTANDARDPATHS_P_H diff --git a/src/imports/platform/qquickplatformsystemtrayicon_p.h b/src/imports/platform/qquickplatformsystemtrayicon_p.h index 7aa07512..77a78f30 100644 --- a/src/imports/platform/qquickplatformsystemtrayicon_p.h +++ b/src/imports/platform/qquickplatformsystemtrayicon_p.h @@ -137,5 +137,7 @@ private: QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickPlatformSystemTrayIcon) +Q_DECLARE_METATYPE(QPlatformSystemTrayIcon::ActivationReason) +Q_DECLARE_METATYPE(QPlatformSystemTrayIcon::MessageIcon) #endif // QQUICKPLATFORMSYSTEMTRAYICON_P_H diff --git a/src/imports/platform/qtlabsplatformplugin.cpp b/src/imports/platform/qtlabsplatformplugin.cpp index bcb9ac98..1eac7d80 100644 --- a/src/imports/platform/qtlabsplatformplugin.cpp +++ b/src/imports/platform/qtlabsplatformplugin.cpp @@ -56,9 +56,6 @@ # include "qquickplatformsystemtrayicon_p.h" #endif -Q_DECLARE_METATYPE(QStandardPaths::StandardLocation) -Q_DECLARE_METATYPE(QStandardPaths::LocateOptions) - static inline void initResources() { #ifdef QT_STATIC @@ -102,6 +99,7 @@ void QtLabsPlatformPlugin::registerTypes(const char *uri) qmlRegisterType<QQuickPlatformMenuItem>(uri, 1, 0, "MenuItem"); qmlRegisterType<QQuickPlatformMenuItemGroup>(uri, 1, 0, "MenuItemGroup"); qmlRegisterType<QQuickPlatformMenuSeparator>(uri, 1, 0, "MenuSeparator"); + qRegisterMetaType<QPlatformMenu::MenuType>(); qmlRegisterUncreatableType<QPlatformDialogHelper>(uri, 1, 0, "StandardButton", QQuickPlatformDialog::tr("Cannot create an instance of StandardButton")); qmlRegisterSingletonType<QQuickPlatformStandardPaths>(uri, 1, 0, "StandardPaths", QQuickPlatformStandardPaths::create); @@ -110,6 +108,8 @@ void QtLabsPlatformPlugin::registerTypes(const char *uri) #if QT_CONFIG(systemtrayicon) qmlRegisterType<QQuickPlatformSystemTrayIcon>(uri, 1, 0, "SystemTrayIcon"); + qRegisterMetaType<QPlatformSystemTrayIcon::ActivationReason>(); + qRegisterMetaType<QPlatformSystemTrayIcon::MessageIcon>(); #endif } diff --git a/tests/auto/platform/data/tst_messagedialog.qml b/tests/auto/platform/data/tst_messagedialog.qml index 8415f429..cf51c27d 100644 --- a/tests/auto/platform/data/tst_messagedialog.qml +++ b/tests/auto/platform/data/tst_messagedialog.qml @@ -63,9 +63,51 @@ TestCase { MessageDialog { } } + SignalSpy { + id: spy + } + function test_instance() { var dialog = messageDialog.createObject(testCase) verify(dialog) dialog.destroy() } + + function test_standardButtons() { + // Q_FLAGS(QPlatformDialogHelper::StandardButtons) + compare(MessageDialog.NoButton , 0x00000000) + compare(MessageDialog.Ok , 0x00000400) + compare(MessageDialog.Save , 0x00000800) + compare(MessageDialog.SaveAll , 0x00001000) + compare(MessageDialog.Open , 0x00002000) + compare(MessageDialog.Yes , 0x00004000) + compare(MessageDialog.YesToAll , 0x00008000) + compare(MessageDialog.No , 0x00010000) + compare(MessageDialog.NoToAll , 0x00020000) + compare(MessageDialog.Abort , 0x00040000) + compare(MessageDialog.Retry , 0x00080000) + compare(MessageDialog.Ignore , 0x00100000) + compare(MessageDialog.Close , 0x00200000) + compare(MessageDialog.Cancel , 0x00400000) + compare(MessageDialog.Discard , 0x00800000) + compare(MessageDialog.Help , 0x01000000) + compare(MessageDialog.Apply , 0x02000000) + compare(MessageDialog.Reset , 0x04000000) + compare(MessageDialog.RestoreDefaults, 0x08000000) + } + + function test_clicked() { + var dialog = messageDialog.createObject(testCase) + verify(dialog) + + spy.target = dialog + spy.signalName = "clicked" + + dialog.clicked(MessageDialog.Yes) + compare(spy.count, 1) + compare(spy.signalArguments[0][0], MessageDialog.Yes) + + spy.clear() + dialog.destroy() + } } diff --git a/tests/auto/platform/data/tst_systemtrayicon.qml b/tests/auto/platform/data/tst_systemtrayicon.qml index 62e231c0..ea6f731a 100644 --- a/tests/auto/platform/data/tst_systemtrayicon.qml +++ b/tests/auto/platform/data/tst_systemtrayicon.qml @@ -97,4 +97,36 @@ TestCase { spy.clear() icon.destroy() } + + function test_messageIcon() { + // Q_ENUMS(QPlatformSystemTrayIcon::ActivationReason) + compare(SystemTrayIcon.NoIcon, 0) + compare(SystemTrayIcon.Information, 1) + compare(SystemTrayIcon.Warning, 2) + compare(SystemTrayIcon.Critical, 3) + } + + function test_activationReason() { + // Q_ENUMS(QPlatformSystemTrayIcon::ActivationReason) + compare(SystemTrayIcon.Unknown, 0) + compare(SystemTrayIcon.Context, 1) + compare(SystemTrayIcon.DoubleClick, 2) + compare(SystemTrayIcon.Trigger, 3) + compare(SystemTrayIcon.MiddleClick, 4) + } + + function test_activated() { + var icon = systemTrayIcon.createObject(testCase) + verify(icon) + + spy.target = icon + spy.signalName = "activated" + + icon.activated(SystemTrayIcon.Trigger) + compare(spy.count, 1) + compare(spy.signalArguments[0][0], SystemTrayIcon.Trigger) + + spy.clear() + icon.destroy() + } } |