Disable 'Search now' when nothing will be monitored
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
+33
-2
@@ -13,6 +13,7 @@ import (
|
||||
|
||||
"git.stinnesbeck.com/nils/arr-tui/internal/arr"
|
||||
"git.stinnesbeck.com/nils/arr-tui/internal/config"
|
||||
"git.stinnesbeck.com/nils/arr-tui/internal/sonarr"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -310,12 +311,42 @@ func (v *searchView) add(i int) {
|
||||
}
|
||||
form.AddCheckbox(lMonitor, true, nil).AddCheckbox(lSearch, true, nil)
|
||||
|
||||
// Radarr and Sonarr skip unmonitored items in an automatic search, so
|
||||
// "Search now" only makes sense when something will be monitored.
|
||||
monitored := form.GetFormItemByLabel(lMonitor).(*tview.Checkbox)
|
||||
searchNow := form.GetFormItemByLabel(lSearch).(*tview.Checkbox)
|
||||
wantSearch := true
|
||||
searchable := func() bool {
|
||||
if !monitored.IsChecked() {
|
||||
return false
|
||||
}
|
||||
return len(modes) == 0 || modes[selected(form, lEpisode)].value != sonarr.MonitorNone
|
||||
}
|
||||
syncSearch := func() {
|
||||
if searchable() {
|
||||
searchNow.SetDisabled(false)
|
||||
searchNow.SetChecked(wantSearch)
|
||||
return
|
||||
}
|
||||
searchNow.SetDisabled(true)
|
||||
searchNow.SetChecked(false)
|
||||
}
|
||||
searchNow.SetChangedFunc(func(checked bool) {
|
||||
if searchable() {
|
||||
wantSearch = checked
|
||||
}
|
||||
})
|
||||
monitored.SetChangedFunc(func(bool) { syncSearch() })
|
||||
if len(modes) > 0 {
|
||||
form.GetFormItemByLabel(lEpisode).(*tview.DropDown).SetSelectedFunc(func(string, int) { syncSearch() })
|
||||
}
|
||||
|
||||
form.AddButton("Add", func() {
|
||||
choice := addChoice{
|
||||
profileID: profiles[selected(form, lProfile)].ID,
|
||||
folder: folders[selected(form, lFolder)].Path,
|
||||
monitored: form.GetFormItemByLabel(lMonitor).(*tview.Checkbox).IsChecked(),
|
||||
searchNow: form.GetFormItemByLabel(lSearch).(*tview.Checkbox).IsChecked(),
|
||||
monitored: monitored.IsChecked(),
|
||||
searchNow: searchNow.IsChecked() && searchable(),
|
||||
}
|
||||
if len(modes) > 0 {
|
||||
choice.monitor = modes[selected(form, lEpisode)].value
|
||||
|
||||
Reference in New Issue
Block a user