C
Qt Quick Ultralite image_cache Example
// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial import QtQuick 2.15 Rectangle { color: "black" property int reloadInSeconds: 15 property int reloadInMs: 1000 * reloadInSeconds property int showCountDownSeconds: 3 property int showCountDownMs: 1000 * showCountDownSeconds property int remainingSeconds: 0 property int showDescriptionMs: 1000 * 5 ListView { anchors.fill: parent orientation: Qt.Horizontal model: ImageModel { id: myImageModel } spacing: 4 delegate: Image { anchors.fill: parent fillMode: Image.Pad source: model.imagePath } } Rectangle { id: infoBox color: "white" width: parent.width height: infoBoxText.height + 4 anchors.verticalCenter: parent.verticalCenter visible: false Text { id: infoBoxText anchors.centerIn: parent } } Timer { id: reloadImagesTimer interval: reloadInMs - showCountDownMs // Start the timer when the application starts. running: true onTriggered: { // We unfortunately do not have Timer::triggeredOnStart // in qul at the moment, therefore we init the values here. remainingSeconds = showCountDownSeconds infoBoxText.text = "Will reload in " + remainingSeconds + "..." infoBox.visible = true countDownTextVisible.start() } } Timer { id: countDownTextVisible interval: 1000 // Repeat every second, so we can update the countdown text. repeat: true onTriggered: { remainingSeconds -= 1 infoBoxText.text = "Will reload in " + remainingSeconds + "..." if (remainingSeconds == 0) { infoBox.visible = false; myImageModel.swapImages(); countDownTextVisible.stop() reloadImagesTimer.start() } } } Timer { id: infoBoxHideTimer onTriggered: infoBox.visible = false } Component.onCompleted: { infoBoxText.text = "Swipe to view photos.\nContent reloads every " + reloadInSeconds + " seconds." infoBoxHideTimer.interval = showDescriptionMs infoBox.visible = true infoBoxHideTimer.start() } }