diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/controls/ComboBox.qml | 8 | ||||
-rw-r--r-- | src/controls/Private/StackViewSlideDelegate.qml | 2 | ||||
-rw-r--r-- | src/controls/Styles/Android/plugin.cpp | 9 | ||||
-rw-r--r-- | src/controls/Styles/WinRT/plugin.cpp | 6 | ||||
-rw-r--r-- | src/controls/plugin.cpp | 9 | ||||
-rw-r--r-- | src/dialogs/DefaultDialogWrapper.qml | 66 | ||||
-rw-r--r-- | src/dialogs/Private/dialogsprivateplugin.cpp | 9 | ||||
-rw-r--r-- | src/dialogs/plugin.cpp | 9 | ||||
-rw-r--r-- | src/dialogs/qquickdialog.cpp | 25 | ||||
-rw-r--r-- | src/extras/Styles/Flat/flatstyleplugin.cpp | 11 | ||||
-rw-r--r-- | src/widgets/widgetsplugin.cpp | 9 |
11 files changed, 87 insertions, 76 deletions
diff --git a/src/controls/ComboBox.qml b/src/controls/ComboBox.qml index bd42f76b..7c6f93a7 100644 --- a/src/controls/ComboBox.qml +++ b/src/controls/ComboBox.qml @@ -570,11 +570,16 @@ Control { onSelectedTextChanged: popup.currentText = selectedText property string selectedText + property int triggeredIndex: -1 on__SelectedIndexChanged: { if (__selectedIndex === -1) popup.currentText = "" else updateSelectedText() + if (triggeredIndex >= 0 && triggeredIndex == __selectedIndex) { + activated(currentIndex) + triggeredIndex = -1 + } } property string textRole: "" @@ -611,8 +616,7 @@ Control { modelData : ((popup.modelIsArray ? modelData[popup.textRole] : model[popup.textRole]) || '') onTriggered: { - if (index !== currentIndex) - activated(index) + popup.triggeredIndex = index comboBox.editText = text } onTextChanged: if (index === currentIndex) popup.updateSelectedText(); diff --git a/src/controls/Private/StackViewSlideDelegate.qml b/src/controls/Private/StackViewSlideDelegate.qml index e64bc38b..dcc14448 100644 --- a/src/controls/Private/StackViewSlideDelegate.qml +++ b/src/controls/Private/StackViewSlideDelegate.qml @@ -135,7 +135,7 @@ StackViewDelegate { to: target.height duration: 300 } - property Component replaceTransition: pushTransition } + property Component replaceTransition: pushTransition } } diff --git a/src/controls/Styles/Android/plugin.cpp b/src/controls/Styles/Android/plugin.cpp index 646fff36..7a09bb9c 100644 --- a/src/controls/Styles/Android/plugin.cpp +++ b/src/controls/Styles/Android/plugin.cpp @@ -44,13 +44,6 @@ #include "qquickandroidstyle_p.h" #include "qquickandroid9patch_p.h" -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_Controls_Styles_Android); -#endif -} - QT_BEGIN_NAMESPACE class QtQuickControls1AndroidStylePlugin: public QQmlExtensionPlugin @@ -59,7 +52,7 @@ class QtQuickControls1AndroidStylePlugin: public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QtQuickControls1AndroidStylePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } + QtQuickControls1AndroidStylePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { } void registerTypes(const char *uri); }; diff --git a/src/controls/Styles/WinRT/plugin.cpp b/src/controls/Styles/WinRT/plugin.cpp index e6d0adfe..b205d75e 100644 --- a/src/controls/Styles/WinRT/plugin.cpp +++ b/src/controls/Styles/WinRT/plugin.cpp @@ -39,15 +39,9 @@ #include <QtCore/qglobal.h> -static void initResources() -{ - Q_INIT_RESOURCE(WinRT); -} - extern "C" { Q_DECL_EXPORT bool qt_quick_controls_style_init() { - initResources(); return true; } diff --git a/src/controls/plugin.cpp b/src/controls/plugin.cpp index 4eb6c466..8aca0c49 100644 --- a/src/controls/plugin.cpp +++ b/src/controls/plugin.cpp @@ -71,14 +71,6 @@ #include <QtCore/qlocale.h> #endif -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_Controls); - Q_INIT_RESOURCE(qmake_controls); -#endif -} - QT_BEGIN_NAMESPACE static const struct { @@ -129,7 +121,6 @@ static const struct { QtQuickControls1Plugin::QtQuickControls1Plugin(QObject *parent) : QQmlExtensionPlugin(parent) { - initResources(); } void QtQuickControls1Plugin::registerTypes(const char *uri) diff --git a/src/dialogs/DefaultDialogWrapper.qml b/src/dialogs/DefaultDialogWrapper.qml index b446c316..3ca030c4 100644 --- a/src/dialogs/DefaultDialogWrapper.qml +++ b/src/dialogs/DefaultDialogWrapper.qml @@ -47,6 +47,9 @@ import "qml" AbstractDialog { id: root default property alias data: defaultContentItem.data + + signal actionChosen(var action) + onVisibilityChanged: if (visible && contentItem) contentItem.forceActiveFocus() Rectangle { @@ -63,19 +66,7 @@ AbstractDialog { defaultContentItem.implicitWidth, buttonsRowImplicitWidth, Screen.pixelDensity * 50) + outerSpacing * 2) color: palette.window Keys.onPressed: { - event.accepted = true - switch (event.key) { - case Qt.Key_Escape: - case Qt.Key_Back: - reject() - break - case Qt.Key_Enter: - case Qt.Key_Return: - accept() - break - default: - event.accepted = false - } + event.accepted = handleKey(event.key) } SystemPalette { id: palette } @@ -109,7 +100,7 @@ AbstractDialog { id: buttonsLeftRepeater Button { text: (buttonsLeftRepeater.model && buttonsLeftRepeater.model[index] ? buttonsLeftRepeater.model[index].text : index) - onClicked: root.click(buttonsLeftRepeater.model[index].standardButton) + onClicked: content.handleButton(buttonsLeftRepeater.model[index].standardButton) } } @@ -136,9 +127,54 @@ AbstractDialog { // TODO maybe: insert gaps if the button requires it (destructive buttons only) Button { text: (buttonsRightRepeater.model && buttonsRightRepeater.model[index] ? buttonsRightRepeater.model[index].text : index) - onClicked: root.click(buttonsRightRepeater.model[index].standardButton) + onClicked: content.handleButton(buttonsRightRepeater.model[index].standardButton) + } + } + } + + function handleButton(button) { + var action = { + "button": button, + "key": 0, + "accepted": true, + } + root.actionChosen(action) + if (action.accepted) { + click(button) + } + } + + function handleKey(key) { + var button = 0 + switch (key) { + case Qt.Key_Escape: + case Qt.Key_Back: + button = StandardButton.Cancel + break + case Qt.Key_Enter: + case Qt.Key_Return: + button = StandardButton.Ok + break + default: + return false + } + var action = { + "button": button, + "key": key, + "accepted": true, + } + root.actionChosen(action) + if (action.accepted) { + switch (button) { + case StandardButton.Cancel: + reject() + break + case StandardButton.Ok: + accept() + break } } + return true } } function setupButtons() { diff --git a/src/dialogs/Private/dialogsprivateplugin.cpp b/src/dialogs/Private/dialogsprivateplugin.cpp index ba8aabe3..a785f388 100644 --- a/src/dialogs/Private/dialogsprivateplugin.cpp +++ b/src/dialogs/Private/dialogsprivateplugin.cpp @@ -42,13 +42,6 @@ #include "qquickwritingsystemlistmodel_p.h" #include "qquickfontlistmodel_p.h" -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_Dialogs_Private); -#endif -} - QT_BEGIN_NAMESPACE class QtQuick2DialogsPrivatePlugin : public QQmlExtensionPlugin @@ -57,7 +50,7 @@ class QtQuick2DialogsPrivatePlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QtQuick2DialogsPrivatePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } + QtQuick2DialogsPrivatePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { } virtual void registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.Dialogs.Private")); diff --git a/src/dialogs/plugin.cpp b/src/dialogs/plugin.cpp index 1e6740d5..8c10786f 100644 --- a/src/dialogs/plugin.cpp +++ b/src/dialogs/plugin.cpp @@ -62,13 +62,6 @@ Q_LOGGING_CATEGORY(lcRegistration, "qt.quick.dialogs.registration") -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_Dialogs); -#endif -} - QT_BEGIN_NAMESPACE /*! @@ -92,7 +85,7 @@ class QtQuick2DialogsPlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QtQuick2DialogsPlugin() : QQmlExtensionPlugin(), m_useResources(true) { initResources(); } + QtQuick2DialogsPlugin() : QQmlExtensionPlugin(), m_useResources(true) { } virtual void initializeEngine(QQmlEngine *engine, const char * uri) { qCDebug(lcRegistration) << uri << m_decorationComponentUrl; diff --git a/src/dialogs/qquickdialog.cpp b/src/dialogs/qquickdialog.cpp index 485eeb43..ef6a9a1f 100644 --- a/src/dialogs/qquickdialog.cpp +++ b/src/dialogs/qquickdialog.cpp @@ -154,6 +154,31 @@ QT_BEGIN_NAMESPACE */ /*! + \qmlsignal Dialog::actionChosen(var action) + + This signal is emitted when the user has pressed any button or a key + associated with some role (such as the Enter or Escape keys). The \a + action parameter carries information about the event: + + \list + \li StandardButton button - The role of the button which was pressed. If a + key was pressed instead, this will be \c StandardButton.Ok if accepted + and \c StandardButton.Cancel if rejected. + \li Qt.Key key - The key which was pressed, or \c 0 if none + \li bool accepted - Set this to \c false to stop the event from triggering + its predefined action + \endlist + + By handling this signal and setting the \c action.accepted field to \c + false, it's possible to implement some validation on the dialog contents + before accepting it, for example. + + The corresponding handler is \c onActionChosen. + + \since QtQuick.Controls 1.8 +*/ + +/*! \qmlproperty bool Dialog::visible This property holds whether the dialog is visible. By default this is diff --git a/src/extras/Styles/Flat/flatstyleplugin.cpp b/src/extras/Styles/Flat/flatstyleplugin.cpp index 5d88134b..7efbb16c 100644 --- a/src/extras/Styles/Flat/flatstyleplugin.cpp +++ b/src/extras/Styles/Flat/flatstyleplugin.cpp @@ -45,20 +45,10 @@ #include "qquicktexthandle.h" -static void initResources() -{ -#ifndef QT_STATIC - Q_INIT_RESOURCE(flatstyle); -#else - Q_INIT_RESOURCE(qmake_QtQuick_Controls_Styles_Flat); -#endif -} - #ifndef QT_STATIC extern "C" { Q_DECL_EXPORT bool qt_quick_controls_style_init() { - initResources(); return true; } @@ -74,7 +64,6 @@ QT_BEGIN_NAMESPACE QtQuickExtrasStylesPlugin::QtQuickExtrasStylesPlugin(QObject *parent) : QQmlExtensionPlugin(parent) { - initResources(); } void QtQuickExtrasStylesPlugin::registerTypes(const char *uri) diff --git a/src/widgets/widgetsplugin.cpp b/src/widgets/widgetsplugin.cpp index 65233756..3289e6fd 100644 --- a/src/widgets/widgetsplugin.cpp +++ b/src/widgets/widgetsplugin.cpp @@ -44,13 +44,6 @@ #include "qquickqcolordialog_p.h" #include "qquickqfontdialog_p.h" -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_PrivateWidgets); -#endif -} - QT_BEGIN_NAMESPACE /*! @@ -78,7 +71,7 @@ class QtQuick2PrivateWidgetsPlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QtQuick2PrivateWidgetsPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } + QtQuick2PrivateWidgetsPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { } virtual void registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.PrivateWidgets")); |