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() + } +}