170 lines
4.9 KiB
QML
170 lines
4.9 KiB
QML
// Rich persistent mode of Signal Glass. Dismiss hides controls only; the
|
|
// compact bar timer remains until the session ends.
|
|
|
|
import QtQuick
|
|
import qs.config
|
|
import qs.modules.focus
|
|
import qs.services
|
|
import qs.widgets
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
radius: Theme.popoverRadius
|
|
color: Theme.alpha(Theme.bgPopover, 0.88)
|
|
border.width: 1
|
|
border.color: Theme.alpha(Theme.fg, 0.1)
|
|
|
|
PrismEdge {
|
|
anchors.top: parent.top
|
|
anchors.topMargin: 1
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
inset: parent.radius
|
|
}
|
|
|
|
Item {
|
|
id: primary
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.top: parent.top
|
|
anchors.margins: 12
|
|
height: 54
|
|
|
|
Rectangle {
|
|
id: focusMark
|
|
anchors.left: parent.left
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
width: 38
|
|
height: 38
|
|
radius: 19
|
|
border.width: 0
|
|
color: Theme.alpha(Theme.accent, 0.16)
|
|
|
|
Text {
|
|
anchors.centerIn: parent
|
|
text: "\u{F051F}"
|
|
color: Theme.accent
|
|
font.family: Theme.fontMono
|
|
font.pixelSize: 20
|
|
}
|
|
}
|
|
|
|
Column {
|
|
anchors.left: focusMark.right
|
|
anchors.leftMargin: 11
|
|
anchors.right: remaining.left
|
|
anchors.rightMargin: 12
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
spacing: 2
|
|
|
|
Text {
|
|
width: parent.width
|
|
text: FocusSession.workspaceLabel || "Focus session"
|
|
color: Theme.fg
|
|
elide: Text.ElideRight
|
|
font.family: Theme.fontFamily
|
|
font.pixelSize: Theme.fontSizeLarge
|
|
font.weight: Font.DemiBold
|
|
}
|
|
|
|
Text {
|
|
width: parent.width
|
|
text: FocusSession.statusText
|
|
color: FocusSession.paused ? Theme.warn : Theme.fgDim
|
|
elide: Text.ElideRight
|
|
font.family: Theme.fontFamily
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
}
|
|
}
|
|
|
|
Text {
|
|
id: remaining
|
|
anchors.right: closeButton.left
|
|
anchors.rightMargin: 8
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: FocusSession.remainingText
|
|
color: FocusSession.paused ? Theme.warn : Theme.fg
|
|
font.family: Theme.fontFamily
|
|
font.features: Theme.tabularFigures
|
|
font.pixelSize: Theme.fontSizeLarge
|
|
font.weight: Font.DemiBold
|
|
}
|
|
|
|
Rectangle {
|
|
id: closeButton
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
width: 28
|
|
height: 28
|
|
radius: 14
|
|
border.width: 0
|
|
color: closeMouse.containsMouse ? Theme.alpha(Theme.fg, Theme.hoverAlpha) : "transparent"
|
|
|
|
ThemedIcon {
|
|
anchors.centerIn: parent
|
|
size: 14
|
|
icon: "window-close-symbolic"
|
|
tint: Theme.fgDim
|
|
}
|
|
|
|
MouseArea {
|
|
id: closeMouse
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: FocusSession.dismiss()
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.left: parent.left
|
|
anchors.right: closeButton.left
|
|
anchors.top: parent.top
|
|
anchors.bottom: parent.bottom
|
|
cursorShape: Qt.PointingHandCursor
|
|
z: -1
|
|
onClicked: {
|
|
FocusSession.activateWorkspace();
|
|
FocusSession.dismiss();
|
|
}
|
|
}
|
|
}
|
|
|
|
Row {
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
anchors.leftMargin: 12
|
|
anchors.rightMargin: 12
|
|
anchors.bottomMargin: 12
|
|
spacing: Theme.itemSpacing
|
|
|
|
FocusAction {
|
|
width: (parent.width - parent.spacing * 2) / 3
|
|
icon: FocusSession.paused ? "media-playback-start-symbolic" : "media-playback-pause-symbolic"
|
|
label: FocusSession.paused ? "Resume" : "Pause"
|
|
onActivated: FocusSession.pauseOrResume()
|
|
}
|
|
|
|
FocusAction {
|
|
width: (parent.width - parent.spacing * 2) / 3
|
|
icon: "view-grid-symbolic"
|
|
iconFallback: "view-app-grid-symbolic"
|
|
label: "Workspace"
|
|
onActivated: {
|
|
ShellState.openOverview(FocusSession.workspaceId);
|
|
FocusSession.dismiss();
|
|
}
|
|
}
|
|
|
|
FocusAction {
|
|
width: (parent.width - parent.spacing * 2) / 3
|
|
icon: "process-stop-symbolic"
|
|
label: "End"
|
|
destructive: true
|
|
onActivated: FocusSession.end(false)
|
|
}
|
|
}
|
|
}
|