diff --git a/src/gtk_mediathek_player/main_window.py b/src/gtk_mediathek_player/main_window.py index 2cf3793..10e0d9e 100644 --- a/src/gtk_mediathek_player/main_window.py +++ b/src/gtk_mediathek_player/main_window.py @@ -7,10 +7,13 @@ import gi gi.require_version("Gtk", "3.0") +WINDOW_TITLE = "Gtk Mediathek Player" class MainApp(Gtk.Window): def __init__(self): - Gtk.Window.__init__(self, title="Gtk Mediathek Player") + Gtk.Window.__init__(self, title=WINDOW_TITLE) + + self._current_mediathek_item = None self.set_default_icon_name("gtkmediathekplayer") @@ -36,9 +39,12 @@ class MainApp(Gtk.Window): self._main_container.add(self._main_stack) self._headerbar = self._create_headerbar(True) + + # TODO: standardize widget creation methods + self._fullscreen_bar = self._create_headerbar(False) + self._fullscreen_bar.set_title(WINDOW_TITLE) self._create_fullscreen_bar() - # self._main_container.add_overlay(self._create_fullscreen_bar()) self._main_container.add_overlay(self._revealer) self.add(self._main_container) @@ -126,7 +132,7 @@ class MainApp(Gtk.Window): def _create_fullscreen_bar(self): self._revealer = Gtk.Revealer() - self._revealer.add(self._create_headerbar(False)) + self._revealer.add(self._fullscreen_bar) self._revealer.set_valign(Gtk.Align.START) self._revealer.set_vexpand(False) self._revealer.set_transition_type( @@ -150,17 +156,35 @@ class MainApp(Gtk.Window): self._main_stack.set_visible_child_name(name) if name != "player": self._player_widget.pause() + self.set_title(WINDOW_TITLE) + self._fullscreen_bar.set_title(WINDOW_TITLE) else: if active_pane != "player": if self._player_widget.is_paused(): self._player_widget.play() + + if self._current_mediathek_item is not None: + title = self._current_mediathek_item.get_title() + if title is not None: + self.set_title(title) def get_active_pane(self): return self._main_stack.get_visible_child_name() - def start_player(self, uri: str): + def start_player(self, + uri: str, + mediathek_item:mr.MediathekViewWebAnswer = None): if self.get_active_pane() != "player": self.set_active_pane("player") + + self._current_mediathek_item = mediathek_item + + if mediathek_item is not None: + title = mediathek_item.get_title() + if title is not None: + self.set_title(title) + self._fullscreen_bar.set_title(title) + #self._headerbar.set_title(title) self._player_widget.stop() self._player_widget.play_from_uri(uri) diff --git a/src/gtk_mediathek_player/player_widget.py b/src/gtk_mediathek_player/player_widget.py index 24ba775..90a0df3 100644 --- a/src/gtk_mediathek_player/player_widget.py +++ b/src/gtk_mediathek_player/player_widget.py @@ -52,7 +52,8 @@ class PlayerWidget(Gtk.Overlay): position_string = tools.seconds_to_timestring(int(position)) duration_string = tools.seconds_to_timestring(int(self._duration)) - self._duration_text.set_markup(f"{position_string}/{duration_string}") + self._duration_text.set_markup( + f"{position_string}/{duration_string}") self._is_update = False @@ -115,7 +116,8 @@ class PlayerWidget(Gtk.Overlay): # TODO: replace this deprecated (honestly, i find it disturbing that there is no container or css template) # already there to do this, such that you are forced to create a custom css # snippet and override the default gtk scheme) - box.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.0,.0,.0,.8)) + box.override_background_color( + Gtk.StateType.NORMAL, Gdk.RGBA(.0, .0, .0, .8)) self._controls.add(box) @@ -126,8 +128,6 @@ class PlayerWidget(Gtk.Overlay): style_context = self._controls.get_style_context() style_context.add_class(Gtk.STYLE_CLASS_OSD) - - self._play_pause_button.connect("clicked", self.toogle_play) def play_from_uri(self, uri: str): @@ -168,13 +168,13 @@ class PlayerWidget(Gtk.Overlay): def get_state(self): return self._videoarea.get_state() - + def is_playing(self) -> bool: return self.get_state() == Gst.State.PLAYING - + def is_stopped(self) -> bool: return self.get_state() == Gst.State.NULL - + def is_paused(self) -> bool: return self.get_state() == Gst.State.PAUSED