diff --git a/addingAnime.go b/addingAnime.go new file mode 100644 index 0000000..da0c469 --- /dev/null +++ b/addingAnime.go @@ -0,0 +1,57 @@ +package main + +import ( + "AnimeGUI/anilist" + "fmt" + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/canvas" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/data/binding" + "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/theme" + "fyne.io/fyne/v2/widget" + "image/color" +) + +func setDialogAddAnime() { + animesNames := binding.BindStringList( + &[]string{}, + ) + + listAnimeDisplay := widget.NewListWithData(animesNames, + func() fyne.CanvasObject { + return &widget.Label{Text: "template"} + }, + func(i binding.DataItem, o fyne.CanvasObject) { + o.(*widget.Label).Bind(i.(binding.String)) + }) + listContainer := container.NewPadded(&canvas.Rectangle{FillColor: color.RGBA{R: grayScaleList, G: grayScaleList, B: grayScaleList, A: 255}, CornerRadius: 10}, listAnimeDisplay) + + inputSearch := widget.NewEntry() + inputSearch.SetPlaceHolder("Search") + inputSearch.OnSubmitted = func(s string) { + if s == "" { + return + } + fmt.Println(s) + result := anilist.SearchFromQuery(inputSearch.Text) + if result == nil { + return + } + animesNames.Set([]string{}) + for i := 0; i < len(result); i++ { + name := anilist.AnimeToName(&result[i]) + if name != nil { + animesNames.Append(*name) + } + } + + fmt.Printf("Result: %+v\n", result) + } + buttonSearch := widget.NewButtonWithIcon("", theme.SearchIcon(), func() { inputSearch.OnSubmitted(inputSearch.Text) }) + searchBar := container.NewBorder(nil, nil, nil, buttonSearch, inputSearch) + + dialogAdd := dialog.NewCustom("Add new anime from Anilist", "Cancel", container.NewBorder(searchBar, nil, nil, nil, listContainer), window) + dialogAdd.Resize(fyne.NewSize(800, 550)) + dialogAdd.Show() +} diff --git a/anilist/anilist.go b/anilist/anilist.go index e1f67e6..9bc1ef8 100644 --- a/anilist/anilist.go +++ b/anilist/anilist.go @@ -85,17 +85,17 @@ func FindList(categoryName string) *[]verniy.MediaList { return &UserData[categoryIndex].Entries } -func AnimeToName(anime verniy.MediaList) *string { - if anime.Media == nil { +func AnimeToName(anime *verniy.Media) *string { + if anime == nil { return nil } - if anime.Media.Title == nil { + if anime.Title == nil { return nil } - if anime.Media.Title.English != nil { - return anime.Media.Title.English + if anime.Title.English != nil { + return anime.Title.English } - return anime.Media.Title.Romaji + return anime.Title.Romaji } func FormatDuration(seconds int) string { @@ -129,12 +129,15 @@ func IdToUrl(id int) *url.URL { return u } -func SearchFromQuery(strQuery string) *[]verniy.Media { +func SearchFromQuery(strQuery string) []verniy.Media { + if strQuery == "" { + return nil + } query := verniy.PageParamMedia{Search: strQuery} - result, err := Client.SearchAnime(query, 1, 10) + result, err := Client.SearchAnime(query, 1, 15) if err != nil { log.Error("Error searching anime:", err) return nil } - return &result.Media + return result.Media } diff --git a/main.go b/main.go index 72adfed..bea270b 100644 --- a/main.go +++ b/main.go @@ -32,6 +32,7 @@ var episodeNumber = widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.Text var episodeLastPlayback = widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}) var changedToken bool var mpvPresent bool +var grayScaleList uint8 = 35 func main() { var AppName = "AnimeGUI" @@ -58,7 +59,7 @@ func updateAnimeNames(data binding.ExternalStringList) (first bool) { } tempName := make([]string, 0, 25) for _, anime := range *animeList { - if name := anilist.AnimeToName(anime); name != nil { + if name := anilist.AnimeToName(anime.Media); name != nil { tempName = append(tempName, *name) } else { tempName = append(tempName, "Error name") @@ -192,11 +193,7 @@ func initMainApp() { toolbar := widget.NewToolbar( widget.NewToolbarAction(theme.ContentAddIcon(), func() { - result := anilist.SearchFromQuery(input.Text) - if result == nil { - return - } - fmt.Printf("Result: %+v\n", *result) + setDialogAddAnime() }), widget.NewToolbarSeparator(), widget.NewToolbarAction(theme.ViewRefreshIcon(), func() {}), @@ -223,7 +220,6 @@ func initMainApp() { radiobox, ) - var grayScaleList uint8 = 35 /*if themeVariant == theme.VariantDark { grayScaleList = 220 }*/