Warning, /plasma/plasma-mobile/components/mobileshell/qml/homescreen/WallpaperSelector.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org> 0002 // SPDX-FileCopyrightText: 2022-2024 Devin Lin <devin@kde.org> 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 import QtQuick 0006 import QtQuick.Layouts 0007 import QtQuick.Window 0008 import QtQuick.Controls as Controls 0009 0010 import org.kde.kirigami 2.20 as Kirigami 0011 import org.kde.plasma.wallpapers.image 2.0 as Wallpaper 0012 import org.kde.kquickcontrolsaddons 2.0 as Addons 0013 import org.kde.plasma.private.mobileshell.wallpaperimageplugin as WallpaperImagePlugin 0014 0015 Controls.Drawer { 0016 id: imageWallpaperDrawer 0017 dragMargin: 0 0018 0019 required property bool horizontal 0020 0021 onOpened: { 0022 wallpapersView.forceActiveFocus() 0023 } 0024 0025 implicitWidth: Kirigami.Units.gridUnit * 10 0026 implicitHeight: Kirigami.Units.gridUnit * 8 0027 width: imageWallpaperDrawer.horizontal ? implicitWidth : parent.width 0028 height: imageWallpaperDrawer.horizontal ? parent.height : implicitHeight 0029 0030 Wallpaper.ImageBackend { 0031 id: imageWallpaper 0032 } 0033 0034 background: null 0035 0036 ListView { 0037 id: wallpapersView 0038 anchors.fill: parent 0039 anchors.leftMargin: imageWallpaperDrawer.leftMargin 0040 anchors.rightMargin: imageWallpaperDrawer.rightMargin 0041 anchors.bottomMargin: imageWallpaperDrawer.bottomMargin 0042 orientation: imageWallpaperDrawer.horizontal ? ListView.Vertical : ListView.Horizontal 0043 keyNavigationEnabled: true 0044 highlightFollowsCurrentItem: true 0045 snapMode: ListView.SnapToItem 0046 model: imageWallpaper.wallpaperModel 0047 // onCountChanged: currentIndex = Math.min(model.indexOf(configDialog.wallpaperConfiguration["Image"]), model.rowCount()-1) 0048 headerPositioning: ListView.PullBackHeader 0049 0050 delegate: Controls.ItemDelegate { 0051 width: imageWallpaperDrawer.horizontal ? parent.width : height * (imageWallpaperDrawer.width / imageWallpaperDrawer.Screen.height) 0052 height: imageWallpaperDrawer.horizontal ? width / (imageWallpaperDrawer.Screen.width / imageWallpaperDrawer.Screen.height) : parent.height 0053 padding: wallpapersView.currentIndex === index ? Kirigami.Units.gridUnit / 4 : Kirigami.Units.gridUnit / 2 0054 leftPadding: padding 0055 topPadding: padding 0056 rightPadding: padding 0057 bottomPadding: padding 0058 Behavior on padding { 0059 NumberAnimation { 0060 duration: Kirigami.Units.longDuration 0061 easing.type: Easing.InOutQuad 0062 } 0063 } 0064 0065 property bool isCurrent: WallpaperImagePlugin.WallpaperPlugin.homescreenWallpaperPath == model.path 0066 onIsCurrentChanged: { 0067 if (isCurrent) { 0068 wallpapersView.currentIndex = index; 0069 } 0070 } 0071 0072 z: wallpapersView.currentIndex === index ? 2 : 0 0073 contentItem: Item { 0074 Kirigami.Icon { 0075 anchors.centerIn: parent 0076 width: Kirigami.Units.iconSizes.large 0077 height: width 0078 source: "view-preview" 0079 visible: !walliePreview.visible 0080 } 0081 0082 Addons.QPixmapItem { 0083 id: walliePreview 0084 visible: model.screenshot != null 0085 anchors.fill: parent 0086 smooth: true 0087 pixmap: model.screenshot 0088 fillMode: Image.PreserveAspectCrop 0089 } 0090 } 0091 onClicked: { 0092 WallpaperImagePlugin.WallpaperPlugin.setHomescreenWallpaper(model.path); 0093 } 0094 Keys.onReturnPressed: { 0095 clicked(); 0096 } 0097 background: Item { 0098 Rectangle { 0099 anchors { 0100 fill: parent 0101 margins: wallpapersView.currentIndex === index ? 0 : Kirigami.Units.gridUnit / 4 0102 Behavior on margins { 0103 NumberAnimation { 0104 duration: Kirigami.Units.longDuration 0105 easing.type: Easing.InOutQuad 0106 } 0107 } 0108 } 0109 radius: Kirigami.Units.gridUnit / 4 0110 } 0111 } 0112 } 0113 } 0114 }