mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
64 lines
1.8 KiB
QML
64 lines
1.8 KiB
QML
import QtQuick
|
|
import Quickshell
|
|
import qs.Commons
|
|
import qs.Services.Media
|
|
import qs.Services.System
|
|
import qs.Services.UI
|
|
import qs.Widgets
|
|
|
|
// Screen Recording Indicator
|
|
NIconButton {
|
|
id: root
|
|
|
|
property ShellScreen screen
|
|
|
|
icon: ScreenRecorderService.isPending ? "" : "camera-video"
|
|
tooltipText: ScreenRecorderService.isRecording ? I18n.tr("tooltips.click-to-stop-recording") : I18n.tr("tooltips.click-to-start-recording")
|
|
tooltipDirection: BarService.getTooltipDirection()
|
|
density: Settings.data.bar.density
|
|
baseSize: Style.capsuleHeight
|
|
applyUiScale: false
|
|
colorBg: ScreenRecorderService.isRecording ? Color.mPrimary : Style.capsuleColor
|
|
colorFg: ScreenRecorderService.isRecording ? Color.mOnPrimary : Color.mOnSurface
|
|
colorBorder: Color.transparent
|
|
colorBorderHover: Color.transparent
|
|
|
|
function handleClick() {
|
|
if (!ScreenRecorderService.isAvailable) {
|
|
ToastService.showError(I18n.tr("toast.recording.not-installed"), I18n.tr("toast.recording.not-installed-desc"));
|
|
return;
|
|
}
|
|
ScreenRecorderService.toggleRecording();
|
|
}
|
|
|
|
onClicked: handleClick()
|
|
|
|
// Custom spinner shown only during pending start
|
|
NIcon {
|
|
id: pendingSpinner
|
|
icon: "loader-2"
|
|
visible: ScreenRecorderService.isPending
|
|
pointSize: {
|
|
switch (root.density) {
|
|
case "compact":
|
|
return Math.max(1, root.width * 0.65);
|
|
default:
|
|
return Math.max(1, root.width * 0.48);
|
|
}
|
|
}
|
|
applyUiScale: root.applyUiScale
|
|
color: root.enabled && root.hovering ? colorFgHover : colorFg
|
|
anchors.centerIn: parent
|
|
transformOrigin: Item.Center
|
|
|
|
RotationAnimation on rotation {
|
|
running: ScreenRecorderService.isPending
|
|
from: 0
|
|
to: 360
|
|
duration: Style.animationSlow
|
|
loops: Animation.Infinite
|
|
onStopped: pendingSpinner.rotation = 0
|
|
}
|
|
}
|
|
}
|