From 89c7739fdbcea2e8918b30ca236d7e09beee1bc3 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Tue, 22 Jul 2025 22:28:10 +1000 Subject: filedialog: cache thumbnails Much faster loading --- widgets/CachingIconImage.qml | 31 +++++++++++++++++++++++++++++++ widgets/CachingImage.qml | 2 -- widgets/filedialog/FolderContents.qml | 3 +-- 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 widgets/CachingIconImage.qml diff --git a/widgets/CachingIconImage.qml b/widgets/CachingIconImage.qml new file mode 100644 index 0000000..522a947 --- /dev/null +++ b/widgets/CachingIconImage.qml @@ -0,0 +1,31 @@ +import QtQuick + +Item { + property alias asynchronous: image.asynchronous + property alias status: image.status + property alias mipmap: image.mipmap + property alias backer: image + + property real implicitSize + readonly property real actualSize: Math.min(width, height) + + property url source + + onSourceChanged: { + if (source?.toString().startsWith("image://icon/")) + // Directly skip the path prop and treat like a normal Image component + image.source = source; + else if (source) + image.path = source; + } + + implicitWidth: implicitSize + implicitHeight: implicitSize + + CachingImage { + id: image + + anchors.fill: parent + fillMode: Image.PreserveAspectFit + } +} diff --git a/widgets/CachingImage.qml b/widgets/CachingImage.qml index c58ff51..1d42238 100644 --- a/widgets/CachingImage.qml +++ b/widgets/CachingImage.qml @@ -1,4 +1,3 @@ -import qs.services import qs.utils import Quickshell.Io import QtQuick @@ -11,7 +10,6 @@ Image { readonly property string cachePath: `${Paths.stringify(Paths.imagecache)}/${hash}@${width}x${height}.png` asynchronous: true - cache: false fillMode: Image.PreserveAspectCrop sourceSize.width: width sourceSize.height: height diff --git a/widgets/filedialog/FolderContents.qml b/widgets/filedialog/FolderContents.qml index 1881288..4a24ef5 100644 --- a/widgets/filedialog/FolderContents.qml +++ b/widgets/filedialog/FolderContents.qml @@ -6,7 +6,6 @@ import qs.config import qs.utils import Quickshell import Quickshell.Io -import Quickshell.Widgets import QtQuick import QtQuick.Layouts import QtQuick.Effects @@ -140,7 +139,7 @@ Item { } } - IconImage { + CachingIconImage { id: icon anchors.horizontalCenter: parent.horizontalCenter -- cgit v1.2.3-freya