From 8d5d3584b1c2142c750023de6e0ae75b39d45c58 Mon Sep 17 00:00:00 2001 From: 2ndbeam <2ndbeam@disroot.org> Date: Mon, 8 Sep 2025 16:18:47 +0300 Subject: [PATCH] Event chaining --- src/main.rs | 11 ++++++++++- ui/app-window.slint | 1 + ui/record.slint | 11 ++++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index d041981..67bf1ce 100644 --- a/src/main.rs +++ b/src/main.rs @@ -48,7 +48,16 @@ fn main() -> Result<(), Box> { let new_event = TimelineEvent { duration: offset - event.start, finished: true, label: event.label, start: event.start }; events.set_row_data(event_id, new_event); - } + } + }); + + ui.on_chain_event({ + let ui_weak = ui.as_weak(); + move |event_name: SharedString| { + let ui = ui_weak.unwrap(); + ui.invoke_stop_event(); + ui.invoke_start_new_event(event_name); + } }); ui.run()?; diff --git a/ui/app-window.slint b/ui/app-window.slint index f69cf0b..a2f44ee 100644 --- a/ui/app-window.slint +++ b/ui/app-window.slint @@ -7,6 +7,7 @@ export component AppWindow inherits Window { callback update-record-visible-time <=> record.update-visible-time; callback start-new-event <=> record.start-new-event; callback stop-event <=> record.stop-event; + callback chain-event <=> record.chain-event; callback update-record-offset(int); update-record-offset(new-offset) => { diff --git a/ui/record.slint b/ui/record.slint index 4757da4..0556e37 100644 --- a/ui/record.slint +++ b/ui/record.slint @@ -4,6 +4,7 @@ import { Timeline } from "timeline.slint"; export component RecordWidget inherits VerticalBox { callback update-visible-time(string); callback start-new-event(string); + callback chain-event(string); callback stop-event; in-out property visible-time <=> tl.visible-time; in-out property updating <=> tl.updating; @@ -29,7 +30,6 @@ export component RecordWidget inherits VerticalBox { } Button { text: in-progress ? "Stop" : "Start"; - colspan: 2; row: 1; clicked => { if in-progress { @@ -40,6 +40,15 @@ export component RecordWidget inherits VerticalBox { in-progress = !in-progress; } } + Button { + text: "Chain"; + enabled: in-progress; + col: 1; + row: 1; + clicked => { + root.chain-event(event-name); + } + } Text { text: "Span:"; font-size: 24px;