Skip to content

Commit 424c081

Browse files
committed
Make gui scrollable
1 parent 0f97f45 commit 424c081

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

src/gui/mod.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ use crate::config::Config;
66
use crate::recording_session::SessionPath;
77
use anyhow::Result;
88
use iced::application::application;
9-
use iced::widget::{button, row};
9+
use iced::widget::{button, row, scrollable};
1010
use iced::{Element, Subscription, Task, Theme};
1111
use log::error;
1212

1313
use self::session_gui::{SessionGui, SessionMessage};
1414
use self::session_selector::SessionSelector;
1515

16+
const SCROLLBAR_WIDTH: f32 = 20.0;
17+
1618
pub struct Gui {
1719
session: Option<SessionGui>,
1820
session_selector: SessionSelector,
@@ -64,15 +66,19 @@ impl Gui {
6466

6567
fn view(&self) -> Element<Message> {
6668
let selector = self.session_selector.view();
67-
let session_view = self
68-
.session
69-
.as_ref()
70-
.map(|session| session.view())
71-
.unwrap_or(row![].into())
72-
.map(|message| Message::SessionMessage(message));
69+
let session_view = scrollable(
70+
self.session
71+
.as_ref()
72+
.map(|session| session.view())
73+
.unwrap_or(row![].into())
74+
.map(|message| Message::SessionMessage(message)),
75+
)
76+
.direction(scrollable::Direction::Vertical(
77+
scrollable::Scrollbar::new().width(SCROLLBAR_WIDTH),
78+
));
7379
let cut_songs =
7480
button("Cut songs").on_press(Message::SessionMessage(SessionMessage::CutSongs));
75-
row![session_view, cut_songs, selector].into()
81+
row![selector, cut_songs, session_view].into()
7682
}
7783

7884
fn subscription(&self) -> Subscription<Message> {

src/gui/session_gui.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ pub struct SetCutPosition {
4545
pub struct SessionGui {
4646
plots: Vec<Plot>,
4747
reader: Mutex<WavFileReader>,
48-
session: RecordingSession,
4948
path: SessionPath,
5049
cuts: Manual,
5150
cutting_state: CuttingState,
@@ -106,7 +105,6 @@ impl SessionGui {
106105
let cuts = Manual::new(&mut reader, &session.session, DbusLengthsStrategy);
107106
let playback_state = PlaybackState::Waiting;
108107
Ok(Self {
109-
session: session.session,
110108
reader: Mutex::new(reader),
111109
plots,
112110
cuts,
@@ -143,6 +141,7 @@ impl SessionGui {
143141
let canvases: Vec<_> = self
144142
.plots
145143
.iter()
144+
.skip(self.scroll_pos as usize)
146145
.enumerate()
147146
.map(|(i, plot)| {
148147
let c: Element<PlotMarkerMoved> =
@@ -157,9 +156,11 @@ impl SessionGui {
157156
text(song.to_string_short().to_string()).align_x(Horizontal::Left)
158157
};
159158
let titles = Row::new()
159+
.push(horizontal_space())
160160
.push_maybe(plot.song_before().map(make_title))
161161
.push(horizontal_space())
162-
.push_maybe(plot.song_after().map(make_title));
162+
.push_maybe(plot.song_after().map(make_title))
163+
.push(horizontal_space());
163164
column![titles, canvas].into()
164165
})
165166
.collect();

0 commit comments

Comments
 (0)