Skip to content

Commit

Permalink
Unify widgets
Browse files Browse the repository at this point in the history
  • Loading branch information
Samuel Oldham committed Sep 23, 2024
1 parent 199c04e commit 34652d1
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 65 deletions.
43 changes: 22 additions & 21 deletions psst-gui/src/ui/album.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use std::sync::Arc;

use druid::{
widget::{CrossAxisAlignment, Flex, Label, LineBreaking, List, ViewSwitcher},
LensExt, LocalizedString, Menu, MenuItem, Selector, Size, Widget, WidgetExt,
widget::{CrossAxisAlignment, Flex, Label, LineBreaking, List, ViewSwitcher}, LensExt, LocalizedString, Menu, MenuItem, Selector, Size, UnitPoint, Widget, WidgetExt
};

use crate::{
Expand Down Expand Up @@ -124,40 +123,42 @@ pub fn album_widget(horizontal: bool) -> impl Widget<WithCtx<Arc<Album>>> {
.with_text_size(theme::TEXT_SIZE_SMALL)
.with_line_break_mode(LineBreaking::WordWrap)
.lens(ArtistLink::name)
})
.horizontal()
.with_spacing(theme::grid(1.0))
.lens(Album::artists.in_arc());
})
.horizontal()
.with_spacing(theme::grid(1.0))
.lens(Album::artists.in_arc());

let album_date = Label::<Arc<Album>>::dynamic(|album, _| album.release_year())
.with_line_break_mode(LineBreaking::WordWrap)
.with_text_size(theme::TEXT_SIZE_SMALL)
.with_text_color(theme::PLACEHOLDER_COLOR);

let album_info = Flex::column()
.cross_axis_alignment(CrossAxisAlignment::Start)
.with_child(album_name)
.with_spacer(1.0)
.with_child(album_artists)
.with_spacer(1.0)
.with_child(album_date)
.fix_width(theme::grid(16.0));

let album_layout = if horizontal {
Flex::column()
.with_child(album_cover)
.with_default_spacer()
.with_child(album_info)
.with_spacer(theme::grid(2.0))
.fix_width(theme::grid(16.0))
.padding_horizontal(theme::grid(1.0))
.with_child(Flex::column()
.cross_axis_alignment(CrossAxisAlignment::Start)
.with_child(album_name)
.with_spacer(1.0)
.with_child(album_artists)
.with_spacer(1.0)
.with_child(album_date)
.align_horizontal(UnitPoint::CENTER)
.align_vertical(UnitPoint::TOP)
.fix_size(theme::grid(16.0), theme::grid(8.5)))
.align_left()
} else {
Flex::row()
.with_child(album_cover)
.with_default_spacer()
.with_flex_child(album_info, 1.0)
.padding(theme::grid(1.0))
.with_flex_child(Flex::column()
.cross_axis_alignment(CrossAxisAlignment::Start)
.with_child(album_name)
.with_spacer(1.0)
.with_child(album_artists)
.with_spacer(1.0)
.with_child(album_date), 1.0)
.align_left()
};

Expand Down
11 changes: 5 additions & 6 deletions psst-gui/src/ui/artist.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use druid::{
im::Vector, kurbo::Circle, widget::{CrossAxisAlignment, Flex, Label, LabelText, LineBreaking, List}, Data, Insets, LensExt, LocalizedString, Menu, MenuItem, Selector, Widget, WidgetExt
im::Vector, kurbo::Circle, widget::{CrossAxisAlignment, Flex, Label, LabelText, LineBreaking, List}, Data, Insets, LensExt, LocalizedString, Menu, MenuItem, Selector, UnitPoint, Widget, WidgetExt
};

