Warning, /plasma/plasma-workspace/wallpapers/image/imagepackage/contents/ui/WallpaperDelegate.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 Sebastian Kügler <sebas@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 import QtQuick
0009 import QtQuick.Controls as QtControls2
0010 import Qt5Compat.GraphicalEffects
0011 
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.kquickcontrolsaddons
0014 import org.kde.kcmutils as KCM
0015 
0016 KCM.GridDelegate {
0017     id: wallpaperDelegate
0018 
0019     property alias color: backgroundRect.color
0020     opacity: model.pendingDeletion ? 0.5 : 1
0021     scale: index, 1 // Workaround for https://bugreports.qt.io/browse/QTBUG-107458
0022 
0023     text: model.display
0024     subtitle: model.author
0025 
0026     hoverEnabled: true
0027 
0028     actions: [
0029         Kirigami.Action {
0030             icon.name: "document-open-folder"
0031             tooltip: i18nd("plasma_wallpaper_org.kde.image", "Open Containing Folder")
0032             onTriggered: imageModel.openContainingFolder(index)
0033         },
0034         Kirigami.Action {
0035             icon.name: "edit-undo"
0036             visible: model.pendingDeletion
0037             tooltip: i18nd("plasma_wallpaper_org.kde.image", "Restore wallpaper")
0038             onTriggered: model.pendingDeletion = false
0039         },
0040         Kirigami.Action {
0041             icon.name: "edit-delete"
0042             tooltip: i18nd("plasma_wallpaper_org.kde.image", "Remove Wallpaper")
0043             visible: model.removable && !model.pendingDeletion && configDialog.currentWallpaper == "org.kde.image"
0044             onTriggered: {
0045                 model.pendingDeletion = true;
0046 
0047                 if (wallpapersGrid.view.currentIndex === index) {
0048                     const newIndex = (index + 1) % (imageModel.count - 1);
0049                     wallpapersGrid.view.itemAtIndex(newIndex).clicked();
0050                 }
0051                 root.configurationChanged(); // BUG 438585
0052             }
0053         }
0054     ]
0055 
0056     thumbnail: Rectangle {
0057         id: backgroundRect
0058         color: cfg_Color
0059         anchors.fill: parent
0060 
0061         Kirigami.Icon {
0062             anchors.centerIn: parent
0063             width: Kirigami.Units.iconSizes.large
0064             height: width
0065             source: "view-preview"
0066             visible: !walliePreview.visible
0067         }
0068 
0069         QPixmapItem {
0070             id: blurBackgroundSource
0071             visible: cfg_Blur
0072             anchors.fill: parent
0073             smooth: true
0074             pixmap: model.screenshot
0075             fillMode: QPixmapItem.PreserveAspectCrop
0076         }
0077 
0078         FastBlur {
0079             visible: cfg_Blur
0080             anchors.fill: parent
0081             source: blurBackgroundSource
0082             radius: 4
0083         }
0084 
0085         QPixmapItem {
0086             id: walliePreview
0087             anchors.fill: parent
0088             visible: model.screenshot !== null
0089             smooth: true
0090             pixmap: model.screenshot
0091             fillMode: {
0092                 if (cfg_FillMode === Image.Stretch) {
0093                     return QPixmapItem.Stretch;
0094                 } else if (cfg_FillMode === Image.PreserveAspectFit) {
0095                     return QPixmapItem.PreserveAspectFit;
0096                 } else if (cfg_FillMode === Image.PreserveAspectCrop) {
0097                     return QPixmapItem.PreserveAspectCrop;
0098                 } else if (cfg_FillMode === Image.Tile) {
0099                     return QPixmapItem.Tile;
0100                 } else if (cfg_FillMode === Image.TileVertically) {
0101                     return QPixmapItem.TileVertically;
0102                 } else if (cfg_FillMode === Image.TileHorizontally) {
0103                     return QPixmapItem.TileHorizontally;
0104                 }
0105                 return QPixmapItem.PreserveAspectFit;
0106             }
0107         }
0108         QtControls2.CheckBox {
0109             visible: configDialog.currentWallpaper === "org.kde.slideshow"
0110             anchors.right: parent.right
0111             anchors.top: parent.top
0112             checked: visible ? model.checked : false
0113             onToggled: model.checked = checked
0114         }
0115 
0116         Behavior on color {
0117             ColorAnimation {
0118                 duration: Kirigami.Units.longDuration
0119                 easing.type: Easing.InOutQuad
0120             }
0121         }
0122     }
0123 
0124     Behavior on opacity {
0125         OpacityAnimator {
0126             duration: Kirigami.Units.longDuration
0127             easing.type: Easing.InOutQuad
0128         }
0129     }
0130 
0131     onClicked: {
0132         if (configDialog.currentWallpaper === "org.kde.image") {
0133             cfg_Image = model.packageName || model.path;
0134             if (typeof wallpaper !== "undefined") {
0135                 wallpaper.configuration.PreviewImage = cfg_Image;
0136             }
0137         }
0138         GridView.currentIndex = index;
0139     }
0140 }