Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I928162008cb1ba02e1aa0e7aa971e8326a6a6964
84 lines
2.5 KiB
Rust
84 lines
2.5 KiB
Rust
use ratatui::{
|
|
Frame,
|
|
layout::Rect,
|
|
style::{Color, Modifier, Style},
|
|
text::{Line, Span},
|
|
widgets::{Block, Borders, Paragraph},
|
|
};
|
|
|
|
use crate::app::AppState;
|
|
|
|
pub fn render(f: &mut Frame, state: &AppState, area: Rect) {
|
|
let label_style = Style::default()
|
|
.fg(Color::Yellow)
|
|
.add_modifier(Modifier::BOLD);
|
|
let value_style = Style::default().fg(Color::White);
|
|
let section_style = Style::default()
|
|
.fg(Color::Cyan)
|
|
.add_modifier(Modifier::BOLD);
|
|
|
|
let pad = " ";
|
|
|
|
let lines = vec![
|
|
Line::default(),
|
|
Line::from(Span::styled("--- Connection ---", section_style)),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled("Server URL: ", label_style),
|
|
Span::styled(&state.server_url, value_style),
|
|
]),
|
|
Line::default(),
|
|
Line::from(Span::styled("--- Library ---", section_style)),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled("Total items: ", label_style),
|
|
Span::styled(state.total_media_count.to_string(), value_style),
|
|
]),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled("Page size: ", label_style),
|
|
Span::styled(state.page_size.to_string(), value_style),
|
|
]),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled("Current page: ", label_style),
|
|
Span::styled(
|
|
((state.page_offset / state.page_size) + 1).to_string(),
|
|
value_style,
|
|
),
|
|
]),
|
|
Line::default(),
|
|
Line::from(Span::styled("--- State ---", section_style)),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled("Tags loaded: ", label_style),
|
|
Span::styled(state.tags.len().to_string(), value_style),
|
|
]),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled("All tags: ", label_style),
|
|
Span::styled(state.all_tags.len().to_string(), value_style),
|
|
]),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled("Collections: ", label_style),
|
|
Span::styled(state.collections.len().to_string(), value_style),
|
|
]),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled("Audit entries: ", label_style),
|
|
Span::styled(state.audit_log.len().to_string(), value_style),
|
|
]),
|
|
Line::default(),
|
|
Line::from(Span::styled("--- Shortcuts ---", section_style)),
|
|
Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::raw("Press Esc to return to the library view"),
|
|
]),
|
|
];
|
|
|
|
let settings = Paragraph::new(lines)
|
|
.block(Block::default().borders(Borders::ALL).title(" Settings "));
|
|
|
|
f.render_widget(settings, area);
|
|
}
|