|
6 | 6 | use crate::header::Header; |
7 | 7 | use crate::platform::get_numa_nodes; |
8 | 8 | use crate::tui::stat::{CpuValueMode, TuiStat}; |
9 | | -use crate::{ProcList, Settings}; |
| 9 | +use crate::{selected_fields, ProcList, Settings}; |
10 | 10 | use ratatui::crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers}; |
11 | 11 | use std::sync::atomic::{AtomicBool, Ordering}; |
12 | 12 | use std::sync::RwLock; |
@@ -123,6 +123,36 @@ pub fn handle_input( |
123 | 123 | stat.cpu_column = stat.cpu_column % 8 + 1; |
124 | 124 | should_update.store(true, Ordering::Relaxed); |
125 | 125 | } |
| 126 | + char!('<') => { |
| 127 | + { |
| 128 | + let mut stat = tui_stat.write().unwrap(); |
| 129 | + let fields = selected_fields(); |
| 130 | + if let Some(pos) = fields.iter().position(|f| f == &stat.sorter) { |
| 131 | + let new_pos = if pos == 0 { fields.len() - 1 } else { pos - 1 }; |
| 132 | + stat.sorter = fields[new_pos].clone(); |
| 133 | + } else { |
| 134 | + stat.sorter = fields[0].clone(); |
| 135 | + } |
| 136 | + } |
| 137 | + |
| 138 | + data.write().unwrap().1 = ProcList::new(settings, &tui_stat.read().unwrap()); |
| 139 | + should_update.store(true, Ordering::Relaxed); |
| 140 | + } |
| 141 | + char!('>') => { |
| 142 | + { |
| 143 | + let mut stat = tui_stat.write().unwrap(); |
| 144 | + let fields = selected_fields(); |
| 145 | + if let Some(pos) = fields.iter().position(|f| f == &stat.sorter) { |
| 146 | + let new_pos = if pos + 1 >= fields.len() { 0 } else { pos + 1 }; |
| 147 | + stat.sorter = fields[new_pos].clone(); |
| 148 | + } else { |
| 149 | + stat.sorter = fields[0].clone(); |
| 150 | + } |
| 151 | + } |
| 152 | + |
| 153 | + data.write().unwrap().1 = ProcList::new(settings, &tui_stat.read().unwrap()); |
| 154 | + should_update.store(true, Ordering::Relaxed); |
| 155 | + } |
126 | 156 | Event::Key(KeyEvent { |
127 | 157 | code: KeyCode::Up, .. |
128 | 158 | }) => { |
|
0 commit comments