ui: Mass layout refactor
- Replaced TabWidget mode selection with ComboBox - Moved Timeline out of record/review widgets - Added TimelineState struct - Set slint style to cosmic
This commit is contained in:
parent
365f77056e
commit
1a1f6dde83
7 changed files with 190 additions and 160 deletions
|
|
@ -1,61 +1,104 @@
|
|||
import { TabWidget } from "std-widgets.slint";
|
||||
import { TabWidget, VerticalBox, ComboBox } from "std-widgets.slint";
|
||||
import { RecordWidget } from "record.slint";
|
||||
import { ReviewWidget } from "review.slint";
|
||||
import { TimelineEvent } from "timeline.slint";
|
||||
import { TimelineEvent, Timeline, TimelineState } from "timeline.slint";
|
||||
import { Const } from "global.slint";
|
||||
export { Palette } from "theme.slint";
|
||||
|
||||
export component AppWindow inherits Window {
|
||||
callback update-record-offset(int);
|
||||
callback save-log;
|
||||
callback new-day-started();
|
||||
|
||||
update-record-offset(new-offset) => {
|
||||
record-state.offset = new-offset;
|
||||
}
|
||||
|
||||
preferred-width: 800px;
|
||||
preferred-height: 600px;
|
||||
max-width: 2147483647px;
|
||||
|
||||
callback start-new-event <=> record.start-new-event;
|
||||
callback stop-event <=> record.stop-event;
|
||||
callback chain-event <=> record.chain-event;
|
||||
callback new-day-started <=> record.new-day-started;
|
||||
callback get-previous-event <=> record.get-previous-event;
|
||||
callback update-record-offset(int);
|
||||
callback update-window-size(length, length);
|
||||
callback save-log;
|
||||
|
||||
callback fetch-log <=> review.fetch-log;
|
||||
|
||||
callback update-visible-time(bool, string);
|
||||
|
||||
update-record-offset(new-offset) => {
|
||||
record.offset = new-offset;
|
||||
}
|
||||
|
||||
update-window-size(width, height) => {
|
||||
self.width = width;
|
||||
self.height = height;
|
||||
}
|
||||
|
||||
in-out property record-events <=> record.events;
|
||||
in-out property record-offset <=> record.offset;
|
||||
in-out property record-visible-time <=> record.visible-time;
|
||||
in-out property in-progress <=> record.in-progress;
|
||||
in property previous-event-name <=> record.previous-event-name;
|
||||
|
||||
in-out property review-events <=> review.events;
|
||||
in-out property review-offset <=> review.offset;
|
||||
in-out property review-visible-time <=> review.visible-time;
|
||||
in-out property record-state <=> record.state;
|
||||
|
||||
in-out property review-state <=> review.state;
|
||||
|
||||
in-out property in-progress <=> record.in-progress;
|
||||
|
||||
in property previous-event-name <=> record.previous-event-name;
|
||||
|
||||
property<[string]> combo-spans: ["1 Hour", "4 Hours", "8 Hours", "24 Hours"];
|
||||
property<bool> minimized: false;
|
||||
property<bool> in-record-mode: true;
|
||||
|
||||
init => {
|
||||
record-state.visible-time = 3600;
|
||||
review-state.visible-time = 3600;
|
||||
}
|
||||
|
||||
Timer {
|
||||
interval: 1s;
|
||||
running: true;
|
||||
triggered => {
|
||||
if (record-state.offset >= Const.max-offset) {
|
||||
root.new-day-started();
|
||||
record-state.offset = 0;
|
||||
return;
|
||||
}
|
||||
record-state.offset += 1;
|
||||
}
|
||||
}
|
||||
|
||||
title: "Aliveline";
|
||||
TabWidget {
|
||||
Tab {
|
||||
title: "Record";
|
||||
record := RecordWidget {
|
||||
combo-spans: combo-spans;
|
||||
update-visible-time(time) => {
|
||||
root.update-visible-time(true, time);
|
||||
}
|
||||
VerticalLayout {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
tl := Timeline {
|
||||
preferred-height: 100%;
|
||||
state: in-record-mode ? record-state : review-state;
|
||||
clicked => {
|
||||
minimized = !minimized;
|
||||
}
|
||||
}
|
||||
Tab {
|
||||
title: "Review";
|
||||
review := ReviewWidget {
|
||||
combo-spans: combo-spans;
|
||||
update-visible-time(time) => {
|
||||
root.update-visible-time(false, time)
|
||||
spacing: minimized ? 0 : 8px;
|
||||
record := RecordWidget {
|
||||
combo-spans: combo-spans;
|
||||
update-visible-time(time) => {
|
||||
root.update-visible-time(true, time);
|
||||
}
|
||||
minimized: minimized || !in-record-mode;
|
||||
}
|
||||
review := ReviewWidget {
|
||||
combo-spans: combo-spans;
|
||||
update-visible-time(time) => {
|
||||
root.update-visible-time(false, time)
|
||||
}
|
||||
minimized: minimized;
|
||||
is-active: !in-record-mode;
|
||||
}
|
||||
if !minimized: HorizontalLayout {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
padding-bottom: 8px;
|
||||
spacing: 16px;
|
||||
Text {
|
||||
text: "Mode:";
|
||||
font-size: 24px;
|
||||
horizontal-alignment: right;
|
||||
}
|
||||
ComboBox {
|
||||
model: ["Record", "Review"];
|
||||
current-index: in-record-mode ? 0 : 1;
|
||||
selected(current-value) => {
|
||||
in-record-mode = current-value == "Record";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue