diff options
Diffstat (limited to 'src/app')
-rw-r--r-- | src/app/data_harvester/processes.rs | 2 | ||||
-rw-r--r-- | src/app/query.rs | 22 | ||||
-rw-r--r-- | src/app/states.rs | 15 |
3 files changed, 28 insertions, 11 deletions
diff --git a/src/app/data_harvester/processes.rs b/src/app/data_harvester/processes.rs index aed45d56..bdd6a609 100644 --- a/src/app/data_harvester/processes.rs +++ b/src/app/data_harvester/processes.rs @@ -24,6 +24,7 @@ pub enum ProcessSorting { TotalRead, TotalWrite, State, + Count, } impl std::fmt::Display for ProcessSorting { @@ -44,6 +45,7 @@ impl std::fmt::Display for ProcessSorting { ProcessName => "Name", Command => "Command", Pid => "PID", + Count => "Count", } ) } diff --git a/src/app/query.rs b/src/app/query.rs index fcff1d0d..25e3f409 100644 --- a/src/app/query.rs +++ b/src/app/query.rs @@ -459,8 +459,10 @@ impl Query { Ok(()) } - pub fn check(&self, process: &ConvertedProcessData) -> bool { - self.query.iter().all(|ok| ok.check(process)) + pub fn check(&self, process: &ConvertedProcessData, is_using_command: bool) -> bool { + self.query + .iter() + .all(|ok| ok.check(process, is_using_command)) } } @@ -497,11 +499,11 @@ impl Or { Ok(()) } - pub fn check(&self, process: &ConvertedProcessData) -> bool { + pub fn check(&self, process: &ConvertedProcessData, is_using_command: bool) -> bool { if let Some(rhs) = &self.rhs { - self.lhs.check(process) || rhs.check(process) + self.lhs.check(process, is_using_command) || rhs.check(process, is_using_command) } else { - self.lhs.check(process) + self.lhs.check(process, is_using_command) } } } @@ -542,11 +544,11 @@ impl And { Ok(()) } - pub fn check(&self, process: &ConvertedProcessData) -> bool { + pub fn check(&self, process: &ConvertedProcessData, is_using_command: bool) -> bool { if let Some(rhs) = &self.rhs { - self.lhs.check(process) && rhs.check(process) + self.lhs.check(process, is_using_command) && rhs.check(process, is_using_command) } else { - self.lhs.check(process) + self.lhs.check(process, is_using_command) } } } @@ -651,7 +653,7 @@ impl Prefix { Ok(()) } - pub fn check(&self, process: &ConvertedProcessData) -> bool { + pub fn check(&self, process: &ConvertedProcessData, is_using_command: bool) -> bool { fn matches_condition(condition: &QueryComparison, lhs: f64, rhs: f64) -> bool { match condition { QueryComparison::Equal => (lhs - rhs).abs() < std::f64::EPSILON, @@ -663,7 +665,7 @@ impl Prefix { } if let Some(and) = &self.or { - and.check(process) + and.check(process, is_using_command) } else if let Some((prefix_type, query_content)) = &self.regex_prefix { if let StringQuery::Regex(r) = query_content { match prefix_type { diff --git a/src/app/states.rs b/src/app/states.rs index 051991c6..a68bb912 100644 --- a/src/app/states.rs +++ b/src/app/states.rs @@ -161,6 +161,7 @@ impl Default for ProcColumn { fn default() -> Self { use ProcessSorting::*; let ordered_columns = vec![ + Count, Pid, ProcessName, Command, @@ -233,6 +234,15 @@ impl Default for ProcColumn { }, ); } + Count => { + column_mapping.insert( + column, + ColumnInfo { + enabled: false, + shortcut: None, + }, + ); + } _ => { column_mapping.insert( column, @@ -369,6 +379,10 @@ impl ProcWidgetState { // TODO: If we add customizable columns, this should pull from config let mut columns = ProcColumn::default(); columns.set_to_sorted_index(&process_sorting_type); + if is_grouped { + columns.toggle(&ProcessSorting::Count); + columns.toggle(&ProcessSorting::Pid); + } ProcWidgetState { process_search_state, @@ -627,7 +641,6 @@ impl MemWidgetState { } } } - pub struct MemState { pub force_update: Option<u64>, pub widget_states: HashMap<u64, MemWidgetState>, |