Warning, /maui/mauikit/src/controls.6/SplitView.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
0008 import QtQuick.Controls
0009
0010 import org.mauikit.controls 1.3 as Maui
0011
0012 /**
0013 * @inherit QtQuick.Controls.SplitView
0014 * @brief An extension to the QQC2 SplitView control, adding some extra functionality.
0015 * <a href="https://doc.qt.io/qt-6/qml-qtquick-controls-splitview.html">This controls inherits from QQC2 SplitView, to checkout its inherited properties refer to the Qt Docs.</a>
0016 * This control add a quick way to add split views and remove them.
0017 * @see addSplit
0018 * @see closeSplit
0019 *
0020 * @image html Misc/splitview.png
0021 *
0022 * @code
0023 * Maui.SplitView
0024 * {
0025 * anchors.fill: parent
0026 *
0027 * Maui.SplitViewItem
0028 * {
0029 * Rectangle
0030 * {
0031 * color: "orange"
0032 * anchors.fill: parent
0033 * }
0034 * }
0035 *
0036 * Maui.SplitViewItem
0037 * {
0038 * Rectangle
0039 * {
0040 * color: "yellow"
0041 * anchors.fill: parent
0042 * }
0043 * }
0044 * }
0045 * @endcode
0046 * <a href="https://invent.kde.org/maui/mauikit/-/blob/qt6-2/examples/SplitView.qml">You can find a more complete example at this link.</a>
0047 */
0048 SplitView
0049 {
0050 id: control
0051
0052 clip: false
0053
0054 onCurrentItemChanged:
0055 {
0056 currentItem.forceActiveFocus()
0057 }
0058
0059 /**
0060 * @brief Forces to close the split view at a given index.
0061 * If there is onyl one view at the time, then this method does nothing, in order to keep the control with at least one view.
0062 * @note This function calls to the SplitView `removeItem` function.
0063 * @param index the index of view to be closed
0064 */
0065 function closeSplit(index)
0066 {
0067 if(control.count === 1)
0068 {
0069 return // do not close aall
0070 }
0071
0072 control.removeItem(control.takeItem(index))
0073 }
0074
0075 /**
0076 * @brief Adds a QQC2 Component as a view to the control.
0077 * @param component The QQC2 Component wrapping the view to be added. Consider using a MauiKit SplitViewItem control as the view root element.
0078 * @param properties an optional map of properties to be applied to the created view component
0079 * @return the newly created object view.
0080 */
0081 function addSplit(component, properties)
0082 {
0083 const object = component.createObject(control.contentModel, properties);
0084
0085 control.addItem(object)
0086 control.currentIndex = Math.max(control.count -1, 0)
0087 object.forceActiveFocus()
0088
0089 return object
0090 }
0091 }