mirror of
https://github.com/Benexl/FastAnime.git
synced 2026-01-09 11:45:02 -08:00
renamed app to anixstream
This commit is contained in:
67
anixstream/View/SearchScreen/search_screen.py
Normal file
67
anixstream/View/SearchScreen/search_screen.py
Normal file
@@ -0,0 +1,67 @@
|
||||
from kivy.properties import ObjectProperty, StringProperty
|
||||
from kivy.clock import Clock
|
||||
|
||||
from View.base_screen import BaseScreenView
|
||||
from .components import TrendingAnimeSideBar, Filters, SearchResultsPagination
|
||||
|
||||
|
||||
class SearchScreenView(BaseScreenView):
|
||||
trending_anime_sidebar: TrendingAnimeSideBar = ObjectProperty()
|
||||
search_results_pagination: SearchResultsPagination = ObjectProperty()
|
||||
filters: Filters = ObjectProperty()
|
||||
|
||||
search_results_container = ObjectProperty()
|
||||
search_term: str = StringProperty()
|
||||
is_searching = False
|
||||
has_next_page = False
|
||||
current_page = 0
|
||||
total_pages = 0
|
||||
|
||||
def handle_search_for_anime(self, search_widget=None, page=None):
|
||||
if search_widget:
|
||||
search_term = search_widget.text
|
||||
elif page:
|
||||
search_term = self.search_term
|
||||
else:
|
||||
return
|
||||
|
||||
if search_term and not (self.is_searching):
|
||||
self.search_term = search_term
|
||||
self.search_results_container.clear_widgets()
|
||||
if filters := self.filters.filters:
|
||||
Clock.schedule_once(
|
||||
lambda _: self.controller.requested_search_for_anime(
|
||||
search_term, **filters, page=page
|
||||
)
|
||||
)
|
||||
else:
|
||||
Clock.schedule_once(
|
||||
lambda _: self.controller.requested_search_for_anime(
|
||||
search_term, page=page
|
||||
)
|
||||
)
|
||||
|
||||
def update_layout(self, widget):
|
||||
self.search_results_container.add_widget(widget)
|
||||
|
||||
def update_pagination(self, pagination_info):
|
||||
self.search_results_pagination.current_page = self.current_page = (
|
||||
pagination_info["currentPage"]
|
||||
)
|
||||
self.search_results_pagination.total_pages = self.total_pages = max(
|
||||
int(pagination_info["total"] / 30), 1
|
||||
)
|
||||
self.has_next_page = pagination_info["hasNextPage"]
|
||||
|
||||
def next_page(self):
|
||||
if self.has_next_page:
|
||||
page = self.current_page + 1
|
||||
self.handle_search_for_anime(page=page)
|
||||
|
||||
def previous_page(self):
|
||||
if self.current_page > 1:
|
||||
page = self.current_page - 1
|
||||
self.handle_search_for_anime(page=page)
|
||||
|
||||
def update_trending_sidebar(self, trending_anime):
|
||||
self.trending_anime_sidebar.add_widget(trending_anime)
|
||||
Reference in New Issue
Block a user