deec60347b
Co-authored-by: David Rodenkirchen <drodenkirchen@linetco.com> Reviewed-on: #45
45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
from functools import partial
|
|
from typing import Callable, Optional, Literal
|
|
|
|
from rio import Component, Revealer, TextStyle, Column, Row, Tooltip, Icon, Spacer, Text, Button
|
|
|
|
from src.ezgg_lan_manager.types.Team import TeamStatus, Team
|
|
from src.ezgg_lan_manager.types.User import User
|
|
|
|
|
|
class TeamRevealer(Component):
|
|
user: Optional[User]
|
|
team: Team
|
|
mode: Literal["join", "leave", "display"]
|
|
on_button_pressed: Callable
|
|
|
|
def build(self) -> Component:
|
|
return Revealer(
|
|
header=self.team.name,
|
|
header_style=TextStyle(
|
|
fill=self.session.theme.background_color,
|
|
font_size=1
|
|
),
|
|
content=Column(
|
|
*[Row(
|
|
Tooltip(
|
|
anchor=Icon("material/star" if self.team.members[member] == TeamStatus.LEADER else "material/stat_1", fill=self.session.theme.hud_color),
|
|
tip="Leiter" if self.team.members[member] == TeamStatus.LEADER else "Mitglied", position="top"),
|
|
Text(member.user_name, style=TextStyle(fill=self.session.theme.background_color, font_size=1), margin_left=0.5),
|
|
Spacer(grow_y=False))
|
|
for member in self.team.members
|
|
],
|
|
Row(Button(
|
|
content=f"{self.team.name} beitreten" if self.mode == "join" else f"{self.team.name} verlassen",
|
|
shape="rectangle",
|
|
style="major",
|
|
color="hud",
|
|
on_press=partial(self.on_button_pressed, self.team),
|
|
), margin_top=1, margin_bottom=1),
|
|
margin_right=1,
|
|
margin_left=1
|
|
),
|
|
margin_left=1,
|
|
margin_right=1,
|
|
)
|