mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 11:37:58 +02:00
Refactor common new dialog functionality into new Dialog.qml
This commit is contained in:
parent
2c17274f49
commit
d33a249b3e
3 changed files with 82 additions and 95 deletions
|
@ -9,18 +9,16 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
import Hifi 1.0
|
import Hifi 1.0
|
||||||
import QtQuick 2.3
|
import QtQuick 2.4
|
||||||
import QtQuick.Controls 1.2
|
|
||||||
import "controls"
|
import "controls"
|
||||||
import "styles"
|
import "styles"
|
||||||
|
|
||||||
Item {
|
Dialog {
|
||||||
id: root
|
id: root
|
||||||
HifiConstants { id: hifi }
|
HifiConstants { id: hifi }
|
||||||
|
|
||||||
objectName: "AddressBarDialog"
|
objectName: "AddressBarDialog"
|
||||||
|
|
||||||
property int animationDuration: hifi.effects.fadeInDuration
|
|
||||||
property bool destroyOnInvisible: false
|
property bool destroyOnInvisible: false
|
||||||
property real scale: 1.25 // Make this dialog a little larger than normal
|
property real scale: 1.25 // Make this dialog a little larger than normal
|
||||||
|
|
||||||
|
@ -101,47 +99,16 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// The UI enables an object, rather than manipulating its visibility, so that we can do animations in both directions.
|
|
||||||
// Because visibility and enabled are booleans, they cannot be animated. So when enabled is changed, we modify a property
|
|
||||||
// that can be animated, like scale or opacity, and then when the target animation value is reached, we can modify the
|
|
||||||
// visibility.
|
|
||||||
enabled: false
|
|
||||||
opacity: 0.0
|
|
||||||
|
|
||||||
onEnabledChanged: {
|
onEnabledChanged: {
|
||||||
opacity = enabled ? 1.0 : 0.0
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
addressLine.forceActiveFocus();
|
addressLine.forceActiveFocus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity {
|
|
||||||
// Animate opacity.
|
|
||||||
NumberAnimation {
|
|
||||||
duration: animationDuration
|
|
||||||
easing.type: Easing.OutCubic
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onOpacityChanged: {
|
|
||||||
// Once we're transparent, disable the dialog's visibility.
|
|
||||||
visible = (opacity != 0.0)
|
|
||||||
}
|
|
||||||
|
|
||||||
onVisibleChanged: {
|
onVisibleChanged: {
|
||||||
if (!visible) {
|
if (!visible) {
|
||||||
reset()
|
addressLine.text = ""
|
||||||
|
|
||||||
// Some dialogs should be destroyed when they become invisible.
|
|
||||||
if (destroyOnInvisible) {
|
|
||||||
destroy()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function reset() {
|
|
||||||
addressLine.text = ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleOrGo() {
|
function toggleOrGo() {
|
||||||
|
@ -152,21 +119,18 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Keys.onEscapePressed: {
|
|
||||||
enabled = false
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onPressed: {
|
Keys.onPressed: {
|
||||||
switch(event.key) {
|
switch (event.key) {
|
||||||
case Qt.Key_W:
|
case Qt.Key_Escape:
|
||||||
if (event.modifiers == Qt.ControlModifier) {
|
case Qt.Key_Back:
|
||||||
event.accepted = true
|
enabled = false;
|
||||||
enabled = false
|
event.accepted = true
|
||||||
}
|
break
|
||||||
|
case Qt.Key_Enter:
|
||||||
|
case Qt.Key_Return:
|
||||||
|
toggleOrGo()
|
||||||
|
event.accepted = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Keys.onReturnPressed: toggleOrGo()
|
|
||||||
Keys.onEnterPressed: toggleOrGo()
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,17 +9,14 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
import Hifi 1.0 as Hifi
|
import Hifi 1.0 as Hifi
|
||||||
import QtQuick 2.3
|
import QtQuick 2.4
|
||||||
import QtQuick.Controls 1.2
|
|
||||||
import QtQuick.Dialogs 1.2
|
|
||||||
import "controls"
|
import "controls"
|
||||||
import "styles"
|
import "styles"
|
||||||
|
|
||||||
Item {
|
Dialog {
|
||||||
id: root
|
id: root
|
||||||
HifiConstants { id: hifi }
|
HifiConstants { id: hifi }
|
||||||
|
|
||||||
property int animationDuration: hifi.effects.fadeInDuration
|
|
||||||
property bool destroyOnInvisible: true
|
property bool destroyOnInvisible: true
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
|
@ -69,7 +66,7 @@ Item {
|
||||||
Text {
|
Text {
|
||||||
id: messageText
|
id: messageText
|
||||||
|
|
||||||
font.pointSize: 10
|
font.pixelSize: hifi.fonts.pixelSize * 0.6
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
|
|
||||||
anchors {
|
anchors {
|
||||||
|
@ -99,47 +96,8 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// The UI enables an object, rather than manipulating its visibility, so that we can do animations in both directions.
|
|
||||||
// Because visibility and enabled are booleans, they cannot be animated. So when enabled is changed, we modify a property
|
|
||||||
// that can be animated, like scale or opacity, and then when the target animation value is reached, we can modify the
|
|
||||||
// visibility.
|
|
||||||
enabled: false
|
|
||||||
opacity: 0.0
|
|
||||||
|
|
||||||
onEnabledChanged: {
|
|
||||||
opacity = enabled ? 1.0 : 0.0
|
|
||||||
}
|
|
||||||
|
|
||||||
Behavior on opacity {
|
|
||||||
// Animate opacity.
|
|
||||||
NumberAnimation {
|
|
||||||
duration: animationDuration
|
|
||||||
easing.type: Easing.OutCubic
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onOpacityChanged: {
|
|
||||||
// Once we're transparent, disable the dialog's visibility.
|
|
||||||
visible = (opacity != 0.0)
|
|
||||||
}
|
|
||||||
|
|
||||||
onVisibleChanged: {
|
|
||||||
if (!visible) {
|
|
||||||
// Some dialogs should be destroyed when they become invisible.
|
|
||||||
if (destroyOnInvisible) {
|
|
||||||
destroy()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onPressed: {
|
Keys.onPressed: {
|
||||||
if (event.modifiers === Qt.ControlModifier)
|
switch (event.key) {
|
||||||
switch (event.key) {
|
|
||||||
case Qt.Key_W:
|
|
||||||
event.accepted = true
|
|
||||||
content.accept()
|
|
||||||
break
|
|
||||||
} else switch (event.key) {
|
|
||||||
case Qt.Key_Escape:
|
case Qt.Key_Escape:
|
||||||
case Qt.Key_Back:
|
case Qt.Key_Back:
|
||||||
case Qt.Key_Enter:
|
case Qt.Key_Enter:
|
||||||
|
|
65
interface/resources/qml/controls/Dialog.qml
Normal file
65
interface/resources/qml/controls/Dialog.qml
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
//
|
||||||
|
// Dialog.qml
|
||||||
|
//
|
||||||
|
// Created by David Rowe on 3 Jun 2015
|
||||||
|
// Copyright 2015 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
import Hifi 1.0
|
||||||
|
import QtQuick 2.4
|
||||||
|
import "../styles"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
property int animationDuration: hifi.effects.fadeInDuration
|
||||||
|
|
||||||
|
|
||||||
|
// The UI enables an object, rather than manipulating its visibility, so that we can do animations in both directions.
|
||||||
|
// Because visibility and enabled are booleans, they cannot be animated. So when enabled is changed, we modify a property
|
||||||
|
// that can be animated, like scale or opacity, and then when the target animation value is reached, we can modify the
|
||||||
|
// visibility.
|
||||||
|
enabled: false
|
||||||
|
opacity: 0.0
|
||||||
|
|
||||||
|
onEnabledChanged: {
|
||||||
|
opacity = enabled ? 1.0 : 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
Behavior on opacity {
|
||||||
|
// Animate opacity.
|
||||||
|
NumberAnimation {
|
||||||
|
duration: animationDuration
|
||||||
|
easing.type: Easing.OutCubic
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onOpacityChanged: {
|
||||||
|
// Once we're transparent, disable the dialog's visibility.
|
||||||
|
visible = (opacity != 0.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
onVisibleChanged: {
|
||||||
|
if (!visible) {
|
||||||
|
// Some dialogs should be destroyed when they become invisible.
|
||||||
|
if (destroyOnInvisible) {
|
||||||
|
destroy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Keys.onPressed: {
|
||||||
|
switch(event.key) {
|
||||||
|
case Qt.Key_W:
|
||||||
|
if (event.modifiers == Qt.ControlModifier) {
|
||||||
|
enabled = false
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue