From face6f935d7972b93e03fd23450cda1b0408e5ae Mon Sep 17 00:00:00 2001 From: michael-bailey Date: Sun, 27 Sep 2020 08:58:07 +0100 Subject: [PATCH] Create server_view_controller.rs added a server view controller that holds the display and enables events it uses views from other modules to create the ui tree. the cursive user_data store is used to hiold the server --- src/server/ui/server_view_controller.rs | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/server/ui/server_view_controller.rs diff --git a/src/server/ui/server_view_controller.rs b/src/server/ui/server_view_controller.rs new file mode 100644 index 0000000..e94be7e --- /dev/null +++ b/src/server/ui/server_view_controller.rs @@ -0,0 +1,36 @@ +pub struct ServerControlView { + display: Cursive, + + // MARK: - ViewModel stuff + + server_name: String, + server_host: String, + server_owner: String, + + client_list: Vec, + running: String, +} + +impl ServerViewController { + pub fn new(server: Server) { + + let mut v = Self { + display: Cursive::default(), + server_name: server.get_name().to_string(), + server_host: server.get_address().to_string(), + server_owner: server.get_owner().to_string(), + client_list: Vec::new(), + running: "None".to_string() + }; + + // set global shortcuts + v.display.add_global_callback(Event::CtrlChar('q'), |s| s.quit()); + v.display.add_global_callback(Event::CtrlChar('a'), |s| s.add_layer(About::new())); + + // TODO: - this will be tied to the server run function + // v.display.add_global_callback(Event::Refresh, |s| s.user_data::>().unwrap().); + + fn get_display_channel() -> CbSink { + Cursive::default().cb_sink().clone() + } +}