Compare commits

..

2 commits

Author SHA1 Message Date
Benjamin Palko
112ed0d6de simplify StyledPopupWindow 2025-09-07 09:34:42 -04:00
Benjamin Palko
fdcaa77581 remove scuffed popup handling 2025-09-07 09:23:51 -04:00
12 changed files with 141 additions and 181 deletions

View file

@ -1,12 +0,0 @@
import qs.config
import QtQuick
import QtQuick.Layouts
Rectangle {
color: Styling.theme.basecontent
opacity: 0.33
Layout.fillHeight: true
Layout.margins: 2
implicitWidth: 0.5
radius: 9999
}

View file

@ -1,102 +1,92 @@
import qs.services
import qs.config
import QtQuick
import Quickshell
import Quickshell.Widgets
import Quickshell.Hyprland
PopupWindow {
id: root
property bool opened: false
property int animationDuration: 200
property alias margins: background.margin
property alias backgroundColor: background.color
property alias radius: background.radius
property alias state: background.state
required property Component content
implicitWidth: background.width
implicitHeight: background.height
color: "transparent"
HyprlandFocusGrab {
id: grab
active: root.visible
windows: [root]
onCleared: {
background.state = "closed";
}
}
function toggle() {
Visibility.togglePopup(this);
background.state = background.state == "opened" ? "closed" : "opened";
}
implicitWidth: background.width
Behavior on implicitWidth {
NumberAnimation {
duration: 100
}
}
implicitHeight: background.height
Behavior on implicitHeight {
NumberAnimation {
duration: 100
}
}
StyledWrapperRectangle {
id: background
Timer {
id: timer
interval: 750
onTriggered: {
if (!root.visible) {
return;
margin: 16
focus: true
onFocusChanged: {
if (!focus) {
grab.active = false;
}
root.toggle();
}
}
WrapperMouseArea {
hoverEnabled: true
onExited: {
timer.start();
Behavior on opacity {
NumberAnimation {
duration: Styling.animations.speed.normal
}
}
onEntered: {
timer.stop();
}
WrapperRectangle {
id: background
opacity: 0
Behavior on opacity {
NumberAnimation {
duration: root.animationDuration
state: "closed"
states: [
State {
name: "closed"
PropertyChanges {
background {
opacity: 0
}
}
}
states: State {
},
State {
name: "opened"
when: root.opened
PropertyChanges {
background {
opacity: 1
}
}
}
]
transitions: [
Transition {
from: ""
to: "opened"
ScriptAction {
script: root.visible = true
transitions: [
Transition {
from: "closed"
to: "opened"
ScriptAction {
script: root.visible = true
}
},
Transition {
from: "opened"
to: "closed"
SequentialAnimation {
PauseAnimation {
duration: root.animationDuration
}
},
Transition {
from: "opened"
to: ""
SequentialAnimation {
PauseAnimation {
duration: root.animationDuration
}
ScriptAction {
script: root.visible = false
}
ScriptAction {
script: root.visible = false
}
}
]
Loader {
active: root.visible
sourceComponent: root.content
}
]
Loader {
active: root.visible
sourceComponent: root.content
}
}
}

View file

@ -28,7 +28,7 @@ StyledWrapperRectangle {
RowLayout {
id: leftbar
spacing: Styling.layout.spacing.lg
spacing: Styling.layout.spacing.base
SystemLogo {
implicitSize: 22
@ -44,7 +44,7 @@ StyledWrapperRectangle {
Layout.alignment: Qt.AlignHCenter
spacing: Styling.layout.spacing.lg
spacing: Styling.layout.spacing.base
Mpris {}
}
@ -54,14 +54,18 @@ StyledWrapperRectangle {
Layout.alignment: Qt.AlignRight
spacing: Styling.layout.spacing.lg
spacing: Styling.layout.spacing.base
Pywal {}
Pipewire {}
StyledLayoutSeparator {}
Caffeine {}
Network {}
Bluetooth {}
Storage {}
Memory {}
@ -70,20 +74,10 @@ StyledWrapperRectangle {
Gpu {}
StyledLayoutSeparator {}
Pywal {}
Caffeine {}
Bluetooth {}
StyledLayoutSeparator {}
Power {}
Clock {}
Power {}
Notifications {}
}
}

View file

@ -6,7 +6,7 @@ StyledIconButton {
id: root
border.width: 2
border.color: Caffeine.enabled ? Styling.theme.secondary : root.hovered ? Styling.theme.primary : Styling.theme.base200
border.color: Caffeine.enabled ? Styling.theme.secondary : root.hovered ? Styling.theme.primary : Styling.theme.base300
text: Styling.lucide.icons.coffee
onClicked: {

View file

@ -1,10 +1,12 @@
import qs.components
import Quickshell
StyledText {
text: ` ${Qt.formatDateTime(clock.date, "hh:mm:ss AP")}`
SystemClock {
id: clock
precision: SystemClock.Seconds
StyledRectangle {
StyledText {
text: ` ${Qt.formatDateTime(clock.date, "hh:mm:ss AP")}`
SystemClock {
id: clock
precision: SystemClock.Seconds
}
}
}

View file

@ -5,17 +5,20 @@ import qs.utils
import QtQuick
import QtQuick.Layouts
RowLayout {
StyledRectangle {
Ref {
service: SystemInfo
}
RowLayout {
LucideIcon {
text: Styling.lucide.icons.memoryStick
}
Ref {
service: SystemInfo
}
StyledText {
text: ` ${(SystemInfo.memPerc * 100).toFixed()}%`
LucideIcon {
text: Styling.lucide.icons.memoryStick
}
StyledText {
text: ` ${(SystemInfo.memPerc * 100).toFixed()}%`
}
}
}

View file

@ -5,48 +5,51 @@ import qs.utils
import QtQuick
import QtQuick.Layouts
RowLayout {
StyledRectangle {
Ref {
service: NetworkService
}
RowLayout {
LucideIcon {
id: icon
text: Styling.lucide.icons.wifiOff
states: [
State {
name: "high"
when: NetworkService.active?.strength > 50
PropertyChanges {
icon {
text: Styling.lucide.icons.wifi
Ref {
service: NetworkService
}
LucideIcon {
id: icon
text: Styling.lucide.icons.wifiOff
states: [
State {
name: "high"
when: NetworkService.active?.strength > 50
PropertyChanges {
icon {
text: Styling.lucide.icons.wifi
}
}
},
State {
name: "medium"
when: NetworkService.active?.strength > 25
PropertyChanges {
icon {
text: Styling.lucide.icons.wifiHigh
}
}
},
State {
name: "low"
when: NetworkService.active?.strength > 0
PropertyChanges {
icon {
text: Styling.lucide.icons.wifiLow
}
}
}
},
State {
name: "medium"
when: NetworkService.active?.strength > 25
PropertyChanges {
icon {
text: Styling.lucide.icons.wifiHigh
}
}
},
State {
name: "low"
when: NetworkService.active?.strength > 0
PropertyChanges {
icon {
text: Styling.lucide.icons.wifiLow
}
}
}
]
}
]
}
StyledText {
id: text
text: ` ${(NetworkService.active?.strength ?? 0).toFixed()}%`
StyledText {
id: text
text: ` ${(NetworkService.active?.strength ?? 0).toFixed()}%`
}
}
}

View file

@ -5,19 +5,22 @@ import qs.utils
import QtQuick
import QtQuick.Layouts
RowLayout {
StyledRectangle {
Ref {
service: SystemInfo
}
RowLayout {
LucideIcon {
text: Styling.lucide.icons.hardDrive
}
Ref {
service: SystemInfo
}
StyledText {
id: text
LucideIcon {
text: Styling.lucide.icons.hardDrive
}
text: ` ${(SystemInfo.storagePerc * 100).toFixed()}%`
StyledText {
id: text
text: ` ${(SystemInfo.storagePerc * 100).toFixed()}%`
}
}
}

View file

@ -1,7 +1,6 @@
pragma ComponentBehavior: Bound
import qs.components
import qs.config
import QtQuick
import QtQuick.Layouts
import Quickshell
@ -10,10 +9,6 @@ import Quickshell.Bluetooth
StyledPopupWindow {
id: root
backgroundColor: Styling.theme.base300
margins: 16
radius: 8
content: ColumnLayout {
spacing: 8
StyledWrapperRectangle {

View file

@ -9,10 +9,6 @@ import QtQuick.Layouts
StyledPopupWindow {
id: root
backgroundColor: Styling.theme.base300
margins: 16
radius: 8
content: GridLayout {
columns: 2

View file

@ -9,10 +9,6 @@ import Quickshell
StyledPopupWindow {
id: window
backgroundColor: Styling.theme.base300
margins: 14
radius: 8
property QsMenuOpener menuOpener
content: ColumnLayout {

View file

@ -1,6 +1,5 @@
pragma Singleton
import qs.components
import Quickshell
Singleton {
@ -9,15 +8,6 @@ Singleton {
property alias pomodoro: properties.pomodoro
property alias powermenu: properties.powermenu
property alias storybook: properties.storybook
property StyledPopupWindow activePopup
function togglePopup(popup: StyledPopupWindow) {
if (activePopup && popup != activePopup) {
activePopup.state = "";
}
popup.state = popup.state == "opened" ? "" : "opened";
activePopup = popup;
}
PersistentProperties {
id: properties