1/**************************************************************************** 2** 3** Copyright (C) 2017 The Qt Company Ltd. 4** Contact: http://www.qt.io/licensing/ 5** 6** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. 7** 8** $QT_BEGIN_LICENSE:LGPL3$ 9** Commercial License Usage 10** Licensees holding valid commercial Qt licenses may use this file in 11** accordance with the commercial license agreement provided with the 12** Software or, alternatively, in accordance with the terms contained in 13** a written agreement between you and The Qt Company. For licensing terms 14** and conditions see http://www.qt.io/terms-conditions. For further 15** information use the contact form at http://www.qt.io/contact-us. 16** 17** GNU Lesser General Public License Usage 18** Alternatively, this file may be used under the terms of the GNU Lesser 19** General Public License version 3 as published by the Free Software 20** Foundation and appearing in the file LICENSE.LGPLv3 included in the 21** packaging of this file. Please review the following information to 22** ensure the GNU Lesser General Public License version 3 requirements 23** will be met: https://www.gnu.org/licenses/lgpl.html. 24** 25** GNU General Public License Usage 26** Alternatively, this file may be used under the terms of the GNU 27** General Public License version 2.0 or later as published by the Free 28** Software Foundation and appearing in the file LICENSE.GPL included in 29** the packaging of this file. Please review the following information to 30** ensure the GNU General Public License version 2.0 requirements will be 31** met: http://www.gnu.org/licenses/gpl-2.0.html. 32** 33** $QT_END_LICENSE$ 34** 35****************************************************************************/ 36 37import QtQuick 2.12 38import QtQuick.Templates 2.12 as T 39import QtQuick.Controls.Material 2.12 40import QtQuick.Controls.Material.impl 2.12 41 42T.Drawer { 43 id: control 44 45 parent: T.Overlay.overlay 46 47 implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 48 contentWidth + leftPadding + rightPadding) 49 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 50 contentHeight + topPadding + bottomPadding) 51 52 topPadding: !dim && edge === Qt.BottomEdge && Material.elevation === 0 53 leftPadding: !dim && edge === Qt.RightEdge && Material.elevation === 0 54 rightPadding: !dim && edge === Qt.LeftEdge && Material.elevation === 0 55 bottomPadding: !dim && edge === Qt.TopEdge && Material.elevation === 0 56 57 enter: Transition { SmoothedAnimation { velocity: 5 } } 58 exit: Transition { SmoothedAnimation { velocity: 5 } } 59 60 Material.elevation: !interactive && !dim ? 0 : 16 61 62 background: Rectangle { 63 color: control.Material.dialogColor 64 65 Rectangle { 66 readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge 67 width: horizontal ? 1 : parent.width 68 height: horizontal ? parent.height : 1 69 color: control.Material.dividerColor 70 x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 71 y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 72 visible: !control.dim && control.Material.elevation === 0 73 } 74 75 layer.enabled: control.position > 0 76 layer.effect: ElevationEffect { 77 elevation: control.Material.elevation 78 fullHeight: true 79 } 80 } 81 82 T.Overlay.modal: Rectangle { 83 color: control.Material.backgroundDimColor 84 Behavior on opacity { NumberAnimation { duration: 150 } } 85 } 86 87 T.Overlay.modeless: Rectangle { 88 color: control.Material.backgroundDimColor 89 Behavior on opacity { NumberAnimation { duration: 150 } } 90 } 91} 92