diff --git a/cyberpunk-splash/src/main.rs b/cyberpunk-splash/src/main.rs index 3cc9883..3d84c9d 100644 --- a/cyberpunk-splash/src/main.rs +++ b/cyberpunk-splash/src/main.rs @@ -577,15 +577,44 @@ fn main() { let state = Arc::new(RwLock::new(State::new(Duration::from_secs(5 * 60)))); let title = Arc::new(RwLock::new("".to_owned())); - app.connect_command_line(|_, args| { + app.connect_command_line(|_, _args| { println!("connect_command_line"); 1 }); app.connect_handle_local_options({ let title = title.clone(); + let state = state.clone(); move |_, options| { println!("connect_handle_local_options"); *title.write().unwrap() = options.lookup::("title").unwrap().unwrap(); + let countdown = match options.lookup::("countdown") { + Ok(Some(countdown_str)) => { + let parts = countdown_str.split(':').collect::>(); + let duration = match parts.len() { + 2 => { + let minutes = parts[0].parse::().unwrap(); + let seconds = parts[1].parse::().unwrap(); + Duration::from_secs(minutes * 60 + seconds) + } + 1 => { + let seconds = parts[1].parse::().unwrap(); + Duration::from_secs(seconds) + } + _ => Duration::from_secs(300), + }; + duration + } + _ => Duration::from_secs(300), + }; + match *state.write().unwrap() { + State::Running { + ref mut deadline, .. + } => *deadline = Instant::now() + countdown, + State::Paused { + ref mut time_remaining, + .. + } => *time_remaining = countdown, + } -1 } });