Index: sources/gui/qml/components/StackItem.qml =================================================================== diff -u -r074b32b5cc08f41f2d9ce0d021f2151b76bba5ad -r76f632ce5a9039ae662d9a52286079b772f8ae7f --- sources/gui/qml/components/StackItem.qml (.../StackItem.qml) (revision 074b32b5cc08f41f2d9ce0d021f2151b76bba5ad) +++ sources/gui/qml/components/StackItem.qml (.../StackItem.qml) (revision 76f632ce5a9039ae662d9a52286079b772f8ae7f) @@ -30,16 +30,47 @@ width : Variables.applicationWidth height: Variables.applicationHeight - function pop () { - _stackView.pop() + function info() { + for( var i = 0; i < _stackView.depth; i++ ) { + console.debug("index:", i, _stackView.get(i)) + } } + function back(vScreen) { + if (stackView.find(function(screen) { + return screen === vScreen; + })) { + _stackView.pop(vScreen) + } + else { + _stackView.push(vScreen) + } + info() + } + + function pop (vScreen) { + _stackView.pop(vScreen) + info() + } + function push (vScreen) { - _stackView.push(vScreen) + if ( _stackView.currentItem === vScreen) { + console.debug("same current screen didn't push" , vScreen.name) + } + else { + _stackView.push(vScreen) + } + info() } - function popToItem(item) { - _stackView.pop(item); + function replace(vScreen, vReplaced) { + if (vReplaced === undefined) { + _stackView.replace(_stackView.currentItem, vScreen) + } + else { + _stackView.replace(vReplaced, vScreen) + } + info() } StackView { id : _stackView