Files
supersonic/ui/dialogs/quicksearch.go
T

49 lines
1.1 KiB
Go

package dialogs
import (
"log"
"fyne.io/fyne/v2"
"github.com/dweymouth/supersonic/backend/mediaprovider"
"github.com/dweymouth/supersonic/ui/util"
)
type QuickSearch struct {
SearchDialog *SearchDialog
mp mediaprovider.MediaProvider
}
func NewQuickSearch(mp mediaprovider.MediaProvider, im util.ImageFetcher) *QuickSearch {
q := &QuickSearch{mp: mp}
q.SearchDialog = NewSearchDialog(im, "Quick Search", "Close", q.onSearched)
return q
}
func (q *QuickSearch) onSearched(query string) []*mediaprovider.SearchResult {
var results []*mediaprovider.SearchResult
if query != "" {
if res, err := q.mp.SearchAll(query, 20); err != nil {
log.Printf("Error searching: %s", err.Error())
} else {
results = res
}
}
return results
}
func (q *QuickSearch) SetOnDismiss(onDismiss func()) {
q.SearchDialog.OnDismiss = onDismiss
}
func (q *QuickSearch) SetOnNavigateTo(onNavigateTo func(mediaprovider.ContentType, string)) {
q.SearchDialog.OnNavigateTo = onNavigateTo
}
func (q *QuickSearch) MinSize() fyne.Size {
return q.SearchDialog.MinSize()
}
func (q *QuickSearch) GetSearchEntry() fyne.Focusable {
return q.SearchDialog.GetSearchEntry()
}