dashboard: dont update pane if not current

This commit is contained in:
2 * r + 2 * t 2025-06-05 16:52:33 +10:00
parent c710ade94e
commit b8a22eaa28
6 changed files with 23 additions and 9 deletions

View file

@ -51,17 +51,25 @@ Item {
currentIndex: tabs.currentIndex
ClippingWrapperRectangle {
id: dash
radius: Appearance.rounding.normal
color: "transparent"
Dash {}
Dash {
shouldUpdate: visible && dash.ListView.isCurrentItem
}
}
ClippingWrapperRectangle {
id: media
radius: Appearance.rounding.normal
color: "transparent"
Media {}
Media {
shouldUpdate: visible && media.ListView.isCurrentItem
}
}
ClippingWrapperRectangle {

View file

@ -7,6 +7,8 @@ import QtQuick.Layouts
GridLayout {
id: root
required property bool shouldUpdate
rowSpacing: Appearance.spacing.normal
columnSpacing: Appearance.spacing.normal
@ -72,6 +74,8 @@ GridLayout {
Media {
id: media
shouldUpdate: root.shouldUpdate
}
}

View file

@ -14,6 +14,8 @@ import QtQuick.Effects
Item {
id: root
required property bool shouldUpdate
property real playerProgress: {
const active = Players.active;
return active?.length ? active.position / active.length : 0;
@ -39,7 +41,7 @@ Item {
}
Timer {
running: root.visible && (Players.active?.isPlaying ?? false)
running: root.shouldUpdate && (Players.active?.isPlaying ?? false)
interval: DashboardConfig.mediaUpdateInterval
triggeredOnStart: true
repeat: true
@ -52,7 +54,7 @@ Item {
stdout: SplitParser {
onRead: data => {
root.cava = data.slice(0, -1).split(";").map(v => parseInt(v, 10));
if (visualiser.visible)
if (root.shouldUpdate)
visualiser.requestPaint();
}
}
@ -535,7 +537,7 @@ Item {
anchors.left: details.right
anchors.leftMargin: Appearance.spacing.large
playing: visible && (Players.active?.isPlaying ?? false)
playing: root.shouldUpdate && (Players.active?.isPlaying ?? false)
speed: BeatDetector.bpm / 300
source: "root:/assets/bongocat.gif"
asynchronous: true

View file

@ -10,6 +10,8 @@ import QtQuick.Shapes
Item {
id: root
required property bool shouldUpdate
property real playerProgress: {
const active = Players.active;
return active?.length ? active.position / active.length : 0;
@ -28,7 +30,7 @@ Item {
}
Timer {
running: root.visible && (Players.active?.isPlaying ?? false)
running: root.shouldUpdate && (Players.active?.isPlaying ?? false)
interval: DashboardConfig.mediaUpdateInterval
triggeredOnStart: true
repeat: true
@ -218,7 +220,7 @@ Item {
anchors.bottomMargin: Appearance.padding.large
anchors.margins: Appearance.padding.large * 2
playing: visible && (Players.active?.isPlaying ?? false)
playing: root.shouldUpdate && (Players.active?.isPlaying ?? false)
speed: BeatDetector.bpm / 300
source: "root:/assets/bongocat.gif"
asynchronous: true

View file

@ -4,7 +4,6 @@ import "root:/config"
import "root:/utils"
import Quickshell
import Quickshell.Io
import Quickshell.Widgets
import QtQuick
Row {

View file

@ -2,7 +2,6 @@ import "root:/widgets"
import "root:/services"
import "root:/config"
import "root:/utils"
import Quickshell.Io
import QtQuick
Item {