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/arr"
|
||||||
"git.stinnesbeck.com/nils/arr-tui/internal/config"
|
"git.stinnesbeck.com/nils/arr-tui/internal/config"
|
||||||
|
"git.stinnesbeck.com/nils/arr-tui/internal/sonarr"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -310,12 +311,42 @@ func (v *searchView) add(i int) {
|
|||||||
}
|
}
|
||||||
form.AddCheckbox(lMonitor, true, nil).AddCheckbox(lSearch, true, nil)
|
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() {
|
form.AddButton("Add", func() {
|
||||||
choice := addChoice{
|
choice := addChoice{
|
||||||
profileID: profiles[selected(form, lProfile)].ID,
|
profileID: profiles[selected(form, lProfile)].ID,
|
||||||
folder: folders[selected(form, lFolder)].Path,
|
folder: folders[selected(form, lFolder)].Path,
|
||||||
monitored: form.GetFormItemByLabel(lMonitor).(*tview.Checkbox).IsChecked(),
|
monitored: monitored.IsChecked(),
|
||||||
searchNow: form.GetFormItemByLabel(lSearch).(*tview.Checkbox).IsChecked(),
|
searchNow: searchNow.IsChecked() && searchable(),
|
||||||
}
|
}
|
||||||
if len(modes) > 0 {
|
if len(modes) > 0 {
|
||||||
choice.monitor = modes[selected(form, lEpisode)].value
|
choice.monitor = modes[selected(form, lEpisode)].value
|
||||||
|
|||||||
Reference in New Issue
Block a user