Skip to content

Commit ce99819

Browse files
change iced_aw from git to v0.5.2
1 parent ce8d972 commit ce99819

File tree

4 files changed

+109
-58
lines changed

4 files changed

+109
-58
lines changed

Cargo.lock

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ edition = "2021"
1313
[dependencies]
1414
clap = { version = "4", features = ["derive"] }
1515
iced = { version = "0.9.0", features = ["image", "svg", "tokio"] }
16-
iced_aw = { git = "https://github.com/iced-rs/iced_aw", rev = "c5186eb0c2bd108d8f2364342279b679a672549c", features = [
17-
"spinner",
18-
] }
16+
iced_aw = { version = "0.5.2", features = ["spinner"] }
1917
anyhow = "1"
2018
thiserror = "1"
2119
reqwest = { version = "0.11", features = ["json"] }

src/gui/view/series_view.rs

+43-11
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,51 @@ pub fn series_page(
5959
main_info = main_info.push(image);
6060
}
6161

62-
let mut series_data_grid = Grid::new().strategy(iced_aw::Strategy::Columns(2));
63-
64-
status_widget(&mut series_data_grid, series_information);
65-
genres_widget(&mut series_data_grid, series_information);
66-
language_widget(&mut series_data_grid, series_information);
67-
average_runtime_widget(&mut series_data_grid, series_information);
68-
rating_widget(&mut series_data_grid, series_information);
69-
network_widget(&mut series_data_grid, series_information);
70-
webchannel_widget(&mut series_data_grid, series_information);
71-
premiered_widget(&mut series_data_grid, series_information);
72-
ended_widget(&mut series_data_grid, series_information);
62+
let mut series_data_grid = Grid::with_columns(2);
63+
64+
let status_widget = status_widget(series_information);
65+
let genres_widget = genres_widget(series_information);
66+
let language_widget = language_widget(series_information);
67+
let average_runtime_widget = average_runtime_widget(series_information);
68+
let rating_widget = rating_widget(series_information);
69+
let network_widget = network_widget(series_information);
70+
let webchannel_widget = webchannel_widget(series_information);
71+
let premiered_widget = premiered_widget(series_information);
72+
let ended_widget = ended_widget(series_information);
7373
let summary = summary_widget(series_information);
7474

75+
series_data_grid.insert(status_widget.0);
76+
series_data_grid.insert(status_widget.1);
77+
78+
if let Some(genres_widget) = genres_widget {
79+
series_data_grid.insert(genres_widget.0);
80+
series_data_grid.insert(genres_widget.1);
81+
};
82+
series_data_grid.insert(language_widget.0);
83+
series_data_grid.insert(language_widget.1);
84+
series_data_grid.insert(average_runtime_widget.0);
85+
series_data_grid.insert(average_runtime_widget.1);
86+
series_data_grid.insert(rating_widget.0);
87+
series_data_grid.insert(rating_widget.1);
88+
89+
if let Some(network_widget) = network_widget {
90+
series_data_grid.insert(network_widget.0);
91+
series_data_grid.insert(network_widget.1);
92+
};
93+
94+
if let Some(webchannel_widget) = webchannel_widget {
95+
series_data_grid.insert(webchannel_widget.0);
96+
series_data_grid.insert(webchannel_widget.1);
97+
};
98+
99+
series_data_grid.insert(premiered_widget.0);
100+
series_data_grid.insert(premiered_widget.1);
101+
102+
if let Some(ended_widget) = ended_widget {
103+
series_data_grid.insert(ended_widget.0);
104+
series_data_grid.insert(ended_widget.1);
105+
};
106+
75107
let series_data = column![series_data_grid, vertical_space(10), summary,].spacing(5);
76108

77109
main_info = main_info.push(series_data);

src/gui/view/series_view/mini_widgets.rs

