Migration of QtMvvm from github
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

99 lines
2.2 KiB

import QtQuick 2.10
import QtQuick.Controls 2.3
/*! @brief A @ref QtQuick.Controls.Drawer "Drawer" that can be used as a presenter for drawer
* views
*
* @extends QtQuick.Controls.Drawer
*
* @details You can use this class as presenter for drawer views. Those are views that are not
* drawers themselves, but need to be placed in one in order to properly work. Use it as
* follows:
*
* @code{.qml}
* MyPresenter {
* id: _root
*
* PresentingDrawer {
* id: _rootDrawer
* }
*
* function presentDrawerContent(item) {
* return _rootDrawer.presentDrawerContent(item);
* }
*
* function toggleDrawer() {
* _rootDrawer.toggle();
* }
*
* function closeAction() {
* var closed = false;
* // ...
* if(!closed)
* closed = _rootDrawer.closeAction();
* // ...
* return closed;
* }
* }
* @endcode
*
* @sa QtMvvmApp
*/
Drawer {
id: _presentingDrawer
width: Math.min(300, parent.width - 24);
height: parent.height - y
//! Internal property
property Item _mainChild: null
//! Toggles the current drawer state. It closes an open drawer or opens a closed one
function toggle() {
if(visible)
close();
else
open();
}
/*! @brief The primary presenting method to present a drawer item
*
* @param type:Item item The item to be shown
* @return type:bool `true` if successfully presented, `false` if not
*
* Replaces the current drawer content by the new item. The old content is deleted and the
* new item set.
*
* @sa QtMvvmApp::presentDrawerContent, @ref QtQuick.Item "Item"
*/
function presentDrawerContent(item) {
if(_mainChild)
_mainChild.destroy();
item.parent = _presentingDrawer.contentItem;
item.drawer = _presentingDrawer;
_mainChild = item;
return true;
}
/*! @brief Can be called to try to close open drawers
*
* @return type:bool `true` if a drawer was closed, `false` if not
*
* Use this method in your main presenter react on a close event. It will close the drawer
* in case it is open.
*
* @sa QtMvvmApp::closeAction
*/
function closeAction() {
if(_mainChild && typeof _mainChild.closeAction == "function") {
if(_mainChild.closeAction())
return true;
}
if(visible) {
close();
return true;
} else
return false;
}
}