aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/use_flags.rs
diff options
context:
space:
mode:
authorpablu <me@pablu.de>2026-06-02 18:49:48 +0200
committerpablu <me@pablu.de>2026-06-02 18:49:48 +0200
commitb547e6758c635682c94794e5c13070a73c918203 (patch)
tree2ca030a7acbe436a304e6b87dd93deb0b2351909 /src/widgets/use_flags.rs
parentafe649e0efc31fcd33a828e54bd6313cd37f1784 (diff)
wip: refactor architecture
Diffstat (limited to 'src/widgets/use_flags.rs')
-rw-r--r--src/widgets/use_flags.rs43
1 files changed, 43 insertions, 0 deletions
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);
+}