fixes
This commit is contained in:
62
src/ui/main_screen.rs
Normal file
62
src/ui/main_screen.rs
Normal file
@@ -0,0 +1,62 @@
|
||||
use ratatui::{
|
||||
layout::{Constraint, Direction, Layout, Rect},
|
||||
style::{Color, Modifier, Style},
|
||||
text::{Line, Span},
|
||||
widgets::{Block, Borders, Paragraph},
|
||||
Frame,
|
||||
};
|
||||
use crate::app::App;
|
||||
use super::{chat_list, messages, footer};
|
||||
|
||||
pub fn render(f: &mut Frame, app: &mut App) {
|
||||
let chunks = Layout::default()
|
||||
.direction(Direction::Vertical)
|
||||
.constraints([
|
||||
Constraint::Length(3), // Folders/tabs
|
||||
Constraint::Min(0), // Main content
|
||||
Constraint::Length(1), // Commands footer
|
||||
])
|
||||
.split(f.area());
|
||||
|
||||
render_folders(f, chunks[0], app);
|
||||
|
||||
let main_chunks = Layout::default()
|
||||
.direction(Direction::Horizontal)
|
||||
.constraints([
|
||||
Constraint::Percentage(30), // Chat list
|
||||
Constraint::Percentage(70), // Messages area
|
||||
])
|
||||
.split(chunks[1]);
|
||||
|
||||
chat_list::render(f, main_chunks[0], app);
|
||||
messages::render(f, main_chunks[1], app);
|
||||
footer::render(f, chunks[2], app);
|
||||
}
|
||||
|
||||
fn render_folders(f: &mut Frame, area: Rect, app: &App) {
|
||||
let mut spans = vec![];
|
||||
|
||||
for (i, folder) in app.folders.iter().enumerate() {
|
||||
let style = if i == app.selected_folder {
|
||||
Style::default()
|
||||
.fg(Color::Cyan)
|
||||
.add_modifier(Modifier::BOLD)
|
||||
} else {
|
||||
Style::default().fg(Color::White)
|
||||
};
|
||||
|
||||
spans.push(Span::styled(format!(" {}:{} ", i + 1, folder), style));
|
||||
if i < app.folders.len() - 1 {
|
||||
spans.push(Span::raw("│"));
|
||||
}
|
||||
}
|
||||
|
||||
let folders_line = Line::from(spans);
|
||||
let folders_widget = Paragraph::new(folders_line).block(
|
||||
Block::default()
|
||||
.title(" TTUI ")
|
||||
.borders(Borders::ALL),
|
||||
);
|
||||
|
||||
f.render_widget(folders_widget, area);
|
||||
}
|
||||
Reference in New Issue
Block a user