Warning, /maui/mauikit/src/controls.6/AppViewLoader.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *   Copyright 2020 Camilo Higuita <milo.h@aol.com>
0003  *
0004  *   This program is free software; you can redistribute it and/or modify
0005  *   it under the terms of the GNU Library General Public License as
0006  *   published by the Free Software Foundation; either version 2, or
0007  *   (at your option) any later version.
0008  *
0009  *   This program is distributed in the hope that it will be useful,
0010  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0012  *   GNU General Public License for more details
0013  *
0014  *   You should have received a copy of the GNU Library General Public
0015  *   License along with this program; if not, write to the
0016  *   Free Software Foundation, Inc.,
0017  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
0018  */
0019 
0020 import QtQuick
0021 import QtQuick.Controls
0022 import org.mauikit.controls 1.3 as Maui
0023 
0024 /**
0025  * @inherit QtQuick.Loader
0026  * @since org.mauikit.controls 1.0
0027  * 
0028  * @brief A companion for the AppViews control, for lazy-loading the views to not drain too much resources.
0029  * 
0030  * <a href="https://doc.qt.io/qt-6/qml-qtquick-controls-loader.html">This controls inherits from QQC2 Loader, to checkout its inherited properties refer to the Qt Docs.</a>
0031  * 
0032  * This element wraps a component into a loader that is active only if it is the next, current or previous view in use, or if it has already been created once.
0033  * This component is useful when the AppViews has more then 4 different views to relief the loading of many views at the same time all at once.
0034  * 
0035  * This control will also display a progress bar element at the bottom of the view - indicating the progress of loading the hosted component.
0036  * @see ProgressIndicator
0037  * 
0038  * @note Remeber to set the AppView information, such as title and icon, using the attached properties.
0039  * @see AppView
0040  * 
0041  * @code
0042  * AppViews
0043  * {
0044  *    AppViewLoader
0045  *    {
0046  *        AppView.title: i18n("Songs")
0047  *        AppView.iconName: "view-media-track"
0048  *        
0049  *        Item { } ///The child element to be used as the Component to be loaded.
0050  *    }
0051  * } 
0052  * @endcode 
0053  * 
0054  * @note To improve the efficiency of loading time, this control will load its component asynchronously. This can be disabled by setting `asynchronous: false`
0055  * 
0056  * <a href="https://invent.kde.org/maui/mauikit/-/blob/qt6-2/examples/AppViewLoader.qml">You can find a more complete example at this link.</a>
0057  * 
0058  * 
0059  */
0060 Loader
0061 {
0062     id: control
0063     
0064     asynchronous: true
0065     active: (SwipeView.view.visible && SwipeView.isCurrentItem) || item
0066     
0067     /**
0068      * @brief By default the single element declared as the child will be used as the component to be loaded.
0069      * @property Component AppViewLoader::content
0070      */
0071     default property alias content : control.sourceComponent
0072         
0073         Maui.ProgressIndicator
0074         {
0075             width: parent.width
0076             anchors.bottom: parent.bottom
0077             visible: control.status === Loader.Loading
0078         }
0079 }