Warning, /maui/mauikit/src/controls.5/SplitViewItem.qml is written in an unsupported language. File is not indexed.
0001 // Copyright 2018-2020 Camilo Higuita <milo.h@aol.com> 0002 // Copyright 2018-2020 Nitrux Latinoamericana S.C. 0003 // 0004 // SPDX-License-Identifier: GPL-3.0-or-later 0005 0006 0007 import QtQuick 2.15 0008 import QtQuick.Controls 2.15 0009 import QtQml.Models 2.3 0010 import QtGraphicalEffects 1.0 0011 0012 import org.mauikit.controls 1.3 as Maui 0013 0014 Pane 0015 { 0016 id: control 0017 0018 Maui.Theme.colorSet: Maui.Theme.Window 0019 Maui.Theme.inherit: false 0020 0021 default property alias content: _container.data 0022 0023 // the index of the item in the split view layout 0024 readonly property int splitIndex : ObjectModel.index 0025 0026 property int minimumWidth : 200 0027 property int minimumHeight : 100 0028 0029 SplitView.fillHeight: true 0030 SplitView.fillWidth: true 0031 0032 SplitView.preferredHeight: SplitView.view.orientation === Qt.Vertical ? SplitView.view.height / (SplitView.view.count) : SplitView.view.height 0033 SplitView.minimumHeight: SplitView.view.orientation === Qt.Vertical ? minimumHeight : 0 0034 0035 SplitView.preferredWidth: SplitView.view.orientation === Qt.Horizontal ? SplitView.view.width / (SplitView.view.count) : SplitView.view.width 0036 SplitView.minimumWidth: SplitView.view.orientation === Qt.Horizontal ? minimumWidth : 0 0037 0038 clip: SplitView.view.orientation === Qt.Vertical && SplitView.view.count === 2 && splitIndex > 0 0039 0040 padding: compact ? 0 : Maui.Style.contentMargins 0041 0042 Behavior on padding 0043 { 0044 NumberAnimation 0045 { 0046 duration: Maui.Style.units.shortDuration 0047 easing.type: Easing.InQuad 0048 } 0049 } 0050 0051 property bool compact : Maui.Handy.isMobile || SplitView.view.count === 1 0052 0053 contentItem: Item 0054 { 0055 0056 Item 0057 { 0058 id: _container 0059 anchors.fill: parent 0060 } 0061 0062 Loader 0063 { 0064 asynchronous: true 0065 anchors.fill: parent 0066 active: control.SplitView.view.resizing 0067 visible: active 0068 sourceComponent: Rectangle 0069 { 0070 color: Maui.Theme.backgroundColor 0071 opacity: (control.minimumWidth) / control.width 0072 } 0073 } 0074 0075 Loader 0076 { 0077 asynchronous: true 0078 anchors.bottom: parent.bottom 0079 anchors.left: parent.left 0080 anchors.right: parent.right 0081 height: 2 0082 active: control.SplitView.view.currentIndex === splitIndex && control.SplitView.view.count > 1 0083 visible: active 0084 sourceComponent: Rectangle 0085 { 0086 color: Maui.Theme.highlightColor 0087 } 0088 } 0089 0090 Loader 0091 { 0092 asynchronous: true 0093 anchors.centerIn: parent 0094 active: control.SplitView.view.resizing && control.width < control.minimumWidth + 60 0095 visible: active 0096 sourceComponent: Maui.Chip 0097 { 0098 opacity: (control.minimumWidth) / control.width 0099 0100 Maui.Theme.backgroundColor: Maui.Theme.negativeTextColor 0101 label.text: i18nd("mauikit", "Close Split") 0102 } 0103 } 0104 0105 Loader 0106 { 0107 asynchronous: true 0108 anchors.centerIn: parent 0109 active: control.SplitView.view.resizing && control.height < control.minimumHeight + 60 0110 visible: active 0111 sourceComponent: Maui.Chip 0112 { 0113 opacity: (control.minimumHeight) / control.height 0114 0115 Maui.Theme.backgroundColor: Maui.Theme.negativeTextColor 0116 label.text: i18nd("mauikit", "Close Split") 0117 } 0118 0119 } 0120 0121 MouseArea 0122 { 0123 anchors.fill: parent 0124 propagateComposedEvents: true 0125 preventStealing: false 0126 cursorShape: undefined 0127 0128 onPressed: (mouse) => 0129 { 0130 control.SplitView.view.currentIndex = control.splitIndex 0131 mouse.accepted = false 0132 } 0133 } 0134 0135 layer.enabled: !control.compact 0136 layer.smooth: true 0137 layer.effect: OpacityMask 0138 { 0139 cached: true 0140 maskSource: Rectangle 0141 { 0142 width: _container.width 0143 height: _container.height 0144 radius: Maui.Style.radiusV 0145 } 0146 } 0147 } 0148 0149 Connections 0150 { 0151 target: control.SplitView.view 0152 function onResizingChanged() 0153 { 0154 if(control.width === control.minimumWidth && !control.SplitView.view.resizing) 0155 { 0156 control.SplitView.view.closeSplit(control.splitIndex) 0157 } 0158 0159 if(control.height === control.minimumHeight && !control.SplitView.view.resizing) 0160 { 0161 control.SplitView.view.closeSplit(control.splitIndex) 0162 } 0163 } 0164 } 0165 0166 function focusSplitItem() 0167 { 0168 control.SplitView.view.currentIndex = control.splitIndex 0169 } 0170 }