Move seek to second line when condensed, fixes #54

This commit is contained in:
Jeremy Soller 2025-01-19 10:08:12 -07:00
parent 0ad6d5e3e0
commit 5c6163eed7
No known key found for this signature in database
GPG key ID: D02FD439211AF56F

View file

@ -871,7 +871,7 @@ impl Application for App {
.on_double_press(Message::Fullscreen); .on_double_press(Message::Fullscreen);
let mut popover = widget::popover(mouse_area).position(widget::popover::Position::Bottom); let mut popover = widget::popover(mouse_area).position(widget::popover::Position::Bottom);
let mut popup_items = Vec::<Element<_>>::with_capacity(2); let mut popup_items = Vec::<Element<_>>::with_capacity(3);
if let Some(dropdown) = self.dropdown_opt { if let Some(dropdown) = self.dropdown_opt {
let mut items = Vec::<Element<_>>::new(); let mut items = Vec::<Element<_>>::new();
match dropdown { match dropdown {
@ -965,23 +965,23 @@ impl Application for App {
); );
} }
if self.controls { if self.controls {
popup_items.push( let mut row = widget::row::with_capacity(7)
widget::container(
widget::row::with_capacity(7)
.align_items(Alignment::Center) .align_items(Alignment::Center)
.spacing(space_xxs) .spacing(space_xxs)
.push( .push(
widget::button::icon( widget::button::icon(
if self.video_opt.as_ref().map_or(true, |video| video.paused()) { if self.video_opt.as_ref().map_or(true, |video| video.paused()) {
widget::icon::from_name("media-playback-start-symbolic") widget::icon::from_name("media-playback-start-symbolic").size(16)
.size(16)
} else { } else {
widget::icon::from_name("media-playback-pause-symbolic") widget::icon::from_name("media-playback-pause-symbolic").size(16)
.size(16)
}, },
) )
.on_press(Message::PlayPause), .on_press(Message::PlayPause),
) );
if self.core.is_condensed() {
row = row.push(widget::horizontal_space(Length::Fill));
} else {
row = row
.push(widget::text(format_time(self.position)).font(font::mono())) .push(widget::text(format_time(self.position)).font(font::mono()))
.push( .push(
Slider::new(0.0..=self.duration, self.position, Message::Seek) Slider::new(0.0..=self.duration, self.position, Message::Seek)
@ -989,9 +989,10 @@ impl Application for App {
.on_release(Message::SeekRelease), .on_release(Message::SeekRelease),
) )
.push( .push(
widget::text(format_time(self.duration - self.position)) widget::text(format_time(self.duration - self.position)).font(font::mono()),
.font(font::mono()), );
) }
row = row
.push( .push(
widget::button::icon( widget::button::icon(
widget::icon::from_name("media-view-subtitles-symbolic").size(16), widget::icon::from_name("media-view-subtitles-symbolic").size(16),
@ -1023,6 +1024,29 @@ impl Application for App {
.size(16), .size(16),
) )
.on_press(Message::DropdownToggle(DropdownKind::Audio)), .on_press(Message::DropdownToggle(DropdownKind::Audio)),
);
popup_items.push(
widget::container(row)
.padding([space_xxs, space_xs])
.style(theme::Container::WindowBackground)
.into(),
);
if self.core.is_condensed() {
popup_items.push(
widget::container(
widget::row::with_capacity(3)
.align_items(Alignment::Center)
.spacing(space_xxs)
.push(widget::text(format_time(self.position)).font(font::mono()))
.push(
Slider::new(0.0..=self.duration, self.position, Message::Seek)
.step(0.1)
.on_release(Message::SeekRelease),
)
.push(
widget::text(format_time(self.duration - self.position))
.font(font::mono()),
), ),
) )
.padding([space_xxs, space_xs]) .padding([space_xxs, space_xs])
@ -1030,6 +1054,7 @@ impl Application for App {
.into(), .into(),
); );
} }
}
if !popup_items.is_empty() { if !popup_items.is_empty() {
popover = popover.popup(widget::column::with_children(popup_items)); popover = popover.popup(widget::column::with_children(popup_items));
} }