diff --git a/fastanime/Controller/home_screen.py b/fastanime/Controller/home_screen.py index fe9195b..d54d565 100644 --- a/fastanime/Controller/home_screen.py +++ b/fastanime/Controller/home_screen.py @@ -1,8 +1,10 @@ from inspect import isgenerator + from kivy.clock import Clock from kivy.logger import Logger + from ..Model import HomeScreenModel from ..Utility import show_notification from ..View import HomeScreenView @@ -19,12 +21,22 @@ class HomeScreenController: """ populate_errors = [] + _discover_anime_list = [] def __init__(self, model: HomeScreenModel): self.model = model # Model.main_screen.MainScreenModel self.view = HomeScreenView(controller=self, model=self.model) - # if self.view.app.config.get("Preferences","is_startup_anime_enable")=="1": # type: ignore - # Clock.schedule_once(lambda _:self.populate_home_screen()) + + self._discover_anime_list = [ + self.highest_scored_anime, + self.popular_anime, + self.favourite_anime, + self.upcoming_anime, + self.recently_updated_anime, + self.trending_anime, + ] + + self.get_more_anime() def get_view(self) -> HomeScreenView: return self.view @@ -115,17 +127,17 @@ class HomeScreenController: Logger.error("Home Screen:Failed to load upcoming anime") self.populate_errors.append("upcoming Anime") - def populate_home_screen(self): + def get_more_anime(self): self.populate_errors = [] - Clock.schedule_once(lambda _: self.trending_anime(), 1) - Clock.schedule_once(lambda _: self.highest_scored_anime(), 2) - Clock.schedule_once(lambda _: self.recently_updated_anime(), 5) - # Clock.schedule_once(lambda _: self.popular_anime(), 3) - # Clock.schedule_once(lambda _: self.favourite_anime(), 4) - # Clock.schedule_once(lambda _: self.upcoming_anime(), 6) + if self._discover_anime_list: + task = self._discover_anime_list.pop() + Clock.schedule_once(lambda _: task()) + else: + show_notification("Home Screen Info", "No more anime to load") if self.populate_errors: show_notification( "Failed to fetch all home screen data", f"Theres probably a problem with your internet connection or anilist servers are down.\nFailed include:{', '.join(self.populate_errors)}", ) + self.populate_errors = [] diff --git a/fastanime/View/HomeScreen/home_screen.kv b/fastanime/View/HomeScreen/home_screen.kv index 4be9fbe..9676b4b 100644 --- a/fastanime/View/HomeScreen/home_screen.kv +++ b/fastanime/View/HomeScreen/home_screen.kv @@ -19,5 +19,11 @@ spacing:"10dp" orientation: 'vertical' size_hint_y:None - height:max(self.minimum_height,p.height,1800) + height:self.minimum_height + MDButton: + on_press: + if root.controller: root.controller.get_more_anime() + MDButtonText: + text:"Load More Anime" + diff --git a/fastanime/__main__.py b/fastanime/__main__.py index 71526a7..c5052b7 100644 --- a/fastanime/__main__.py +++ b/fastanime/__main__.py @@ -128,10 +128,6 @@ class AniXStreamApp(MDApp): def on_start(self, *args): self.media_card_popup = MediaPopup() - if self.config.get("Preferences", "is_startup_anime_enable") == "1": # type: ignore - Clock.schedule_once( - lambda _: self.home_screen.controller.populate_home_screen(), 1 - ) def generate_application_screens(self) -> None: for i, name_screen in enumerate(screens.keys()):