diff --git a/share/qtcreator/qmldesigner/toolbar/Main.qml b/share/qtcreator/qmldesigner/toolbar/Main.qml index 574f6fd1d53..07b66a9cd78 100644 --- a/share/qtcreator/qmldesigner/toolbar/Main.qml +++ b/share/qtcreator/qmldesigner/toolbar/Main.qml @@ -129,6 +129,15 @@ Rectangle { onCancelClicked: backend.cancelRunning() onRunTargetSelected: function(targetName) { backend.selectRunTarget(targetName) } onOpenRunTargets: backend.openDeviceManager() + + TapHandler { + enabled: backend.runTargetType === RunManager.LivePreview + acceptedButtons: Qt.RightButton + onTapped: { + var p = splitButton.mapToGlobal(0, 0) + backend.showZoomMenu(p.x, p.y) + } + } } StudioControls.TopLevelComboBox { diff --git a/src/plugins/qmldesigner/components/runmanager/runmanager.cpp b/src/plugins/qmldesigner/components/runmanager/runmanager.cpp index 452f795fd9e..d9820c5b739 100644 --- a/src/plugins/qmldesigner/components/runmanager/runmanager.cpp +++ b/src/plugins/qmldesigner/components/runmanager/runmanager.cpp @@ -277,6 +277,11 @@ int RunManager::currentTargetIndex() const return runTargetIndex(m_currentTargetId); } +RunManager::TargetType RunManager::currentTargetType() const +{ + return m_currentTargetType; +} + bool RunManager::selectRunTarget(Utils::Id id) { if (m_currentTargetId == id) @@ -292,6 +297,20 @@ bool RunManager::selectRunTarget(Utils::Id id) m_currentTargetId = id; emit runTargetChanged(); + TargetType type; + + if (m_currentTargetId == ProjectExplorer::Constants::NORMAL_RUN_MODE) + type = TargetType::Normal; + else if (m_currentTargetId == ProjectExplorer::Constants::QML_PREVIEW_RUN_MODE) + type = TargetType::LivePreview; + else + type = TargetType::Android; + + if (m_currentTargetType != type) { + m_currentTargetType = type; + emit runTargetTypeChanged(); + } + return true; } diff --git a/src/plugins/qmldesigner/components/runmanager/runmanager.h b/src/plugins/qmldesigner/components/runmanager/runmanager.h index be58b0c3c05..000fb6e7673 100644 --- a/src/plugins/qmldesigner/components/runmanager/runmanager.h +++ b/src/plugins/qmldesigner/components/runmanager/runmanager.h @@ -57,6 +57,9 @@ public: enum TargetState { Packing, Sending, Starting, Running, NotRunning }; Q_ENUM(TargetState) + enum TargetType { Normal, LivePreview, Android }; + Q_ENUM(TargetType) + void udpateTargets(); const QList targets() const; @@ -65,6 +68,7 @@ public: void cancelCurrentTarget(); int currentTargetIndex() const; + TargetType currentTargetType() const; bool selectRunTarget(Utils::Id id); bool selectRunTarget(const QString &targetName); @@ -88,6 +92,7 @@ private: QList m_targets; Utils::Id m_currentTargetId; + TargetType m_currentTargetType = TargetType::Normal; QList m_runningTargets; @@ -97,6 +102,7 @@ private: signals: void runTargetChanged(); + void runTargetTypeChanged(); void stateChanged(); void targetsChanged(); void progressChanged(); diff --git a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp index b18f871c780..adeb9528e31 100644 --- a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp +++ b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp @@ -491,6 +491,10 @@ ToolBarBackend::ToolBarBackend(QObject *parent) &RunManager::runTargetChanged, this, &ToolBarBackend::runTargetIndexChanged); + connect(&QmlDesignerPlugin::runManager(), + &RunManager::runTargetTypeChanged, + this, + &ToolBarBackend::runTargetTypeChanged); connect(&QmlDesignerPlugin::runManager(), &RunManager::stateChanged, this, @@ -917,6 +921,11 @@ int ToolBarBackend::runTargetIndex() const return QmlDesignerPlugin::runManager().currentTargetIndex(); } +int ToolBarBackend::runTargetType() const +{ + return QmlDesignerPlugin::runManager().currentTargetType(); +} + int ToolBarBackend::runManagerState() const { return QmlDesignerPlugin::runManager().state(); diff --git a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.h b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.h index 864e781348f..a1b28f88f32 100644 --- a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.h +++ b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.h @@ -127,6 +127,7 @@ class ToolBarBackend : public QObject Q_PROPERTY(bool isLiteModeEnabled READ isLiteModeEnabled CONSTANT) Q_PROPERTY(int runTargetIndex READ runTargetIndex NOTIFY runTargetIndexChanged) + Q_PROPERTY(int runTargetType READ runTargetType NOTIFY runTargetTypeChanged) Q_PROPERTY(int runManagerState READ runManagerState NOTIFY runManagerStateChanged) Q_PROPERTY(int runManagerProgress READ runManagerProgress NOTIFY runManagerProgressChanged) Q_PROPERTY(QString runManagerError READ runManagerError NOTIFY runManagerErrorChanged) @@ -192,6 +193,7 @@ public: bool isLiteModeEnabled() const; int runTargetIndex() const; + int runTargetType() const; int runManagerState() const; int runManagerProgress() const; QString runManagerError() const; @@ -221,6 +223,7 @@ signals: void isDocumentDirtyChanged(); void runTargetIndexChanged(); + void runTargetTypeChanged(); void runManagerStateChanged(); void runManagerProgressChanged(); void runManagerErrorChanged();