Warning, /plasma/plasma-workspace/wallpapers/image/imagepackage/contents/ui/ThumbnailsComponent.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org>
0003 SPDX-FileCopyrightText: 2014 Kai Uwe Broulik <kde@privat.broulik.de>
0004 SPDX-FileCopyrightText: 2019 David Redondo <kde@david-redondo.de>
0005
0006 SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008
0009 import QtQuick
0010 import QtQuick.Controls as QQC2
0011
0012 import org.kde.kcmutils as KCM
0013 import org.kde.kirigami as Kirigami
0014 import org.kde.newstuff as NewStuff
0015
0016 Item {
0017 id: thumbnailsComponent
0018 anchors.fill: parent
0019
0020 property alias view: wallpapersGrid.view
0021 property var screenSize: Qt.size(Screen.width, Screen.height)
0022
0023 readonly property QtObject imageModel: (configDialog.currentWallpaper === "org.kde.image") ? imageWallpaper.wallpaperModel : imageWallpaper.slideFilterModel
0024
0025 Connections {
0026 target: imageWallpaper
0027 function onLoadingChanged(loading: bool) {
0028 if (loading) {
0029 return;
0030 }
0031 if (configDialog.currentWallpaper === "org.kde.image" && imageModel.indexOf(cfg_Image) < 0) {
0032 imageWallpaper.addUsersWallpaper(cfg_Image);
0033 }
0034 wallpapersGrid.resetCurrentIndex();
0035 }
0036 }
0037
0038 Connections {
0039 target: root
0040 function onWallpaperBrowseCompleted() {
0041 // Scroll to top to view added images
0042 wallpapersGrid.view.positionViewAtIndex(0, GridView.Beginning);
0043 wallpapersGrid.resetCurrentIndex(); // BUG 455129
0044 }
0045 }
0046
0047 KCM.GridView {
0048 id: wallpapersGrid
0049 anchors.fill: parent
0050
0051 function resetCurrentIndex() {
0052 //that min is needed as the module will be populated in an async way
0053 //and only on demand so we can't ensure it already exists
0054 if (configDialog.currentWallpaper === "org.kde.image") {
0055 wallpapersGrid.view.currentIndex = Qt.binding(() => configDialog.currentWallpaper === "org.kde.image" ? Math.min(imageModel.indexOf(cfg_Image), imageModel.count - 1) : 0);
0056 }
0057 }
0058
0059 // FIXME: this scrolls out of view due to the lack of a headerPositioning: property
0060 // in GridView, which is an omission; see https://bugreports.qt.io/browse/QTBUG-117035.
0061 // Once that's added, uncomment this line to fix it!
0062 // view.headerPositioning: GridView.OverlayHeader
0063 // Alternatively, make the page frameless, have the views touch the edges,
0064 // and just stick the header in a ColumnLayout with the view below it.
0065 view.header: Kirigami.InlineViewHeader {
0066 width: {
0067 const scrollBar = wallpapersGrid.QQC2.ScrollBar.vertical;
0068 return wallpapersGrid.width - scrollBar.width - scrollBar.leftPadding - scrollBar.rightPadding - Kirigami.Units.smallSpacing;
0069 }
0070 text: i18nd("plasma_wallpaper_org.kde.image", "Images")
0071 actions: [
0072 Kirigami.Action {
0073 icon.name: "insert-image-symbolic"
0074 text: i18ndc("plasma_wallpaper_org.kde.image", "@action:button the thing being added is an image file", "Add…")
0075 visible: configDialog.currentWallpaper == "org.kde.image"
0076 onTriggered: root.openChooserDialog();
0077 },
0078 NewStuff.Action {
0079 configFile: Kirigami.Settings.isMobile ? "wallpaper-mobile.knsrc" : "wallpaper.knsrc"
0080 text: i18ndc("plasma_wallpaper_org.kde.image", "@action:button the new things being gotten are wallpapers", "Get New…")
0081 viewMode: NewStuff.Page.ViewMode.Preview
0082 }
0083 ]
0084 }
0085 //kill the space for label under thumbnails
0086 view.model: thumbnailsComponent.imageModel
0087
0088 //set the size of the cell, depending on Screen resolution to respect the aspect ratio
0089 view.implicitCellWidth: screenSize.width / 10 + Kirigami.Units.smallSpacing * 2
0090 view.implicitCellHeight: screenSize.height / 10 + Kirigami.Units.smallSpacing * 2 + Kirigami.Units.gridUnit * 3
0091
0092 view.reuseItems: true
0093
0094 view.delegate: WallpaperDelegate {
0095 color: cfg_Color
0096 }
0097 }
0098
0099 KCM.SettingHighlighter {
0100 target: wallpapersGrid
0101 highlight: configDialog.currentWallpaper === "org.kde.image" && cfg_Image != cfg_ImageDefault
0102 }
0103 }