From b547e6758c635682c94794e5c13070a73c918203 Mon Sep 17 00:00:00 2001 From: pablu Date: Tue, 2 Jun 2026 18:49:48 +0200 Subject: wip: refactor architecture --- src/widgets/use_flags.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/widgets/use_flags.rs (limited to 'src/widgets/use_flags.rs') diff --git a/src/widgets/use_flags.rs b/src/widgets/use_flags.rs new file mode 100644 index 0000000..8e2ecf4 --- /dev/null +++ b/src/widgets/use_flags.rs @@ -0,0 +1,43 @@ +use ratatui::{ + Frame, + layout::Rect, + style::{Color, Modifier}, + widgets::{Block, Borders, List, ListItem, ListState}, +}; + +use crate::{app::App, gentoo::InstalledPackage, theme::Theme}; + +pub fn render_use_flags(frame: &mut Frame, area: Rect, package: &InstalledPackage) { + let items = package.iuse.iter().map(|x| { + let text_style = if package.enabled_use_flags.contains(&x.name) { + Theme::success() + } else if x.default { + Theme::info() + } else { + Theme::error() + }; + + let text_style = if x.default { + text_style.add_modifier(Modifier::ITALIC) + } else { + text_style + }; + + ListItem::new(x.name.clone()).style(text_style) + }); + let list = List::new(items) + .style(Color::White) + .scroll_padding(1) + .direction(ratatui::widgets::ListDirection::TopToBottom) + .block( + Block::default() + .borders(Borders::ALL) + .title("USE Flags") + .border_style(Theme::block()), + ); + + let mut list_state = ListState::default(); + list_state.select_first(); + + frame.render_stateful_widget(list, area, &mut list_state); +} -- cgit 1.3.1