use crate::{
Expand Down Expand Up @@ -86,12 +86,11 @@ pub fn artist_widget(horizontal: bool) -> impl Widget<Artist> {
.with_child(artist_image)
.with_default_spacer()
.with_child(Label::raw()
.with_font(theme::UI_FONT_MEDIUM)
.center()
.fix_width(theme::grid(16.0))
.padding_horizontal(theme::grid(1.0))
.with_font(theme::UI_FONT_MEDIUM)
.align_horizontal(UnitPoint::CENTER)
.align_vertical(UnitPoint::TOP)
.fix_size(theme::grid(16.0), theme::grid(8.5))
.lens(Artist::name))
.with_spacer(theme::grid(2.0))
} else {
artist
.with_child(artist_image)
Expand Down
26 changes: 14 additions & 12 deletions psst-gui/src/ui/playlist.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use std::rc::Rc;
use std::{cmp::Ordering, sync::Arc};

use druid::widget::{Button, LensWrap, TextBox};
use druid::UnitPoint;
use druid::{
im::Vector,
widget::{Flex, Label, LineBreaking, List},
Expand Down Expand Up @@ -336,33 +337,34 @@ pub fn playlist_widget(horizontal: bool) -> impl Widget<WithCtx<Playlist>> {
let (playlist_name, playlist_description) = if horizontal {
(playlist_name
.fix_width(playlist_image_size)
.padding_horizontal(theme::grid(1.0))
.align_left(),
playlist_description
.fix_width(playlist_image_size)
.padding_horizontal(theme::grid(1.0))
.align_left())
} else {
(playlist_name.align_left(), playlist_description.align_left())
};

let playlist_info = Flex::column()
.with_child(playlist_name)
.with_spacer(2.0)
.with_child(playlist_description);

let playlist = if horizontal {
Flex::column()
.with_child(playlist_image)
.with_default_spacer()
.with_child(playlist_info)
.with_spacer(theme::grid(2.0))
.padding(theme::grid(1.0))}
else {
.with_child(Flex::column()
.with_child(playlist_name)
.with_spacer(2.0)
.with_child(playlist_description)
.align_horizontal(UnitPoint::CENTER)
.align_vertical(UnitPoint::TOP)
.fix_size(theme::grid(16.0), theme::grid(8.5)))
.padding(theme::grid(1.0))
} else {
Flex::row()
.with_child(playlist_image)
.with_default_spacer()
.with_flex_child(playlist_info, 1.0)
.with_flex_child(Flex::column()
.with_child(playlist_name)
.with_spacer(2.0)
.with_child(playlist_description), 1.0)
.padding(theme::grid(1.0))
};

Expand Down
38 changes: 12 additions & 26 deletions psst-gui/src/ui/show.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use std::sync::Arc;

use druid::{
widget::{CrossAxisAlignment, Flex, Label, LineBreaking},
LensExt, LocalizedString, Menu, MenuItem, Selector, Size, Widget, WidgetExt,
widget::{CrossAxisAlignment, Flex, Label, LineBreaking}, LensExt, LocalizedString, Menu, MenuItem, Selector, Size, UnitPoint, Widget, WidgetExt
};

use crate::{
Expand Down Expand Up @@ -93,38 +92,25 @@ pub fn show_widget(horizontal: bool) -> impl Widget<WithCtx<Arc<Show>>> {
.lens(Show::publisher.in_arc())
.align_left();

let (show_name, show_publisher) = if horizontal {
(show_name
.fix_width(image_size)
.padding_horizontal(theme::grid(1.0))
.align_left(),
show_publisher
.fix_width(image_size)
.padding_horizontal(theme::grid(1.0))
.align_left())
} else {
(show_name.align_left(), show_publisher.align_left())
};

let show_info = Flex::column()
.with_child(show_name.padding_horizontal(theme::grid(1.0)))
.with_spacer(2.0)
.with_child(show_publisher.padding_horizontal(theme::grid(1.0)))
.align_left();

let show = if horizontal {
Flex::column()
.with_child(show_image)
.with_default_spacer()
.with_child(show_info)
.with_spacer(theme::grid(2.0))
.with_child(Flex::column()
.with_child(show_name)
.with_child(show_publisher)
.align_horizontal(UnitPoint::CENTER)
.align_vertical(UnitPoint::TOP)
.fix_size(theme::grid(16.0), theme::grid(8.5)))
.padding(theme::grid(1.0))
.lens(Ctx::data())}
else {
.lens(Ctx::data())
} else {
Flex::row()
.with_child(show_image)
.with_default_spacer()
.with_flex_child(show_info, 1.0)
.with_flex_child(Flex::column()
.with_child(show_name)
.with_child(show_publisher), 1.0)
.padding(theme::grid(1.0))
.lens(Ctx::data())
};
Expand Down

0 comments on commit 34652d1

Please sign in to comment.