From b20ea9f3ec8da41dcf59180c7258b10c0bf923b5 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Fri, 23 Oct 2020 20:48:43 +0200 Subject: [PATCH] fullscreen works --- src/gtk_mediathek_player/main_window.py | 72 +++++++++++++++++++---- src/gtk_mediathek_player/player_widget.py | 2 - 2 files changed, 60 insertions(+), 14 deletions(-) diff --git a/src/gtk_mediathek_player/main_window.py b/src/gtk_mediathek_player/main_window.py index c2cbe62..13b1cd9 100644 --- a/src/gtk_mediathek_player/main_window.py +++ b/src/gtk_mediathek_player/main_window.py @@ -3,7 +3,7 @@ import gi from gtk_mediathek_player.tools import new_button_with_icon, new_radio_button_with_icon gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gio +from gi.repository import Gtk, GLib from . import player_widget from . import search_widget @@ -30,23 +30,40 @@ class MainApp(Gtk.Window): self._main_stack.show_all() - self.set_active_pane("search") - - self._main_container.add(self._main_stack) self._headerbar = self._create_headerbar(True) + 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) - - + self.connect('motion-notify-event', self.on_mouse_move) + + self._seconds_after_mouse_move = 0 + + self.set_active_pane("search") + + GLib.timeout_add_seconds(1, self.update) + def on_mouse_move(self, _, __): self._player_widget.show_controls() + self._seconds_after_mouse_move = 0 + if self._fullscreen: + self._revealer.set_reveal_child(True) + + def update(self): + if self._seconds_after_mouse_move > 1: + self._revealer.set_reveal_child(False) + + self._seconds_after_mouse_move += 1 + self._player_widget.update_controls() + + return True + def on_search(self, _ = None): if self.get_active_pane() == "player": @@ -68,27 +85,31 @@ class MainApp(Gtk.Window): fullscreen = tools.new_button_with_icon("view-fullscreen") + fullscreen.connect("clicked", self.toggle_fullscreen) + headerbar.pack_end(fullscreen) if main_bar: - self._create_context_switch() + self._fullscreen_button = fullscreen + headerbar.pack_start(self._search_radio) - - headerbar.set_show_close_button(True) headerbar.props.title = "Main Window" self.set_titlebar(headerbar) + return headerbar def _create_fullscreen_bar(self): self._revealer = Gtk.Revealer() self._revealer.add(self._create_headerbar(False)) - self.set_valign(Gtk.Align.START) + self._revealer.set_valign(Gtk.Align.START) + self._revealer.set_vexpand(False) + self._revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_DOWN) return self._revealer @@ -105,6 +126,11 @@ class MainApp(Gtk.Window): def set_active_pane(self, name: str): self._main_stack.set_visible_child_name(name) + if name != "player": + self._fullscreen_button.set_sensitive(False) + else: + self._fullscreen_button.set_sensitive(True) + def get_active_pane(self): return self._main_stack.get_visible_child_name() @@ -116,5 +142,27 @@ class MainApp(Gtk.Window): self._player_widget.stop() self._player_widget.play_from_uri(uri) self._player_widget.play() - + + def go_fullscreen(self): + if self._fullscreen: + return + self._fullscreen = True + + self.fullscreen() + self._revealer.set_reveal_child(True) + + def go_unfullscreen(self): + if not self._fullscreen: + return + + self._fullscreen = False + + self.unfullscreen() + self._revealer.set_reveal_child(False) + + def toggle_fullscreen(self,_ = None): + if self._fullscreen: + self.go_unfullscreen() + else: + self.go_fullscreen() diff --git a/src/gtk_mediathek_player/player_widget.py b/src/gtk_mediathek_player/player_widget.py index 22cb93e..5581791 100644 --- a/src/gtk_mediathek_player/player_widget.py +++ b/src/gtk_mediathek_player/player_widget.py @@ -30,8 +30,6 @@ class PlayerWidget(Gtk.Overlay): self._seconds_after_mouse_move = 0 - GLib.timeout_add_seconds(1, self.update_controls) - self._slider.connect("value-changed", self._on_user_slider_change) def update_controls(self):