(&mut self, key: KeyEvent)
| 1272 | } |
| 1273 | |
| 1274 | fn handle_setting_edit_key(&mut self, key: KeyEvent) { |
| 1275 | let Some(ref mut edit) = self.setting_edit else { |
| 1276 | return; |
| 1277 | }; |
| 1278 | match key.code { |
| 1279 | KeyCode::Esc => { |
| 1280 | self.setting_edit = None; |
| 1281 | } |
| 1282 | KeyCode::Enter => { |
| 1283 | // Validate then open confirmation. |
| 1284 | let idx = edit.index; |
| 1285 | if let Some(entry) = self.global_settings.get(idx) { |
| 1286 | let raw = edit.input.trim(); |
| 1287 | match entry.kind { |
| 1288 | SettingValueKind::Int => { |
| 1289 | if raw.parse::<i64>().is_err() { |
| 1290 | edit.error = Some("expected integer".to_string()); |
| 1291 | return; |
| 1292 | } |
| 1293 | } |
| 1294 | SettingValueKind::Bool => { |
| 1295 | if settings::parse_bool_like(raw).is_none() { |
| 1296 | edit.error = Some("expected true/false/yes/no/1/0".to_string()); |
| 1297 | return; |
| 1298 | } |
| 1299 | } |
| 1300 | SettingValueKind::String => { |
| 1301 | if let Some(setting) = settings::setting_for_key(&entry.key) |
| 1302 | && let Err(allowed) = setting.validate_string_value(raw) |
| 1303 | { |
| 1304 | edit.error = |
| 1305 | Some(format!("expected one of: {}", allowed.join(", "))); |
| 1306 | return; |
| 1307 | } |
| 1308 | } |
| 1309 | } |
| 1310 | } |
| 1311 | edit.error = None; |
| 1312 | self.confirm_setting_set = Some(idx); |
| 1313 | } |
| 1314 | KeyCode::Backspace => { |
| 1315 | edit.input.pop(); |
| 1316 | edit.error = None; |
| 1317 | } |
| 1318 | KeyCode::Char(c) => { |
| 1319 | edit.input.push(c); |
| 1320 | edit.error = None; |
| 1321 | } |
| 1322 | _ => {} |
| 1323 | } |
| 1324 | } |
| 1325 | |
| 1326 | fn handle_setting_confirm_set_key(&mut self, key: KeyEvent) { |
| 1327 | match key.code { |
no test coverage detected