diff options
| author | pablu <me@pablu.de> | 2026-06-02 19:55:57 +0200 |
|---|---|---|
| committer | pablu <me@pablu.de> | 2026-06-02 19:55:57 +0200 |
| commit | 0f9492c0da3ac6d391b7b0d32ea2a391b94a18f4 (patch) | |
| tree | a1fb59a02068ad49ea40d055e3b5e00da3db63a3 /src/widgets | |
| parent | b547e6758c635682c94794e5c13070a73c918203 (diff) | |
near feature parity with previous architecture
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/mod.rs | 1 | ||||
| -rw-r--r-- | src/widgets/package_metadata.rs | 6 | ||||
| -rw-r--r-- | src/widgets/tabs.rs | 24 | ||||
| -rw-r--r-- | src/widgets/use_flags.rs | 8 |
4 files changed, 36 insertions, 3 deletions
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() |