+63-43
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ use crate::gui::helpers::season_episode_str_gen;
44
use crate::gui::troxide_widget::{GREEN_THEME, INFO_HEADER, RED_THEME};
55

66
use iced::widget::{column, text};
7-
use iced::Renderer;
8-
use iced_aw::Grid;
7+
use iced::{Element, Renderer};
98

109
use super::Message;
1110

1211
pub fn status_widget(
13-
series_data_grid: &mut Grid<'_, Message, Renderer>,
1412
series_info: &SeriesMainInformation,
13+
) -> (
14+
Element<'_, Message, Renderer>,
15+
Element<'_, Message, Renderer>,
1516
) {
1617
let title_text = text("Status");
17-
series_data_grid.insert(title_text);
1818

1919
let status_text = match SeriesStatus::new(series_info) {
2020
SeriesStatus::Running => text("Running").style(GREEN_THEME),
@@ -23,30 +23,34 @@ pub fn status_widget(
2323
SeriesStatus::InDevelopment => text("In Development"),
2424
SeriesStatus::Other => text(&series_info.status),
2525
};
26-
series_data_grid.insert(status_text);
26+
(title_text.into(), status_text.into())
2727
}
2828

2929
pub fn average_runtime_widget(
30-
series_data_grid: &mut Grid<'_, Message, Renderer>,
3130
series_info: &SeriesMainInformation,
31+
) -> (
32+
Element<'_, Message, Renderer>,
33+
Element<'_, Message, Renderer>,
3234
) {
3335
// since the the title part of this widget is the longest, we gonna add some space
3436
// infront of it to make the separation of column nicer
35-
series_data_grid.insert(text("Average runtime "));
37+
let title_text = text("Average runtime ");
3638
let body_widget = if let Some(average_runtime) = series_info.average_runtime {
3739
text(format!("{} mins", average_runtime))
3840
} else {
3941
text("unavailable")
4042
};
41-
series_data_grid.insert(body_widget)
43+
(title_text.into(), body_widget.into())
4244
}
4345

4446
pub fn genres_widget(
45-
series_data_grid: &mut Grid<'_, Message, Renderer>,
4647
series_info: &SeriesMainInformation,
47-
) {
48+
) -> Option<(
49+
Element<'_, Message, Renderer>,
50+
Element<'_, Message, Renderer>,
51+
)> {
4852
if !series_info.genres.is_empty() {
49-
series_data_grid.insert(text("Genres"));
53+
let title_text = text("Genres");
5054
let mut genres = String::new();
5155

5256
let mut series_result_iter = series_info.genres.iter().peekable();
@@ -56,54 +60,66 @@ pub fn genres_widget(
5660
genres.push_str(", ");
5761
}
5862
}
59-
series_data_grid.insert(text(genres));
63+
let genres = text(genres);
64+
65+
Some((title_text.into(), genres.into()))
66+
} else {
67+
None
6068
}
6169
}
6270

6371
pub fn language_widget(
64-
series_data_grid: &mut Grid<'_, Message, Renderer>,
6572
series_info: &SeriesMainInformation,
73+
) -> (
74+
Element<'_, Message, Renderer>,
75+
Element<'_, Message, Renderer>,
6676
) {
67-
series_data_grid.insert(text("Language"));
68-
series_data_grid.insert(if let Some(language) = &series_info.language {
77+
let title_text = text("Language");
78+
let language = if let Some(language) = &series_info.language {
6979
text(language)
7080
} else {
7181
text("unavailable")
72-
});
82+
};
83+
84+
(title_text.into(), language.into())
7385
}
7486

7587
pub fn premiered_widget(
76-
series_data_grid: &mut Grid<'_, Message, Renderer>,
7788
series_info: &SeriesMainInformation,
89+
) -> (
90+
Element<'_, Message, Renderer>,
91+
Element<'_, Message, Renderer>,
7892
) {
79-
series_data_grid.insert(text("Premiered"));
93+
let title_text = text("Premiered");
8094
let body_text = if let Some(premier) = &series_info.premiered {
8195
text(premier)
8296
} else {
8397
text("unavailable")
8498
};
8599

86-
series_data_grid.insert(body_text)
100+
(title_text.into(), body_text.into())
87101
}
88102

