From 26beefa7f335bda5bfcd4956936ebd8d514cbd88 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 26 Nov 2023 14:51:30 +0100 Subject: [PATCH 01/10] =?UTF-8?q?fixup!=20Port=20UI=20to=20GTK=E2=80=AF4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/gtk.css | 4 ++++ data/ui/cover-panel.ui | 7 +------ src/coverpanel.py | 22 ++++++++++++---------- src/window.py | 14 ++++---------- 4 files changed, 21 insertions(+), 26 deletions(-) diff --git a/data/gtk.css b/data/gtk.css index b5d1b6d..3a04426 100644 --- a/data/gtk.css +++ b/data/gtk.css @@ -30,6 +30,10 @@ font-weight:bold; } +window.fullscreen #cover_box { + background: black; +} + #cover_info_revealer { background-color:alpha(@theme_bg_color, 0.8); box-shadow:0 0 10px @theme_bg_color; diff --git a/data/ui/cover-panel.ui b/data/ui/cover-panel.ui index e41148b..766723c 100644 --- a/data/ui/cover-panel.ui +++ b/data/ui/cover-panel.ui @@ -41,6 +41,7 @@ fill + cover_box true fill true @@ -53,9 +54,6 @@ fill image-x-generic-symbolic large - @@ -81,9 +79,6 @@ slide-right cover_info_revealer diff --git a/src/coverpanel.py b/src/coverpanel.py index a3adb52..13dbf8b 100644 --- a/src/coverpanel.py +++ b/src/coverpanel.py @@ -63,6 +63,11 @@ class CoverPanel(Gtk.Overlay): # Initial actions GObject.idle_add(self._enable_tracklist) + # Click handler for image + clickController = Gtk.GestureClick() + clickController.connect('pressed', self.on_cover_box_pressed) + self.cover_box.add_controller(clickController) + def get_toolbar(self): return self.toolbar @@ -72,11 +77,9 @@ class CoverPanel(Gtk.Overlay): pass - # FIXME on_cover_box_pressed() - #@Gtk.Template.Callback() - #def on_cover_box_pressed(self, widget, event): - # if self._current_album and event.type == Gdk.EventType._2BUTTON_PRESS: - # self.emit('toggle-fullscreen') + def on_cover_box_pressed(self, widget, npress, x, y): + if self._current_album and npress == 2: + self.emit('toggle-fullscreen') def set_width(self, width): @@ -150,13 +153,12 @@ class CoverPanel(Gtk.Overlay): def set_fullscreen(self, active): if active: self.info_revealer.set_reveal_child(False) - self.cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1)) GObject.idle_add(self._resize_image) self._fullscreened = True else: self._fullscreened = False - self.info_revealer.set_reveal_child(True) - self.cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 0)) + if self._current_album: + self.info_revealer.set_reveal_child(True) GObject.idle_add(self._resize_image) @@ -171,7 +173,6 @@ class CoverPanel(Gtk.Overlay): self._cover_pixbuf = None else: # Reset image - self._cover_pixbuf = self._get_default_image() self._cover_pixbuf = None self._current_size = None self._current_cover_album = album @@ -205,7 +206,8 @@ class CoverPanel(Gtk.Overlay): def _enable_tracklist(self): if self._current_album: # enable - self.info_revealer.set_reveal_child(True) + if not self._fullscreened: + self.info_revealer.set_reveal_child(True) else: # disable self.info_revealer.set_reveal_child(False) diff --git a/src/window.py b/src/window.py index a438b6f..c10e85e 100644 --- a/src/window.py +++ b/src/window.py @@ -230,7 +230,7 @@ class Window(Adw.ApplicationWindow): def on_menu_toggle_fullscreen(self, action, value): - self.panel_stack.set_visible_child(self.cover_panel_page) + self.panel_stack.set_visible_child(self._cover_panel) if not self._state.get_property(WindowState.IS_FULLSCREENED): self.fullscreen() else: @@ -259,7 +259,7 @@ class Window(Adw.ApplicationWindow): def on_fullscreened(self, widget, fullscreened): - self._fullscreen(fullscreened is True) + self._fullscreen(self.is_fullscreen()) # HeaderBar callbacks @@ -544,17 +544,11 @@ class Window(Adw.ApplicationWindow): if self._state.get_property(WindowState.IS_FULLSCREENED): self.headerbar.hide() self._cover_panel.set_fullscreen(True) - # Hide cursor - self.get_window().set_cursor( - Gdk.Cursor.new_from_name(Gdk.Display.get_default(), "none") - ) + self.set_cursor(Gdk.Cursor.new_from_name("none", None)) else: self.headerbar.show() self._cover_panel.set_fullscreen(False) - # Reset cursor - self.get_window().set_cursor( - Gdk.Cursor.new_from_name(Gdk.Display.get_default(), "default") - ) + self.set_cursor(Gdk.Cursor.new_from_name("default", None)) def _save_visible_panel(self): From 9f76163043099604bb9f649e567f7708a7f823a4 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 26 Nov 2023 15:09:28 +0100 Subject: [PATCH 02/10] =?UTF-8?q?fixup!=20Port=20UI=20to=20GTK=E2=80=AF4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/window.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/window.py b/src/window.py index c10e85e..6b7421e 100644 --- a/src/window.py +++ b/src/window.py @@ -109,10 +109,10 @@ class Window(Adw.ApplicationWindow): self._panels.append(self._library_panel) # Stack self.content_stack.add_child(self._connection_panel) - self.panel_stack.add_titled(self._server_panel, 'server-panel', locale.gettext("Server")) + self.panel_stack.add_titled_with_icon(self._server_panel, 'server-panel', locale.gettext("Server"), "network-wired-symbolic") self.panel_stack.add_titled_with_icon(self._cover_panel, 'cover-panel', locale.gettext("Cover"), "image-x-generic-symbolic") - self.panel_stack.add_titled(self._playlist_panel, 'playlist-panel', locale.gettext("Playlist")) - self.panel_stack.add_titled(self._library_panel, 'library-panel', locale.gettext("Library")) + self.panel_stack.add_titled_with_icon(self._playlist_panel, 'playlist-panel', locale.gettext("Playlist"), "view-list-symbolic") + self.panel_stack.add_titled_with_icon(self._library_panel, 'library-panel', locale.gettext("Library"), "emblem-music-symbolic") # Header #self._playlist_panel.get_headerbar_standalone().connect('close', self.on_panel_close_standalone) #self._library_panel.get_headerbar_standalone().connect('close', self.on_panel_close_standalone) From 754556bb92443704fae81e91886c540473e947c3 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 26 Nov 2023 15:52:45 +0100 Subject: [PATCH 03/10] =?UTF-8?q?fixup!=20Port=20UI=20to=20GTK=E2=80=AF4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/ui/cover-panel.ui | 34 ---------------------------------- src/coverpanel.py | 24 ++++++++++++------------ 2 files changed, 12 insertions(+), 46 deletions(-) diff --git a/data/ui/cover-panel.ui b/data/ui/cover-panel.ui index 766723c..c4557f2 100644 --- a/data/ui/cover-panel.ui +++ b/data/ui/cover-panel.ui @@ -59,19 +59,8 @@ - - @@ -90,9 +79,6 @@ cover_info_scroll - vertical @@ -149,14 +135,6 @@ - @@ -166,19 +144,7 @@ False 0 False - - diff --git a/src/coverpanel.py b/src/coverpanel.py index 13dbf8b..e221c7d 100644 --- a/src/coverpanel.py +++ b/src/coverpanel.py @@ -68,6 +68,12 @@ class CoverPanel(Gtk.Overlay): clickController.connect('pressed', self.on_cover_box_pressed) self.cover_box.add_controller(clickController) + # Button controller for songs scale + buttonController = Gtk.GestureClick() + buttonController.connect('pressed', self.on_songs_scale_pressed) + buttonController.connect('unpaired-release', self.on_songs_scale_released) + self.songs_scale.add_controller(buttonController) + def get_toolbar(self): return self.toolbar @@ -87,16 +93,12 @@ class CoverPanel(Gtk.Overlay): self.cover_info_scroll.set_max_content_width(width // 2) - # FIXME on_songs_start_change() - #@Gtk.Template.Callback() - #def on_songs_start_change(self, widget, event): - # if self._timer: - # GObject.source_remove(self._timer) - # self._timer = None + def on_songs_scale_pressed(self, widget, npress, x, y): + if self._timer: + GObject.source_remove(self._timer) + self._timer = None - - #@Gtk.Template.Callback() - def on_songs_change(self, widget, event): + def on_songs_scale_released(self, widget, x, y, npress, sequence): value = int(self.songs_scale.get_value()) time = self._current_album.get_length() tracks = self._current_album.get_tracks() @@ -233,7 +235,7 @@ class CoverPanel(Gtk.Overlay): """Diese Methode skaliert das geladene Bild aus dem Pixelpuffer auf die Größe des Fensters unter Beibehalt der Seitenverhältnisse """ - # FIXME Get size + # Get size size_width = self.cover_stack.get_size(Gtk.Orientation.HORIZONTAL) size_height = self.cover_stack.get_size(Gtk.Orientation.HORIZONTAL) # Abort if size is the same @@ -260,7 +262,5 @@ class CoverPanel(Gtk.Overlay): height = int(math.floor(pixbuf.get_height()*ratio)) if width <= 0 or height <= 0: return - # FIXME Pixelpuffer auf Oberfläche zeichnen - #self.cover_image.set_allocation(self.cover_scroll.get_allocation()) self.cover_image.set_from_pixbuf(pixbuf.scale_simple(width, height, GdkPixbuf.InterpType.HYPER)) self.cover_image.show() From 3ee0ee73d5788b867e83aade7d7762653045fdcd Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 26 Nov 2023 18:10:43 +0100 Subject: [PATCH 04/10] =?UTF-8?q?fixup!=20Port=20UI=20to=20GTK=E2=80=AF4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/gtk.css | 9 +++- data/ui/playlist-panel.ui | 36 +++------------ data/ui/window.ui | 42 ++++++++++-------- src/application.py | 1 + src/playlistpanel.py | 92 +++++++++++++++------------------------ src/window.py | 14 +++--- 6 files changed, 82 insertions(+), 112 deletions(-) diff --git a/data/gtk.css b/data/gtk.css index 3a04426..1b361de 100644 --- a/data/gtk.css +++ b/data/gtk.css @@ -49,5 +49,12 @@ actionbar { } gridview child { - padding: 10px; + padding: 1px; +} +gridview.selection child { + opacity: 0.5; +} +gridview.selection child:hover, +gridview.selection child:selected { + opacity: 1; } diff --git a/data/ui/playlist-panel.ui b/data/ui/playlist-panel.ui index e3a5e9f..fc4c094 100644 --- a/data/ui/playlist-panel.ui +++ b/data/ui/playlist-panel.ui @@ -12,9 +12,7 @@ True True Select multiple albums - object-select-symbolic @@ -28,9 +26,7 @@ True True Clear the playlist - True @@ -43,7 +39,7 @@