Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
Verified Commit a85f67be authored by Ayush Singh's avatar Ayush Singh
Browse files

gui: Extract image_selection page


Signed-off-by: Ayush Singh's avatarAyush Singh <ayush@beagleboard.org>
parent 0e2c2efd
No related merge requests found
......@@ -2,7 +2,7 @@
use std::{borrow::Cow, collections::HashSet};
use helpers::{home_btn, img_or_svg, ProgressBarState};
use helpers::{home_btn, ProgressBarState};
use iced::{
futures::SinkExt,
widget::{self, button, text},
......@@ -350,7 +350,7 @@ impl BBImager {
match &self.screen {
Screen::Home => self.home_view(),
Screen::BoardSelection => pages::board_selection::view(self),
Screen::ImageSelection => self.image_selection_view(),
Screen::ImageSelection => pages::image_selection::view(self),
Screen::DestinationSelection => pages::destination_selection::view(self),
Screen::ExtraConfiguration => pages::configuration::view(self),
Screen::Flashing(s) => s.view(),
......@@ -484,79 +484,6 @@ impl BBImager {
.into()
}
fn image_selection_view(&self) -> Element<BBImagerMessage> {
let board = self.selected_board.as_ref().unwrap();
let items = self
.boards
.images(board)
.filter(|x| {
x.name
.to_lowercase()
.contains(&self.search_bar.to_lowercase())
})
.map(|x| {
let mut row3 =
widget::row![text(x.release_date.to_string()), widget::horizontal_space()]
.spacing(4)
.width(iced::Length::Fill);
row3 = x
.tags
.iter()
.fold(row3, |acc, t| acc.push(iced_aw::Badge::new(text(t))));
let icon = match self.downloader.clone().check_image(&x.icon) {
Some(y) => img_or_svg(y, 80),
None => widget::svg(widget::svg::Handle::from_memory(
constants::DOWNLOADING_ICON,
))
.into(),
};
button(
widget::row![
icon,
widget::column![
text(x.name.as_str()).size(18),
text(x.description.as_str()),
row3
]
.padding(5)
]
.align_y(iced::Alignment::Center)
.spacing(10),
)
.width(iced::Length::Fill)
.on_press(BBImagerMessage::SelectImage(
bb_imager::SelectedImage::from(x),
))
.style(widget::button::secondary)
})
.chain(std::iter::once(
button(
widget::row![
widget::svg(widget::svg::Handle::from_memory(constants::FILE_ADD_ICON))
.width(100),
text("Use Custom Image").size(18),
]
.spacing(10),
)
.width(iced::Length::Fill)
.on_press(BBImagerMessage::SelectLocalImage)
.style(widget::button::secondary),
))
.map(Into::into);
widget::column![
self.search_bar(None),
widget::horizontal_rule(2),
widget::scrollable(widget::column(items).spacing(10))
]
.spacing(10)
.padding(10)
.into()
}
fn search_bar(&self, refresh: Option<BBImagerMessage>) -> Element<BBImagerMessage> {
let mut row = widget::row![button(
widget::svg(widget::svg::Handle::from_memory(constants::ARROW_BACK_ICON)).width(22)
......
use iced::{
widget::{self, button, text},
Element,
};
use crate::{constants, helpers::img_or_svg, BBImagerMessage};
pub fn view(bbimager: &crate::BBImager) -> Element<BBImagerMessage> {
let board = bbimager.selected_board.as_ref().unwrap();
let items = bbimager
.boards
.images(board)
.filter(|x| {
x.name
.to_lowercase()
.contains(&bbimager.search_bar.to_lowercase())
})
.map(|x| {
let mut row3 =
widget::row![text(x.release_date.to_string()), widget::horizontal_space()]
.spacing(4)
.width(iced::Length::Fill);
row3 = x
.tags
.iter()
.fold(row3, |acc, t| acc.push(iced_aw::Badge::new(text(t))));
let icon = match bbimager.downloader.clone().check_image(&x.icon) {
Some(y) => img_or_svg(y, 80),
None => widget::svg(widget::svg::Handle::from_memory(
constants::DOWNLOADING_ICON,
))
.into(),
};
button(
widget::row![
icon,
widget::column![
text(x.name.as_str()).size(18),
text(x.description.as_str()),
row3
]
.padding(5)
]
.align_y(iced::Alignment::Center)
.spacing(10),
)
.width(iced::Length::Fill)
.on_press(BBImagerMessage::SelectImage(
bb_imager::SelectedImage::from(x),
))
.style(widget::button::secondary)
})
.chain(std::iter::once(
button(
widget::row![
widget::svg(widget::svg::Handle::from_memory(constants::FILE_ADD_ICON))
.width(100),
text("Use Custom Image").size(18),
]
.spacing(10),
)
.width(iced::Length::Fill)
.on_press(BBImagerMessage::SelectLocalImage)
.style(widget::button::secondary),
))
.map(Into::into);
widget::column![
bbimager.search_bar(None),
widget::horizontal_rule(2),
widget::scrollable(widget::column(items).spacing(10))
]
.spacing(10)
.padding(10)
.into()
}
......@@ -2,6 +2,7 @@ pub mod flash;
pub mod configuration;
pub mod destination_selection;
pub mod board_selection;
pub mod image_selection;
#[derive(Default, Debug, Clone)]
pub enum Screen {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment