mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-05 20:40:09 -08:00
44 lines
1.8 KiB
Python
44 lines
1.8 KiB
Python
from inspect import isgenerator
|
|
|
|
from kivy.clock import Clock
|
|
from kivy.logger import Logger
|
|
|
|
from View import SearchScreenView
|
|
from Model import SearchScreenModel
|
|
from Utility import show_notification
|
|
|
|
class SearchScreenController:
|
|
|
|
def __init__(self, model:SearchScreenModel):
|
|
self.model = model # Model.main_screen.MainScreenModel
|
|
self.view = SearchScreenView(controller=self, model=self.model)
|
|
|
|
def get_view(self) -> SearchScreenView:
|
|
return self.view
|
|
|
|
def update_trending_anime(self):
|
|
trending_cards_generator = self.model.get_trending_anime()
|
|
if isgenerator(trending_cards_generator):
|
|
self.view.trending_anime_sidebar.clear_widgets()
|
|
for card in trending_cards_generator:
|
|
card.screen = self.view
|
|
card.pos_hint = {'center_x': 0.5}
|
|
self.view.update_trending_sidebar(card)
|
|
else:
|
|
Logger.error("Home Screen:Failed to load trending anime")
|
|
self.populate_errors.append("trending Anime")
|
|
|
|
def requested_search_for_anime(self,anime_title,**kwargs):
|
|
self.view.is_searching = True
|
|
search_Results = self.model.search_for_anime(anime_title,**kwargs)
|
|
if isgenerator(search_Results):
|
|
for result_card in search_Results:
|
|
result_card.screen = self.view
|
|
self.view.update_layout(result_card)
|
|
Clock.schedule_once(lambda _:self.view.update_pagination(self.model.pagination_info))
|
|
Clock.schedule_once(lambda _:self.update_trending_anime())
|
|
else:
|
|
Logger.error(f"Home Screen:Failed to search for {anime_title}")
|
|
show_notification("Failed to search",f"{search_Results.get('Error')}")
|
|
self.view.is_searching = False
|