From d145a39ce4c6442ba60b4c732e0d0af640c97b48 Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Mon, 3 Mar 2025 20:00:50 -0800 Subject: [PATCH 01/10] =?UTF-8?q?feat:=20Add=20in=20downloads=20tab=20?= =?UTF-8?q?=F0=9F=8D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monophony/frontend/tabs/downloads_tab.py | 58 +++++++++++++++++++ .../monophony/frontend/windows/main_window.py | 7 +++ 2 files changed, 65 insertions(+) create mode 100644 source/monophony/frontend/tabs/downloads_tab.py diff --git a/source/monophony/frontend/tabs/downloads_tab.py b/source/monophony/frontend/tabs/downloads_tab.py new file mode 100644 index 0000000..8484a0e --- /dev/null +++ b/source/monophony/frontend/tabs/downloads_tab.py @@ -0,0 +1,58 @@ +""" +Tab to show all downloaded songs/files. +""" + +from monophony.backend.history import read_songs +from monophony.frontend.rows.queue_song_row import MonophonyQueueSongRow + +import gi + +gi.require_version("Adw", "1") +gi.require_version("Gtk", "4.0") +from gi.repository import Adw, Gtk + + +class MonophonyDownloadsTab(Gtk.Box): + def __init__(self, player: object) -> None: + super().__init__(orientation=Gtk.Orientation.VERTICAL) + + self.player = player + self.downloads = [] + self.set_vexpand(True) + + self.pge_status = Adw.StatusPage() + self.pge_status.set_vexpand(True) + self.pge_status.set_valign(Gtk.Align.FILL) + self.pge_status.set_icon_name("view-list-symbolic") + self.pge_status.set_title(_("No Downloads")) + self.pge_status.set_visible(True) + + # box_actions = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) + # box_actions.set_spacing(5) + + self.box_downloads = Adw.PreferencesGroup() + self.box_downloads.set_title(_("Downloads")) + + self.box_meta = Adw.PreferencesPage.new() + self.box_meta.set_visible(False) + self.box_meta.set_vexpand(True) + self.box_meta.set_valign(Gtk.Align.FILL) + self.box_meta.add(self.box_downloads) + + self.append(self.box_meta) + self.append(self.pge_status) + + def update(self) -> bool: + new_downloads = read_songs() + + if new_downloads != self.downloads: + for download in new_downloads: + row = MonophonyQueueSongRow( + download, + self.player, + {"title": download["title"], "artist": download["artist"]}, + ) + self.box_downloads.append(row) + self.downloads = new_downloads + return True + return False diff --git a/source/monophony/frontend/windows/main_window.py b/source/monophony/frontend/windows/main_window.py index cf050f5..eb43b18 100644 --- a/source/monophony/frontend/windows/main_window.py +++ b/source/monophony/frontend/windows/main_window.py @@ -7,6 +7,7 @@ from monophony import __version__, APP_ID from monophony.frontend.tabs.library_tab import MonophonyLibraryTab from monophony.frontend.tabs.queue_tab import MonophonyQueueTab from monophony.frontend.tabs.search_tab import MonophonySearchTab +from monophony.frontend.tabs.downloads_tab import MonophonyDownloadsTab from monophony.frontend.widgets.player import MonophonyPlayer from monophony.frontend.windows.add_window import MonophonyAddWindow from monophony.frontend.windows.import_window import MonophonyImportWindow @@ -49,6 +50,12 @@ class MonophonyMainWindow(Adw.ApplicationWindow): _('Queue'), 'view-list-symbolic' ) + self.stack.add_titled_with_icon( + MonophonyDownloadsTab(self.player), + 'downloads', + _('Downloads'), + 'system-download-symbolic' + ) self.stack.set_visible_child_name('library') self.toaster = Adw.ToastOverlay.new() -- GitLab From a5ad792bb3bca925442c00285683e7e2c232cb60 Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Mon, 3 Mar 2025 20:00:50 -0800 Subject: [PATCH 02/10] =?UTF-8?q?feat:=20Add=20in=20downloads=20tab=20?= =?UTF-8?q?=F0=9F=8D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monophony/frontend/tabs/downloads_tab.py | 58 +++++++++++++++++++ .../monophony/frontend/windows/main_window.py | 7 +++ 2 files changed, 65 insertions(+) create mode 100644 source/monophony/frontend/tabs/downloads_tab.py diff --git a/source/monophony/frontend/tabs/downloads_tab.py b/source/monophony/frontend/tabs/downloads_tab.py new file mode 100644 index 0000000..8484a0e --- /dev/null +++ b/source/monophony/frontend/tabs/downloads_tab.py @@ -0,0 +1,58 @@ +""" +Tab to show all downloaded songs/files. +""" + +from monophony.backend.history import read_songs +from monophony.frontend.rows.queue_song_row import MonophonyQueueSongRow + +import gi + +gi.require_version("Adw", "1") +gi.require_version("Gtk", "4.0") +from gi.repository import Adw, Gtk + + +class MonophonyDownloadsTab(Gtk.Box): + def __init__(self, player: object) -> None: + super().__init__(orientation=Gtk.Orientation.VERTICAL) + + self.player = player + self.downloads = [] + self.set_vexpand(True) + + self.pge_status = Adw.StatusPage() + self.pge_status.set_vexpand(True) + self.pge_status.set_valign(Gtk.Align.FILL) + self.pge_status.set_icon_name("view-list-symbolic") + self.pge_status.set_title(_("No Downloads")) + self.pge_status.set_visible(True) + + # box_actions = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) + # box_actions.set_spacing(5) + + self.box_downloads = Adw.PreferencesGroup() + self.box_downloads.set_title(_("Downloads")) + + self.box_meta = Adw.PreferencesPage.new() + self.box_meta.set_visible(False) + self.box_meta.set_vexpand(True) + self.box_meta.set_valign(Gtk.Align.FILL) + self.box_meta.add(self.box_downloads) + + self.append(self.box_meta) + self.append(self.pge_status) + + def update(self) -> bool: + new_downloads = read_songs() + + if new_downloads != self.downloads: + for download in new_downloads: + row = MonophonyQueueSongRow( + download, + self.player, + {"title": download["title"], "artist": download["artist"]}, + ) + self.box_downloads.append(row) + self.downloads = new_downloads + return True + return False diff --git a/source/monophony/frontend/windows/main_window.py b/source/monophony/frontend/windows/main_window.py index cf050f5..eb43b18 100644 --- a/source/monophony/frontend/windows/main_window.py +++ b/source/monophony/frontend/windows/main_window.py @@ -7,6 +7,7 @@ from monophony import __version__, APP_ID from monophony.frontend.tabs.library_tab import MonophonyLibraryTab from monophony.frontend.tabs.queue_tab import MonophonyQueueTab from monophony.frontend.tabs.search_tab import MonophonySearchTab +from monophony.frontend.tabs.downloads_tab import MonophonyDownloadsTab from monophony.frontend.widgets.player import MonophonyPlayer from monophony.frontend.windows.add_window import MonophonyAddWindow from monophony.frontend.windows.import_window import MonophonyImportWindow @@ -49,6 +50,12 @@ class MonophonyMainWindow(Adw.ApplicationWindow): _('Queue'), 'view-list-symbolic' ) + self.stack.add_titled_with_icon( + MonophonyDownloadsTab(self.player), + 'downloads', + _('Downloads'), + 'system-download-symbolic' + ) self.stack.set_visible_child_name('library') self.toaster = Adw.ToastOverlay.new() -- GitLab From 4ce4d88f71794df149327af944f4435f1b7dc690 Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Tue, 11 Mar 2025 13:09:25 -0700 Subject: [PATCH 03/10] =?UTF-8?q?chore:=20fix=20layout=20issues=20?= =?UTF-8?q?=E2=9E=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monophony/frontend/tabs/downloads_tab.py | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/source/monophony/frontend/tabs/downloads_tab.py b/source/monophony/frontend/tabs/downloads_tab.py index 8484a0e..88d5f8f 100644 --- a/source/monophony/frontend/tabs/downloads_tab.py +++ b/source/monophony/frontend/tabs/downloads_tab.py @@ -11,13 +11,13 @@ gi.require_version("Adw", "1") gi.require_version("Gtk", "4.0") from gi.repository import Adw, Gtk - class MonophonyDownloadsTab(Gtk.Box): def __init__(self, player: object) -> None: super().__init__(orientation=Gtk.Orientation.VERTICAL) self.player = player self.downloads = [] + self.download_widgets = [] self.set_vexpand(True) self.pge_status = Adw.StatusPage() @@ -27,9 +27,6 @@ class MonophonyDownloadsTab(Gtk.Box): self.pge_status.set_title(_("No Downloads")) self.pge_status.set_visible(True) - # box_actions = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) - # box_actions.set_spacing(5) - self.box_downloads = Adw.PreferencesGroup() self.box_downloads.set_title(_("Downloads")) @@ -41,18 +38,33 @@ class MonophonyDownloadsTab(Gtk.Box): self.append(self.box_meta) self.append(self.pge_status) + self.update() def update(self) -> bool: + """ + Update the list of downloaded songs. + """ new_downloads = read_songs() if new_downloads != self.downloads: + # Clear existing widgets + for widget in self.download_widgets: + self.box_downloads.remove(widget) + + self.box_meta.set_visible(bool(new_downloads)) + self.pge_status.set_visible(not bool(new_downloads)) + + self.download_widgets = [] + self.downloads = new_downloads.copy() + for download in new_downloads: row = MonophonyQueueSongRow( download, self.player, - {"title": download["title"], "artist": download["artist"]}, + {"title": download["title"], "artist": download["author"]}, ) - self.box_downloads.append(row) - self.downloads = new_downloads + self.box_downloads.add(row) + self.download_widgets.append(row) + return True return False -- GitLab From a904a00fc7f37c1f230d32d1894747bd93a17632 Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Tue, 11 Mar 2025 13:14:37 -0700 Subject: [PATCH 04/10] =?UTF-8?q?feat:=20Add=20Downloads=20tab=20to=20main?= =?UTF-8?q?=20display=20=F0=9F=92=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/monophony/frontend/windows/main_window.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/monophony/frontend/windows/main_window.py b/source/monophony/frontend/windows/main_window.py index eb43b18..0ee1742 100644 --- a/source/monophony/frontend/windows/main_window.py +++ b/source/monophony/frontend/windows/main_window.py @@ -50,12 +50,13 @@ class MonophonyMainWindow(Adw.ApplicationWindow): _('Queue'), 'view-list-symbolic' ) - self.stack.add_titled_with_icon( - MonophonyDownloadsTab(self.player), - 'downloads', - _('Downloads'), - 'system-download-symbolic' - ) + self.stack.add_titled_with_icon( + MonophonyDownloadsTab(self.player), + 'downloads', + _('Downloads'), + 'folder-download-symbolic' + ) + self.stack.set_visible_child_name('library') self.toaster = Adw.ToastOverlay.new() -- GitLab From cd31822b0126ed41e120919f1c415f3e7c6abd8a Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Tue, 11 Mar 2025 13:50:29 -0700 Subject: [PATCH 05/10] =?UTF-8?q?feat:=20Make=20the=20songs=20in=20Downlao?= =?UTF-8?q?ds=20playable=20=F0=9F=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/monophony/frontend/tabs/downloads_tab.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/monophony/frontend/tabs/downloads_tab.py b/source/monophony/frontend/tabs/downloads_tab.py index 88d5f8f..c8058e3 100644 --- a/source/monophony/frontend/tabs/downloads_tab.py +++ b/source/monophony/frontend/tabs/downloads_tab.py @@ -3,7 +3,7 @@ Tab to show all downloaded songs/files. """ from monophony.backend.history import read_songs -from monophony.frontend.rows.queue_song_row import MonophonyQueueSongRow +from monophony.frontend.rows.song_row import MonophonySongRow import gi @@ -58,10 +58,10 @@ class MonophonyDownloadsTab(Gtk.Box): self.downloads = new_downloads.copy() for download in new_downloads: - row = MonophonyQueueSongRow( + row = MonophonySongRow( download, self.player, - {"title": download["title"], "artist": download["author"]}, + {"title": download["title"], "artist": download["author"], "contents": [download]}, ) self.box_downloads.add(row) self.download_widgets.append(row) -- GitLab From 843d3de1a6b3d0959700f7f07362d13fef75655a Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Mon, 3 Mar 2025 20:00:50 -0800 Subject: [PATCH 06/10] =?UTF-8?q?feat:=20Add=20in=20downloads=20tab=20?= =?UTF-8?q?=F0=9F=8D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monophony/frontend/tabs/downloads_tab.py | 58 +++++++++++++++++++ .../monophony/frontend/windows/main_window.py | 7 +++ 2 files changed, 65 insertions(+) create mode 100644 source/monophony/frontend/tabs/downloads_tab.py diff --git a/source/monophony/frontend/tabs/downloads_tab.py b/source/monophony/frontend/tabs/downloads_tab.py new file mode 100644 index 0000000..8484a0e --- /dev/null +++ b/source/monophony/frontend/tabs/downloads_tab.py @@ -0,0 +1,58 @@ +""" +Tab to show all downloaded songs/files. +""" + +from monophony.backend.history import read_songs +from monophony.frontend.rows.queue_song_row import MonophonyQueueSongRow + +import gi + +gi.require_version("Adw", "1") +gi.require_version("Gtk", "4.0") +from gi.repository import Adw, Gtk + + +class MonophonyDownloadsTab(Gtk.Box): + def __init__(self, player: object) -> None: + super().__init__(orientation=Gtk.Orientation.VERTICAL) + + self.player = player + self.downloads = [] + self.set_vexpand(True) + + self.pge_status = Adw.StatusPage() + self.pge_status.set_vexpand(True) + self.pge_status.set_valign(Gtk.Align.FILL) + self.pge_status.set_icon_name("view-list-symbolic") + self.pge_status.set_title(_("No Downloads")) + self.pge_status.set_visible(True) + + # box_actions = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) + # box_actions.set_spacing(5) + + self.box_downloads = Adw.PreferencesGroup() + self.box_downloads.set_title(_("Downloads")) + + self.box_meta = Adw.PreferencesPage.new() + self.box_meta.set_visible(False) + self.box_meta.set_vexpand(True) + self.box_meta.set_valign(Gtk.Align.FILL) + self.box_meta.add(self.box_downloads) + + self.append(self.box_meta) + self.append(self.pge_status) + + def update(self) -> bool: + new_downloads = read_songs() + + if new_downloads != self.downloads: + for download in new_downloads: + row = MonophonyQueueSongRow( + download, + self.player, + {"title": download["title"], "artist": download["artist"]}, + ) + self.box_downloads.append(row) + self.downloads = new_downloads + return True + return False diff --git a/source/monophony/frontend/windows/main_window.py b/source/monophony/frontend/windows/main_window.py index cf050f5..eb43b18 100644 --- a/source/monophony/frontend/windows/main_window.py +++ b/source/monophony/frontend/windows/main_window.py @@ -7,6 +7,7 @@ from monophony import __version__, APP_ID from monophony.frontend.tabs.library_tab import MonophonyLibraryTab from monophony.frontend.tabs.queue_tab import MonophonyQueueTab from monophony.frontend.tabs.search_tab import MonophonySearchTab +from monophony.frontend.tabs.downloads_tab import MonophonyDownloadsTab from monophony.frontend.widgets.player import MonophonyPlayer from monophony.frontend.windows.add_window import MonophonyAddWindow from monophony.frontend.windows.import_window import MonophonyImportWindow @@ -49,6 +50,12 @@ class MonophonyMainWindow(Adw.ApplicationWindow): _('Queue'), 'view-list-symbolic' ) + self.stack.add_titled_with_icon( + MonophonyDownloadsTab(self.player), + 'downloads', + _('Downloads'), + 'system-download-symbolic' + ) self.stack.set_visible_child_name('library') self.toaster = Adw.ToastOverlay.new() -- GitLab From ed43f01faa2da27b976638a6aa0dfd0ece08ca5f Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Tue, 11 Mar 2025 13:09:25 -0700 Subject: [PATCH 07/10] =?UTF-8?q?chore:=20fix=20layout=20issues=20?= =?UTF-8?q?=E2=9E=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monophony/frontend/tabs/downloads_tab.py | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/source/monophony/frontend/tabs/downloads_tab.py b/source/monophony/frontend/tabs/downloads_tab.py index 8484a0e..88d5f8f 100644 --- a/source/monophony/frontend/tabs/downloads_tab.py +++ b/source/monophony/frontend/tabs/downloads_tab.py @@ -11,13 +11,13 @@ gi.require_version("Adw", "1") gi.require_version("Gtk", "4.0") from gi.repository import Adw, Gtk - class MonophonyDownloadsTab(Gtk.Box): def __init__(self, player: object) -> None: super().__init__(orientation=Gtk.Orientation.VERTICAL) self.player = player self.downloads = [] + self.download_widgets = [] self.set_vexpand(True) self.pge_status = Adw.StatusPage() @@ -27,9 +27,6 @@ class MonophonyDownloadsTab(Gtk.Box): self.pge_status.set_title(_("No Downloads")) self.pge_status.set_visible(True) - # box_actions = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) - # box_actions.set_spacing(5) - self.box_downloads = Adw.PreferencesGroup() self.box_downloads.set_title(_("Downloads")) @@ -41,18 +38,33 @@ class MonophonyDownloadsTab(Gtk.Box): self.append(self.box_meta) self.append(self.pge_status) + self.update() def update(self) -> bool: + """ + Update the list of downloaded songs. + """ new_downloads = read_songs() if new_downloads != self.downloads: + # Clear existing widgets + for widget in self.download_widgets: + self.box_downloads.remove(widget) + + self.box_meta.set_visible(bool(new_downloads)) + self.pge_status.set_visible(not bool(new_downloads)) + + self.download_widgets = [] + self.downloads = new_downloads.copy() + for download in new_downloads: row = MonophonyQueueSongRow( download, self.player, - {"title": download["title"], "artist": download["artist"]}, + {"title": download["title"], "artist": download["author"]}, ) - self.box_downloads.append(row) - self.downloads = new_downloads + self.box_downloads.add(row) + self.download_widgets.append(row) + return True return False -- GitLab From 22eb8f117d8d4aade4251115b071fb548c9a5095 Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Tue, 11 Mar 2025 13:14:37 -0700 Subject: [PATCH 08/10] =?UTF-8?q?feat:=20Add=20Downloads=20tab=20to=20main?= =?UTF-8?q?=20display=20=F0=9F=92=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/monophony/frontend/windows/main_window.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/monophony/frontend/windows/main_window.py b/source/monophony/frontend/windows/main_window.py index eb43b18..0ee1742 100644 --- a/source/monophony/frontend/windows/main_window.py +++ b/source/monophony/frontend/windows/main_window.py @@ -50,12 +50,13 @@ class MonophonyMainWindow(Adw.ApplicationWindow): _('Queue'), 'view-list-symbolic' ) - self.stack.add_titled_with_icon( - MonophonyDownloadsTab(self.player), - 'downloads', - _('Downloads'), - 'system-download-symbolic' - ) + self.stack.add_titled_with_icon( + MonophonyDownloadsTab(self.player), + 'downloads', + _('Downloads'), + 'folder-download-symbolic' + ) + self.stack.set_visible_child_name('library') self.toaster = Adw.ToastOverlay.new() -- GitLab From 83bfdb76059098da71dd54e9c4780c46b0aadb6b Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Tue, 11 Mar 2025 13:50:29 -0700 Subject: [PATCH 09/10] =?UTF-8?q?feat:=20Make=20the=20songs=20in=20Downlao?= =?UTF-8?q?ds=20playable=20=F0=9F=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/monophony/frontend/tabs/downloads_tab.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/monophony/frontend/tabs/downloads_tab.py b/source/monophony/frontend/tabs/downloads_tab.py index 88d5f8f..c8058e3 100644 --- a/source/monophony/frontend/tabs/downloads_tab.py +++ b/source/monophony/frontend/tabs/downloads_tab.py @@ -3,7 +3,7 @@ Tab to show all downloaded songs/files. """ from monophony.backend.history import read_songs -from monophony.frontend.rows.queue_song_row import MonophonyQueueSongRow +from monophony.frontend.rows.song_row import MonophonySongRow import gi @@ -58,10 +58,10 @@ class MonophonyDownloadsTab(Gtk.Box): self.downloads = new_downloads.copy() for download in new_downloads: - row = MonophonyQueueSongRow( + row = MonophonySongRow( download, self.player, - {"title": download["title"], "artist": download["author"]}, + {"title": download["title"], "artist": download["author"], "contents": [download]}, ) self.box_downloads.add(row) self.download_widgets.append(row) -- GitLab From fa183c2aa6089e65df5ad70ee38833a9a8459737 Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Mon, 24 Mar 2025 19:58:11 -0700 Subject: [PATCH 10/10] =?UTF-8?q?feat:=20Add=20rough=20draft=20of=20downlo?= =?UTF-8?q?ads=20in=20lib=20tab=20=F0=9F=AA=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/monophony/frontend/tabs/library_tab.py | 42 ++++++++++++++++++- .../monophony/frontend/windows/main_window.py | 12 +++--- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/source/monophony/frontend/tabs/library_tab.py b/source/monophony/frontend/tabs/library_tab.py index 5fa6967..01cd8db 100644 --- a/source/monophony/frontend/tabs/library_tab.py +++ b/source/monophony/frontend/tabs/library_tab.py @@ -1,6 +1,7 @@ import monophony.backend.cache import monophony.backend.history import monophony.backend.playlists +from monophony.backend.history import read_songs from monophony.frontend.rows.external_group_row import MonophonyExternalGroupRow from monophony.frontend.rows.local_group_row import MonophonyLocalGroupRow from monophony.frontend.rows.locked_group_row import MonophonyLockedGroupRow @@ -86,6 +87,19 @@ class MonophonyLibraryTab(Gtk.Box): 'clicked', lambda _b: monophony.backend.history.clear_songs() ) + self.box_downloads = Adw.PreferencesGroup() + self.box_downloads.set_visible(True) + self.box_downloads.set_title(_('Downloads')) + self.box_meta.add(self.box_downloads) + self.downloads = [] + self._downloaded_songs() + + btn_downloads_two = Adw.ButtonRow() + btn_downloads_two.set_start_icon_name('folder-symbolic') + btn_downloads_two.set_title(_('Show Downloaded Songs')) + btn_downloads_two.connect('activated', self._downloaded_songs) + + self.box_recents = Adw.PreferencesGroup() self.box_recents.set_visible(False) self.box_recents.set_title(_('Recently Played')) @@ -185,7 +199,7 @@ class MonophonyLibraryTab(Gtk.Box): if self.player.is_busy(): return True - new_recents = monophony.backend.history.read_songs() + new_recents = read_songs() new_recents.reverse() if new_recents != self.old_recents: self.box_recents.set_visible(True) @@ -203,3 +217,29 @@ class MonophonyLibraryTab(Gtk.Box): self.box_recents.set_visible(bool(new_recents)) return True + + def _downloaded_songs(self) -> bool: + """ + Update the list of downloaded songs. + """ + new_downloads = read_songs() + print(new_downloads) + print(read_songs()) + + if new_downloads != self.downloads: + self.box_meta.set_visible(bool(new_downloads)) + + self.download_widgets = [] + self.downloads = new_downloads.copy() + + for download in new_downloads: + row = MonophonySongRow( + download, + self.player, + {"title": download["title"], "artist": download["author"], "contents": [download]}, + ) + self.box_downloads.add(row) + self.download_widgets.append(row) + + return True + return False diff --git a/source/monophony/frontend/windows/main_window.py b/source/monophony/frontend/windows/main_window.py index 0ee1742..6d412db 100644 --- a/source/monophony/frontend/windows/main_window.py +++ b/source/monophony/frontend/windows/main_window.py @@ -50,12 +50,12 @@ class MonophonyMainWindow(Adw.ApplicationWindow): _('Queue'), 'view-list-symbolic' ) - self.stack.add_titled_with_icon( - MonophonyDownloadsTab(self.player), - 'downloads', - _('Downloads'), - 'folder-download-symbolic' - ) + # self.stack.add_titled_with_icon( + # MonophonyDownloadsTab(self.player), + # 'downloads', + # _('Downloads'), + # 'folder-download-symbolic' + # ) self.stack.set_visible_child_name('library') -- GitLab