mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2025-12-12 11:36:20 +00:00
61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
import Widget from "resource:///com/github/Aylur/ags/widget.js";
|
|
import * as Utils from "resource:///com/github/Aylur/ags/utils.js";
|
|
import FontIcon from "../misc/FontIcon.js";
|
|
import Progress from "../misc/Progress.js";
|
|
import Indicator from "../services/onScreenIndicator.js";
|
|
|
|
export const OnScreenIndicator = ({ height = 300, width = 48 } = {}) =>
|
|
Widget.Box({
|
|
class_name: "indicator",
|
|
css: "padding: 1px;",
|
|
child: Widget.Revealer({
|
|
transition: "slide_left",
|
|
setup: (self) =>
|
|
self.hook(Indicator, (_, value) => {
|
|
self.reveal_child = value > -1;
|
|
}),
|
|
child: Progress({
|
|
width,
|
|
height,
|
|
vertical: true,
|
|
setup: (self) =>
|
|
self.hook(Indicator, (_, value) => self.attribute(value)),
|
|
child: Widget.Stack({
|
|
vpack: "start",
|
|
hpack: "center",
|
|
hexpand: false,
|
|
children: {
|
|
true: Widget.Icon({
|
|
hpack: "center",
|
|
size: width,
|
|
setup: (w) =>
|
|
w.hook(Indicator, (_, _v, name) => (w.icon = name || "")),
|
|
}),
|
|
false: FontIcon({
|
|
hpack: "center",
|
|
hexpand: true,
|
|
css: `font-size: ${width}px;`,
|
|
setup: (w) =>
|
|
w.hook(Indicator, (_, _v, name) => (w.label = name || "")),
|
|
}),
|
|
},
|
|
setup: (self) =>
|
|
self.hook(Indicator, (_, _v, name) => {
|
|
self.shown = `${!!Utils.lookUpIcon(name)}`;
|
|
}),
|
|
}),
|
|
}),
|
|
}),
|
|
});
|
|
|
|
/** @param {number} monitor */
|
|
export default (monitor) =>
|
|
Widget.Window({
|
|
name: `indicator${monitor}`,
|
|
monitor,
|
|
class_name: "indicator",
|
|
layer: "overlay",
|
|
anchor: ["right"],
|
|
child: OnScreenIndicator(),
|
|
});
|