summaryrefslogtreecommitdiffstats
path: root/src/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/app')
-rw-r--r--src/app/data_harvester/processes.rs2
-rw-r--r--src/app/query.rs22
-rw-r--r--src/app/states.rs15
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>,