Files
FastAnime/anixstream/View/AnimeScreen/components/side_bar.py
Benedict Xavier Wanyonyi 7e9060bb2d renamed app to anixstream
2024-05-31 18:12:02 +03:00

99 lines
3.0 KiB
Python

from kivy.properties import ObjectProperty, StringProperty, DictProperty, ListProperty
from kivy.utils import get_hex_from_color
from kivy.factory import Factory
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDLabel
class HeaderLabel(MDBoxLayout):
text = StringProperty()
halign = StringProperty("center")
Factory.register("HeaderLabel", HeaderLabel)
class SideBarLabel(MDLabel):
pass
# TODO:Switch to using the kivy_markup_module
class AnimeSideBar(MDBoxLayout):
screen = ObjectProperty()
image = StringProperty()
alternative_titles = DictProperty(
{
"synonyms": "",
"english": "",
"japanese": "",
}
)
information = DictProperty(
{
"episodes": "",
"status": "",
"aired": "",
"nextAiringEpisode": "",
"premiered": "",
"broadcast": "",
"countryOfOrigin": "",
"hashtag": "",
"studios": "", # { "name": "Sunrise", "isAnimationStudio": true }
"source": "",
"genres": "",
"duration": "",
"producers": "",
}
)
statistics = ListProperty()
statistics_container = ObjectProperty()
external_links = ListProperty()
external_links_container = ObjectProperty()
tags = ListProperty()
tags_container = ObjectProperty()
def on_statistics(self, instance, value):
self.statistics_container.clear_widgets()
header = HeaderLabel()
header.text = "Rankings"
self.statistics_container.add_widget(header)
for stat in value:
# stat (rank,context)
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
stat[0].capitalize(),
f"{stat[1]}",
)
self.statistics_container.add_widget(label)
def on_tags(self, instance, value):
self.tags_container.clear_widgets()
header = HeaderLabel()
header.text = "Tags"
self.tags_container.add_widget(header)
for tag in value:
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
tag[0].capitalize(),
f"{tag[1]} %",
)
self.tags_container.add_widget(label)
def on_external_links(self, instance, value):
self.external_links_container.clear_widgets()
header = HeaderLabel()
header.text = "External Links"
self.external_links_container.add_widget(header)
for site in value:
# stat (rank,context)
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
site[0].capitalize(),
site[1],
)
self.external_links_container.add_widget(label)