moment/src/gui/Base/HSwipeView.qml

57 lines
1.5 KiB
QML
Raw Normal View History

// Copyright Mirage authors & contributors <https://github.com/mirukana/mirage>
2019-12-19 22:46:16 +11:00
// SPDX-License-Identifier: LGPL-3.0-or-later
2019-12-14 08:54:32 +11:00
import QtQuick 2.12
import QtQuick.Controls 2.12
import "../ShortcutBundles"
SwipeView {
id: swipeView
enum Move { ToPrevious, ToNext }
property string saveName: ""
property var saveId: "ALL"
property var saveProperties: ["currentIndex"]
2019-12-14 08:54:32 +11:00
// Prevent onCurrentIndexChanged from running before Component.onCompleted
property bool saveEnabled: false
property int previousIndex: 0
property int defaultIndex: 0
property int lastMove: HSwipeView.Move.ToNext
property bool changed: currentIndex !== defaultIndex
function reset() { setCurrentIndex(defaultIndex) }
2020-04-28 12:10:10 +10:00
function incrementWrapIndex() {
currentIndex === count - 1 ?
setCurrentIndex(0) :
incrementCurrentIndex()
}
function decrementWrapIndex() {
currentIndex === 0 ?
setCurrentIndex(count - 1) :
decrementCurrentIndex()
}
Component.onCompleted: if (! changed) {
setCurrentIndex(window.getState(this, "currentIndex", defaultIndex))
saveEnabled = true
}
onCurrentIndexChanged: {
if (saveEnabled) window.saveState(this)
if (currentIndex < previousIndex) lastMove = HSwipeView.Move.ToPrevious
if (currentIndex > previousIndex) lastMove = HSwipeView.Move.ToNext
previousIndex = currentIndex
}
TabShortcuts {
container: swipeView
}
}