Index: sources/gui/qml/components/StackItem.qml =================================================================== diff -u -r3702984c4572607055ab3ede4d45792e74595991 -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 --- sources/gui/qml/components/StackItem.qml (.../StackItem.qml) (revision 3702984c4572607055ab3ede4d45792e74595991) +++ sources/gui/qml/components/StackItem.qml (.../StackItem.qml) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) @@ -1,16 +1,16 @@ /*! - * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * + * Copyright (c) 2019-2024 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. - * - * \file StackItem.qml - * \author (last) Behrouz NematiPour - * \date (last) 22-Mar-2020 - * \author (original) Behrouz NematiPour - * \date (original) 21-Oct-2019 - * + * + * \file StackItem.qml + * \author (last) Behrouz NematiPour + * \date (last) 29-Jun-2022 + * \author (original) Behrouz NematiPour + * \date (original) 21-Oct-2019 + * */ // Qt @@ -27,13 +27,19 @@ Item { id : _root property alias stackView: _stackView + visible: false + width : Variables.applicationWidth height: Variables.applicationHeight /*! * \brief prints out the list of the items in the stack by their index position in the stack. */ - function info() { + function info(vInfo) { + // DEBUG: + if ( true ) return + console.debug('-----') + if ( vInfo !== undefined ) console.debug(vInfo) for( var i = 0; i < _stackView.depth; i++ ) { console.debug("index:", i, _stackView.get(i)) } @@ -44,8 +50,15 @@ * \brief page function gets the screen vScreen and tries to find the screen in the stack. * if the page found will pop the items on stack down to that screen. * otherwise adds that screen on top of the stack + * \param vScreen - The screen to navigate to + * \param vCondition - if the vCondition has been passed and is false then page returns immediately + * \param vInfo - some extra information to be shown in the info function if the screen name is the same + * */ - function page(vScreen) { + function page(vScreen, vCondition, vInfo) { + if ( vScreen === undefined || vScreen === null ) return + if ( vCondition !== undefined && vCondition === false ) return + if (stackView.find(function(screen) { return screen === vScreen; })) { @@ -54,7 +67,7 @@ else { _stackView.push(vScreen) } - info() + info(vInfo) } /*! @@ -69,8 +82,9 @@ * \brief pushes the screen vScreen on the top of the stack */ function push (vScreen) { + if ( vScreen === undefined || vScreen === null ) return if ( _stackView.currentItem === vScreen) { - console.debug("same current screen didn't push" , vScreen.name) + console.debug("same current screen didn't push" , vScreen) } else { _stackView.push(vScreen) @@ -94,6 +108,14 @@ info() } + /*! + * \brief reset the stack to the bottom and only the first item will remain. + */ + function reset() { + stackView.clear() + push(stackView.initialItem) + } + StackView { id : _stackView initialItem : null anchors.fill: parent