Move more code to libcosmic
This commit is contained in:
parent
5ad54bd3b1
commit
bfcaf829eb
4 changed files with 56 additions and 41 deletions
|
|
@ -3,8 +3,8 @@ use cosmic::{
|
||||||
widget::{
|
widget::{
|
||||||
button,
|
button,
|
||||||
icon,
|
icon,
|
||||||
|
nav_bar,
|
||||||
list_view_style,
|
list_view_style,
|
||||||
nav_bar_style,
|
|
||||||
},
|
},
|
||||||
settings,
|
settings,
|
||||||
iced::{theme, Alignment, Color, Element, Length, Sandbox, Theme},
|
iced::{theme, Alignment, Color, Element, Length, Sandbox, Theme},
|
||||||
|
|
@ -67,40 +67,34 @@ impl Sandbox for Window {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn view(&self) -> Element<Message> {
|
fn view(&self) -> Element<Message> {
|
||||||
let sidebar: Element<_> = container(
|
let sidebar: Element<_> = nav_bar!(
|
||||||
column![
|
//TODO: Support symbolic icons
|
||||||
//TODO: Support symbolic icons
|
button!(
|
||||||
button!(
|
icon("network-wireless", 16),
|
||||||
icon("network-wireless", 16).width(Length::Units(16)),
|
text("Wi-Fi"),
|
||||||
text("Wi-Fi"),
|
horizontal_space(Length::Fill),
|
||||||
horizontal_space(Length::Fill),
|
)
|
||||||
)
|
.on_press(Message::Page(0))
|
||||||
.on_press(Message::Page(0))
|
.style(if self.page == 0 { theme::Button::Primary } else { theme::Button::Text })
|
||||||
.style(if self.page == 0 { theme::Button::Primary } else { theme::Button::Text })
|
,
|
||||||
,
|
button!(
|
||||||
button!(
|
icon("preferences-desktop", 16),
|
||||||
icon("preferences-desktop", 16).width(Length::Units(16)),
|
text("Desktop"),
|
||||||
text("Desktop"),
|
horizontal_space(Length::Fill),
|
||||||
horizontal_space(Length::Fill),
|
)
|
||||||
)
|
.on_press(Message::Page(1))
|
||||||
.on_press(Message::Page(1))
|
.style(if self.page == 1 { theme::Button::Primary } else { theme::Button::Text })
|
||||||
.style(if self.page == 1 { theme::Button::Primary } else { theme::Button::Text })
|
,
|
||||||
,
|
button!(
|
||||||
button!(
|
icon("system-software-update", 16),
|
||||||
icon("system-software-update", 16).width(Length::Units(16)),
|
text("OS Upgrade & Recovery"),
|
||||||
text("OS Upgrade & Recovery"),
|
horizontal_space(Length::Fill),
|
||||||
horizontal_space(Length::Fill),
|
)
|
||||||
)
|
.on_press(Message::Page(2))
|
||||||
.on_press(Message::Page(2))
|
.style(if self.page == 2 { theme::Button::Primary } else { theme::Button::Text })
|
||||||
.style(if self.page == 2 { theme::Button::Primary } else { theme::Button::Text })
|
,
|
||||||
,
|
vertical_space(Length::Fill),
|
||||||
vertical_space(Length::Fill),
|
|
||||||
]
|
|
||||||
.spacing(12)
|
|
||||||
.padding(12)
|
|
||||||
.max_width(300)
|
|
||||||
)
|
)
|
||||||
.style(theme::Container::Custom(nav_bar_style))
|
|
||||||
.into();
|
.into();
|
||||||
|
|
||||||
let choose_theme = [Theme::Light, Theme::Dark].iter().fold(
|
let choose_theme = [Theme::Light, Theme::Dark].iter().fold(
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
use iced::widget::svg;
|
use iced::{
|
||||||
|
Length,
|
||||||
|
widget::svg,
|
||||||
|
};
|
||||||
|
|
||||||
pub fn icon(name: &str, size: u16) -> svg::Svg {
|
pub fn icon(name: &str, size: u16) -> svg::Svg {
|
||||||
let handle = match freedesktop_icons::lookup(name)
|
let handle = match freedesktop_icons::lookup(name)
|
||||||
|
|
@ -15,4 +18,6 @@ pub fn icon(name: &str, size: u16) -> svg::Svg {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
svg::Svg::new(handle)
|
svg::Svg::new(handle)
|
||||||
|
.width(Length::Units(size))
|
||||||
|
.height(Length::Units(size))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,4 +19,4 @@ mod list_view;
|
||||||
pub use list_view::list_view_style;
|
pub use list_view::list_view_style;
|
||||||
|
|
||||||
mod nav_bar;
|
mod nav_bar;
|
||||||
pub use nav_bar::nav_bar_style;
|
pub use nav_bar::{nav_bar, nav_bar_style};
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,29 @@ use iced::{
|
||||||
Background,
|
Background,
|
||||||
Color,
|
Color,
|
||||||
Theme,
|
Theme,
|
||||||
widget::{
|
widget
|
||||||
container,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn nav_bar_style(theme: &Theme) -> container::Appearance {
|
#[macro_export]
|
||||||
container::Appearance {
|
macro_rules! nav_bar {
|
||||||
|
($($x:expr),+ $(,)?) => (
|
||||||
|
$crate::iced::widget::Container::new(
|
||||||
|
$crate::iced::widget::Column::with_children(
|
||||||
|
vec![$($crate::iced::Element::from($x)),+]
|
||||||
|
)
|
||||||
|
.spacing(12)
|
||||||
|
)
|
||||||
|
.max_width(300)
|
||||||
|
.padding(12)
|
||||||
|
.style(theme::Container::Custom(
|
||||||
|
$crate::widget::nav_bar_style
|
||||||
|
))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
pub use nav_bar;
|
||||||
|
|
||||||
|
pub fn nav_bar_style(theme: &Theme) -> widget::container::Appearance {
|
||||||
|
widget::container::Appearance {
|
||||||
text_color: None,
|
text_color: None,
|
||||||
background: Some(Background::Color(
|
background: Some(Background::Color(
|
||||||
match theme {
|
match theme {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue