mirror of
https://github.com/overte-org/overte.git
synced 2025-04-26 19:56:16 +02:00
65 lines
1.7 KiB
QML
65 lines
1.7 KiB
QML
//
|
|
// DialogCommon.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 bool destroyOnInvisible: true
|
|
|
|
|
|
// 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: hifi.effects.fadeInDuration
|
|
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
|
|
}
|
|
}
|
|
}
|