wallpaper selection
This commit is contained in:
parent
3d1816c0f1
commit
2bfa0c189a
5 changed files with 157 additions and 7 deletions
14
components/composite/WallpaperItem.qml
Normal file
14
components/composite/WallpaperItem.qml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
Image {
|
||||||
|
asynchronous: true
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
sourceSize.width: parent.width
|
||||||
|
sourceSize.height: parent.height
|
||||||
|
|
||||||
|
Behavior on scale {
|
||||||
|
NumberAnimation {
|
||||||
|
duration: 200
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
65
components/composite/WallpaperList.qml
Normal file
65
components/composite/WallpaperList.qml
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import qs.config
|
||||||
|
import qs.services
|
||||||
|
import QtQuick
|
||||||
|
import Qt.labs.folderlistmodel 2.9
|
||||||
|
import Quickshell.Widgets
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: list
|
||||||
|
|
||||||
|
orientation: ListView.Horizontal
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
spacing: 8
|
||||||
|
snapMode: ListView.SnapToItem
|
||||||
|
|
||||||
|
implicitWidth: 160 * 3
|
||||||
|
implicitHeight: 90
|
||||||
|
model: FolderListModel {
|
||||||
|
nameFilters: ["*.jpg"]
|
||||||
|
folder: `${Paths.home}/Wallpapers`
|
||||||
|
showDirs: false
|
||||||
|
}
|
||||||
|
delegate: Item {
|
||||||
|
id: delegate
|
||||||
|
|
||||||
|
required property url fileUrl
|
||||||
|
required property int index
|
||||||
|
property bool hovered: ListView.isCurrentItem
|
||||||
|
|
||||||
|
implicitWidth: 160
|
||||||
|
implicitHeight: 90
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
color: Styling.theme.base200
|
||||||
|
anchors.fill: parent
|
||||||
|
radius: 12
|
||||||
|
scale: delegate.hovered ? 1.0 : 0.9
|
||||||
|
Behavior on scale {
|
||||||
|
NumberAnimation {
|
||||||
|
duration: Styling.animations.veryFast
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
|
||||||
|
asynchronous: true
|
||||||
|
anchors.fill: parent
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
source: delegate.fileUrl
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: image
|
||||||
|
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
hoverEnabled: true
|
||||||
|
onEntered: list.currentIndex = delegate.index
|
||||||
|
onClicked: WallpaperService.currentWallpaper = delegate.fileUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,7 @@ import "launcher"
|
||||||
import "pomodoro"
|
import "pomodoro"
|
||||||
import "powermenu"
|
import "powermenu"
|
||||||
import "storybook"
|
import "storybook"
|
||||||
|
import "wallpaper"
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
|
|
@ -17,6 +18,23 @@ Variants {
|
||||||
|
|
||||||
required property ShellScreen modelData
|
required property ShellScreen modelData
|
||||||
|
|
||||||
|
PanelWindow {
|
||||||
|
id: background
|
||||||
|
|
||||||
|
// visible: false
|
||||||
|
anchors.top: true
|
||||||
|
anchors.left: true
|
||||||
|
anchors.right: true
|
||||||
|
anchors.bottom: true
|
||||||
|
|
||||||
|
color: "transparent"
|
||||||
|
|
||||||
|
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
||||||
|
WlrLayershell.layer: WlrLayer.Background
|
||||||
|
|
||||||
|
Wallpaper {}
|
||||||
|
}
|
||||||
|
|
||||||
PanelWindow {
|
PanelWindow {
|
||||||
id: exclusionZone
|
id: exclusionZone
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.composite
|
import qs.components.composite
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import qs.services
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
import Qt.labs.folderlistmodel 2.9
|
||||||
|
import Quickshell.Widgets
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
StyledPane {
|
StyledPane {
|
||||||
GridLayout {
|
GridLayout {
|
||||||
|
|
||||||
|
|
@ -17,3 +23,18 @@ StyledPane {
|
||||||
ThemeComboBox {}
|
ThemeComboBox {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// StyledPane {
|
||||||
|
// WallpaperList {}
|
||||||
|
// }
|
||||||
|
|
||||||
|
StyledPane {
|
||||||
|
padding: 2
|
||||||
|
ClippingWrapperRectangle {
|
||||||
|
|
||||||
|
radius: Styling.theme.radiusBox
|
||||||
|
color: "transparent"
|
||||||
|
|
||||||
|
WallpaperList {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
32
modules/wallpaper/Wallpaper.qml
Normal file
32
modules/wallpaper/Wallpaper.qml
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
import qs.services
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
StackView {
|
||||||
|
id: stack
|
||||||
|
property url wallpaper: WallpaperService.currentWallpaper
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
replaceEnter: Transition {
|
||||||
|
OpacityAnimator {
|
||||||
|
from: 0.0
|
||||||
|
to: 1.0
|
||||||
|
duration: 1000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
replaceExit: Transition {
|
||||||
|
PauseAnimation {
|
||||||
|
duration: 1100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: img
|
||||||
|
Image {}
|
||||||
|
}
|
||||||
|
|
||||||
|
onWallpaperChanged: stack.replace(img, {
|
||||||
|
"source": stack.wallpaper
|
||||||
|
})
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue