From a3c5c203f12ca297f7a68d99a4c9911ee23b147a Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Thu, 25 Dec 2025 17:51:32 +0100 Subject: [PATCH] wip set view --- src/musicplayer/ui/control.gleam | 1 + src/musicplayer/ui/layout.gleam | 4 ++++ src/musicplayer/ui/ui.gleam | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/src/musicplayer/ui/control.gleam b/src/musicplayer/ui/control.gleam index bb9a501..1276950 100644 --- a/src/musicplayer/ui/control.gleam +++ b/src/musicplayer/ui/control.gleam @@ -5,6 +5,7 @@ import musicplayer/ui/layout.{type Section} pub type Control { UpdateDimensions(columns: Int, rows: Int) UpdateState(section: Section, content: String) + SetView(view_idx: layout.ViewIdx) Exit(reply_to: Subject(Nil)) } diff --git a/src/musicplayer/ui/layout.gleam b/src/musicplayer/ui/layout.gleam index 73d7698..6d1b919 100644 --- a/src/musicplayer/ui/layout.gleam +++ b/src/musicplayer/ui/layout.gleam @@ -123,6 +123,9 @@ pub fn update_dimensions(layout: Layout, columns: Int, rows: Int) -> Layout { Layout(..layout, columns:, rows:) } +pub fn set_view(layout: Layout, view_idx: ViewIdx) -> Layout { + Layout(..layout, current_view: view_idx) +} pub fn render(layout: Layout) -> Nil { let context = @@ -142,6 +145,7 @@ pub fn render(layout: Layout) -> Nil { render_loop( view, context, + // TODO extract to function `view_index` Section(string.append("view_", string.inspect(layout.current_view))), buffer, ) diff --git a/src/musicplayer/ui/ui.gleam b/src/musicplayer/ui/ui.gleam index 4d7cf2d..ddd5898 100644 --- a/src/musicplayer/ui/ui.gleam +++ b/src/musicplayer/ui/ui.gleam @@ -120,6 +120,12 @@ fn handle_message( process.send(reply_to, Nil) actor.stop() } + control.SetView(view_idx) -> { + let layout = layout.set_view(state.layout, view_idx) + + actor.send(state.redraw, layout) + actor.continue(State(..state, layout:)) + } } }