fix: control center
Tbh idk what the issue was, but the entire implementation is extremely scuffed and we need to remake it completely
This commit is contained in:
parent
b64421d614
commit
be3da5a114
41 changed files with 341 additions and 252 deletions
|
|
@ -1,6 +1,14 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import "bluetooth"
|
||||||
|
import "network"
|
||||||
|
import "audio"
|
||||||
|
import "appearance"
|
||||||
|
import "taskbar"
|
||||||
|
import "launcher"
|
||||||
|
import "dashboard"
|
||||||
import qs.components
|
import qs.components
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import qs.modules.controlcenter
|
import qs.modules.controlcenter
|
||||||
import Quickshell.Widgets
|
import Quickshell.Widgets
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,18 @@ pragma ComponentBehavior: Bound
|
||||||
import ".."
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import "./sections"
|
import "./sections"
|
||||||
|
import "../../launcher/services"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
|
import qs.components.images
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import qs.utils
|
||||||
|
import Caelestia.Models
|
||||||
|
import Quickshell
|
||||||
|
import Quickshell.Widgets
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
import "../../components"
|
import "../../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
@ -22,7 +25,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Animation duration scale")
|
label: qsTr("Animation duration scale")
|
||||||
value: root.rootPane.animDurationsScale
|
value: rootPane.animDurationsScale
|
||||||
from: 0.1
|
from: 0.1
|
||||||
to: 5.0
|
to: 5.0
|
||||||
decimals: 1
|
decimals: 1
|
||||||
|
|
@ -33,8 +36,8 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.animDurationsScale = newValue;
|
rootPane.animDurationsScale = newValue;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
import "../../components"
|
import "../../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
@ -17,19 +20,19 @@ CollapsibleSection {
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Background enabled")
|
label: qsTr("Background enabled")
|
||||||
checked: root.rootPane.backgroundEnabled
|
checked: rootPane.backgroundEnabled
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.backgroundEnabled = checked;
|
rootPane.backgroundEnabled = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Wallpaper enabled")
|
label: qsTr("Wallpaper enabled")
|
||||||
checked: root.rootPane.wallpaperEnabled
|
checked: rootPane.wallpaperEnabled
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.wallpaperEnabled = checked;
|
rootPane.wallpaperEnabled = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -42,23 +45,23 @@ CollapsibleSection {
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Desktop Clock enabled")
|
label: qsTr("Desktop Clock enabled")
|
||||||
checked: root.rootPane.desktopClockEnabled
|
checked: rootPane.desktopClockEnabled
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.desktopClockEnabled = checked;
|
rootPane.desktopClockEnabled = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SectionContainer {
|
SectionContainer {
|
||||||
id: posContainer
|
id: posContainer
|
||||||
|
|
||||||
readonly property var pos: (root.rootPane.desktopClockPosition || "top-left").split('-')
|
readonly property var pos: (rootPane.desktopClockPosition || "top-left").split('-')
|
||||||
readonly property string currentV: pos[0]
|
readonly property string currentV: pos[0]
|
||||||
readonly property string currentH: pos[1]
|
readonly property string currentH: pos[1]
|
||||||
|
|
||||||
function updateClockPos(v, h) {
|
function updateClockPos(v, h) {
|
||||||
root.rootPane.desktopClockPosition = v + "-" + h;
|
rootPane.desktopClockPosition = v + "-" + h;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
contentSpacing: Appearance.spacing.small
|
contentSpacing: Appearance.spacing.small
|
||||||
|
|
@ -72,7 +75,7 @@ CollapsibleSection {
|
||||||
|
|
||||||
SplitButtonRow {
|
SplitButtonRow {
|
||||||
label: qsTr("Vertical Position")
|
label: qsTr("Vertical Position")
|
||||||
enabled: root.rootPane.desktopClockEnabled
|
enabled: rootPane.desktopClockEnabled
|
||||||
|
|
||||||
menuItems: [
|
menuItems: [
|
||||||
MenuItem {
|
MenuItem {
|
||||||
|
|
@ -108,7 +111,7 @@ CollapsibleSection {
|
||||||
|
|
||||||
SplitButtonRow {
|
SplitButtonRow {
|
||||||
label: qsTr("Horizontal Position")
|
label: qsTr("Horizontal Position")
|
||||||
enabled: root.rootPane.desktopClockEnabled
|
enabled: rootPane.desktopClockEnabled
|
||||||
expandedZ: 99
|
expandedZ: 99
|
||||||
|
|
||||||
menuItems: [
|
menuItems: [
|
||||||
|
|
@ -145,10 +148,10 @@ CollapsibleSection {
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Invert colors")
|
label: qsTr("Invert colors")
|
||||||
checked: root.rootPane.desktopClockInvertColors
|
checked: rootPane.desktopClockInvertColors
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.desktopClockInvertColors = checked;
|
rootPane.desktopClockInvertColors = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -163,10 +166,10 @@ CollapsibleSection {
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Enabled")
|
label: qsTr("Enabled")
|
||||||
checked: root.rootPane.desktopClockShadowEnabled
|
checked: rootPane.desktopClockShadowEnabled
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.desktopClockShadowEnabled = checked;
|
rootPane.desktopClockShadowEnabled = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -177,7 +180,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Opacity")
|
label: qsTr("Opacity")
|
||||||
value: root.rootPane.desktopClockShadowOpacity * 100
|
value: rootPane.desktopClockShadowOpacity * 100
|
||||||
from: 0
|
from: 0
|
||||||
to: 100
|
to: 100
|
||||||
suffix: "%"
|
suffix: "%"
|
||||||
|
|
@ -189,8 +192,8 @@ CollapsibleSection {
|
||||||
parseValueFunction: text => parseInt(text)
|
parseValueFunction: text => parseInt(text)
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.desktopClockShadowOpacity = newValue / 100;
|
rootPane.desktopClockShadowOpacity = newValue / 100;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -202,7 +205,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Blur")
|
label: qsTr("Blur")
|
||||||
value: root.rootPane.desktopClockShadowBlur * 100
|
value: rootPane.desktopClockShadowBlur * 100
|
||||||
from: 0
|
from: 0
|
||||||
to: 100
|
to: 100
|
||||||
suffix: "%"
|
suffix: "%"
|
||||||
|
|
@ -214,8 +217,8 @@ CollapsibleSection {
|
||||||
parseValueFunction: text => parseInt(text)
|
parseValueFunction: text => parseInt(text)
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.desktopClockShadowBlur = newValue / 100;
|
rootPane.desktopClockShadowBlur = newValue / 100;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -232,19 +235,19 @@ CollapsibleSection {
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Enabled")
|
label: qsTr("Enabled")
|
||||||
checked: root.rootPane.desktopClockBackgroundEnabled
|
checked: rootPane.desktopClockBackgroundEnabled
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.desktopClockBackgroundEnabled = checked;
|
rootPane.desktopClockBackgroundEnabled = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Blur enabled")
|
label: qsTr("Blur enabled")
|
||||||
checked: root.rootPane.desktopClockBackgroundBlur
|
checked: rootPane.desktopClockBackgroundBlur
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.desktopClockBackgroundBlur = checked;
|
rootPane.desktopClockBackgroundBlur = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -255,7 +258,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Opacity")
|
label: qsTr("Opacity")
|
||||||
value: root.rootPane.desktopClockBackgroundOpacity * 100
|
value: rootPane.desktopClockBackgroundOpacity * 100
|
||||||
from: 0
|
from: 0
|
||||||
to: 100
|
to: 100
|
||||||
suffix: "%"
|
suffix: "%"
|
||||||
|
|
@ -267,8 +270,8 @@ CollapsibleSection {
|
||||||
parseValueFunction: text => parseInt(text)
|
parseValueFunction: text => parseInt(text)
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.desktopClockBackgroundOpacity = newValue / 100;
|
rootPane.desktopClockBackgroundOpacity = newValue / 100;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -283,19 +286,19 @@ CollapsibleSection {
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Visualiser enabled")
|
label: qsTr("Visualiser enabled")
|
||||||
checked: root.rootPane.visualiserEnabled
|
checked: rootPane.visualiserEnabled
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.visualiserEnabled = checked;
|
rootPane.visualiserEnabled = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Visualiser auto hide")
|
label: qsTr("Visualiser auto hide")
|
||||||
checked: root.rootPane.visualiserAutoHide
|
checked: rootPane.visualiserAutoHide
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.visualiserAutoHide = checked;
|
rootPane.visualiserAutoHide = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -306,7 +309,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Visualiser rounding")
|
label: qsTr("Visualiser rounding")
|
||||||
value: root.rootPane.visualiserRounding
|
value: rootPane.visualiserRounding
|
||||||
from: 0
|
from: 0
|
||||||
to: 10
|
to: 10
|
||||||
stepSize: 1
|
stepSize: 1
|
||||||
|
|
@ -318,8 +321,8 @@ CollapsibleSection {
|
||||||
parseValueFunction: text => parseInt(text)
|
parseValueFunction: text => parseInt(text)
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.visualiserRounding = Math.round(newValue);
|
rootPane.visualiserRounding = Math.round(newValue);
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -331,7 +334,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Visualiser spacing")
|
label: qsTr("Visualiser spacing")
|
||||||
value: root.rootPane.visualiserSpacing
|
value: rootPane.visualiserSpacing
|
||||||
from: 0
|
from: 0
|
||||||
to: 2
|
to: 2
|
||||||
validator: DoubleValidator {
|
validator: DoubleValidator {
|
||||||
|
|
@ -340,8 +343,8 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.visualiserSpacing = newValue;
|
rootPane.visualiserSpacing = newValue;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
import "../../components"
|
import "../../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
@ -22,7 +25,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Border rounding")
|
label: qsTr("Border rounding")
|
||||||
value: root.rootPane.borderRounding
|
value: rootPane.borderRounding
|
||||||
from: 0.1
|
from: 0.1
|
||||||
to: 100
|
to: 100
|
||||||
decimals: 1
|
decimals: 1
|
||||||
|
|
@ -33,8 +36,8 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.borderRounding = newValue;
|
rootPane.borderRounding = newValue;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -46,7 +49,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Border thickness")
|
label: qsTr("Border thickness")
|
||||||
value: root.rootPane.borderThickness
|
value: rootPane.borderThickness
|
||||||
from: 0
|
from: 0
|
||||||
to: 100
|
to: 100
|
||||||
decimals: 1
|
decimals: 1
|
||||||
|
|
@ -57,8 +60,8 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.borderThickness = newValue;
|
rootPane.borderThickness = newValue;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
import "../../../launcher/services"
|
import "../../../launcher/services"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import Quickshell
|
import Quickshell
|
||||||
|
|
@ -22,8 +24,6 @@ CollapsibleSection {
|
||||||
model: Schemes.list
|
model: Schemes.list
|
||||||
|
|
||||||
delegate: StyledRect {
|
delegate: StyledRect {
|
||||||
id: schemeDelegate
|
|
||||||
|
|
||||||
required property var modelData
|
required property var modelData
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
@ -38,8 +38,8 @@ CollapsibleSection {
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
const name = schemeDelegate.modelData.name;
|
const name = modelData.name;
|
||||||
const flavour = schemeDelegate.modelData.flavour;
|
const flavour = modelData.flavour;
|
||||||
const schemeKey = `${name} ${flavour}`;
|
const schemeKey = `${name} ${flavour}`;
|
||||||
|
|
||||||
Schemes.currentScheme = schemeKey;
|
Schemes.currentScheme = schemeKey;
|
||||||
|
|
@ -74,9 +74,9 @@ CollapsibleSection {
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
|
||||||
border.width: 1
|
border.width: 1
|
||||||
border.color: Qt.alpha(`#${schemeDelegate.modelData.colours?.outline}`, 0.5)
|
border.color: Qt.alpha(`#${modelData.colours?.outline}`, 0.5)
|
||||||
|
|
||||||
color: `#${schemeDelegate.modelData.colours?.surface}`
|
color: `#${modelData.colours?.surface}`
|
||||||
radius: Appearance.rounding.full
|
radius: Appearance.rounding.full
|
||||||
implicitWidth: iconPlaceholder.implicitWidth
|
implicitWidth: iconPlaceholder.implicitWidth
|
||||||
implicitHeight: iconPlaceholder.implicitWidth
|
implicitHeight: iconPlaceholder.implicitWidth
|
||||||
|
|
@ -103,7 +103,7 @@ CollapsibleSection {
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
|
|
||||||
implicitWidth: preview.implicitWidth
|
implicitWidth: preview.implicitWidth
|
||||||
color: `#${schemeDelegate.modelData.colours?.primary}`
|
color: `#${modelData.colours?.primary}`
|
||||||
radius: Appearance.rounding.full
|
radius: Appearance.rounding.full
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -114,12 +114,12 @@ CollapsibleSection {
|
||||||
spacing: 0
|
spacing: 0
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
text: schemeDelegate.modelData.flavour ?? ""
|
text: modelData.flavour ?? ""
|
||||||
font.pointSize: Appearance.font.size.normal
|
font.pointSize: Appearance.font.size.normal
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
text: schemeDelegate.modelData.name ?? ""
|
text: modelData.name ?? ""
|
||||||
font.pointSize: Appearance.font.size.small
|
font.pointSize: Appearance.font.size.small
|
||||||
color: Colours.palette.m3outline
|
color: Colours.palette.m3outline
|
||||||
|
|
||||||
|
|
@ -131,7 +131,7 @@ CollapsibleSection {
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
active: schemeDelegate.isCurrent
|
active: isCurrent
|
||||||
|
|
||||||
sourceComponent: MaterialIcon {
|
sourceComponent: MaterialIcon {
|
||||||
text: "check"
|
text: "check"
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
import "../../../launcher/services"
|
import "../../../launcher/services"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import Quickshell
|
import Quickshell
|
||||||
|
|
@ -22,8 +24,6 @@ CollapsibleSection {
|
||||||
model: M3Variants.list
|
model: M3Variants.list
|
||||||
|
|
||||||
delegate: StyledRect {
|
delegate: StyledRect {
|
||||||
id: variantDelegate
|
|
||||||
|
|
||||||
required property var modelData
|
required property var modelData
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
@ -35,7 +35,7 @@ CollapsibleSection {
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
const variant = variantDelegate.modelData.variant;
|
const variant = modelData.variant;
|
||||||
|
|
||||||
Schemes.currentVariant = variant;
|
Schemes.currentVariant = variant;
|
||||||
Quickshell.execDetached(["caelestia", "scheme", "set", "-v", variant]);
|
Quickshell.execDetached(["caelestia", "scheme", "set", "-v", variant]);
|
||||||
|
|
@ -66,19 +66,19 @@ CollapsibleSection {
|
||||||
spacing: Appearance.spacing.normal
|
spacing: Appearance.spacing.normal
|
||||||
|
|
||||||
MaterialIcon {
|
MaterialIcon {
|
||||||
text: variantDelegate.modelData.icon
|
text: modelData.icon
|
||||||
font.pointSize: Appearance.font.size.large
|
font.pointSize: Appearance.font.size.large
|
||||||
fill: variantDelegate.modelData.variant === Schemes.currentVariant ? 1 : 0
|
fill: modelData.variant === Schemes.currentVariant ? 1 : 0
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: variantDelegate.modelData.name
|
text: modelData.name
|
||||||
font.weight: variantDelegate.modelData.variant === Schemes.currentVariant ? 500 : 400
|
font.weight: modelData.variant === Schemes.currentVariant ? 500 : 400
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialIcon {
|
MaterialIcon {
|
||||||
visible: variantDelegate.modelData.variant === Schemes.currentVariant
|
visible: modelData.variant === Schemes.currentVariant
|
||||||
text: "check"
|
text: "check"
|
||||||
color: Colours.palette.m3primary
|
color: Colours.palette.m3primary
|
||||||
font.pointSize: Appearance.font.size.large
|
font.pointSize: Appearance.font.size.large
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
import "../../components"
|
import "../../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
|
@ -45,11 +46,9 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: StyledRect {
|
delegate: StyledRect {
|
||||||
id: sansDelegate
|
|
||||||
|
|
||||||
required property string modelData
|
required property string modelData
|
||||||
required property int index
|
required property int index
|
||||||
readonly property bool isCurrent: modelData === root.rootPane.fontFamilySans
|
readonly property bool isCurrent: modelData === rootPane.fontFamilySans
|
||||||
|
|
||||||
width: ListView.view.width
|
width: ListView.view.width
|
||||||
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
|
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
|
||||||
|
|
@ -59,8 +58,8 @@ CollapsibleSection {
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
root.rootPane.fontFamilySans = sansDelegate.modelData;
|
rootPane.fontFamilySans = modelData;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -75,7 +74,7 @@ CollapsibleSection {
|
||||||
spacing: Appearance.spacing.normal
|
spacing: Appearance.spacing.normal
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
text: sansDelegate.modelData
|
text: modelData
|
||||||
font.pointSize: Appearance.font.size.normal
|
font.pointSize: Appearance.font.size.normal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,7 +84,7 @@ CollapsibleSection {
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
active: sansDelegate.isCurrent
|
active: isCurrent
|
||||||
|
|
||||||
sourceComponent: MaterialIcon {
|
sourceComponent: MaterialIcon {
|
||||||
text: "check"
|
text: "check"
|
||||||
|
|
@ -129,11 +128,9 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: StyledRect {
|
delegate: StyledRect {
|
||||||
id: monoDelegate
|
|
||||||
|
|
||||||
required property string modelData
|
required property string modelData
|
||||||
required property int index
|
required property int index
|
||||||
readonly property bool isCurrent: modelData === root.rootPane.fontFamilyMono
|
readonly property bool isCurrent: modelData === rootPane.fontFamilyMono
|
||||||
|
|
||||||
width: ListView.view.width
|
width: ListView.view.width
|
||||||
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
|
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
|
||||||
|
|
@ -143,8 +140,8 @@ CollapsibleSection {
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
root.rootPane.fontFamilyMono = monoDelegate.modelData;
|
rootPane.fontFamilyMono = modelData;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -159,7 +156,7 @@ CollapsibleSection {
|
||||||
spacing: Appearance.spacing.normal
|
spacing: Appearance.spacing.normal
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
text: monoDelegate.modelData
|
text: modelData
|
||||||
font.pointSize: Appearance.font.size.normal
|
font.pointSize: Appearance.font.size.normal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -169,7 +166,7 @@ CollapsibleSection {
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
active: monoDelegate.isCurrent
|
active: isCurrent
|
||||||
|
|
||||||
sourceComponent: MaterialIcon {
|
sourceComponent: MaterialIcon {
|
||||||
text: "check"
|
text: "check"
|
||||||
|
|
@ -215,11 +212,9 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: StyledRect {
|
delegate: StyledRect {
|
||||||
id: materialDelegate
|
|
||||||
|
|
||||||
required property string modelData
|
required property string modelData
|
||||||
required property int index
|
required property int index
|
||||||
readonly property bool isCurrent: modelData === root.rootPane.fontFamilyMaterial
|
readonly property bool isCurrent: modelData === rootPane.fontFamilyMaterial
|
||||||
|
|
||||||
width: ListView.view.width
|
width: ListView.view.width
|
||||||
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
|
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
|
||||||
|
|
@ -229,8 +224,8 @@ CollapsibleSection {
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
root.rootPane.fontFamilyMaterial = materialDelegate.modelData;
|
rootPane.fontFamilyMaterial = modelData;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -245,7 +240,7 @@ CollapsibleSection {
|
||||||
spacing: Appearance.spacing.normal
|
spacing: Appearance.spacing.normal
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
text: materialDelegate.modelData
|
text: modelData
|
||||||
font.pointSize: Appearance.font.size.normal
|
font.pointSize: Appearance.font.size.normal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -255,7 +250,7 @@ CollapsibleSection {
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
active: materialDelegate.isCurrent
|
active: isCurrent
|
||||||
|
|
||||||
sourceComponent: MaterialIcon {
|
sourceComponent: MaterialIcon {
|
||||||
text: "check"
|
text: "check"
|
||||||
|
|
@ -278,7 +273,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Font size scale")
|
label: qsTr("Font size scale")
|
||||||
value: root.rootPane.fontSizeScale
|
value: rootPane.fontSizeScale
|
||||||
from: 0.7
|
from: 0.7
|
||||||
to: 1.5
|
to: 1.5
|
||||||
decimals: 2
|
decimals: 2
|
||||||
|
|
@ -289,8 +284,8 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.fontSizeScale = newValue;
|
rootPane.fontSizeScale = newValue;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
import "../../components"
|
import "../../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
@ -22,7 +25,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Padding scale")
|
label: qsTr("Padding scale")
|
||||||
value: root.rootPane.paddingScale
|
value: rootPane.paddingScale
|
||||||
from: 0.5
|
from: 0.5
|
||||||
to: 2.0
|
to: 2.0
|
||||||
decimals: 1
|
decimals: 1
|
||||||
|
|
@ -33,8 +36,8 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.paddingScale = newValue;
|
rootPane.paddingScale = newValue;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -46,7 +49,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Rounding scale")
|
label: qsTr("Rounding scale")
|
||||||
value: root.rootPane.roundingScale
|
value: rootPane.roundingScale
|
||||||
from: 0.1
|
from: 0.1
|
||||||
to: 5.0
|
to: 5.0
|
||||||
decimals: 1
|
decimals: 1
|
||||||
|
|
@ -57,8 +60,8 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.roundingScale = newValue;
|
rootPane.roundingScale = newValue;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -70,7 +73,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Spacing scale")
|
label: qsTr("Spacing scale")
|
||||||
value: root.rootPane.spacingScale
|
value: rootPane.spacingScale
|
||||||
from: 0.1
|
from: 0.1
|
||||||
to: 2.0
|
to: 2.0
|
||||||
decimals: 1
|
decimals: 1
|
||||||
|
|
@ -81,8 +84,8 @@ CollapsibleSection {
|
||||||
}
|
}
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.spacingScale = newValue;
|
rootPane.spacingScale = newValue;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
CollapsibleSection {
|
CollapsibleSection {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
import "../../components"
|
import "../../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
@ -17,10 +20,10 @@ CollapsibleSection {
|
||||||
|
|
||||||
SwitchRow {
|
SwitchRow {
|
||||||
label: qsTr("Transparency enabled")
|
label: qsTr("Transparency enabled")
|
||||||
checked: root.rootPane.transparencyEnabled
|
checked: rootPane.transparencyEnabled
|
||||||
onToggled: checked => {
|
onToggled: checked => {
|
||||||
root.rootPane.transparencyEnabled = checked;
|
rootPane.transparencyEnabled = checked;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -31,7 +34,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Transparency base")
|
label: qsTr("Transparency base")
|
||||||
value: root.rootPane.transparencyBase * 100
|
value: rootPane.transparencyBase * 100
|
||||||
from: 0
|
from: 0
|
||||||
to: 100
|
to: 100
|
||||||
suffix: "%"
|
suffix: "%"
|
||||||
|
|
@ -43,8 +46,8 @@ CollapsibleSection {
|
||||||
parseValueFunction: text => parseInt(text)
|
parseValueFunction: text => parseInt(text)
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.transparencyBase = newValue / 100;
|
rootPane.transparencyBase = newValue / 100;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -56,7 +59,7 @@ CollapsibleSection {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
label: qsTr("Transparency layers")
|
label: qsTr("Transparency layers")
|
||||||
value: root.rootPane.transparencyLayers * 100
|
value: rootPane.transparencyLayers * 100
|
||||||
from: 0
|
from: 0
|
||||||
to: 100
|
to: 100
|
||||||
suffix: "%"
|
suffix: "%"
|
||||||
|
|
@ -68,8 +71,8 @@ CollapsibleSection {
|
||||||
parseValueFunction: text => parseInt(text)
|
parseValueFunction: text => parseInt(text)
|
||||||
|
|
||||||
onValueModified: newValue => {
|
onValueModified: newValue => {
|
||||||
root.rootPane.transparencyLayers = newValue / 100;
|
rootPane.transparencyLayers = newValue / 100;
|
||||||
root.rootPane.saveConfig();
|
rootPane.saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,11 @@ import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import Quickshell.Widgets
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
|
@ -86,18 +88,16 @@ Item {
|
||||||
model: Audio.sinks
|
model: Audio.sinks
|
||||||
|
|
||||||
delegate: StyledRect {
|
delegate: StyledRect {
|
||||||
id: outputDeviceDelegate
|
|
||||||
|
|
||||||
required property var modelData
|
required property var modelData
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
color: Audio.sink?.id === outputDeviceDelegate.modelData.id ? Colours.layer(Colours.palette.m3surfaceContainer, 2) : "transparent"
|
color: Audio.sink?.id === modelData.id ? Colours.layer(Colours.palette.m3surfaceContainer, 2) : "transparent"
|
||||||
radius: Appearance.rounding.normal
|
radius: Appearance.rounding.normal
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
Audio.setAudioSink(outputDeviceDelegate.modelData);
|
Audio.setAudioSink(modelData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -112,9 +112,9 @@ Item {
|
||||||
spacing: Appearance.spacing.normal
|
spacing: Appearance.spacing.normal
|
||||||
|
|
||||||
MaterialIcon {
|
MaterialIcon {
|
||||||
text: Audio.sink?.id === outputDeviceDelegate.modelData.id ? "speaker" : "speaker_group"
|
text: Audio.sink?.id === modelData.id ? "speaker" : "speaker_group"
|
||||||
font.pointSize: Appearance.font.size.large
|
font.pointSize: Appearance.font.size.large
|
||||||
fill: Audio.sink?.id === outputDeviceDelegate.modelData.id ? 1 : 0
|
fill: Audio.sink?.id === modelData.id ? 1 : 0
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
|
|
@ -122,8 +122,8 @@ Item {
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
|
|
||||||
text: outputDeviceDelegate.modelData.description || qsTr("Unknown")
|
text: modelData.description || qsTr("Unknown")
|
||||||
font.weight: Audio.sink?.id === outputDeviceDelegate.modelData.id ? 500 : 400
|
font.weight: Audio.sink?.id === modelData.id ? 500 : 400
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -166,18 +166,16 @@ Item {
|
||||||
model: Audio.sources
|
model: Audio.sources
|
||||||
|
|
||||||
delegate: StyledRect {
|
delegate: StyledRect {
|
||||||
id: inputDeviceDelegate
|
|
||||||
|
|
||||||
required property var modelData
|
required property var modelData
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
color: Audio.source?.id === inputDeviceDelegate.modelData.id ? Colours.layer(Colours.palette.m3surfaceContainer, 2) : "transparent"
|
color: Audio.source?.id === modelData.id ? Colours.layer(Colours.palette.m3surfaceContainer, 2) : "transparent"
|
||||||
radius: Appearance.rounding.normal
|
radius: Appearance.rounding.normal
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
Audio.setAudioSource(inputDeviceDelegate.modelData);
|
Audio.setAudioSource(modelData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -194,7 +192,7 @@ Item {
|
||||||
MaterialIcon {
|
MaterialIcon {
|
||||||
text: "mic"
|
text: "mic"
|
||||||
font.pointSize: Appearance.font.size.large
|
font.pointSize: Appearance.font.size.large
|
||||||
fill: Audio.source?.id === inputDeviceDelegate.modelData.id ? 1 : 0
|
fill: Audio.source?.id === modelData.id ? 1 : 0
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
|
|
@ -202,8 +200,8 @@ Item {
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
|
|
||||||
text: inputDeviceDelegate.modelData.description || qsTr("Unknown")
|
text: modelData.description || qsTr("Unknown")
|
||||||
font.weight: Audio.source?.id === inputDeviceDelegate.modelData.id ? 500 : 400
|
font.weight: Audio.source?.id === modelData.id ? 500 : 400
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -493,8 +491,6 @@ Item {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
delegate: ColumnLayout {
|
delegate: ColumnLayout {
|
||||||
id: streamDelegate
|
|
||||||
|
|
||||||
required property var modelData
|
required property var modelData
|
||||||
required property int index
|
required property int index
|
||||||
|
|
||||||
|
|
@ -515,7 +511,7 @@ Item {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
text: Audio.getStreamName(streamDelegate.modelData)
|
text: Audio.getStreamName(modelData)
|
||||||
font.pointSize: Appearance.font.size.normal
|
font.pointSize: Appearance.font.size.normal
|
||||||
font.weight: 500
|
font.weight: 500
|
||||||
}
|
}
|
||||||
|
|
@ -528,27 +524,27 @@ Item {
|
||||||
bottom: 0
|
bottom: 0
|
||||||
top: 100
|
top: 100
|
||||||
}
|
}
|
||||||
enabled: !Audio.getStreamMuted(streamDelegate.modelData)
|
enabled: !Audio.getStreamMuted(modelData)
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
text = Math.round(Audio.getStreamVolume(streamDelegate.modelData) * 100).toString();
|
text = Math.round(Audio.getStreamVolume(modelData) * 100).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
function onAudioChanged() {
|
function onAudioChanged() {
|
||||||
if (!streamVolumeInput.hasFocus && streamDelegate.modelData?.audio) {
|
if (!streamVolumeInput.hasFocus && modelData?.audio) {
|
||||||
streamVolumeInput.text = Math.round(streamDelegate.modelData.audio.volume * 100).toString();
|
streamVolumeInput.text = Math.round(modelData.audio.volume * 100).toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
target: streamDelegate.modelData
|
target: modelData
|
||||||
}
|
}
|
||||||
|
|
||||||
onTextEdited: text => {
|
onTextEdited: text => {
|
||||||
if (hasFocus) {
|
if (hasFocus) {
|
||||||
const val = parseInt(text);
|
const val = parseInt(text);
|
||||||
if (!isNaN(val) && val >= 0 && val <= 100) {
|
if (!isNaN(val) && val >= 0 && val <= 100) {
|
||||||
Audio.setStreamVolume(streamDelegate.modelData, val / 100);
|
Audio.setStreamVolume(modelData, val / 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -556,7 +552,7 @@ Item {
|
||||||
onEditingFinished: {
|
onEditingFinished: {
|
||||||
const val = parseInt(text);
|
const val = parseInt(text);
|
||||||
if (isNaN(val) || val < 0 || val > 100) {
|
if (isNaN(val) || val < 0 || val > 100) {
|
||||||
text = Math.round(Audio.getStreamVolume(streamDelegate.modelData) * 100).toString();
|
text = Math.round(Audio.getStreamVolume(modelData) * 100).toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -565,7 +561,7 @@ Item {
|
||||||
text: "%"
|
text: "%"
|
||||||
color: Colours.palette.m3outline
|
color: Colours.palette.m3outline
|
||||||
font.pointSize: Appearance.font.size.normal
|
font.pointSize: Appearance.font.size.normal
|
||||||
opacity: Audio.getStreamMuted(streamDelegate.modelData) ? 0.5 : 1
|
opacity: Audio.getStreamMuted(modelData) ? 0.5 : 1
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledRect {
|
StyledRect {
|
||||||
|
|
@ -573,11 +569,11 @@ Item {
|
||||||
implicitHeight: streamMuteIcon.implicitHeight + Appearance.padding.normal * 2
|
implicitHeight: streamMuteIcon.implicitHeight + Appearance.padding.normal * 2
|
||||||
|
|
||||||
radius: Appearance.rounding.normal
|
radius: Appearance.rounding.normal
|
||||||
color: Audio.getStreamMuted(streamDelegate.modelData) ? Colours.palette.m3secondary : Colours.palette.m3secondaryContainer
|
color: Audio.getStreamMuted(modelData) ? Colours.palette.m3secondary : Colours.palette.m3secondaryContainer
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
Audio.setStreamMuted(streamDelegate.modelData, !Audio.getStreamMuted(streamDelegate.modelData));
|
Audio.setStreamMuted(modelData, !Audio.getStreamMuted(modelData));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -585,23 +581,21 @@ Item {
|
||||||
id: streamMuteIcon
|
id: streamMuteIcon
|
||||||
|
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: Audio.getStreamMuted(streamDelegate.modelData) ? "volume_off" : "volume_up"
|
text: Audio.getStreamMuted(modelData) ? "volume_off" : "volume_up"
|
||||||
color: Audio.getStreamMuted(streamDelegate.modelData) ? Colours.palette.m3onSecondary : Colours.palette.m3onSecondaryContainer
|
color: Audio.getStreamMuted(modelData) ? Colours.palette.m3onSecondary : Colours.palette.m3onSecondaryContainer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledSlider {
|
StyledSlider {
|
||||||
id: streamSlider
|
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
implicitHeight: Appearance.padding.normal * 3
|
implicitHeight: Appearance.padding.normal * 3
|
||||||
|
|
||||||
value: Audio.getStreamVolume(streamDelegate.modelData)
|
value: Audio.getStreamVolume(modelData)
|
||||||
enabled: !Audio.getStreamMuted(streamDelegate.modelData)
|
enabled: !Audio.getStreamMuted(modelData)
|
||||||
opacity: enabled ? 1 : 0.5
|
opacity: enabled ? 1 : 0.5
|
||||||
onMoved: {
|
onMoved: {
|
||||||
Audio.setStreamVolume(streamDelegate.modelData, value);
|
Audio.setStreamVolume(modelData, value);
|
||||||
if (!streamVolumeInput.hasFocus) {
|
if (!streamVolumeInput.hasFocus) {
|
||||||
streamVolumeInput.text = Math.round(value * 100).toString();
|
streamVolumeInput.text = Math.round(value * 100).toString();
|
||||||
}
|
}
|
||||||
|
|
@ -609,12 +603,12 @@ Item {
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
function onAudioChanged() {
|
function onAudioChanged() {
|
||||||
if (streamDelegate.modelData?.audio) {
|
if (modelData?.audio) {
|
||||||
streamSlider.value = streamDelegate.modelData.audio.volume;
|
value = modelData.audio.volume;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
target: streamDelegate.modelData
|
target: modelData
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,12 @@ pragma ComponentBehavior: Bound
|
||||||
import ".."
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import "."
|
import "."
|
||||||
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
|
import qs.config
|
||||||
|
import Quickshell.Widgets
|
||||||
|
import Quickshell.Bluetooth
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
SplitPaneWithDetails {
|
SplitPaneWithDetails {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import qs.utils
|
import qs.utils
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
pragma ComponentBehavior: Bound
|
import ".."
|
||||||
|
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
@ -68,10 +68,10 @@ StyledRect {
|
||||||
|
|
||||||
// Create binding in Component.onCompleted
|
// Create binding in Component.onCompleted
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
if (button.modelData.state !== undefined && button.modelData.state) {
|
if (modelData.state !== undefined && modelData.state) {
|
||||||
_checked = button.modelData.state;
|
_checked = modelData.state;
|
||||||
} else if (root.rootItem && button.modelData.propertyName) {
|
} else if (root.rootItem && modelData.propertyName) {
|
||||||
const propName = button.modelData.propertyName;
|
const propName = modelData.propertyName;
|
||||||
const rootItem = root.rootItem;
|
const rootItem = root.rootItem;
|
||||||
_checked = Qt.binding(function () {
|
_checked = Qt.binding(function () {
|
||||||
return rootItem[propName] ?? false;
|
return rootItem[propName] ?? false;
|
||||||
|
|
@ -90,9 +90,9 @@ StyledRect {
|
||||||
Layout.preferredWidth: implicitWidth + (stateLayer.pressed ? Appearance.padding.large : internalChecked ? Appearance.padding.smaller : 0)
|
Layout.preferredWidth: implicitWidth + (stateLayer.pressed ? Appearance.padding.large : internalChecked ? Appearance.padding.smaller : 0)
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (button.modelData.onToggled && root.rootItem && button.modelData.propertyName) {
|
if (modelData.onToggled && root.rootItem && modelData.propertyName) {
|
||||||
const currentValue = root.rootItem[button.modelData.propertyName] ?? false;
|
const currentValue = root.rootItem[modelData.propertyName] ?? false;
|
||||||
button.modelData.onToggled(!currentValue);
|
modelData.onToggled(!currentValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
|
import qs.components
|
||||||
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
|
import qs.components.containers
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,11 @@ pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
import qs.components
|
import qs.components
|
||||||
|
import qs.components.controls
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
|
import ".."
|
||||||
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
|
import qs.components.controls
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import qs.components
|
||||||
import qs.components.effects
|
import qs.components.effects
|
||||||
import qs.config
|
import qs.config
|
||||||
import Quickshell.Widgets
|
import Quickshell.Widgets
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,13 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
|
import ".."
|
||||||
|
import qs.components
|
||||||
|
import qs.components.effects
|
||||||
|
import qs.components.containers
|
||||||
|
import qs.config
|
||||||
|
import Quickshell.Widgets
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,11 @@ pragma ComponentBehavior: Bound
|
||||||
import ".."
|
import ".."
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.components.images
|
import qs.components.images
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import Caelestia.Models
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
GridView {
|
GridView {
|
||||||
|
|
@ -28,8 +30,6 @@ GridView {
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: Item {
|
delegate: Item {
|
||||||
id: wpDelegate
|
|
||||||
|
|
||||||
required property var modelData
|
required property var modelData
|
||||||
required property int index
|
required property int index
|
||||||
readonly property bool isCurrent: modelData && modelData.path === Wallpapers.actualCurrent
|
readonly property bool isCurrent: modelData && modelData.path === Wallpapers.actualCurrent
|
||||||
|
|
@ -41,27 +41,27 @@ GridView {
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
Wallpapers.setWallpaper(wpDelegate.modelData.path);
|
Wallpapers.setWallpaper(modelData.path);
|
||||||
}
|
}
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.leftMargin: wpDelegate.itemMargin
|
anchors.leftMargin: itemMargin
|
||||||
anchors.rightMargin: wpDelegate.itemMargin
|
anchors.rightMargin: itemMargin
|
||||||
anchors.topMargin: wpDelegate.itemMargin
|
anchors.topMargin: itemMargin
|
||||||
anchors.bottomMargin: wpDelegate.itemMargin
|
anchors.bottomMargin: itemMargin
|
||||||
radius: wpDelegate.itemRadius
|
radius: itemRadius
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledClippingRect {
|
StyledClippingRect {
|
||||||
id: image
|
id: image
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.leftMargin: wpDelegate.itemMargin
|
anchors.leftMargin: itemMargin
|
||||||
anchors.rightMargin: wpDelegate.itemMargin
|
anchors.rightMargin: itemMargin
|
||||||
anchors.topMargin: wpDelegate.itemMargin
|
anchors.topMargin: itemMargin
|
||||||
anchors.bottomMargin: wpDelegate.itemMargin
|
anchors.bottomMargin: itemMargin
|
||||||
color: Colours.tPalette.m3surfaceContainer
|
color: Colours.tPalette.m3surfaceContainer
|
||||||
radius: wpDelegate.itemRadius
|
radius: itemRadius
|
||||||
antialiasing: true
|
antialiasing: true
|
||||||
layer.enabled: true
|
layer.enabled: true
|
||||||
layer.smooth: true
|
layer.smooth: true
|
||||||
|
|
@ -69,7 +69,7 @@ GridView {
|
||||||
CachingImage {
|
CachingImage {
|
||||||
id: cachingImage
|
id: cachingImage
|
||||||
|
|
||||||
path: wpDelegate.modelData.path
|
path: modelData.path
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
fillMode: Image.PreserveAspectCrop
|
fillMode: Image.PreserveAspectCrop
|
||||||
cache: true
|
cache: true
|
||||||
|
|
@ -93,7 +93,7 @@ GridView {
|
||||||
id: fallbackImage
|
id: fallbackImage
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
source: fallbackTimer.triggered && cachingImage.status !== Image.Ready ? wpDelegate.modelData.path : ""
|
source: fallbackTimer.triggered && cachingImage.status !== Image.Ready ? modelData.path : ""
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
fillMode: Image.PreserveAspectCrop
|
fillMode: Image.PreserveAspectCrop
|
||||||
cache: true
|
cache: true
|
||||||
|
|
@ -169,13 +169,13 @@ GridView {
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.leftMargin: wpDelegate.itemMargin
|
anchors.leftMargin: itemMargin
|
||||||
anchors.rightMargin: wpDelegate.itemMargin
|
anchors.rightMargin: itemMargin
|
||||||
anchors.topMargin: wpDelegate.itemMargin
|
anchors.topMargin: itemMargin
|
||||||
anchors.bottomMargin: wpDelegate.itemMargin
|
anchors.bottomMargin: itemMargin
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
radius: wpDelegate.itemRadius + border.width
|
radius: itemRadius + border.width
|
||||||
border.width: wpDelegate.isCurrent ? 2 : 0
|
border.width: isCurrent ? 2 : 0
|
||||||
border.color: Colours.palette.m3primary
|
border.color: Colours.palette.m3primary
|
||||||
antialiasing: true
|
antialiasing: true
|
||||||
smooth: true
|
smooth: true
|
||||||
|
|
@ -192,7 +192,7 @@ GridView {
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.margins: Appearance.padding.small
|
anchors.margins: Appearance.padding.small
|
||||||
|
|
||||||
visible: wpDelegate.isCurrent
|
visible: isCurrent
|
||||||
text: "check_circle"
|
text: "check_circle"
|
||||||
color: Colours.palette.m3primary
|
color: Colours.palette.m3primary
|
||||||
font.pointSize: Appearance.font.size.large
|
font.pointSize: Appearance.font.size.large
|
||||||
|
|
@ -209,10 +209,10 @@ GridView {
|
||||||
anchors.rightMargin: Appearance.padding.normal + Appearance.spacing.normal / 2
|
anchors.rightMargin: Appearance.padding.normal + Appearance.spacing.normal / 2
|
||||||
anchors.bottomMargin: Appearance.padding.normal
|
anchors.bottomMargin: Appearance.padding.normal
|
||||||
|
|
||||||
text: wpDelegate.modelData.name
|
text: modelData.name
|
||||||
font.pointSize: Appearance.font.size.smaller
|
font.pointSize: Appearance.font.size.smaller
|
||||||
font.weight: 500
|
font.weight: 500
|
||||||
color: wpDelegate.isCurrent ? Colours.palette.m3primary : Colours.palette.m3onSurface
|
color: isCurrent ? Colours.palette.m3primary : Colours.palette.m3onSurface
|
||||||
elide: Text.ElideMiddle
|
elide: Text.ElideMiddle
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
import qs.components.effects
|
import qs.components.effects
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import qs.utils
|
||||||
|
import Quickshell
|
||||||
import Quickshell.Widgets
|
import Quickshell.Widgets
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import Quickshell.Services.UPower
|
import Quickshell.Services.UPower
|
||||||
import qs.components
|
import qs.components
|
||||||
|
import qs.components.controls
|
||||||
import qs.config
|
import qs.config
|
||||||
import qs.services
|
import qs.services
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,10 @@ pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
|
import "../../launcher/services"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
|
|
@ -102,7 +104,7 @@ Item {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
onSelectedAppChanged: {
|
onSelectedAppChanged: {
|
||||||
session.launcher.active = selectedApp;
|
root.session.launcher.active = root.selectedApp;
|
||||||
updateToggleState();
|
updateToggleState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,7 +119,7 @@ Item {
|
||||||
Connections {
|
Connections {
|
||||||
function onActiveChanged() {
|
function onActiveChanged() {
|
||||||
root.selectedApp = root.session.launcher.active;
|
root.selectedApp = root.session.launcher.active;
|
||||||
root.updateToggleState();
|
updateToggleState();
|
||||||
}
|
}
|
||||||
|
|
||||||
target: root.session.launcher
|
target: root.session.launcher
|
||||||
|
|
@ -133,7 +135,7 @@ Item {
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
function onAppsChanged() {
|
function onAppsChanged() {
|
||||||
root.updateFilteredApps();
|
updateFilteredApps();
|
||||||
}
|
}
|
||||||
|
|
||||||
target: allAppsDb
|
target: allAppsDb
|
||||||
|
|
@ -299,12 +301,10 @@ Item {
|
||||||
clip: true
|
clip: true
|
||||||
|
|
||||||
StyledScrollBar.vertical: StyledScrollBar {
|
StyledScrollBar.vertical: StyledScrollBar {
|
||||||
flickable: appsListView
|
flickable: parent
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: StyledRect {
|
delegate: StyledRect {
|
||||||
id: appDelegate
|
|
||||||
|
|
||||||
required property var modelData
|
required property var modelData
|
||||||
|
|
||||||
readonly property bool isSelected: root.selectedApp === modelData
|
readonly property bool isSelected: root.selectedApp === modelData
|
||||||
|
|
@ -330,7 +330,7 @@ Item {
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
root.session.launcher.active = appDelegate.modelData;
|
root.session.launcher.active = modelData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -347,20 +347,20 @@ Item {
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
implicitSize: 32
|
implicitSize: 32
|
||||||
source: {
|
source: {
|
||||||
const entry = appDelegate.modelData.entry;
|
const entry = modelData.entry;
|
||||||
return entry ? Quickshell.iconPath(entry.icon, "image-missing") : "image-missing";
|
return entry ? Quickshell.iconPath(entry.icon, "image-missing") : "image-missing";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: appDelegate.modelData.name || appDelegate.modelData.entry?.name || qsTr("Unknown")
|
text: modelData.name || modelData.entry?.name || qsTr("Unknown")
|
||||||
font.pointSize: Appearance.font.size.normal
|
font.pointSize: Appearance.font.size.normal
|
||||||
}
|
}
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
readonly property bool isHidden: appDelegate.modelData ? Strings.testRegexList(Config.launcher.hiddenApps, appDelegate.modelData.id) : false
|
readonly property bool isHidden: modelData ? Strings.testRegexList(Config.launcher.hiddenApps, modelData.id) : false
|
||||||
readonly property bool isFav: appDelegate.modelData ? Strings.testRegexList(Config.launcher.favouriteApps, appDelegate.modelData.id) : false
|
readonly property bool isFav: modelData ? Strings.testRegexList(Config.launcher.favouriteApps, modelData.id) : false
|
||||||
|
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
|
|
@ -515,7 +515,7 @@ Item {
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: appDetailsLayout
|
id: appDetailsLayout
|
||||||
|
|
||||||
readonly property var displayedApp: parent?.displayedApp ?? null // qmllint disable missing-property
|
readonly property var displayedApp: parent && parent.displayedApp !== undefined ? parent.displayedApp : null
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
spacing: Appearance.spacing.normal
|
spacing: Appearance.spacing.normal
|
||||||
|
|
@ -524,7 +524,7 @@ Item {
|
||||||
Layout.leftMargin: Appearance.padding.large * 2
|
Layout.leftMargin: Appearance.padding.large * 2
|
||||||
Layout.rightMargin: Appearance.padding.large * 2
|
Layout.rightMargin: Appearance.padding.large * 2
|
||||||
Layout.topMargin: Appearance.padding.large * 2
|
Layout.topMargin: Appearance.padding.large * 2
|
||||||
visible: appDetailsLayout.displayedApp === null
|
visible: displayedApp === null
|
||||||
icon: "apps"
|
icon: "apps"
|
||||||
title: qsTr("Launcher Applications")
|
title: qsTr("Launcher Applications")
|
||||||
}
|
}
|
||||||
|
|
@ -534,7 +534,7 @@ Item {
|
||||||
Layout.leftMargin: Appearance.padding.large * 2
|
Layout.leftMargin: Appearance.padding.large * 2
|
||||||
Layout.rightMargin: Appearance.padding.large * 2
|
Layout.rightMargin: Appearance.padding.large * 2
|
||||||
Layout.topMargin: Appearance.padding.large * 2
|
Layout.topMargin: Appearance.padding.large * 2
|
||||||
visible: appDetailsLayout.displayedApp !== null
|
visible: displayedApp !== null
|
||||||
implicitWidth: Math.max(appIconImage.implicitWidth, appTitleText.implicitWidth)
|
implicitWidth: Math.max(appIconImage.implicitWidth, appTitleText.implicitWidth)
|
||||||
implicitHeight: appIconImage.implicitHeight + Appearance.spacing.normal + appTitleText.implicitHeight
|
implicitHeight: appIconImage.implicitHeight + Appearance.spacing.normal + appTitleText.implicitHeight
|
||||||
|
|
||||||
|
|
@ -564,7 +564,7 @@ Item {
|
||||||
id: appTitleText
|
id: appTitleText
|
||||||
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
text: appDetailsLayout.displayedApp.displayedApp ? (appDetailsLayout.displayedApp.displayedApp.displayedApp.name || appDetailsLayout.displayedApp.displayedApp.displayedApp.entry?.name || qsTr("Application Details")) : ""
|
text: displayedApp ? (displayedApp.name || displayedApp.entry?.name || qsTr("Application Details")) : ""
|
||||||
font.pointSize: Appearance.font.size.large
|
font.pointSize: Appearance.font.size.large
|
||||||
font.bold: true
|
font.bold: true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
@ -70,7 +71,7 @@ DeviceList {
|
||||||
id: stateLayer
|
id: stateLayer
|
||||||
|
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
root.session.ethernet.active = ethernetItem.modelData;
|
root.session.ethernet.active = modelData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -87,12 +88,12 @@ DeviceList {
|
||||||
implicitHeight: icon.implicitHeight + Appearance.padding.normal * 2
|
implicitHeight: icon.implicitHeight + Appearance.padding.normal * 2
|
||||||
|
|
||||||
radius: Appearance.rounding.normal
|
radius: Appearance.rounding.normal
|
||||||
color: ethernetItem.modelData.connected ? Colours.palette.m3primaryContainer : Colours.tPalette.m3surfaceContainerHigh
|
color: modelData.connected ? Colours.palette.m3primaryContainer : Colours.tPalette.m3surfaceContainerHigh
|
||||||
|
|
||||||
StyledRect {
|
StyledRect {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: parent.radius
|
radius: parent.radius
|
||||||
color: Qt.alpha(ethernetItem.modelData.connected ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface, stateLayer.pressed ? 0.1 : stateLayer.containsMouse ? 0.08 : 0)
|
color: Qt.alpha(modelData.connected ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface, stateLayer.pressed ? 0.1 : stateLayer.containsMouse ? 0.08 : 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialIcon {
|
MaterialIcon {
|
||||||
|
|
@ -101,8 +102,8 @@ DeviceList {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: "cable"
|
text: "cable"
|
||||||
font.pointSize: Appearance.font.size.large
|
font.pointSize: Appearance.font.size.large
|
||||||
fill: ethernetItem.modelData.connected ? 1 : 0
|
fill: modelData.connected ? 1 : 0
|
||||||
color: ethernetItem.modelData.connected ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
color: modelData.connected ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
||||||
|
|
||||||
Behavior on fill {
|
Behavior on fill {
|
||||||
Anim {}
|
Anim {}
|
||||||
|
|
@ -117,7 +118,7 @@ DeviceList {
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: ethernetItem.modelData.interface || qsTr("Unknown")
|
text: modelData.interface || qsTr("Unknown")
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -127,10 +128,10 @@ DeviceList {
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: ethernetItem.modelData.connected ? qsTr("Connected") : qsTr("Disconnected")
|
text: modelData.connected ? qsTr("Connected") : qsTr("Disconnected")
|
||||||
color: ethernetItem.modelData.connected ? Colours.palette.m3primary : Colours.palette.m3outline
|
color: modelData.connected ? Colours.palette.m3primary : Colours.palette.m3outline
|
||||||
font.pointSize: Appearance.font.size.small
|
font.pointSize: Appearance.font.size.small
|
||||||
font.weight: ethernetItem.modelData.connected ? 500 : 400
|
font.weight: modelData.connected ? 500 : 400
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -143,18 +144,18 @@ DeviceList {
|
||||||
implicitHeight: connectIcon.implicitHeight + Appearance.padding.smaller * 2
|
implicitHeight: connectIcon.implicitHeight + Appearance.padding.smaller * 2
|
||||||
|
|
||||||
radius: Appearance.rounding.full
|
radius: Appearance.rounding.full
|
||||||
color: Qt.alpha(Colours.palette.m3primaryContainer, ethernetItem.modelData.connected ? 1 : 0)
|
color: Qt.alpha(Colours.palette.m3primaryContainer, modelData.connected ? 1 : 0)
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
if (ethernetItem.modelData.connected && ethernetItem.modelData.connection) {
|
if (modelData.connected && modelData.connection) {
|
||||||
Nmcli.disconnectEthernet(ethernetItem.modelData.connection, () => {});
|
Nmcli.disconnectEthernet(modelData.connection, () => {});
|
||||||
} else {
|
} else {
|
||||||
Nmcli.connectEthernet(ethernetItem.modelData.connection || "", ethernetItem.modelData.interface || "", () => {});
|
Nmcli.connectEthernet(modelData.connection || "", modelData.interface || "", () => {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
color: ethernetItem.modelData.connected ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
color: modelData.connected ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialIcon {
|
MaterialIcon {
|
||||||
|
|
@ -162,8 +163,8 @@ DeviceList {
|
||||||
|
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
animate: true
|
animate: true
|
||||||
text: ethernetItem.modelData.connected ? "link_off" : "link"
|
text: modelData.connected ? "link_off" : "link"
|
||||||
color: ethernetItem.modelData.connected ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
color: modelData.connected ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,10 @@ pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
|
import qs.components
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
|
import qs.config
|
||||||
|
import Quickshell.Widgets
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
SplitPaneWithDetails {
|
SplitPaneWithDetails {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ pragma ComponentBehavior: Bound
|
||||||
import ".."
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
|
import qs.components.effects
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,13 @@ import "../components"
|
||||||
import "."
|
import "."
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import qs.utils
|
||||||
|
import Quickshell
|
||||||
|
import Quickshell.Widgets
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,10 @@ import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
import qs.components.effects
|
import qs.components.effects
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import qs.utils
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,13 @@ import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
|
import qs.components.effects
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,11 @@ pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
|
import "."
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import qs.utils
|
import qs.utils
|
||||||
|
|
@ -170,11 +173,11 @@ DeviceDetails {
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
function onActiveChanged() {
|
function onActiveChanged() {
|
||||||
root.updateDeviceDetails();
|
updateDeviceDetails();
|
||||||
}
|
}
|
||||||
function onWirelessDeviceDetailsChanged() {
|
function onWirelessDeviceDetailsChanged() {
|
||||||
if (root.network && root.network.ssid) {
|
if (network && network.ssid) {
|
||||||
const isActive = root.network.active || (Nmcli.active && Nmcli.active.ssid === root.network.ssid);
|
const isActive = network.active || (Nmcli.active && Nmcli.active.ssid === network.ssid);
|
||||||
if (isActive && Nmcli.wirelessDeviceDetails && Nmcli.wirelessDeviceDetails !== null) {
|
if (isActive && Nmcli.wirelessDeviceDetails && Nmcli.wirelessDeviceDetails !== null) {
|
||||||
connectionUpdateTimer.stop();
|
connectionUpdateTimer.stop();
|
||||||
}
|
}
|
||||||
|
|
@ -189,10 +192,10 @@ DeviceDetails {
|
||||||
|
|
||||||
interval: 500
|
interval: 500
|
||||||
repeat: true
|
repeat: true
|
||||||
running: root.network && root.network.ssid
|
running: network && network.ssid
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
if (root.network) {
|
if (network) {
|
||||||
const isActive = root.network.active || (Nmcli.active && Nmcli.active.ssid === root.network.ssid);
|
const isActive = network.active || (Nmcli.active && Nmcli.active.ssid === network.ssid);
|
||||||
if (isActive) {
|
if (isActive) {
|
||||||
if (!Nmcli.wirelessDeviceDetails || Nmcli.wirelessDeviceDetails === null) {
|
if (!Nmcli.wirelessDeviceDetails || Nmcli.wirelessDeviceDetails === null) {
|
||||||
Nmcli.getWirelessDeviceDetails("", () => {});
|
Nmcli.getWirelessDeviceDetails("", () => {});
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,11 @@ pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
|
import "."
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.containers
|
||||||
|
import qs.components.effects
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import qs.utils
|
import qs.utils
|
||||||
|
|
@ -104,20 +107,18 @@ DeviceList {
|
||||||
|
|
||||||
delegate: Component {
|
delegate: Component {
|
||||||
StyledRect {
|
StyledRect {
|
||||||
id: networkDelegate
|
|
||||||
|
|
||||||
required property var modelData
|
required property var modelData
|
||||||
|
|
||||||
width: ListView.view ? ListView.view.width : undefined
|
width: ListView.view ? ListView.view.width : undefined
|
||||||
|
|
||||||
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, root.activeItem === networkDelegate.modelData ? Colours.tPalette.m3surfaceContainer.a : 0)
|
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, root.activeItem === modelData ? Colours.tPalette.m3surfaceContainer.a : 0)
|
||||||
radius: Appearance.rounding.normal
|
radius: Appearance.rounding.normal
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
root.session.network.active = networkDelegate.modelData;
|
root.session.network.active = modelData;
|
||||||
if (networkDelegate.modelData && networkDelegate.modelData.ssid) {
|
if (modelData && modelData.ssid) {
|
||||||
root.checkSavedProfileForNetwork(networkDelegate.modelData.ssid);
|
root.checkSavedProfileForNetwork(modelData.ssid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -137,16 +138,16 @@ DeviceList {
|
||||||
implicitHeight: icon.implicitHeight + Appearance.padding.normal * 2
|
implicitHeight: icon.implicitHeight + Appearance.padding.normal * 2
|
||||||
|
|
||||||
radius: Appearance.rounding.normal
|
radius: Appearance.rounding.normal
|
||||||
color: networkDelegate.modelData.active ? Colours.palette.m3primaryContainer : Colours.tPalette.m3surfaceContainerHigh
|
color: modelData.active ? Colours.palette.m3primaryContainer : Colours.tPalette.m3surfaceContainerHigh
|
||||||
|
|
||||||
MaterialIcon {
|
MaterialIcon {
|
||||||
id: icon
|
id: icon
|
||||||
|
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: Icons.getNetworkIcon(networkDelegate.modelData.strength, networkDelegate.modelData.isSecure)
|
text: Icons.getNetworkIcon(modelData.strength, modelData.isSecure)
|
||||||
font.pointSize: Appearance.font.size.large
|
font.pointSize: Appearance.font.size.large
|
||||||
fill: networkDelegate.modelData.active ? 1 : 0
|
fill: modelData.active ? 1 : 0
|
||||||
color: networkDelegate.modelData.active ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
color: modelData.active ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -160,7 +161,7 @@ DeviceList {
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
|
|
||||||
text: networkDelegate.modelData.ssid || qsTr("Unknown")
|
text: modelData.ssid || qsTr("Unknown")
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
|
@ -170,18 +171,18 @@ DeviceList {
|
||||||
StyledText {
|
StyledText {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: {
|
text: {
|
||||||
if (networkDelegate.modelData.active)
|
if (modelData.active)
|
||||||
return qsTr("Connected");
|
return qsTr("Connected");
|
||||||
if (networkDelegate.modelData.isSecure && networkDelegate.modelData.security && networkDelegate.modelData.security.length > 0) {
|
if (modelData.isSecure && modelData.security && modelData.security.length > 0) {
|
||||||
return networkDelegate.modelData.security;
|
return modelData.security;
|
||||||
}
|
}
|
||||||
if (networkDelegate.modelData.isSecure)
|
if (modelData.isSecure)
|
||||||
return qsTr("Secured");
|
return qsTr("Secured");
|
||||||
return qsTr("Open");
|
return qsTr("Open");
|
||||||
}
|
}
|
||||||
color: networkDelegate.modelData.active ? Colours.palette.m3primary : Colours.palette.m3outline
|
color: modelData.active ? Colours.palette.m3primary : Colours.palette.m3outline
|
||||||
font.pointSize: Appearance.font.size.small
|
font.pointSize: Appearance.font.size.small
|
||||||
font.weight: networkDelegate.modelData.active ? 500 : 400
|
font.weight: modelData.active ? 500 : 400
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -192,14 +193,14 @@ DeviceList {
|
||||||
implicitHeight: connectIcon.implicitHeight + Appearance.padding.smaller * 2
|
implicitHeight: connectIcon.implicitHeight + Appearance.padding.smaller * 2
|
||||||
|
|
||||||
radius: Appearance.rounding.full
|
radius: Appearance.rounding.full
|
||||||
color: Qt.alpha(Colours.palette.m3primaryContainer, networkDelegate.modelData.active ? 1 : 0)
|
color: Qt.alpha(Colours.palette.m3primaryContainer, modelData.active ? 1 : 0)
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
function onClicked(): void {
|
function onClicked(): void {
|
||||||
if (networkDelegate.modelData.active) {
|
if (modelData.active) {
|
||||||
Nmcli.disconnectFromNetwork();
|
Nmcli.disconnectFromNetwork();
|
||||||
} else {
|
} else {
|
||||||
NetworkConnection.handleConnect(networkDelegate.modelData, root.session, null);
|
NetworkConnection.handleConnect(modelData, root.session, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -208,8 +209,8 @@ DeviceList {
|
||||||
id: connectIcon
|
id: connectIcon
|
||||||
|
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: networkDelegate.modelData.active ? "link_off" : "link"
|
text: modelData.active ? "link_off" : "link"
|
||||||
color: networkDelegate.modelData.active ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
color: modelData.active ? Colours.palette.m3onPrimaryContainer : Colours.palette.m3onSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,10 @@ pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
|
import qs.components
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
|
import qs.config
|
||||||
|
import Quickshell.Widgets
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
SplitPaneWithDetails {
|
SplitPaneWithDetails {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
|
import "."
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
|
import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import qs.utils
|
import qs.utils
|
||||||
|
|
@ -71,7 +74,9 @@ Item {
|
||||||
enabled: session.network.showPasswordDialog && !isClosing
|
enabled: session.network.showPasswordDialog && !isClosing
|
||||||
focus: enabled
|
focus: enabled
|
||||||
|
|
||||||
Keys.onEscapePressed: closeDialog()
|
Keys.onEscapePressed: {
|
||||||
|
closeDialog();
|
||||||
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
@ -84,7 +89,7 @@ Item {
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onClicked: root.closeDialog()
|
onClicked: closeDialog()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,7 +135,7 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Keys.onEscapePressed: root.closeDialog()
|
Keys.onEscapePressed: closeDialog()
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: content
|
id: content
|
||||||
|
|
@ -463,7 +468,7 @@ Item {
|
||||||
triggeredOnStart: false
|
triggeredOnStart: false
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
repeatCount++;
|
repeatCount++;
|
||||||
root.checkConnectionStatus();
|
checkConnectionStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
onRunningChanged: {
|
onRunningChanged: {
|
||||||
|
|
@ -484,7 +489,7 @@ Item {
|
||||||
connectionMonitor.stop();
|
connectionMonitor.stop();
|
||||||
connectButton.connecting = false;
|
connectButton.connecting = false;
|
||||||
connectButton.text = qsTr("Connect");
|
connectButton.text = qsTr("Connect");
|
||||||
root.closeDialog();
|
closeDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -493,7 +498,7 @@ Item {
|
||||||
Connections {
|
Connections {
|
||||||
function onActiveChanged() {
|
function onActiveChanged() {
|
||||||
if (root.visible) {
|
if (root.visible) {
|
||||||
root.checkConnectionStatus();
|
checkConnectionStatus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function onConnectionFailed(ssid: string) {
|
function onConnectionFailed(ssid: string) {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import ".."
|
||||||
import "../components"
|
import "../components"
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
|
import qs.components.effects
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import qs.components.containers
|
||||||
import qs.services
|
import qs.services
|
||||||
import qs.config
|
import qs.config
|
||||||
import qs.utils
|
import qs.utils
|
||||||
|
import Quickshell
|
||||||
import Quickshell.Widgets
|
import Quickshell.Widgets
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue