From e81900caac1207ef42b8e374dece12cb395122f7 Mon Sep 17 00:00:00 2001 From: Joscha Date: Sat, 5 Mar 2022 15:43:28 +0100 Subject: [PATCH] Restructure and prepare for cove room UI --- cove-tui/src/ui.rs | 11 ++++++----- cove-tui/src/ui/cove.rs | 7 +++++++ cove-tui/src/ui/{room => cove}/users.rs | 8 ++++---- cove-tui/src/ui/rooms.rs | 8 +++----- 4 files changed, 20 insertions(+), 14 deletions(-) create mode 100644 cove-tui/src/ui/cove.rs rename cove-tui/src/ui/{room => cove}/users.rs (94%) diff --git a/cove-tui/src/ui.rs b/cove-tui/src/ui.rs index fceefe1..772b93c 100644 --- a/cove-tui/src/ui.rs +++ b/cove-tui/src/ui.rs @@ -1,3 +1,4 @@ +mod cove; mod input; mod layout; mod overlays; @@ -18,10 +19,9 @@ use tui::layout::{Constraint, Direction, Layout, Rect}; use tui::{Frame, Terminal}; use crate::config::Config; -use crate::cove; -use crate::cove::room::CoveRoom; use crate::ui::overlays::OverlayReaction; +use self::cove::CoveUi; use self::input::EventHandler; use self::overlays::{Overlay, SwitchRoom, SwitchRoomState}; use self::pane::PaneInfo; @@ -35,8 +35,8 @@ pub enum UiEvent { Redraw, } -impl From for UiEvent { - fn from(_: cove::conn::Event) -> Self { +impl From for UiEvent { + fn from(_: crate::cove::conn::Event) -> Self { Self::Redraw } } @@ -49,7 +49,8 @@ enum EventHandleResult { pub struct Ui { config: &'static Config, event_tx: UnboundedSender, - cove_rooms: HashMap, + + cove_rooms: HashMap, rooms_pane: PaneInfo, users_pane: PaneInfo, diff --git a/cove-tui/src/ui/cove.rs b/cove-tui/src/ui/cove.rs new file mode 100644 index 0000000..0338ce8 --- /dev/null +++ b/cove-tui/src/ui/cove.rs @@ -0,0 +1,7 @@ +mod users; + +use crate::cove::room::CoveRoom; + +pub struct CoveUi { + room: CoveRoom, +} diff --git a/cove-tui/src/ui/room/users.rs b/cove-tui/src/ui/cove/users.rs similarity index 94% rename from cove-tui/src/ui/room/users.rs rename to cove-tui/src/ui/cove/users.rs index b2f14f4..1784d62 100644 --- a/cove-tui/src/ui/room/users.rs +++ b/cove-tui/src/ui/cove/users.rs @@ -18,18 +18,18 @@ struct UserInfo { impl From<&Session> for UserInfo { fn from(s: &Session) -> Self { - UserInfo { + Self { nick: s.nick.clone(), identity: s.identity, } } } -pub struct Users { +pub struct CoveUsers { users: Vec, } -impl Users { +impl CoveUsers { pub fn new(present: &Present) -> Self { let mut users: Vec = iter::once(&present.session) .chain(present.others.values()) @@ -40,7 +40,7 @@ impl Users { } } -impl Widget for Users { +impl Widget for CoveUsers { fn render(self, area: Rect, buf: &mut Buffer) { let sessions = self.users.len(); let identities = self diff --git a/cove-tui/src/ui/rooms.rs b/cove-tui/src/ui/rooms.rs index 7d4dfcc..9b34dbd 100644 --- a/cove-tui/src/ui/rooms.rs +++ b/cove-tui/src/ui/rooms.rs @@ -1,13 +1,11 @@ use std::collections::HashMap; -use std::sync::Arc; use tui::buffer::Buffer; use tui::layout::Rect; use tui::text::{Span, Spans}; use tui::widgets::{Paragraph, Widget}; -use crate::cove::room::CoveRoom; - +use super::cove::CoveUi; use super::styles; #[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] @@ -21,10 +19,10 @@ pub struct Rooms { } impl Rooms { - pub fn new(cove_rooms: &HashMap) -> Self { + pub fn new(cove_rooms: &HashMap) -> Self { let mut rooms = cove_rooms .iter() - .map(|(name, _room)| RoomInfo { name: name.clone() }) + .map(|(name, _)| RoomInfo { name: name.clone() }) .collect::>(); rooms.sort(); Self {