diff --git a/app.py b/app.py index df5863d..fe7047a 100644 --- a/app.py +++ b/app.py @@ -37,7 +37,7 @@ from textual.app import App, ComposeResult, RenderResult from textual.widgets import Footer, Header, OptionList, DataTable, ProgressBar, Label, Input, Placeholder, Static, Rule, Button from textual.widget import Widget from textual.containers import Horizontal, Vertical, Container, Center -from textual.screen import Screen +from textual.screen import Screen, ModalScreen from textual.widgets.option_list import Option from textual.timer import Timer @@ -959,14 +959,24 @@ class MainView(Screen): queue_table.update_queue() app.update_now_playing() +class QueueScreen(ModalScreen): + + BINDINGS = [ + ('escape', 'back()', 'Go Back') + ] + + def compose(self) -> ComposeResult: + with Container(id='queueModal'): + yield QueueTable(id='queue') + yield Footer() + + def action_back(self) -> None: + app.pop_screen() + class CurrentPlace(Static): place: reactive[int] = reactive(0) def render(self) -> RenderResult: - # if app.currently_playing: - # duration_min, duration_sec = divmod(app.currently_playing.duration, 60) - # duration_formatted = f"{duration_min:02d}:{duration_sec:02d}" - place_in_seconds = self.place // 1000 place_min, place_sec = divmod(place_in_seconds, 60) place_formatted = f"{place_min:02d}:{place_sec:02d}" @@ -984,18 +994,23 @@ class TotalDuration(Static): class Player(Screen): CSS_PATH = 'main.tcss' + BINDINGS = [ + ('q', 'view_queue()', 'View Queue') + ] + + def on_mount(self) -> None: + app.sub_title = "Player" def update_song(self, song: SubSonic.Song) -> None: - # info = self.query_one(NowPlayingInfo) - # info.song = song + if song.album and song.title and song.artist: - if song.albumId: track_title_label: Label = self.query_one('#trackTitle', Label) track_artist_album_label: Label = self.query_one('#trackAlbumArtist', Label) track_title_label.update(song.title) track_artist_album_label.update(f'{song.album} by {song.artist}') + if song.albumId: cover_art = self.query_one(CoverArtPixels) album = conn.getAlbumSongs(song.albumId) @@ -1035,9 +1050,7 @@ class Player(Screen): @on(events.ScreenResume) def screen_resumed(self, event: events.ScreenResume) -> None: - app.sub_title = "Overview" - # queue_table = self.query_one(QueueTable) - # queue_table.update_queue() + app.sub_title = "Player" app.update_now_playing() @on(Button.Pressed, "#prev_track") @@ -1052,6 +1065,10 @@ class Player(Screen): def next_track_pressed(self) -> None: app.action_skip() + def action_view_queue(self) -> None: + # app.install_screen(QueueScreen, 'queue') + app.push_screen(QueueScreen()) + # Startup keyboard listener for media keys def listen_media_keys(queue: multiprocessing.Queue): diff --git a/main.tcss b/main.tcss index ef9149e..61fe177 100644 --- a/main.tcss +++ b/main.tcss @@ -154,6 +154,18 @@ } .playerButton { - width: 10%; + height: 5; + max-width: 12; + max-height: 12; +} + +QueueScreen { + align: center middle; +} + +#queueModal { + height: 75%; + width: 75%; + border: grey; }