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,70 +965,95 @@ impl Application for App {
); );
} }
if self.controls { if self.controls {
popup_items.push( let mut row = widget::row::with_capacity(7)
widget::container( .align_items(Alignment::Center)
widget::row::with_capacity(7) .spacing(space_xxs)
.align_items(Alignment::Center) .push(
.spacing(space_xxs) widget::button::icon(
.push( if self.video_opt.as_ref().map_or(true, |video| video.paused()) {
widget::button::icon( widget::icon::from_name("media-playback-start-symbolic").size(16)
if self.video_opt.as_ref().map_or(true, |video| video.paused()) { } else {
widget::icon::from_name("media-playback-start-symbolic") widget::icon::from_name("media-playback-pause-symbolic").size(16)
.size(16) },
} else { )
widget::icon::from_name("media-playback-pause-symbolic") .on_press(Message::PlayPause),
.size(16) );
}, if self.core.is_condensed() {
) row = row.push(widget::horizontal_space(Length::Fill));
.on_press(Message::PlayPause), } 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)
.step(0.1) .step(0.1)
.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()), );
) }
.push( row = row
widget::button::icon( .push(
widget::icon::from_name("media-view-subtitles-symbolic").size(16), widget::button::icon(
) widget::icon::from_name("media-view-subtitles-symbolic").size(16),
.on_press(Message::DropdownToggle(DropdownKind::Subtitle)), )
) .on_press(Message::DropdownToggle(DropdownKind::Subtitle)),
.push(
widget::button::icon(
widget::icon::from_name("view-fullscreen-symbolic").size(16),
)
.on_press(Message::Fullscreen),
)
.push(
//TODO: scroll up/down on icon to change volume
widget::button::icon(
widget::icon::from_name({
if muted {
"audio-volume-muted-symbolic"
} else {
if volume >= (2.0 / 3.0) {
"audio-volume-high-symbolic"
} else if volume >= (1.0 / 3.0) {
"audio-volume-medium-symbolic"
} else {
"audio-volume-low-symbolic"
}
}
})
.size(16),
)
.on_press(Message::DropdownToggle(DropdownKind::Audio)),
),
) )
.padding([space_xxs, space_xs]) .push(
.style(theme::Container::WindowBackground) widget::button::icon(
.into(), widget::icon::from_name("view-fullscreen-symbolic").size(16),
)
.on_press(Message::Fullscreen),
)
.push(
//TODO: scroll up/down on icon to change volume
widget::button::icon(
widget::icon::from_name({
if muted {
"audio-volume-muted-symbolic"
} else {
if volume >= (2.0 / 3.0) {
"audio-volume-high-symbolic"
} else if volume >= (1.0 / 3.0) {
"audio-volume-medium-symbolic"
} else {
"audio-volume-low-symbolic"
}
}
})
.size(16),
)
.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])
.style(theme::Container::WindowBackground)
.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));