Skip to content

Commit 885f83f

Browse files
authored
Merge pull request #118 from Nokse22/nokse/use-radio-mix
Use new get_radio_mix for Track and Artist
2 parents 6a4f5c8 + fbecb55 commit 885f83f

File tree

7 files changed

+110
-133
lines changed

7 files changed

+110
-133
lines changed

data/ui/pages_ui/artist_page_template.blp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ Box _main {
6262
spacing: 6;
6363
valign: center;
6464

65+
Adw.LayoutSlot {
66+
id: "radio-button";
67+
}
68+
6569
Adw.LayoutSlot {
6670
id: "share-button";
6771
}
@@ -128,6 +132,10 @@ Box _main {
128132
Adw.LayoutSlot {
129133
id: "share-button";
130134
}
135+
136+
Adw.LayoutSlot {
137+
id: "radio-button";
138+
}
131139
}
132140
};
133141
}
@@ -168,6 +176,20 @@ Box _main {
168176
visible: false;
169177
}
170178

179+
[radio-button]
180+
Button _radio_button {
181+
icon-name: "explore2-large-symbolic";
182+
tooltip-text: _("Radio");
183+
action-name: "win.push-artist-radio-page";
184+
action-target: "''";
185+
valign: center;
186+
187+
styles [
188+
"flat",
189+
"circular",
190+
]
191+
}
192+
171193
[share-button]
172194
Button _share_button {
173195
icon-name: "share-alt-symbolic";

data/ui/window.blp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -527,24 +527,24 @@ template $HighTideWindow: Adw.ApplicationWindow {
527527
icon-name: "explore2-large-symbolic";
528528
tooltip-text: _("Go to track radio");
529529
valign: center;
530+
action-name: "win.push-track-radio-page";
531+
action-target: "''";
530532

531533
styles [
532534
"flat",
533535
]
534-
535-
clicked => $on_track_radio_button_clicked();
536536
}
537537

538538
Button album_button {
539539
icon-name: "library-music-symbolic";
540540
tooltip-text: _("Go to album");
541541
valign: center;
542+
action-name: "win.push-album-page";
543+
action-target: "''";
542544

543545
styles [
544546
"flat",
545547
]
546-
547-
clicked => $on_album_button_clicked();
548548
}
549549

550550
Button copy_share_link {

src/pages/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from .explore_page import HTExplorePage
44
from .artist_page import HTArtistPage
55
from .search_page import HTSearchPage
6-
from .track_radio_page import HTHrackRadioPage
76
from .playlist_page import HTPlaylistPage
87
from .not_logged_in_page import HTNotLoggedInPage
98
from .mix_page import HTMixPage

src/pages/artist_page.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
#
1818
# SPDX-License-Identifier: GPL-3.0-or-later
1919

20-
from gi.repository import Gtk
20+
from gi.repository import Gtk, GLib
2121

2222
from .page import Page
2323
from ..lib import utils
@@ -106,6 +106,10 @@ def _load_finish(self) -> None:
106106

107107
self.new_carousel_for(_("Similar Artists"), self.similar)
108108

109+
builder.get_object("_radio_button").set_action_target_value(
110+
GLib.Variant("s", str(self.artist.id))
111+
)
112+
109113
if self.bio is None:
110114
return
111115

@@ -137,12 +141,3 @@ def on_play_button_clicked(self, btn) -> None:
137141

138142
def on_shuffle_button_clicked(self, btn) -> None:
139143
utils.player_object.shuffle_this(self.top_tracks, 0)
140-
141-
def on_artist_radio_button_clicked(self, btn) -> None:
142-
from .track_radio_page import HTHrackRadioPage
143-
144-
page = HTHrackRadioPage.new_from_id(
145-
self.artist, _("Radio of {}").format(self.artist.name)
146-
)
147-
page.load()
148-
utils.navigation_view.push(page)

src/pages/mix_page.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,50 @@ class HTMixPage(Page):
3030

3131
__gtype_name__ = "HTMixPage"
3232

33+
id_type = None
3334
tracks = None
3435

36+
@classmethod
37+
def new_from_track(cls, id):
38+
"""Create a new HTMixPage instance from a Track id.
39+
40+
Args:
41+
id: The track id
42+
43+
Returns:
44+
HTMixPage: A new instance configured with the provided id
45+
"""
46+
instance = cls()
47+
48+
instance.id = id
49+
instance.id_type = "track"
50+
51+
return instance
52+
53+
@classmethod
54+
def new_from_artist(cls, id):
55+
"""Create a new HTMixPage instance from an Artist id.
56+
57+
Args:
58+
id: The artist id
59+
60+
Returns:
61+
HTMixPage: A new instance configured with the provided id
62+
"""
63+
instance = cls()
64+
65+
instance.id = id
66+
instance.id_type = "artist"
67+
68+
return instance
69+
3570
def _load_async(self) -> None:
36-
self.item = utils.get_mix(self.id)
71+
if self.id_type is None:
72+
self.item = utils.get_mix(self.id)
73+
elif self.id_type == "track":
74+
self.item = utils.get_track(self.id).get_radio_mix()
75+
elif self.id_type == "artist":
76+
self.item = utils.get_artist(self.id).get_radio_mix()
3777

3878
self.tracks = self.item.items()
3979

src/pages/track_radio_page.py

Lines changed: 0 additions & 101 deletions
This file was deleted.

src/window.py

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,13 @@
3737
from .login import LoginDialog
3838
# from .new_playlist import NewPlaylistWindow
3939

40-
from .pages import HTNotLoggedInPage, HTGenericPage, HTExplorePage
40+
from .pages import HTGenericPage
41+
from .pages import HTExplorePage
42+
from .pages import HTNotLoggedInPage
4143
from .pages import HTCollectionPage
42-
from .pages import HTArtistPage, HTMixPage, HTHrackRadioPage, HTPlaylistPage
44+
from .pages import HTArtistPage
45+
from .pages import HTMixPage
46+
from .pages import HTPlaylistPage
4347
from .pages import HTAlbumPage
4448

4549
from .widgets import HTGenericTrackWidget
@@ -89,6 +93,9 @@ class HighTideWindow(Adw.ApplicationWindow):
8993
sidebar_stack = Gtk.Template.Child()
9094
go_next_button = Gtk.Template.Child()
9195
go_prev_button = Gtk.Template.Child()
96+
track_radio_button = Gtk.Template.Child()
97+
album_button = Gtk.Template.Child()
98+
copy_share_link = Gtk.Template.Child()
9299

93100
app_id_dialog = Gtk.Template.Child()
94101

@@ -126,7 +133,13 @@ def __init__(self, **kwargs):
126133
self.create_action_with_target(
127134
"push-track-radio-page",
128135
GLib.VariantType.new("s"),
129-
self.on_push_track_radio_page,
136+
self.on_push_track_radio_page
137+
)
138+
139+
self.create_action_with_target(
140+
"push-artist-radio-page",
141+
GLib.VariantType.new("s"),
142+
self.on_push_artist_radio_page
130143
)
131144

132145
# self.create_action_with_target(
@@ -344,6 +357,11 @@ def on_song_changed(self, *args):
344357

345358
self.set_quality_label()
346359

360+
self.track_radio_button.set_action_target_value(
361+
GLib.Variant("s", str(track.id)))
362+
self.album_button.set_action_target_value(
363+
GLib.Variant("s", str(album.id)))
364+
347365
if utils.is_favourited(track):
348366
self.in_my_collection_button.set_icon_name("heart-filled-symbolic")
349367
else:
@@ -508,18 +526,6 @@ def on_share_clicked(self, *args):
508526
if track:
509527
utils.share_this(track)
510528

511-
@Gtk.Template.Callback("on_track_radio_button_clicked")
512-
def on_track_radio_button_clicked_func(self, widget):
513-
track = self.player_object.playing_track
514-
page = HTHrackRadioPage.new_from_id(track.id).load()
515-
self.navigation_view.push(page)
516-
517-
@Gtk.Template.Callback("on_album_button_clicked")
518-
def on_album_button_clicked_func(self, widget):
519-
track = self.player_object.playing_track
520-
page = HTAlbumPage.new_from_id(track.album.id).load()
521-
self.navigation_view.push(page)
522-
523529
@Gtk.Template.Callback("on_skip_forward_button_clicked")
524530
def on_skip_forward_button_clicked_func(self, widget):
525531
self.player_object.play_next()
@@ -746,23 +752,39 @@ def change_discord_rpc_enabled(self, state):
746752
#
747753

748754
def on_push_artist_page(self, action, parameter):
755+
if parameter.get_string() == "":
756+
return
749757
page = HTArtistPage.new_from_id(parameter.get_string()).load()
750758
self.navigation_view.push(page)
751759

752760
def on_push_album_page(self, action, parameter):
761+
if parameter.get_string() == "":
762+
return
753763
page = HTAlbumPage.new_from_id(parameter.get_string()).load()
754764
self.navigation_view.push(page)
755765

756766
def on_push_playlist_page(self, action, parameter):
767+
if parameter.get_string() == "":
768+
return
757769
page = HTPlaylistPage.new_from_id(parameter.get_string()).load()
758770
self.navigation_view.push(page)
759771

760772
def on_push_mix_page(self, action, parameter):
773+
if parameter.get_string() == "":
774+
return
761775
page = HTMixPage.new_from_id(parameter.get_string()).load()
762776
self.navigation_view.push(page)
763777

764778
def on_push_track_radio_page(self, action, parameter):
765-
page = HTHrackRadioPage.new_from_id(parameter.get_string()).load()
779+
if parameter.get_string() == "":
780+
return
781+
page = HTMixPage.new_from_track(parameter.get_string()).load()
782+
self.navigation_view.push(page)
783+
784+
def on_push_artist_radio_page(self, action, parameter):
785+
if parameter.get_string() == "":
786+
return
787+
page = HTMixPage.new_from_artist(parameter.get_string()).load()
766788
self.navigation_view.push(page)
767789

768790
#

0 commit comments

Comments
 (0)