wallpaper now uses Image (hopefully temporarily)
This commit is contained in:
@@ -14,6 +14,7 @@ Searcher {
|
|||||||
property string actualCurrent: WallpaperPath.currentWallpaperPath
|
property string actualCurrent: WallpaperPath.currentWallpaperPath
|
||||||
readonly property string current: showPreview ? previewPath : actualCurrent
|
readonly property string current: showPreview ? previewPath : actualCurrent
|
||||||
property string previewPath
|
property string previewPath
|
||||||
|
property bool recentlyChanged
|
||||||
property bool showPreview: false
|
property bool showPreview: false
|
||||||
|
|
||||||
function preview(path: string): void {
|
function preview(path: string): void {
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ Item {
|
|||||||
property real displayY: (height - paintedHeight) * 0.5
|
property real displayY: (height - paintedHeight) * 0.5
|
||||||
property real scaleX: sourceW / displayW
|
property real scaleX: sourceW / displayW
|
||||||
property real scaleY: sourceH / displayH
|
property real scaleY: sourceH / displayH
|
||||||
property real sourceH: sourceSize.height
|
property real sourceH: Quickshell.screens[0].height
|
||||||
property real sourceW: sourceSize.width
|
property real sourceW: Quickshell.screens[0].width
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
fillMode: Image.PreserveAspectFit
|
fillMode: Image.PreserveAspectFit
|
||||||
@@ -85,6 +85,7 @@ Item {
|
|||||||
updateCrop(mouse.x, mouse.y);
|
updateCrop(mouse.x, mouse.y);
|
||||||
}
|
}
|
||||||
onReleased: {
|
onReleased: {
|
||||||
|
Wallpapers.recentlyChanged = false;
|
||||||
Config.background.sourceClipX = cropRect.sourceRect.x;
|
Config.background.sourceClipX = cropRect.sourceRect.x;
|
||||||
Config.background.sourceClipY = cropRect.sourceRect.y;
|
Config.background.sourceClipY = cropRect.sourceRect.y;
|
||||||
Config.background.sourceClipW = cropRect.sourceRect.width;
|
Config.background.sourceClipW = cropRect.sourceRect.width;
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import qs.Components
|
||||||
|
import qs.Helpers
|
||||||
|
import qs.Config
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
property Image current: one
|
||||||
|
property string source: Wallpapers.current
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
if (source)
|
||||||
|
Qt.callLater(() => one.update());
|
||||||
|
}
|
||||||
|
onSourceChanged: {
|
||||||
|
if (!source) {
|
||||||
|
current = null;
|
||||||
|
} else if (current === one) {
|
||||||
|
two.update();
|
||||||
|
} else {
|
||||||
|
one.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Img {
|
||||||
|
id: one
|
||||||
|
}
|
||||||
|
|
||||||
|
Img {
|
||||||
|
id: two
|
||||||
|
}
|
||||||
|
|
||||||
|
component Img: Image {
|
||||||
|
id: img
|
||||||
|
|
||||||
|
function update(): void {
|
||||||
|
if (source === root.source) {
|
||||||
|
root.current = this;
|
||||||
|
} else {
|
||||||
|
source = root.source;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
asynchronous: true
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
opacity: 0
|
||||||
|
retainWhileLoading: true
|
||||||
|
scale: Wallpapers.showPreview ? 1 : 0.8
|
||||||
|
sourceClipRect: Qt.rect(Config.background.sourceClipX, Config.background.sourceClipY, Config.background.sourceClipW, Config.background.sourceClipH)
|
||||||
|
|
||||||
|
states: State {
|
||||||
|
name: "visible"
|
||||||
|
when: root.current === img
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
img.opacity: 1
|
||||||
|
img.scale: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
transitions: Transition {
|
||||||
|
Anim {
|
||||||
|
duration: Config.background.wallFadeDuration
|
||||||
|
properties: "opacity,scale"
|
||||||
|
target: img
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onStatusChanged: {
|
||||||
|
if (status === Image.Ready) {
|
||||||
|
root.current = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import qs.Helpers
|
import qs.Helpers
|
||||||
@@ -8,73 +9,34 @@ import qs.Config
|
|||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
property Image current: one
|
required property ShellScreen screen
|
||||||
property string source: Wallpapers.current
|
property string source: Wallpapers.current
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
Component.onCompleted: {
|
Image {
|
||||||
if (source)
|
|
||||||
Qt.callLater(() => one.update());
|
|
||||||
}
|
|
||||||
onSourceChanged: {
|
|
||||||
if (!source) {
|
|
||||||
current = null;
|
|
||||||
} else if (current === one) {
|
|
||||||
two.update();
|
|
||||||
} else {
|
|
||||||
one.update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Img {
|
|
||||||
id: one
|
|
||||||
}
|
|
||||||
|
|
||||||
Img {
|
|
||||||
id: two
|
|
||||||
}
|
|
||||||
|
|
||||||
component Img: Image {
|
|
||||||
id: img
|
id: img
|
||||||
|
|
||||||
function update(): void {
|
|
||||||
if (source === root.source) {
|
|
||||||
root.current = this;
|
|
||||||
} else {
|
|
||||||
source = root.source;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
fillMode: Image.PreserveAspectCrop
|
fillMode: Image.PreserveAspectCrop
|
||||||
opacity: 0
|
opacity: 1
|
||||||
retainWhileLoading: true
|
retainWhileLoading: true
|
||||||
scale: Wallpapers.showPreview ? 1 : 0.8
|
source: root.source
|
||||||
sourceClipRect: Qt.rect(Config.background.sourceClipX, Config.background.sourceClipY, Config.background.sourceClipW, Config.background.sourceClipH)
|
sourceClipRect: Wallpapers.recentlyChanged ? null : Qt.rect(Config.background.sourceClipX, Config.background.sourceClipY, Config.background.sourceClipW, Config.background.sourceClipH)
|
||||||
|
sourceSize.height: root.screen.height
|
||||||
|
sourceSize.width: root.screen.width
|
||||||
|
|
||||||
states: State {
|
onSourceChanged: {
|
||||||
name: "visible"
|
if (Wallpapers.recentlyChanged) {
|
||||||
when: root.current === img
|
Config.background.sourceClipH = 0;
|
||||||
|
Config.background.sourceClipW = 0;
|
||||||
PropertyChanges {
|
Config.background.sourceClipY = 0;
|
||||||
img.opacity: 1
|
Config.background.sourceClipX = 0;
|
||||||
img.scale: 1
|
Config.background.zoom = 1.0;
|
||||||
}
|
Config.save();
|
||||||
}
|
|
||||||
transitions: Transition {
|
|
||||||
Anim {
|
|
||||||
duration: Config.background.wallFadeDuration
|
|
||||||
properties: "opacity,scale"
|
|
||||||
target: img
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onStatusChanged: {
|
|
||||||
if (status === Image.Ready) {
|
|
||||||
root.current = this;
|
|
||||||
}
|
}
|
||||||
|
Wallpapers.recentlyChanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ Loader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WallBackground {
|
WallBackground {
|
||||||
|
screen: root.screen
|
||||||
}
|
}
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
|
|||||||
Reference in New Issue
Block a user