Warning, /maui/mauikit/src/controls.5/AltBrowser.qml is written in an unsupported language. File is not indexed.
0001 import QtQuick 2.13
0002 import QtQml 2.14
0003 import QtQuick.Controls 2.13
0004
0005 import org.mauikit.controls 1.0 as Maui
0006
0007 /*!
0008 \since org.mauikit.controls 1.0
0009 \inqmlmodule org.mauikit.controls
0010 \brief A convinient way of switching from a grid to a list view.
0011
0012 The AltBrowser makes use of the GridView and ListBrowser components,
0013 there is a property to dinamically switch between the two.
0014
0015 For some navigation patterns is a good idea to provide a grid view when the application screen size is wide enough
0016 to fit much more information and a list view when the space is contrained since the list is much more compact,
0017 and makes navigation much more quicker, for this
0018 one could use the viewType property binded to a size condition.
0019 */
0020 Maui.Page
0021 {
0022 id: control
0023 Maui.Theme.colorSet: Maui.Theme.View
0024 Maui.Theme.inherit: false
0025
0026 focus: true
0027 clip: false
0028
0029 /*!
0030 The current view being used, the GridView or the ListBrowser.
0031 To access the precise view use the aliases for the GridView or ListView.
0032 */
0033 readonly property Item currentView : control.viewType === AltBrowser.ViewType.List ? _listView : _gridView
0034
0035 onCurrentViewChanged: control.currentView.forceActiveFocus()
0036
0037 enum ViewType
0038 {
0039 Grid,
0040 List
0041 }
0042
0043 /**
0044 \qmlproperty viewType AltBrowser::ViewType
0045
0046 Sets the view that's going to be in use.
0047
0048 The weight can be one of:
0049 \value ViewType.Grid
0050 \value ViewType.List The default
0051
0052 */
0053 property int viewType: AltBrowser.ViewType.List
0054
0055 /*!
0056 The index of the current item selected in either view type.
0057 This value is synced to both view types.
0058 */
0059 property int currentIndex : -1
0060 Binding on currentIndex
0061 {
0062 when: control.currentView
0063 value: control.currentView.currentIndex
0064 }
0065
0066 /*!
0067 The delegate to be used by the ListBrowser.
0068 */
0069 property Component listDelegate : null
0070
0071 /*!
0072 The delegate to be used by the GridView.
0073 */
0074 property Component gridDelegate : null
0075
0076 /*!
0077 The shared data model to be used by both view types.
0078 */
0079 property var model : null
0080
0081 /*!
0082 Allow the lasso selection for multiple items with mouse or track based input methods.
0083 */
0084 property bool enableLassoSelection: false
0085
0086 /*!
0087 Allow the selection mode, which sets the views in the mode to accept drag and hover to select multiple items.
0088 */
0089 property bool selectionMode: false
0090
0091 /*!
0092 \qmlproperty Holder AltBrowser::holder
0093
0094 Item to set a place holder emoji and message.
0095 For more details on its properties check the Holder component.
0096 */
0097 property alias holder : _holder
0098
0099 /*!
0100 \qmlproperty GridBrowser AltBrowser::gridView
0101
0102 The GridBrowser used as the grid view alternative.
0103 */
0104 readonly property alias gridView : _gridView
0105
0106 /*!
0107 \qmlproperty ListBrowser AltBrowser::listView
0108
0109 The ListBrowser used as the list view alternative.
0110 */
0111 readonly property alias listView : _listView
0112
0113 readonly property int count : currentView.count
0114
0115 flickable: currentView.flickable
0116
0117 Maui.GridBrowser
0118 {
0119 id: _gridView
0120 focus: control.focus
0121 anchors.fill: parent
0122 visible: control.viewType === AltBrowser.ViewType.Grid
0123 currentIndex: control.currentIndex
0124 model: control.model
0125 delegate: control.gridDelegate
0126 enableLassoSelection: control.enableLassoSelection
0127 selectionMode: control.selectionMode
0128 adaptContent: true
0129 clip: control.clip
0130 }
0131
0132 Maui.ListBrowser
0133 {
0134 anchors.fill: parent
0135 focus: control.focus
0136 id: _listView
0137 visible: control.viewType === AltBrowser.ViewType.List
0138 currentIndex: control.currentIndex
0139 model: control.model
0140 delegate: control.listDelegate
0141 enableLassoSelection: control.enableLassoSelection
0142 selectionMode: control.selectionMode
0143 clip: control.clip
0144 }
0145
0146 Maui.Holder
0147 {
0148 id: _holder
0149 anchors.fill: parent
0150 visible: false
0151 }
0152 }