(&mut self, key: KeyEvent)
| 1054 | } |
| 1055 | |
| 1056 | pub fn handle_key(&mut self, key: KeyEvent) { |
| 1057 | if key.modifiers.contains(KeyModifiers::CONTROL) && key.code == KeyCode::Char('c') { |
| 1058 | self.running = false; |
| 1059 | return; |
| 1060 | } |
| 1061 | |
| 1062 | // Splash screen: any key dismisses. |
| 1063 | if self.screen == Screen::Splash { |
| 1064 | self.dismiss_splash(); |
| 1065 | return; |
| 1066 | } |
| 1067 | |
| 1068 | // Modals intercept all keys when open. |
| 1069 | // Confirmation modals take priority over the edit overlay since the |
| 1070 | // edit state remains set while the confirm dialog is shown. |
| 1071 | if self.confirm_setting_set.is_some() { |
| 1072 | self.handle_setting_confirm_set_key(key); |
| 1073 | return; |
| 1074 | } |
| 1075 | if self.confirm_setting_delete.is_some() { |
| 1076 | self.handle_setting_confirm_delete_key(key); |
| 1077 | return; |
| 1078 | } |
| 1079 | if self.sandbox_confirm_setting_set.is_some() { |
| 1080 | self.handle_sandbox_setting_confirm_set_key(key); |
| 1081 | return; |
| 1082 | } |
| 1083 | if self.sandbox_confirm_setting_delete.is_some() { |
| 1084 | self.handle_sandbox_setting_confirm_delete_key(key); |
| 1085 | return; |
| 1086 | } |
| 1087 | if self.sandbox_setting_edit.is_some() { |
| 1088 | self.handle_sandbox_setting_edit_key(key); |
| 1089 | return; |
| 1090 | } |
| 1091 | if self.setting_edit.is_some() { |
| 1092 | self.handle_setting_edit_key(key); |
| 1093 | return; |
| 1094 | } |
| 1095 | if self.create_form.is_some() { |
| 1096 | self.handle_create_form_key(key); |
| 1097 | return; |
| 1098 | } |
| 1099 | if self.create_provider_form.is_some() { |
| 1100 | self.handle_create_provider_key(key); |
| 1101 | return; |
| 1102 | } |
| 1103 | if self.provider_detail.is_some() { |
| 1104 | self.handle_provider_detail_key(key); |
| 1105 | return; |
| 1106 | } |
| 1107 | if self.update_provider_form.is_some() { |
| 1108 | self.handle_update_provider_key(key); |
| 1109 | return; |
| 1110 | } |
| 1111 | |
| 1112 | match self.input_mode { |
| 1113 | InputMode::Command => self.handle_command_key(key), |
no test coverage detected