diff options
author | Johan Klokkhammer Helsing <johan.helsing@qt.io> | 2016-05-11 14:28:56 +0200 |
---|---|---|
committer | Johan Helsing <johan.helsing@qt.io> | 2016-05-20 12:11:17 +0000 |
commit | 5e5e866c8c1fc8234c25770d84e9591041e67d69 (patch) | |
tree | 111913497f39e6cbad7403743ab40a5d9aed734c /examples/wayland/pure-qml/qml | |
parent | 8817a981389b4f22a614f258f3575360645f2fd9 (diff) |
Create a general ShellSurfaceItem to avoid duplication
XdgSurfaceItem and WlShellSurfaceItem have been removed in favor
of the more general ShellSurfaceItem. An XdgSurface or a WlShellSurface
can be assigned to the shellSurface property of a ShellSurfaceItem
and leaves open the possibility for additional shells.
A shared base class for QWaylandXdgSurface and QWaylandWlShellSurface
has been added which has a factory method for creating
a QWaylandQuickShellIntegration for that shell implementation.
The property "shellSurface" on the ShellSurfaceItem allows QML code to
attach to signals regardless of whether it's a WlShell or XdgShell
client. The pure-qml example has been updated to take advantage of this.
Change-Id: I9d3427586e100d6c44a24f319dd8e1486ff062ee
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Diffstat (limited to 'examples/wayland/pure-qml/qml')
-rw-r--r-- | examples/wayland/pure-qml/qml/Chrome.qml | 31 | ||||
-rw-r--r-- | examples/wayland/pure-qml/qml/XdgChrome.qml | 90 | ||||
-rw-r--r-- | examples/wayland/pure-qml/qml/main.qml | 12 |
3 files changed, 27 insertions, 106 deletions
diff --git a/examples/wayland/pure-qml/qml/Chrome.qml b/examples/wayland/pure-qml/qml/Chrome.qml index 1dc90647d..1c9066ef1 100644 --- a/examples/wayland/pure-qml/qml/Chrome.qml +++ b/examples/wayland/pure-qml/qml/Chrome.qml @@ -41,17 +41,27 @@ import QtQuick 2.0 import QtWayland.Compositor 1.0 -WlShellSurfaceItem { +ShellSurfaceItem { id: rootChrome - shellSurface: WlShellSurface { - } - onSurfaceDestroyed: { view.bufferLock = true; destroyAnimation.start(); } + Connections { + target: shellSurface + + // some signals are not available on wl_shell, so let's ignore them + ignoreUnknownSignals: true + + onActivatedChanged: { // xdg_shell only + if (shellSurface.activated) { + receivedFocusAnimation.start(); + } + } + } + SequentialAnimation { id: destroyAnimation ParallelAnimation { @@ -62,12 +72,23 @@ WlShellSurfaceItem { ScriptAction { script: { rootChrome.destroy(); } } } + SequentialAnimation { + id: receivedFocusAnimation + ParallelAnimation { + NumberAnimation { target: scaleTransform; property: "yScale"; to: 1.02; duration: 100; easing.type: Easing.OutQuad } + NumberAnimation { target: scaleTransform; property: "xScale"; to: 1.02; duration: 100; easing.type: Easing.OutQuad } + } + ParallelAnimation { + NumberAnimation { target: scaleTransform; property: "yScale"; to: 1; duration: 100; easing.type: Easing.InOutQuad } + NumberAnimation { target: scaleTransform; property: "xScale"; to: 1; duration: 100; easing.type: Easing.InOutQuad } + } + } + transform: [ Scale { id:scaleTransform origin.x: rootChrome.width / 2 origin.y: rootChrome.height / 2 - } ] } diff --git a/examples/wayland/pure-qml/qml/XdgChrome.qml b/examples/wayland/pure-qml/qml/XdgChrome.qml deleted file mode 100644 index afe137c68..000000000 --- a/examples/wayland/pure-qml/qml/XdgChrome.qml +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 -import QtWayland.Compositor 1.0 - -XdgSurfaceItem { - id: rootChrome - - xdgSurface: XdgSurface { - id: xdgSurface - onActivatedChanged: { - if (xdgSurface.activated) { - receivedFocusAnimation.start(); - } - } - } - - onSurfaceDestroyed: { - view.bufferLock = true; - destroyAnimation.start(); - } - - SequentialAnimation { - id: receivedFocusAnimation - ParallelAnimation { - NumberAnimation { target: scaleTransform; property: "yScale"; to: 1.02; duration: 100; easing.type: Easing.OutQuad } - NumberAnimation { target: scaleTransform; property: "xScale"; to: 1.02; duration: 100; easing.type: Easing.OutQuad } - } - ParallelAnimation { - NumberAnimation { target: scaleTransform; property: "yScale"; to: 1; duration: 100; easing.type: Easing.InOutQuad } - NumberAnimation { target: scaleTransform; property: "xScale"; to: 1; duration: 100; easing.type: Easing.InOutQuad } - } - } - - SequentialAnimation { - id: destroyAnimation - ParallelAnimation { - NumberAnimation { target: scaleTransform; property: "yScale"; to: 2/height; duration: 150 } - NumberAnimation { target: scaleTransform; property: "xScale"; to: 0.4; duration: 150 } - } - NumberAnimation { target: scaleTransform; property: "xScale"; to: 0; duration: 150 } - ScriptAction { script: { rootChrome.destroy(); } } - } - - transform: [ - Scale { - id: scaleTransform - origin.x: rootChrome.width / 2 - origin.y: rootChrome.height / 2 - } - ] -} diff --git a/examples/wayland/pure-qml/qml/main.qml b/examples/wayland/pure-qml/qml/main.qml index c50d4b67d..6ee09f802 100644 --- a/examples/wayland/pure-qml/qml/main.qml +++ b/examples/wayland/pure-qml/qml/main.qml @@ -57,12 +57,6 @@ WaylandCompositor { } Component { - id: xdgChromeComponent - XdgChrome { - } - } - - Component { id: surfaceComponent WaylandSurface { } @@ -74,17 +68,13 @@ WaylandCompositor { onShowIsFullScreenChanged: console.debug("Show is fullscreen hint for Qt applications:", showIsFullScreen) }, WlShell { - id: defaultShell - onShellSurfaceCreated: { chromeComponent.createObject(defaultOutput.surfaceArea, { "shellSurface": shellSurface } ); } }, XdgShell { - id: xdgShell - onXdgSurfaceCreated: { - xdgChromeComponent.createObject(defaultOutput.surfaceArea, { "xdgSurface": xdgSurface } ); + chromeComponent.createObject(defaultOutput.surfaceArea, { "shellSurface": xdgSurface } ); } }, TextInputManager { |