55
66use crate :: header:: Header ;
77use crate :: tui:: stat:: TuiStat ;
8- use crate :: tui:: Tui ;
8+ use crate :: tui:: { handle_input , Tui } ;
99use clap:: { arg, crate_version, value_parser, ArgAction , ArgGroup , ArgMatches , Command } ;
1010use picker:: pickers;
1111use picker:: sysinfo;
1212use ratatui:: crossterm:: event;
13- use ratatui:: crossterm:: event:: { KeyCode , KeyEvent , KeyModifiers } ;
1413use ratatui:: prelude:: Widget ;
1514use std:: sync:: atomic:: { AtomicBool , Ordering } ;
1615use std:: sync:: { Arc , RwLock } ;
@@ -125,6 +124,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
125124 {
126125 let header = Header :: new ( & tui_stat. read ( ) . unwrap ( ) ) ;
127126 let proc_list = ProcList :: new ( & settings) ;
127+ tui_stat. write ( ) . unwrap ( ) . input_error = None ;
128128 * data. write ( ) . unwrap ( ) = ( header, proc_list) ;
129129 should_update. store ( true , Ordering :: Relaxed ) ;
130130 }
@@ -142,82 +142,9 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
142142 } ) ?;
143143 loop {
144144 if let Ok ( true ) = event:: poll ( Duration :: from_millis ( 20 ) ) {
145- // If event available, break this loop
146145 if let Ok ( e) = event:: read ( ) {
147- match e {
148- event:: Event :: Key ( KeyEvent {
149- code : KeyCode :: Char ( 'c' ) ,
150- modifiers : KeyModifiers :: CONTROL ,
151- ..
152- } )
153- | event:: Event :: Key ( KeyEvent {
154- code : KeyCode :: Char ( 'q' ) ,
155- ..
156- } ) => {
157- uucore:: error:: set_exit_code ( 0 ) ;
158- break ;
159- }
160- event:: Event :: Key ( KeyEvent {
161- code : KeyCode :: Char ( 'l' ) ,
162- ..
163- } ) => {
164- let mut stat = tui_stat. write ( ) . unwrap ( ) ;
165- stat. show_load_avg = !stat. show_load_avg ;
166- should_update. store ( true , Ordering :: Relaxed ) ;
167- }
168- event:: Event :: Key ( KeyEvent {
169- code : KeyCode :: Char ( 't' ) ,
170- ..
171- } ) => {
172- let mut stat = tui_stat. write ( ) . unwrap ( ) ;
173- stat. cpu_graph_mode = stat. cpu_graph_mode . next ( ) ;
174- should_update. store ( true , Ordering :: Relaxed ) ;
175- }
176- event:: Event :: Key ( KeyEvent {
177- code : KeyCode :: Char ( '1' ) ,
178- ..
179- } ) => {
180- let mut stat = tui_stat. write ( ) . unwrap ( ) ;
181- stat. cpu_value_mode = stat. cpu_value_mode . next ( ) ;
182-
183- should_update. store ( true , Ordering :: Relaxed ) ;
184- data. write ( ) . unwrap ( ) . 0 . update_cpu ( & stat) ;
185- }
186- event:: Event :: Key ( KeyEvent {
187- code : KeyCode :: Char ( '4' ) ,
188- ..
189- } ) => {
190- let mut stat = tui_stat. write ( ) . unwrap ( ) ;
191- stat. cpu_column = stat. cpu_column % 8 + 1 ;
192- should_update. store ( true , Ordering :: Relaxed ) ;
193- }
194- event:: Event :: Key ( KeyEvent {
195- code : KeyCode :: Char ( 'm' ) ,
196- ..
197- } ) => {
198- let mut stat = tui_stat. write ( ) . unwrap ( ) ;
199- stat. memory_graph_mode = stat. memory_graph_mode . next ( ) ;
200- should_update. store ( true , Ordering :: Relaxed ) ;
201- }
202- event:: Event :: Key ( KeyEvent {
203- code : KeyCode :: Up , ..
204- } ) => {
205- let mut stat = tui_stat. write ( ) . unwrap ( ) ;
206- if stat. list_offset > 0 {
207- stat. list_offset -= 1 ;
208- should_update. store ( true , Ordering :: Relaxed ) ;
209- }
210- }
211- event:: Event :: Key ( KeyEvent {
212- code : KeyCode :: Down ,
213- ..
214- } ) => {
215- let mut stat = tui_stat. write ( ) . unwrap ( ) ;
216- stat. list_offset += 1 ;
217- should_update. store ( true , Ordering :: Relaxed ) ;
218- }
219- event:: Event :: Resize ( _, _) => should_update. store ( true , Ordering :: Relaxed ) ,
220- _ => { }
146+ if handle_input ( e, & tui_stat, & data, & should_update) ? {
147+ break ;
221148 }
222149 }
223150 }
@@ -233,8 +160,6 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
233160 } ) ?;
234161 }
235162 should_update. store ( false , Ordering :: Relaxed ) ;
236-
237- sleep ( Duration :: from_millis ( 20 ) ) ;
238163 }
239164
240165 ratatui:: restore ( ) ;
0 commit comments