From 0f9492c0da3ac6d391b7b0d32ea2a391b94a18f4 Mon Sep 17 00:00:00 2001 From: pablu Date: Tue, 2 Jun 2026 19:55:57 +0200 Subject: near feature parity with previous architecture --- src/widgets/mod.rs | 1 + src/widgets/package_metadata.rs | 6 +++++- src/widgets/tabs.rs | 24 ++++++++++++++++++++++++ src/widgets/use_flags.rs | 8 ++++++-- 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/widgets/tabs.rs (limited to 'src/widgets') diff --git a/src/widgets/mod.rs b/src/widgets/mod.rs index 66f4b70..7bf8fde 100644 --- a/src/widgets/mod.rs +++ b/src/widgets/mod.rs @@ -1,3 +1,4 @@ pub mod helpers; pub mod package_metadata; +pub mod tabs; pub mod use_flags; diff --git a/src/widgets/package_metadata.rs b/src/widgets/package_metadata.rs index e4f83bb..7377cbc 100644 --- a/src/widgets/package_metadata.rs +++ b/src/widgets/package_metadata.rs @@ -12,7 +12,11 @@ use crate::{ widgets::helpers::{homepage_lines, human_size}, }; -pub fn render_package_metadata(frame: &mut Frame, area: Rect, pkg: &InstalledPackage) { +pub fn render_package_metadata(frame: &mut Frame, area: Rect, pkg: Option<&InstalledPackage>) { + let Some(pkg) = pkg else { + return; + }; + let bold_style = Theme::title(); //Style::default().add_modifier(Modifier::BOLD); let maintainer = Line::from_iter([ Span::styled("Maintainer: ", bold_style), diff --git a/src/widgets/tabs.rs b/src/widgets/tabs.rs new file mode 100644 index 0000000..aca7685 --- /dev/null +++ b/src/widgets/tabs.rs @@ -0,0 +1,24 @@ +use ratatui::{ + Frame, + layout::Rect, + symbols, + widgets::{Block, Borders, Tabs}, +}; + +use crate::{app::ViewState, theme::Theme}; + +pub fn render_tab(frame: &mut Frame, area: Rect, selected_tab: &ViewState) { + let selected_index = match selected_tab { + ViewState::Dashboard => 0, + ViewState::InstalledPackages => 1, + ViewState::AvailablePackages => 2, + }; + + let tabs = Tabs::new(vec!["Dashboard", "Installed", "Browse"]) + .block(Block::default().borders(Borders::ALL).style(Theme::block())) + .highlight_style(Theme::success()) + .select(selected_index) + .divider(symbols::DOT) + .padding(" ", " "); + frame.render_widget(tabs, area); +} diff --git a/src/widgets/use_flags.rs b/src/widgets/use_flags.rs index 8e2ecf4..711a45a 100644 --- a/src/widgets/use_flags.rs +++ b/src/widgets/use_flags.rs @@ -5,9 +5,13 @@ use ratatui::{ widgets::{Block, Borders, List, ListItem, ListState}, }; -use crate::{app::App, gentoo::InstalledPackage, theme::Theme}; +use crate::{gentoo::InstalledPackage, theme::Theme}; + +pub fn render_use_flags(frame: &mut Frame, area: Rect, package: Option<&InstalledPackage>) { + let Some(package) = package else { + return; + }; -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() -- cgit 1.3.1