89103
pub fn ended_widget(
90-
series_data_grid: &mut Grid<'_, Message, Renderer>,
91104
series_info: &SeriesMainInformation,
92-
) {
105+
) -> Option<(
106+
Element<'_, Message, Renderer>,
107+
Element<'_, Message, Renderer>,
108+
)> {
93109
// Pushing the widget to the grid only when the series has ended
94110
match SeriesStatus::new(series_info) {
95111
SeriesStatus::Ended => {}
96-
_ => return,
112+
_ => return None,
97113
}
98114

99-
series_data_grid.insert(text("Ended"));
115+
let title_text = text("Ended");
100116
let body_text = if let Some(ended) = &series_info.ended {
101117
text(ended)
102118
} else {
103119
text("unavailable")
104120
};
105121

106-
series_data_grid.insert(body_text)
122+
Some((title_text.into(), body_text.into()))
107123
}
108124

109125
pub fn summary_widget(series_info: &SeriesMainInformation) -> iced::Element<'_, Message, Renderer> {
@@ -118,42 +134,46 @@ pub fn summary_widget(series_info: &SeriesMainInformation) -> iced::Element<'_,
118134
}
119135

120136
pub fn rating_widget(
121-
series_data_grid: &mut Grid<'_, Message, Renderer>,
122137
series_info: &SeriesMainInformation,
138+
) -> (
139+
Element<'_, Message, Renderer>,
140+
Element<'_, Message, Renderer>,
123141
) {
124-
series_data_grid.insert(text("Average rating"));
125-
let body_wiget = if let Some(average_rating) = series_info.rating.average {
142+
let title_text = text("Average rating");
143+
let body_text = if let Some(average_rating) = series_info.rating.average {
126144
text(average_rating.to_string())
127145
} else {
128146
text("unavailable")
129147
};
130148

131-
series_data_grid.insert(body_wiget)
149+
(title_text.into(), body_text.into())
132150
}
133151

134152
pub fn network_widget(
135-
series_data_grid: &mut Grid<'_, Message, Renderer>,
136153
series_info: &SeriesMainInformation,
137-
) {
138-
if let Some(network) = &series_info.network {
154+
) -> Option<(
155+
Element<'_, Message, Renderer>,
156+
Element<'_, Message, Renderer>,
157+
)> {
158+
series_info.network.as_ref().map(|network| {
139159
// TODO: Add a clickable link
140-
series_data_grid.insert(text("Network"));
141-
series_data_grid.insert(text(format!(
142-
"{} ({})",
143-
&network.name, &network.country.name
144-
)))
145-
}
160+
(
161+
text("Network").into(),
162+
text(format!("{} ({})", &network.name, &network.country.name)).into(),
163+
)
164+
})
146165
}
147166

148167
pub fn webchannel_widget(
149-
series_data_grid: &mut Grid<'_, Message, Renderer>,
150168
series_info: &SeriesMainInformation,
151-
) {
152-
if let Some(webchannel) = &series_info.web_channel {
169+
) -> Option<(
170+
Element<'_, Message, Renderer>,
171+
Element<'_, Message, Renderer>,
172+
)> {
173+
series_info.web_channel.as_ref().map(|webchannel| {
153174
// TODO: Add a clickable link
154-
series_data_grid.insert(text("Webchannel"));
155-
series_data_grid.insert(text(&webchannel.name))
156-
}
175+
(text("Webchannel").into(), text(&webchannel.name).into())
176+
})
157177
}
158178

159179
pub fn next_episode_release_time_widget(series: &Series) -> iced::widget::Text<'_, Renderer> {

0 commit comments

Comments
 (0)