(key string)
| 56 | } |
| 57 | |
| 58 | func (a *App) handleFileBrowserKeys(key string) tea.Cmd { |
| 59 | switch key { |
| 60 | case "up", "k": |
| 61 | a.fileBrowser.MoveUp() |
| 62 | case "down", "j": |
| 63 | a.fileBrowser.MoveDown() |
| 64 | case "pgup": |
| 65 | a.fileBrowser.PageUp(10) |
| 66 | case "pgdn": |
| 67 | a.fileBrowser.PageDown(10) |
| 68 | case "enter": |
| 69 | // In batch mode, pressing enter should open batch tag editor (or navigate directories) |
| 70 | if a.fileBrowser.IsBatchMode() { |
| 71 | if err := a.fileBrowser.Navigate(); err != nil { |
| 72 | a.setError("Navigation failed", err.Error()) |
| 73 | } else { |
| 74 | // If it's a file, treat it as a batch selection and open bulk editor |
| 75 | if file := a.fileBrowser.GetSelectedFile(); file != nil { |
| 76 | // Auto-select the file if not already selected |
| 77 | if !a.fileBrowser.IsSelected(file.Path) { |
| 78 | a.fileBrowser.ToggleSelection() |
| 79 | } |
| 80 | // Open bulk tag editor |
| 81 | a.currentMode = BatchTagEditMode |
| 82 | a.bulkTagEditor.Reset() |
| 83 | a.loadCommonTagsForBulk() |
| 84 | return a.setStatus("Batch tag editor - edit fields with Enter, save with 's'", 3) |
| 85 | } |
| 86 | } |
| 87 | } else { |
| 88 | // Normal mode - navigate or load file |
| 89 | if err := a.fileBrowser.Navigate(); err != nil { |
| 90 | a.setError("Navigation failed", err.Error()) |
| 91 | } else { |
| 92 | if file := a.fileBrowser.GetSelectedFile(); file != nil { |
| 93 | return a.loadFile(file) |
| 94 | } |
| 95 | } |
| 96 | } |
| 97 | case "tab": |
| 98 | if a.currentFile != nil && !a.fileBrowser.IsBatchMode() { |
| 99 | a.currentMode = TagEditMode |
| 100 | } else if a.fileBrowser.IsBatchMode() && len(a.fileBrowser.GetSelectedFiles()) > 0 { |
| 101 | // Enter batch tag edit mode |
| 102 | a.currentMode = BatchTagEditMode |
| 103 | a.bulkTagEditor.Reset() |
| 104 | a.loadCommonTagsForBulk() |
| 105 | return a.setStatus("Batch tag editor - edit fields with Enter, save with 's'", 3) |
| 106 | } |
| 107 | case "/": |
| 108 | a.currentMode = SearchMode |
| 109 | case " ", "space": |
| 110 | if a.fileBrowser.IsBatchMode() { |
| 111 | a.fileBrowser.ToggleSelection() |
| 112 | selectedCount := len(a.fileBrowser.GetSelectedFiles()) |
| 113 | return a.setStatus(fmt.Sprintf("Selected: %d file(s)", selectedCount), 1) |
| 114 | } |
| 115 | case "b": |
no test coverage detected