Index: sources/gui/qml/compounds/CheckListView.qml =================================================================== diff -u -ra7aab61ca63538c37b6931c60252680fc2ec2416 -rc77b29df6f38fe6db54d2f54768c5fb80210879f --- sources/gui/qml/compounds/CheckListView.qml (.../CheckListView.qml) (revision a7aab61ca63538c37b6931c60252680fc2ec2416) +++ sources/gui/qml/compounds/CheckListView.qml (.../CheckListView.qml) (revision c77b29df6f38fe6db54d2f54768c5fb80210879f) @@ -53,73 +53,40 @@ function setWait (vModel) { vModel.stepStart = true ; vModel.stepDone = false } function setDone (vModel) { vModel.stepStart = true ; vModel.stepDone = true } - function setItemExt (vIndex, vEntered) { - let goBak = pIndex > vIndex - let goTop = pIndex < vIndex - // if ( pIndex === vIndex && !vEntered ) return + function setItemExt(vIndex, vEntered) { + // Direction: + // 1 = forward + // -1 = backward + // 0 = same item + const direction = Math.sign(vIndex - pIndex) // returns sign of nuymber - for ( let i = 0; i < _listView.count; i++ ) { - let model = _listView.itemAt(i) - //DEBUG console.log(i, pIndex, vEntered?"I":"O", vIndex/*, goBak?"B":" ", goTop?"T":" "*/) - if ( i < vIndex ) { - if ( goTop ) { - // Do nothing - } - else { - // setDone(model) - } + for (let i = 0; i < _listView.count; ++i) { + const model = _listView.itemAt(i) + + if (i < vIndex) { + // Items before the current one. + if (direction > 0) + setDone(model) // Completed while moving forward. + else if (direction < 0) + setClear(model) // Reset while moving backward. } - if ( i > vIndex ) { - setClear(model) + else if (i === vIndex) { + // Current item. + if (vEntered) + setWait(model) // Entered current item. + else if (direction === 0) + setDone(model) // Finished current item. + else + setClear(model) // Leaving for another item. + } - if ( i === vIndex ) { - if ( vEntered ) { - setWait(model) - } - else { - if ( goTop ) { - setClear(model) - } - else { - if ( goBak ) { - setClear(model) - } - else { - setDone(model) - } - } - } - } - } - pIndex = vIndex - //DEBUG console.log("-----") - } - //DEBUG Test function for investigation - function setItemExt2 (vIndex, vValue, vMode) { - for ( let i = 0; i < _listView.count; i++ ) { - let model = _listView.itemAt(i) - if ( i < vIndex ) { - setDone(model) - continue - } - if ( i > vIndex ) { + else { + // Items after the current one are always reset. setClear(model) - continue } - - if ( vMode === 0 ) // enter - setWait(model) - if ( vMode === 1 ) // in Progress - setWait(model) - if ( vMode === 2 ) // exit - setDone(model) - if ( vMode === 9 ){// depending on value - if ( vValue ) setWait(model) - else setDone(model) - } - } + pIndex = vIndex } width : _root.delegateWidth