]> uap-core.de Git - note.git/commitdiff
update app notebooklist when it changes main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 7 Jun 2026 18:13:44 +0000 (20:13 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 7 Jun 2026 18:13:44 +0000 (20:13 +0200)
application/src/main.rs
ui-rs-derive/src/lib.rs
ui-rs/src/ui/application.rs

index f0d79e97f73b0ed5ecfd4427cb6233f7a73dff9f..81403b7dd6ea201917c197ee723aae05f7e9cdcb 100644 (file)
@@ -36,7 +36,7 @@ use std::env;
 use entity::collection::{create_notebook_hierarchy, Node};
 use ui_rs::{action, application, ui};
 use ui_rs::ui::*;
-use crate::backend::{Backend, BackendHandle};
+use crate::backend::{Backend, BackendHandle, BroadcastMessage};
 use crate::window::*;
 
 fn main() {
@@ -60,9 +60,11 @@ fn main() {
     };
 
     let (backend_handle, join_handle) = backend.start();
+    let brx = backend_handle.btx.subscribe();
 
     let mut app = App {
         backend: backend_handle,
+        broadcast_rx: brx,
         notebooks: notebooks,
     };
     ui::app_run(&mut app);
@@ -105,6 +107,7 @@ fn init_backend() -> Result<Backend, ErrMsg> {
 
 struct App {
     backend: BackendHandle,
+    broadcast_rx: tokio::sync::broadcast::Receiver<BroadcastMessage>,
     notebooks: Vec<Node>,
 }
 
@@ -128,7 +131,12 @@ impl Application<MainWindow> for App {
 impl App {
     #[action]
     pub fn message(&mut self, _action: &ActionEvent) {
-        println!("app message handler");
+        while let Ok(msg) = self.broadcast_rx.try_recv() {
+            match msg {
+                BroadcastMessage::NotebookStructureUpdate(nodes) => self.notebooks = nodes,
+                _ => {}
+            }
+        }
     }
 }
 
@@ -144,7 +152,7 @@ fn create_toolbar(app: &AppContext<MainWindow>) {
     app.toolbar_add_default("new_note", ToolbarItemPosition::Left);
 
     app.toolbar_appmenu(|menu|{
-        menu.item("New Window").onclick(|f| new_app_window() ).create();
+        menu.item("New Window").onclick(|_| new_app_window() ).create();
     });
 }
 
index fd4d011abc75e673dd5cb2741dbec052ba39ac5c..83d550550b2e814fa013f4d21883d55c44f4589a 100644 (file)
@@ -1,6 +1,6 @@
 use proc_macro::TokenStream;
 use quote::quote;
-use syn::{parse_macro_input, Attribute, Data, DeriveInput, Expr, ExprLit, GenericArgument, ImplItem, ItemImpl, Lit, Meta, PathArguments, Type};
+use syn::{parse_macro_input, Attribute, Data, DeriveInput, Expr, ExprLit, ImplItem, ItemImpl, Lit, Meta, Type};
 
 #[proc_macro_derive(UiModel, attributes(bind))]
 pub fn derive_ui_model(input: TokenStream) -> TokenStream {
index adbec18c5c40e6cb1dbb9a1cf39ff6230fbf8b7c..3791efbd829d58724b2415166dc21d4382a78260 100644 (file)
@@ -41,7 +41,7 @@ pub trait AppActions<T: UiModel + UiActions> {
 pub trait Application<T: UiModel + UiActions>: AppActions<T> {
     fn on_startup(&mut self, app: &AppContext<T>);
 
-    fn on_new_window(&mut self, app: &AppContext<T>) {}
+    fn on_new_window(&mut self, _app: &AppContext<T>) {}
 
     fn on_exit(&mut self, _app: &AppContext<T>) { }
 }