aboutsummaryrefslogtreecommitdiff
path: root/src/screens/installed_packages.rs
diff options
context:
space:
mode:
authorpablu <me@pablu.de>2026-06-23 10:22:45 +0200
committerpablu <me@pablu.de>2026-06-23 10:22:45 +0200
commitc008c3fb9612670c9ec0500167a0c83b5215892c (patch)
tree7d39bf9fb20fffa8be7bfc9eb5424593fef083ec /src/screens/installed_packages.rs
parentcf5f4ddbe3deed5d422fd1fd203bf0e71efb38f9 (diff)
Add search next / prev back againmaster
Diffstat (limited to 'src/screens/installed_packages.rs')
-rw-r--r--src/screens/installed_packages.rs37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/screens/installed_packages.rs b/src/screens/installed_packages.rs
index b373cb4..24fab50 100644
--- a/src/screens/installed_packages.rs
+++ b/src/screens/installed_packages.rs
@@ -4,17 +4,17 @@ use crate::{
signal::{Event, Signal},
theme::Theme,
widgets::{
- helpers::search_popup_rect, package_metadata::render_package_metadata,
- search_popup::SearchPopup, use_flags::render_use_flags,
+ package_metadata::render_package_metadata, search_popup::SearchPopup,
+ use_flags::render_use_flags,
},
};
use ratatui::{
Frame,
crossterm::event::{KeyCode, KeyModifiers},
layout::{Constraint, Layout, Rect},
- style::{Color, Modifier, Style},
+ style::Color,
text::{Line, Span},
- widgets::{Block, Borders, Clear, List, ListState, Paragraph},
+ widgets::{Block, Borders, List, ListState, Paragraph},
};
#[derive(Debug)]
@@ -114,7 +114,6 @@ impl Screen for InstalledPackagesScreen {
frame,
split_vert[0],
pkg.iuse.iter().collect(),
- // TODO: Dont use clone here if possible
&pkg.enabled_use_flags,
);
render_package_metadata(
@@ -129,19 +128,13 @@ impl Screen for InstalledPackagesScreen {
let text = if self.search_popup.visible {
"(esc) to quit search | (enter) to search".to_string()
+ } else if let Some((current, total)) = self.search_popup.match_status() {
+ format!(
+ "(q) to quit | (j) down | (k) up | (space) switch panel | (/) to search | Search {current}/{total} | (n) next | (N) previous"
+ )
} else {
let main_key_hint =
"(q) to quit | (j) down | (k) up | (f) filter | (/) to search".to_string();
- // if let (Some(current), Some(total)) = (app.current_search_index, app.search_indexes_len)
- // {
- // let _ = write!(
- // main_key_hint,
- // " | (n) for next search | (N) for previous search | Searches found: {} / {}",
- // current + 1,
- // total
- // );
- // }
-
main_key_hint
};
@@ -215,9 +208,17 @@ impl Screen for InstalledPackagesScreen {
KeyCode::Char('k') => self.list_state.select_previous(),
KeyCode::Char('/') => self.search_popup.toggle(),
- // TODO: Reimplement searchable "spaces"
- // KeyCode::Char('n') => todo!("Next search"),
- // KeyCode::Char('N') => todo!("prev search"),
+ KeyCode::Char('n') => {
+ if let Some(index) = self.search_popup.next_match() {
+ self.list_state.select(Some(index))
+ }
+ }
+
+ KeyCode::Char('N') => {
+ if let Some(index) = self.search_popup.previous_match() {
+ self.list_state.select(Some(index))
+ }
+ }
KeyCode::Char('f') => self.cycle_filter(),
_ => {}