mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-27 06:52:50 -05:00
mecha refactoring
This commit is contained in:
49
Common/Anims.qml
Normal file
49
Common/Anims.qml
Normal file
@@ -0,0 +1,49 @@
|
||||
pragma Singleton
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
readonly property int durShort: 160
|
||||
readonly property int durMed: 220
|
||||
readonly property int durLong: 320
|
||||
|
||||
readonly property int slidePx: 100
|
||||
|
||||
readonly property QtObject direction: QtObject {
|
||||
readonly property int fromLeft: 0
|
||||
readonly property int fromRight: 1
|
||||
readonly property int fadeOnly: 2
|
||||
}
|
||||
|
||||
readonly property Component slideInLeft: Transition {
|
||||
NumberAnimation { properties: "x"; from: -Anims.slidePx; to: 0; duration: Anims.durMed; easing.type: Easing.OutCubic }
|
||||
NumberAnimation { properties: "opacity"; from: 0.0; to: 1.0; duration: Anims.durShort }
|
||||
}
|
||||
|
||||
readonly property Component slideOutLeft: Transition {
|
||||
NumberAnimation { properties: "x"; to: -Anims.slidePx; duration: Anims.durShort; easing.type: Easing.InCubic }
|
||||
NumberAnimation { properties: "opacity"; to: 0.0; duration: Anims.durShort }
|
||||
}
|
||||
|
||||
readonly property Component slideInRight: Transition {
|
||||
NumberAnimation { properties: "x"; from: Anims.slidePx; to: 0; duration: Anims.durMed; easing.type: Easing.OutCubic }
|
||||
NumberAnimation { properties: "opacity"; from: 0.0; to: 1.0; duration: Anims.durShort }
|
||||
}
|
||||
|
||||
readonly property Component slideOutRight: Transition {
|
||||
NumberAnimation { properties: "x"; to: Anims.slidePx; duration: Anims.durShort; easing.type: Easing.InCubic }
|
||||
NumberAnimation { properties: "opacity"; to: 0.0; duration: Anims.durShort }
|
||||
}
|
||||
|
||||
readonly property Component fadeIn: Transition {
|
||||
NumberAnimation { properties: "opacity"; from: 0.0; to: 1.0; duration: Anims.durShort; easing.type: Easing.OutCubic }
|
||||
}
|
||||
|
||||
readonly property Component fadeOut: Transition {
|
||||
NumberAnimation { properties: "opacity"; to: 0.0; duration: Anims.durShort; easing.type: Easing.InCubic }
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@ Singleton {
|
||||
property bool showWorkspaceIndex: false
|
||||
property bool showWorkspacePadding: false
|
||||
property string appLauncherViewMode: "list"
|
||||
property string spotlightLauncherViewMode: "list"
|
||||
property string spotlightModalViewMode: "list"
|
||||
property string networkPreference: "auto"
|
||||
property string iconTheme: "System Default"
|
||||
property var availableIconThemes: ["System Default"]
|
||||
@@ -70,7 +70,7 @@ Singleton {
|
||||
showWorkspaceIndex = settings.showWorkspaceIndex !== undefined ? settings.showWorkspaceIndex : false;
|
||||
showWorkspacePadding = settings.showWorkspacePadding !== undefined ? settings.showWorkspacePadding : false;
|
||||
appLauncherViewMode = settings.appLauncherViewMode !== undefined ? settings.appLauncherViewMode : "list";
|
||||
spotlightLauncherViewMode = settings.spotlightLauncherViewMode !== undefined ? settings.spotlightLauncherViewMode : "list";
|
||||
spotlightModalViewMode = settings.spotlightModalViewMode !== undefined ? settings.spotlightModalViewMode : "list";
|
||||
networkPreference = settings.networkPreference !== undefined ? settings.networkPreference : "auto";
|
||||
iconTheme = settings.iconTheme !== undefined ? settings.iconTheme : "System Default";
|
||||
useOSLogo = settings.useOSLogo !== undefined ? settings.useOSLogo : false;
|
||||
@@ -112,7 +112,7 @@ Singleton {
|
||||
"showWorkspaceIndex": showWorkspaceIndex,
|
||||
"showWorkspacePadding": showWorkspacePadding,
|
||||
"appLauncherViewMode": appLauncherViewMode,
|
||||
"spotlightLauncherViewMode": spotlightLauncherViewMode,
|
||||
"spotlightModalViewMode": spotlightModalViewMode,
|
||||
"networkPreference": networkPreference,
|
||||
"iconTheme": iconTheme,
|
||||
"useOSLogo": useOSLogo,
|
||||
@@ -277,8 +277,8 @@ Singleton {
|
||||
saveSettings();
|
||||
}
|
||||
|
||||
function setSpotlightLauncherViewMode(mode) {
|
||||
spotlightLauncherViewMode = mode;
|
||||
function setSpotlightModalViewMode(mode) {
|
||||
spotlightModalViewMode = mode;
|
||||
saveSettings();
|
||||
}
|
||||
|
||||
|
||||
46
Common/SlideFadeBehavior.qml
Normal file
46
Common/SlideFadeBehavior.qml
Normal file
@@ -0,0 +1,46 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
|
||||
Item {
|
||||
id: root
|
||||
// attach to target
|
||||
required property Item target
|
||||
property int direction: Anims.direction.fadeOnly
|
||||
|
||||
// call these
|
||||
function show() { _apply(true) }
|
||||
function hide() { _apply(false) }
|
||||
|
||||
function _apply(showing) {
|
||||
const off = Anims.slidePx
|
||||
let fromX = 0
|
||||
let toX = 0
|
||||
switch(direction) {
|
||||
case Anims.direction.fromLeft: fromX = -off; toX = 0; break
|
||||
case Anims.direction.fromRight: fromX = off; toX = 0; break
|
||||
default: fromX = 0; toX = 0;
|
||||
}
|
||||
|
||||
if (showing) {
|
||||
target.x = fromX
|
||||
target.opacity = 0
|
||||
target.visible = true
|
||||
animX.from = fromX; animX.to = toX
|
||||
animO.from = 0; animO.to = 1
|
||||
} else {
|
||||
animX.from = target.x; animX.to = (direction === Anims.direction.fromLeft ? -off :
|
||||
direction === Anims.direction.fromRight ? off : 0)
|
||||
animO.from = target.opacity; animO.to = 0
|
||||
}
|
||||
seq.restart()
|
||||
}
|
||||
|
||||
SequentialAnimation {
|
||||
id: seq
|
||||
ParallelAnimation {
|
||||
NumberAnimation { id: animX; target: root.target; property: "x"; duration: Anims.durMed; easing.type: Easing.OutCubic }
|
||||
NumberAnimation { id: animO; target: root.target; property: "opacity"; duration: Anims.durShort }
|
||||
}
|
||||
ScriptAction { script: if (root.target.opacity === 0) root.target.visible = false }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user