improv: use ContextDrawer model in pages
This commit is contained in:
parent
45f1183d92
commit
5c92c91443
12 changed files with 276 additions and 314 deletions
|
|
@ -150,7 +150,7 @@ pub enum Message {
|
|||
DesktopInfo,
|
||||
Error(String),
|
||||
None,
|
||||
OpenContextDrawer(Entity, Cow<'static, str>),
|
||||
OpenContextDrawer(Entity),
|
||||
#[cfg(feature = "wayland")]
|
||||
OutputAdded(OutputInfo, WlOutput),
|
||||
#[cfg(feature = "wayland")]
|
||||
|
|
@ -756,10 +756,9 @@ impl cosmic::Application for SettingsApp {
|
|||
|
||||
Message::SetTheme(t) => return cosmic::command::set_theme(t),
|
||||
|
||||
Message::OpenContextDrawer(page, title) => {
|
||||
Message::OpenContextDrawer(page) => {
|
||||
self.core.window.show_context = true;
|
||||
self.active_context_page = Some(page);
|
||||
self.context_title = Some(title.to_string());
|
||||
}
|
||||
|
||||
Message::Error(error) => {
|
||||
|
|
@ -1124,8 +1123,6 @@ impl SettingsApp {
|
|||
|
||||
/// Displays the sub-pages view of a page.
|
||||
fn sub_page_view(&self, sub_pages: &[page::Entity]) -> cosmic::Element<Message> {
|
||||
let theme = cosmic::theme::active();
|
||||
|
||||
let page_list = sub_pages
|
||||
.iter()
|
||||
.copied()
|
||||
|
|
@ -1143,7 +1140,7 @@ impl SettingsApp {
|
|||
))
|
||||
},
|
||||
)
|
||||
.spacing(theme.cosmic().space_s())
|
||||
.spacing(cosmic::theme::spacing().space_s)
|
||||
.apply(|widget| scrollable(self.page_container(widget)).height(Length::Fill))
|
||||
.apply(Element::from)
|
||||
.map(Message::Page);
|
||||
|
|
|
|||
|
|
@ -112,11 +112,23 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
|
||||
fn context_drawer(&self) -> Option<ContextDrawer<crate::pages::Message>> {
|
||||
match &self.context {
|
||||
Some(Context::AddApplication(directory_type)) => Some(cosmic::app::context_drawer(
|
||||
self.add_application_context_view(directory_type.clone())
|
||||
.map(crate::pages::Message::from),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)),
|
||||
Some(Context::AddApplication(directory_type)) => {
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.application_search)
|
||||
.on_input(Message::ApplicationSearch)
|
||||
.on_clear(Message::ApplicationSearch(String::new()))
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::from);
|
||||
|
||||
Some(
|
||||
cosmic::app::context_drawer(
|
||||
self.add_application_context_view(directory_type.clone())
|
||||
.map(crate::pages::Message::from),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("startup-apps", "search-for-application"))
|
||||
.header(search),
|
||||
)
|
||||
}
|
||||
None => None,
|
||||
}
|
||||
}
|
||||
|
|
@ -203,10 +215,7 @@ impl Page {
|
|||
}
|
||||
Message::ShowApplicationSidebar(directory_type) => {
|
||||
self.context = Some(Context::AddApplication(directory_type));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("startup-apps", "search-for-application").into(),
|
||||
));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
Message::AddStartupApplication(directory_type, app) => {
|
||||
let mut file_name = app.clone().appid;
|
||||
|
|
@ -311,13 +320,7 @@ impl Page {
|
|||
&self,
|
||||
directory_type: DirectoryType,
|
||||
) -> Element<'_, crate::pages::Message> {
|
||||
let cosmic::cosmic_theme::Spacing {
|
||||
space_xs, space_l, ..
|
||||
} = cosmic::theme::spacing();
|
||||
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.application_search)
|
||||
.on_input(Message::ApplicationSearch)
|
||||
.on_clear(Message::ApplicationSearch(String::new()));
|
||||
let cosmic::cosmic_theme::Spacing { space_xs, .. } = cosmic::theme::spacing();
|
||||
|
||||
let mut list = widget::list_column();
|
||||
let search_input = &self.application_search.trim().to_lowercase();
|
||||
|
|
@ -355,12 +358,7 @@ impl Page {
|
|||
}
|
||||
}
|
||||
|
||||
widget::column()
|
||||
.padding([2, 0])
|
||||
.spacing(space_l)
|
||||
.push(search)
|
||||
.push(list)
|
||||
.apply(Element::from)
|
||||
list.apply(Element::from)
|
||||
.map(crate::pages::Message::StartupApps)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ use cosmic::{
|
|||
Apply, Element, Task,
|
||||
config::{CosmicTk, FontConfig},
|
||||
iced_core::text::Wrapping,
|
||||
theme,
|
||||
widget::{self, settings, svg},
|
||||
};
|
||||
use cosmic_config::ConfigSet;
|
||||
|
|
@ -65,20 +64,13 @@ pub fn load_font_families() -> (Vec<Arc<str>>, Vec<Arc<str>>) {
|
|||
|
||||
pub fn selection_context<'a>(
|
||||
families: &'a [Arc<str>],
|
||||
search: &'a str,
|
||||
current_font: &str,
|
||||
system: bool,
|
||||
) -> Element<'a, super::Message> {
|
||||
let space_l = theme::active().cosmic().spacing.space_l;
|
||||
|
||||
let svg_accent = Rc::new(|theme: &cosmic::Theme| svg::Style {
|
||||
color: Some(theme.cosmic().accent_color().into()),
|
||||
});
|
||||
|
||||
let search_input = widget::search_input(fl!("type-to-search"), search)
|
||||
.on_input(super::Message::FontSearch)
|
||||
.on_clear(super::Message::FontSearch(String::new()));
|
||||
|
||||
let list = families.iter().fold(widget::list_column(), |list, family| {
|
||||
let selected = &**family == current_font;
|
||||
list.add(
|
||||
|
|
@ -105,12 +97,7 @@ pub fn selection_context<'a>(
|
|||
)
|
||||
});
|
||||
|
||||
widget::column()
|
||||
.padding([2, 0])
|
||||
.spacing(space_l)
|
||||
.push(search_input)
|
||||
.push(list)
|
||||
.into()
|
||||
list.into()
|
||||
}
|
||||
|
||||
/// Set the preferred icon theme for GNOME/GTK applications.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ pub mod icon_themes;
|
|||
use std::borrow::Cow;
|
||||
use std::sync::Arc;
|
||||
|
||||
use cosmic::app::ContextDrawer;
|
||||
use cosmic::app::{ContextDrawer, context_drawer};
|
||||
//TODO: use embedded cosmic-files for portability
|
||||
use cosmic::config::CosmicTk;
|
||||
use cosmic::cosmic_config::{Config, ConfigSet, CosmicConfigEntry};
|
||||
|
|
@ -19,7 +19,6 @@ use cosmic::cosmic_theme::{
|
|||
#[cfg(feature = "xdg-portal")]
|
||||
use cosmic::dialog::file_chooser::{self, FileFilter};
|
||||
use cosmic::iced_core::{Alignment, Color, Length};
|
||||
use cosmic::iced_widget::scrollable::{Direction, Scrollbar};
|
||||
use cosmic::widget::icon::{from_name, icon};
|
||||
use cosmic::widget::{
|
||||
ColorPickerModel, button, color_picker::ColorPickerUpdate, container, flex_row,
|
||||
|
|
@ -469,9 +468,14 @@ impl From<CornerRadii> for Roundness {
|
|||
|
||||
impl Page {
|
||||
fn icons_and_toolkit(&self) -> Element<'_, crate::pages::Message> {
|
||||
let Spacing {
|
||||
space_xxs,
|
||||
space_xs,
|
||||
space_m,
|
||||
..
|
||||
} = cosmic::theme::spacing();
|
||||
|
||||
let active = self.icon_theme_active;
|
||||
let theme = cosmic::theme::active();
|
||||
let theme = theme.cosmic();
|
||||
cosmic::iced::widget::column![
|
||||
// Export theme choice
|
||||
settings::section().add(
|
||||
|
|
@ -496,15 +500,15 @@ impl Page {
|
|||
})
|
||||
.collect(),
|
||||
)
|
||||
.row_spacing(theme.space_xs())
|
||||
.column_spacing(theme.space_xs())
|
||||
.row_spacing(space_xs)
|
||||
.column_spacing(space_xs)
|
||||
.apply(container)
|
||||
.center_x(Length::Fill)
|
||||
.into()
|
||||
])
|
||||
.spacing(theme.space_xxs())
|
||||
.spacing(space_xxs)
|
||||
]
|
||||
.spacing(theme.space_m())
|
||||
.spacing(space_m)
|
||||
.width(Length::Fill)
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::Appearance)
|
||||
|
|
@ -522,20 +526,14 @@ impl Page {
|
|||
self.context_view = Some(ContextView::MonospaceFont);
|
||||
self.font_search.clear();
|
||||
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("monospace-font").into(),
|
||||
));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::DisplaySystemFont => {
|
||||
self.context_view = Some(ContextView::SystemFont);
|
||||
self.font_search.clear();
|
||||
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("interface-font").into(),
|
||||
));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::FontConfig(message) => {
|
||||
|
|
@ -627,11 +625,8 @@ impl Page {
|
|||
Message::AccentWindowHint(u) => {
|
||||
needs_sync = true;
|
||||
|
||||
let (task, needs_update) = self.update_color_picker(
|
||||
&u,
|
||||
ContextView::AccentWindowHint,
|
||||
fl!("window-hint-accent").into(),
|
||||
);
|
||||
let (task, needs_update) =
|
||||
self.update_color_picker(&u, ContextView::AccentWindowHint);
|
||||
|
||||
tasks.push(task);
|
||||
tasks.push(self.accent_window_hint.update::<app::Message>(u));
|
||||
|
|
@ -718,11 +713,8 @@ impl Page {
|
|||
}
|
||||
|
||||
Message::ApplicationBackground(u) => {
|
||||
let (task, needs_update) = self.update_color_picker(
|
||||
&u,
|
||||
ContextView::ApplicationBackground,
|
||||
fl!("app-background").into(),
|
||||
);
|
||||
let (task, needs_update) =
|
||||
self.update_color_picker(&u, ContextView::ApplicationBackground);
|
||||
|
||||
tasks.push(task);
|
||||
tasks.push(self.application_background.update::<app::Message>(u));
|
||||
|
|
@ -745,11 +737,8 @@ impl Page {
|
|||
}
|
||||
|
||||
Message::ContainerBackground(u) => {
|
||||
let (task, needs_update) = self.update_color_picker(
|
||||
&u,
|
||||
ContextView::ContainerBackground,
|
||||
fl!("container-background").into(),
|
||||
);
|
||||
let (task, needs_update) =
|
||||
self.update_color_picker(&u, ContextView::ContainerBackground);
|
||||
|
||||
tasks.push(task);
|
||||
tasks.push(self.container_background.update::<app::Message>(u));
|
||||
|
|
@ -772,11 +761,7 @@ impl Page {
|
|||
}
|
||||
|
||||
Message::CustomAccent(u) => {
|
||||
let (task, needs_update) = self.update_color_picker(
|
||||
&u,
|
||||
ContextView::CustomAccent,
|
||||
fl!("accent-color").into(),
|
||||
);
|
||||
let (task, needs_update) = self.update_color_picker(&u, ContextView::CustomAccent);
|
||||
|
||||
tasks.push(task);
|
||||
tasks.push(self.custom_accent.update::<app::Message>(u));
|
||||
|
|
@ -797,11 +782,7 @@ impl Page {
|
|||
}
|
||||
|
||||
Message::InterfaceText(u) => {
|
||||
let (task, needs_update) = self.update_color_picker(
|
||||
&u,
|
||||
ContextView::InterfaceText,
|
||||
fl!("text-tint").into(),
|
||||
);
|
||||
let (task, needs_update) = self.update_color_picker(&u, ContextView::InterfaceText);
|
||||
|
||||
tasks.push(task);
|
||||
tasks.push(self.interface_text.update::<app::Message>(u));
|
||||
|
|
@ -822,11 +803,8 @@ impl Page {
|
|||
}
|
||||
|
||||
Message::ControlComponent(u) => {
|
||||
let (task, needs_update) = self.update_color_picker(
|
||||
&u,
|
||||
ContextView::ControlComponent,
|
||||
fl!("control-tint").into(),
|
||||
);
|
||||
let (task, needs_update) =
|
||||
self.update_color_picker(&u, ContextView::ControlComponent);
|
||||
|
||||
tasks.push(task);
|
||||
tasks.push(self.control_component.update::<app::Message>(u));
|
||||
|
|
@ -1196,7 +1174,7 @@ impl Page {
|
|||
self.context_view = Some(ContextView::IconsAndToolkit);
|
||||
let mut tasks = Vec::new();
|
||||
tasks.push(cosmic::task::message(
|
||||
crate::app::Message::OpenContextDrawer(self.entity, "".into()),
|
||||
crate::app::Message::OpenContextDrawer(self.entity),
|
||||
));
|
||||
if !self.icons_fetched {
|
||||
self.icons_fetched = true;
|
||||
|
|
@ -1336,7 +1314,6 @@ impl Page {
|
|||
&mut self,
|
||||
message: &ColorPickerUpdate,
|
||||
context_view: ContextView,
|
||||
context_title: Cow<'static, str>,
|
||||
) -> (Task<app::Message>, bool) {
|
||||
let mut needs_update = false;
|
||||
|
||||
|
|
@ -1357,10 +1334,7 @@ impl Page {
|
|||
|
||||
ColorPickerUpdate::ToggleColorPicker => {
|
||||
self.context_view = Some(context_view);
|
||||
cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
context_title,
|
||||
))
|
||||
cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity))
|
||||
}
|
||||
|
||||
_ => Task::none(),
|
||||
|
|
@ -1623,54 +1597,78 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
}
|
||||
|
||||
fn context_drawer(&self) -> Option<ContextDrawer<'_, crate::pages::Message>> {
|
||||
let view = match self.context_view? {
|
||||
ContextView::AccentWindowHint => color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::AccentWindowHint,
|
||||
&self.accent_window_hint,
|
||||
Some(match self.context_view? {
|
||||
ContextView::AccentWindowHint => context_drawer(
|
||||
color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::AccentWindowHint,
|
||||
&self.accent_window_hint,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
.title(fl!("window-hint-accent")),
|
||||
|
||||
ContextView::ApplicationBackground => color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::ApplicationBackground,
|
||||
&self.application_background,
|
||||
ContextView::ApplicationBackground => context_drawer(
|
||||
color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::ApplicationBackground,
|
||||
&self.application_background,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
.title(fl!("app-background")),
|
||||
|
||||
ContextView::ContainerBackground => color_picker_context_view(
|
||||
Some(fl!("container-background", "desc-detail").into()),
|
||||
fl!("container-background", "reset").into(),
|
||||
Message::ContainerBackground,
|
||||
&self.container_background,
|
||||
ContextView::ContainerBackground => context_drawer(
|
||||
color_picker_context_view(
|
||||
Some(fl!("container-background", "desc-detail").into()),
|
||||
fl!("container-background", "reset").into(),
|
||||
Message::ContainerBackground,
|
||||
&self.container_background,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
.title(fl!("container-background")),
|
||||
|
||||
ContextView::ControlComponent => color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::ControlComponent,
|
||||
&self.control_component,
|
||||
ContextView::ControlComponent => context_drawer(
|
||||
color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::ControlComponent,
|
||||
&self.control_component,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
.title(fl!("control-tint")),
|
||||
|
||||
ContextView::CustomAccent => color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::CustomAccent,
|
||||
&self.custom_accent,
|
||||
ContextView::CustomAccent => context_drawer(
|
||||
color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::CustomAccent,
|
||||
&self.custom_accent,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
.title(fl!("accent-color")),
|
||||
|
||||
ContextView::InterfaceText => color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::InterfaceText,
|
||||
&self.interface_text,
|
||||
ContextView::InterfaceText => context_drawer(
|
||||
color_picker_context_view(
|
||||
None,
|
||||
RESET_TO_DEFAULT.as_str().into(),
|
||||
Message::InterfaceText,
|
||||
&self.interface_text,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
.title(fl!("text-tint")),
|
||||
|
||||
ContextView::SystemFont => {
|
||||
let filter = if self.font_search.is_empty() {
|
||||
|
|
@ -1678,16 +1676,21 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
} else {
|
||||
&self.font_filter
|
||||
};
|
||||
let search_input = widget::search_input(fl!("type-to-search"), &self.font_search)
|
||||
.on_input(Message::FontSearch)
|
||||
.on_clear(Message::FontSearch(String::new()))
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::Appearance);
|
||||
|
||||
let current_font = cosmic::config::interface_font();
|
||||
|
||||
font_config::selection_context(
|
||||
filter,
|
||||
&self.font_search,
|
||||
current_font.family.as_str(),
|
||||
true,
|
||||
context_drawer(
|
||||
font_config::selection_context(filter, current_font.family.as_str(), true)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance)
|
||||
.title(fl!("interface-font"))
|
||||
.header(search_input)
|
||||
}
|
||||
|
||||
ContextView::MonospaceFont => {
|
||||
|
|
@ -1696,25 +1699,28 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
} else {
|
||||
&self.font_filter
|
||||
};
|
||||
let search_input = widget::search_input(fl!("type-to-search"), &self.font_search)
|
||||
.on_input(Message::FontSearch)
|
||||
.on_clear(Message::FontSearch(String::new()))
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::Appearance);
|
||||
|
||||
let current_font = cosmic::config::monospace_font();
|
||||
|
||||
font_config::selection_context(
|
||||
filter,
|
||||
&self.font_search,
|
||||
current_font.family.as_str(),
|
||||
false,
|
||||
context_drawer(
|
||||
font_config::selection_context(filter, current_font.family.as_str(), false)
|
||||
.map(crate::pages::Message::Appearance),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.map(crate::pages::Message::Appearance)
|
||||
.title(fl!("monospace-font"))
|
||||
.header(search_input)
|
||||
}
|
||||
|
||||
ContextView::IconsAndToolkit => self.icons_and_toolkit(),
|
||||
};
|
||||
|
||||
Some(cosmic::app::context_drawer(
|
||||
view,
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
))
|
||||
ContextView::IconsAndToolkit => context_drawer(
|
||||
self.icons_and_toolkit(),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1745,7 +1751,7 @@ pub fn mode_and_colors() -> Section<crate::pages::Message> {
|
|||
.title(fl!("mode-and-colors"))
|
||||
.descriptions(descriptions)
|
||||
.view::<Page>(move |_binder, page, section| {
|
||||
let Spacing { space_xxs, .. } = cosmic::theme::active().cosmic().spacing;
|
||||
let Spacing { space_xxs, .. } = cosmic::theme::spacing();
|
||||
|
||||
let descriptions = §ion.descriptions;
|
||||
let palette = &page.theme_builder.palette.as_ref();
|
||||
|
|
@ -1779,7 +1785,7 @@ pub fn mode_and_colors() -> Section<crate::pages::Message> {
|
|||
|
||||
let accent_color_palette = cosmic::iced::widget::column![
|
||||
text::body(&descriptions[accent_color]),
|
||||
scrollable(
|
||||
scrollable::horizontal(
|
||||
accent_palette_row
|
||||
.push(if let Some(c) = page.custom_accent.get_applied_color() {
|
||||
container(color_button(
|
||||
|
|
@ -1800,7 +1806,6 @@ pub fn mode_and_colors() -> Section<crate::pages::Message> {
|
|||
.padding([0, 0, 16, 0])
|
||||
.spacing(16)
|
||||
)
|
||||
.direction(Direction::Horizontal(Scrollbar::new()))
|
||||
]
|
||||
.padding([16, 0, 0, 0])
|
||||
.spacing(space_xxs);
|
||||
|
|
|
|||
|
|
@ -120,9 +120,7 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
}
|
||||
|
||||
fn header_view(&self) -> Option<Element<'_, crate::pages::Message>> {
|
||||
let space_xxs = theme::active().cosmic().spacing.space_xxs;
|
||||
let content = row::with_capacity(2)
|
||||
.spacing(space_xxs)
|
||||
let content = row::with_capacity(1)
|
||||
.push(button::standard(fl!("add-applet")).on_press(Message::AddAppletDrawer))
|
||||
.apply(container)
|
||||
.width(Length::Fill)
|
||||
|
|
@ -134,16 +132,24 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
}
|
||||
|
||||
fn context_drawer(&self) -> Option<ContextDrawer<pages::Message>> {
|
||||
Some(cosmic::app::context_drawer(
|
||||
match self.context {
|
||||
Some(ContextDrawerVariant::AddApplet) => {
|
||||
self.add_applet_view(crate::pages::Message::PanelApplet)
|
||||
}
|
||||
Some(match self.context {
|
||||
Some(ContextDrawerVariant::AddApplet) => {
|
||||
let search_input = text_input::search_input(fl!("search-applets"), &self.search)
|
||||
.on_input(Message::Search)
|
||||
.on_paste(Message::Search)
|
||||
.width(Length::Fixed(312.0))
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::PanelApplet);
|
||||
|
||||
None => return None,
|
||||
},
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
))
|
||||
cosmic::app::context_drawer(
|
||||
self.add_applet_view(crate::pages::Message::PanelApplet),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("add-applet"))
|
||||
.header(search_input)
|
||||
}
|
||||
None => return None,
|
||||
})
|
||||
}
|
||||
|
||||
fn on_enter(&mut self) -> Task<crate::pages::Message> {
|
||||
|
|
@ -228,9 +234,8 @@ impl Page {
|
|||
let cosmic::cosmic_theme::Spacing {
|
||||
space_xxxs,
|
||||
space_xs,
|
||||
space_l,
|
||||
..
|
||||
} = theme::active().cosmic().spacing;
|
||||
} = theme::spacing();
|
||||
let mut list_column = list_column();
|
||||
let mut has_some = false;
|
||||
for info in self
|
||||
|
|
@ -287,17 +292,7 @@ impl Page {
|
|||
);
|
||||
}
|
||||
|
||||
let search = text_input::search_input(fl!("search-applets"), &self.search)
|
||||
.on_input(move |s| msg_map(Message::Search(s)))
|
||||
.on_paste(move |s| msg_map(Message::Search(s)))
|
||||
.width(Length::Fixed(312.0));
|
||||
|
||||
column::with_capacity(2)
|
||||
.push(search)
|
||||
.push(list_column)
|
||||
.align_x(Alignment::Center)
|
||||
.spacing(space_l)
|
||||
.into()
|
||||
list_column.into()
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_lines)]
|
||||
|
|
@ -421,10 +416,7 @@ impl Page {
|
|||
}
|
||||
Message::AddAppletDrawer => {
|
||||
self.context = Some(ContextDrawerVariant::AddApplet);
|
||||
return cosmic::task::message(app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
Cow::Owned(fl!("add-applet")),
|
||||
));
|
||||
return cosmic::task::message(app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
};
|
||||
Task::none()
|
||||
|
|
@ -443,7 +435,7 @@ pub fn lists<
|
|||
space_xxs,
|
||||
space_xs,
|
||||
..
|
||||
} = theme::active().cosmic().spacing;
|
||||
} = theme::spacing();
|
||||
let page = page.inner();
|
||||
let Some(config) = page.current_config.as_ref() else {
|
||||
return Element::from(text::body(fl!("unknown")));
|
||||
|
|
@ -642,7 +634,7 @@ impl<'a, Message: 'static + Clone> AppletReorderList<'a, Message> {
|
|||
space_xxs,
|
||||
space_xs,
|
||||
..
|
||||
} = theme::active().cosmic().spacing;
|
||||
} = theme::spacing();
|
||||
let applet_buttons = info
|
||||
.clone()
|
||||
.into_iter()
|
||||
|
|
@ -737,7 +729,7 @@ impl<'a, Message: 'static + Clone> AppletReorderList<'a, Message> {
|
|||
pos: Point,
|
||||
offered_applet: Applet<'a>,
|
||||
) -> Vec<Applet<'a>> {
|
||||
let space_xxs = theme::active().cosmic().spacing.space_xxs;
|
||||
let space_xxs = theme::spacing().space_xxs;
|
||||
let mut reordered: Vec<_> = self.info.clone();
|
||||
|
||||
if !layout.bounds().contains(pos) {
|
||||
|
|
@ -916,7 +908,7 @@ where
|
|||
shell: &mut Shell<'_, Message>,
|
||||
viewport: &Rectangle,
|
||||
) -> event::Status {
|
||||
let space_xxs = theme::active().cosmic().spacing.space_xxs;
|
||||
let space_xxs = theme::spacing().space_xxs;
|
||||
let mut ret = match self.inner.as_widget_mut().on_event(
|
||||
&mut tree.children[0],
|
||||
event.clone(),
|
||||
|
|
|
|||
|
|
@ -290,6 +290,7 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
},
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("color-picker"))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -770,10 +771,7 @@ impl Page {
|
|||
Message::ColorAddContext => {
|
||||
self.context_view = Some(ContextView::AddColor);
|
||||
self.selection.active = Choice::Color(wallpaper::Color::Single([0., 0., 0.]));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("color-picker").into(),
|
||||
));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::ColorRemove(color) => {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ pub mod arrangement;
|
|||
use crate::{app, pages};
|
||||
use arrangement::Arrangement;
|
||||
use cosmic::iced::{Alignment, Length, time};
|
||||
use cosmic::iced_widget::scrollable::{Direction, RelativeOffset, Scrollbar};
|
||||
use cosmic::iced_widget::scrollable::RelativeOffset;
|
||||
use cosmic::widget::{
|
||||
self, column, container, dropdown, list_column, segmented_button, tab_bar, text, toggler,
|
||||
};
|
||||
|
|
@ -1144,7 +1144,7 @@ pub fn display_arrangement() -> Section<crate::pages::Message> {
|
|||
let descriptions = §ion.descriptions;
|
||||
let cosmic::cosmic_theme::Spacing {
|
||||
space_xxs, space_m, ..
|
||||
} = cosmic::theme::active().cosmic().spacing;
|
||||
} = cosmic::theme::spacing();
|
||||
|
||||
column()
|
||||
.push(
|
||||
|
|
@ -1159,10 +1159,9 @@ pub fn display_arrangement() -> Section<crate::pages::Message> {
|
|||
.on_placement(|id, x, y| {
|
||||
pages::Message::Displays(Message::Position(id, x, y))
|
||||
})
|
||||
.apply(widget::scrollable)
|
||||
.apply(widget::scrollable::horizontal)
|
||||
.id(page.display_arrangement_scrollable.clone())
|
||||
.width(Length::Shrink)
|
||||
.direction(Direction::Horizontal(Scrollbar::new()))
|
||||
.apply(container)
|
||||
.center_x(Length::Fill)
|
||||
})
|
||||
|
|
@ -1192,7 +1191,6 @@ pub fn display_configuration() -> Section<crate::pages::Message> {
|
|||
.descriptions(descriptions)
|
||||
.view::<Page>(move |_binder, page, section| {
|
||||
let descriptions = §ion.descriptions;
|
||||
let theme = cosmic::theme::active();
|
||||
|
||||
let Some(&active_id) = page.display_tabs.active_data::<OutputKey>() else {
|
||||
return column().into();
|
||||
|
|
@ -1296,7 +1294,7 @@ pub fn display_configuration() -> Section<crate::pages::Message> {
|
|||
items
|
||||
});
|
||||
|
||||
let mut content = column().spacing(theme.cosmic().space_xs());
|
||||
let mut content = column().spacing(cosmic::theme::spacing().space_xs);
|
||||
|
||||
if page.list.outputs.len() > 1 {
|
||||
let display_switcher = tab_bar::horizontal(&page.display_tabs)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use std::cmp;
|
|||
|
||||
use cosmic::{
|
||||
Apply, Element, Task,
|
||||
app::ContextDrawer,
|
||||
app::{ContextDrawer, context_drawer},
|
||||
cosmic_config::{self, ConfigSet},
|
||||
iced::{Alignment, Color, Length},
|
||||
iced_core::Border,
|
||||
|
|
@ -298,19 +298,33 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
}
|
||||
|
||||
fn context_drawer(&self) -> Option<ContextDrawer<'_, crate::pages::Message>> {
|
||||
self.context.as_ref().map(|context| {
|
||||
cosmic::app::context_drawer(
|
||||
match context {
|
||||
Context::ShowInputSourcesContext => self.add_input_source_view(),
|
||||
Context::SpecialCharacter(special_key) => self
|
||||
.special_character_key_view(*special_key)
|
||||
.map(crate::pages::Message::Keyboard),
|
||||
Context::NumlockState => self
|
||||
.numlock_state_view()
|
||||
.map(crate::pages::Message::Keyboard),
|
||||
},
|
||||
self.context.as_ref().map(|context| match context {
|
||||
Context::ShowInputSourcesContext => {
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.input_source_search)
|
||||
.on_input(Message::InputSourceSearch)
|
||||
.on_clear(Message::InputSourceSearch(String::new()))
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::Keyboard);
|
||||
|
||||
context_drawer(
|
||||
self.add_input_source_view(),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("keyboard-sources", "add"))
|
||||
.header(search)
|
||||
}
|
||||
Context::SpecialCharacter(special_key) => context_drawer(
|
||||
self.special_character_key_view(*special_key)
|
||||
.map(crate::pages::Message::Keyboard),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(special_key.title()),
|
||||
Context::NumlockState => context_drawer(
|
||||
self.numlock_state_view()
|
||||
.map(crate::pages::Message::Keyboard),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("keyboard-numlock-boot", "set")),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -487,10 +501,7 @@ impl Page {
|
|||
|
||||
Message::ShowInputSourcesContext => {
|
||||
self.context = Some(Context::ShowInputSourcesContext);
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("keyboard-sources", "add").into(),
|
||||
));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::ExpandInputSourcePopover(value) => {
|
||||
|
|
@ -499,18 +510,12 @@ impl Page {
|
|||
|
||||
Message::OpenSpecialCharacterContext(key) => {
|
||||
self.context = Some(Context::SpecialCharacter(key));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
key.title().into(),
|
||||
));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::OpenNumlockContext => {
|
||||
self.context = Some(Context::NumlockState);
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("keyboard-numlock-boot", "set").into(),
|
||||
));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::SpecialCharacterSelect(id) => {
|
||||
|
|
@ -553,11 +558,7 @@ impl Page {
|
|||
}
|
||||
|
||||
pub fn add_input_source_view(&self) -> Element<'_, crate::pages::Message> {
|
||||
let space_l = theme::active().cosmic().spacing.space_l;
|
||||
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.input_source_search)
|
||||
.on_input(Message::InputSourceSearch)
|
||||
.on_clear(Message::InputSourceSearch(String::new()));
|
||||
let space_l = theme::spacing().space_l;
|
||||
|
||||
let toggler = settings::item::builder(fl!("show-extended-input-sources")).toggler(
|
||||
self.show_extended_input_sources,
|
||||
|
|
@ -577,9 +578,7 @@ impl Page {
|
|||
}
|
||||
|
||||
widget::column()
|
||||
.padding([2, 0])
|
||||
.spacing(space_l)
|
||||
.push(search)
|
||||
.push(toggler)
|
||||
.push(list)
|
||||
.apply(Element::from)
|
||||
|
|
@ -715,7 +714,7 @@ fn input_sources() -> Section<crate::pages::Message> {
|
|||
.on_press(Message::ShowInputSourcesContext);
|
||||
|
||||
widget::column::with_capacity(2)
|
||||
.spacing(cosmic::theme::active().cosmic().space_xxs())
|
||||
.spacing(cosmic::theme::spacing().space_xxs)
|
||||
.push(section)
|
||||
.push(
|
||||
widget::container(add_input_source)
|
||||
|
|
@ -800,7 +799,6 @@ fn keyboard_typing_assist() -> Section<crate::pages::Message> {
|
|||
.descriptions(descriptions)
|
||||
.view::<Page>(move |_binder, page, section| {
|
||||
let descriptions = §ion.descriptions;
|
||||
let theme = cosmic::theme::active();
|
||||
|
||||
settings::section()
|
||||
.title(§ion.title)
|
||||
|
|
@ -819,7 +817,7 @@ fn keyboard_typing_assist() -> Section<crate::pages::Message> {
|
|||
|
||||
row::with_capacity(3)
|
||||
.align_y(Alignment::Center)
|
||||
.spacing(theme.cosmic().space_s())
|
||||
.spacing(cosmic::theme::spacing().space_s)
|
||||
.push(widget::text::body(&descriptions[short]))
|
||||
.push(delay_slider)
|
||||
.push(widget::text::body(&descriptions[long]))
|
||||
|
|
@ -839,7 +837,7 @@ fn keyboard_typing_assist() -> Section<crate::pages::Message> {
|
|||
|
||||
row::with_capacity(3)
|
||||
.align_y(Alignment::Center)
|
||||
.spacing(theme.cosmic().space_s())
|
||||
.spacing(cosmic::theme::spacing().space_s)
|
||||
.push(widget::text::body(&descriptions[slow]))
|
||||
.push(rate_slider)
|
||||
.push(widget::text::body(&descriptions[fast]))
|
||||
|
|
|
|||
|
|
@ -459,7 +459,7 @@ impl Model {
|
|||
self.replace_dialog = None;
|
||||
|
||||
let mut tasks = vec![cosmic::task::message(
|
||||
crate::app::Message::OpenContextDrawer(self.entity, "".into()),
|
||||
crate::app::Message::OpenContextDrawer(self.entity),
|
||||
)];
|
||||
|
||||
if let Some(model) = self.shortcut_models.get(0) {
|
||||
|
|
@ -572,7 +572,7 @@ fn context_drawer<'a>(
|
|||
space_xs,
|
||||
space_l,
|
||||
..
|
||||
} = theme::active().cosmic().spacing;
|
||||
} = theme::spacing();
|
||||
|
||||
let model = &shortcuts[id];
|
||||
|
||||
|
|
|
|||
|
|
@ -203,10 +203,7 @@ impl Page {
|
|||
Message::ShortcutContext => {
|
||||
self.add_shortcut.enable();
|
||||
return Task::batch(vec![
|
||||
cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("custom-shortcuts", "context").into(),
|
||||
)),
|
||||
cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity)),
|
||||
widget::text_input::focus(self.name_id.clone()),
|
||||
]);
|
||||
}
|
||||
|
|
@ -363,11 +360,14 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
|
||||
fn context_drawer(&self) -> Option<ContextDrawer<'_, crate::pages::Message>> {
|
||||
if self.add_shortcut.active {
|
||||
Some(cosmic::app::context_drawer(
|
||||
self.add_keybinding_context()
|
||||
.map(crate::pages::Message::CustomShortcuts),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
))
|
||||
Some(
|
||||
cosmic::app::context_drawer(
|
||||
self.add_keybinding_context()
|
||||
.map(crate::pages::Message::CustomShortcuts),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("custom-shortcuts", "context")),
|
||||
)
|
||||
} else {
|
||||
self.model.context_drawer(|msg| {
|
||||
crate::pages::Message::CustomShortcuts(Message::Shortcut(msg))
|
||||
|
|
|
|||
|
|
@ -168,11 +168,21 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
|
||||
fn context_drawer(&self) -> Option<ContextDrawer<crate::pages::Message>> {
|
||||
if self.timezone_context {
|
||||
return Some(cosmic::app::context_drawer(
|
||||
self.timezone_context_view()
|
||||
.map(crate::pages::Message::from),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
));
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.timezone_search)
|
||||
.on_input(Message::TimezoneSearch)
|
||||
.on_clear(Message::TimezoneSearch(String::new()))
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::DateAndTime);
|
||||
|
||||
return Some(
|
||||
cosmic::app::context_drawer(
|
||||
self.timezone_context_view()
|
||||
.map(crate::pages::Message::from),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("time-zone"))
|
||||
.header(search),
|
||||
);
|
||||
}
|
||||
|
||||
None
|
||||
|
|
@ -185,10 +195,7 @@ impl Page {
|
|||
Message::TimezoneContext => {
|
||||
self.timezone_search.clear();
|
||||
self.timezone_context = true;
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("time-zone").into(),
|
||||
));
|
||||
return cosmic::task::message(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::MilitaryTime(enable) => {
|
||||
|
|
@ -317,12 +324,6 @@ impl Page {
|
|||
}
|
||||
|
||||
fn timezone_context_view(&self) -> Element<'_, crate::pages::Message> {
|
||||
let space_l = cosmic::theme::active().cosmic().spacing.space_l;
|
||||
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.timezone_search)
|
||||
.on_input(Message::TimezoneSearch)
|
||||
.on_clear(Message::TimezoneSearch(String::new()));
|
||||
|
||||
let mut list = widget::list_column();
|
||||
|
||||
let search_input = &self.timezone_search.trim().to_lowercase();
|
||||
|
|
@ -333,12 +334,7 @@ impl Page {
|
|||
}
|
||||
}
|
||||
|
||||
widget::column()
|
||||
.padding([2, 0])
|
||||
.spacing(space_l)
|
||||
.push(search)
|
||||
.push(list)
|
||||
.apply(Element::from)
|
||||
list.apply(Element::from)
|
||||
.map(crate::pages::Message::DateAndTime)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ use std::rc::Rc;
|
|||
use std::str::FromStr;
|
||||
use std::sync::Arc;
|
||||
|
||||
use cosmic::app::ContextDrawer;
|
||||
use cosmic::app::{ContextDrawer, context_drawer};
|
||||
use cosmic::iced::{Alignment, Border, Color, Length};
|
||||
use cosmic::iced_core::text::Wrapping;
|
||||
use cosmic::widget::{self, button, container};
|
||||
|
|
@ -154,14 +154,45 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
}
|
||||
|
||||
fn context_drawer(&self) -> Option<ContextDrawer<'_, crate::pages::Message>> {
|
||||
Some(cosmic::app::context_drawer(
|
||||
match self.context.as_ref()? {
|
||||
ContextView::AddLanguage => self.add_language_view(),
|
||||
ContextView::Region => self.region_view(),
|
||||
Some(match self.context.as_ref()? {
|
||||
ContextView::AddLanguage => {
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.add_language_search)
|
||||
.on_input(Message::AddLanguageSearch)
|
||||
.on_clear(Message::AddLanguageSearch(String::new()))
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::from);
|
||||
let install_additional_button =
|
||||
widget::button::standard(fl!("install-additional-languages"))
|
||||
.on_press(Message::InstallAdditionalLanguages)
|
||||
.apply(widget::container)
|
||||
.width(Length::Fill)
|
||||
.align_x(Alignment::End)
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::from);
|
||||
|
||||
context_drawer(
|
||||
self.add_language_view().map(crate::pages::Message::from),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("add-language", "context"))
|
||||
.header(search)
|
||||
.footer(install_additional_button)
|
||||
}
|
||||
.map(crate::pages::Message::from),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
))
|
||||
ContextView::Region => {
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.add_language_search)
|
||||
.on_input(Message::AddLanguageSearch)
|
||||
.on_clear(Message::AddLanguageSearch(String::new()))
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::from);
|
||||
|
||||
context_drawer(
|
||||
self.region_view().map(crate::pages::Message::from),
|
||||
crate::pages::Message::CloseContextDrawer,
|
||||
)
|
||||
.title(fl!("region"))
|
||||
.header(search)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -208,10 +239,7 @@ impl Page {
|
|||
|
||||
Message::AddLanguageContext => {
|
||||
self.context = Some(ContextView::AddLanguage);
|
||||
return cosmic::Task::done(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("add-language", "context").into(),
|
||||
));
|
||||
return cosmic::Task::done(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::AddLanguageSearch(search) => {
|
||||
|
|
@ -253,10 +281,7 @@ impl Page {
|
|||
|
||||
Message::RegionContext => {
|
||||
self.context = Some(ContextView::Region);
|
||||
return cosmic::Task::done(crate::app::Message::OpenContextDrawer(
|
||||
self.entity,
|
||||
fl!("region").into(),
|
||||
));
|
||||
return cosmic::Task::done(crate::app::Message::OpenContextDrawer(self.entity));
|
||||
}
|
||||
|
||||
Message::SourceContext(context_message) => {
|
||||
|
|
@ -310,12 +335,6 @@ impl Page {
|
|||
}
|
||||
|
||||
fn add_language_view(&self) -> cosmic::Element<'_, crate::pages::Message> {
|
||||
let cosmic::cosmic_theme::Spacing { space_l, .. } = theme::active().cosmic().spacing;
|
||||
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.add_language_search)
|
||||
.on_input(Message::AddLanguageSearch)
|
||||
.on_clear(Message::AddLanguageSearch(String::new()));
|
||||
|
||||
let mut list = widget::list_column();
|
||||
|
||||
let search_input = &self.add_language_search.trim().to_lowercase();
|
||||
|
|
@ -370,21 +389,7 @@ impl Page {
|
|||
}
|
||||
}
|
||||
|
||||
let install_additional_button =
|
||||
widget::button::standard(fl!("install-additional-languages"))
|
||||
.on_press(Message::InstallAdditionalLanguages)
|
||||
.apply(widget::container)
|
||||
.width(Length::Fill)
|
||||
.align_x(Alignment::End);
|
||||
|
||||
widget::column()
|
||||
.padding([2, 0])
|
||||
.spacing(space_l)
|
||||
.push(search)
|
||||
.push(list)
|
||||
.push(install_additional_button)
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::Region)
|
||||
list.apply(Element::from).map(crate::pages::Message::Region)
|
||||
}
|
||||
|
||||
fn formatted_date(&self) -> String {
|
||||
|
|
@ -519,17 +524,11 @@ impl Page {
|
|||
}
|
||||
|
||||
fn region_view(&self) -> cosmic::Element<'_, crate::pages::Message> {
|
||||
let space_l = theme::active().cosmic().spacing.space_l;
|
||||
|
||||
let svg_accent = Rc::new(|theme: &cosmic::Theme| {
|
||||
let color = theme.cosmic().accent_color().into();
|
||||
cosmic::widget::svg::Style { color: Some(color) }
|
||||
});
|
||||
|
||||
let search = widget::search_input(fl!("type-to-search"), &self.add_language_search)
|
||||
.on_input(Message::AddLanguageSearch)
|
||||
.on_clear(Message::AddLanguageSearch(String::new()));
|
||||
|
||||
let mut list = widget::list_column();
|
||||
|
||||
let search_input = &self.add_language_search.trim().to_lowercase();
|
||||
|
|
@ -576,13 +575,7 @@ impl Page {
|
|||
}
|
||||
}
|
||||
|
||||
widget::column()
|
||||
.padding([2, 0])
|
||||
.spacing(space_l)
|
||||
.push(search)
|
||||
.push(list)
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::Region)
|
||||
list.apply(Element::from).map(crate::pages::Message::Region)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -643,7 +636,7 @@ mod preferred_languages {
|
|||
.push(description)
|
||||
.push(content)
|
||||
.push(add_language_button)
|
||||
.spacing(cosmic::theme::active().cosmic().spacing.space_xxs)
|
||||
.spacing(cosmic::theme::spacing().space_xxs)
|
||||
.apply(cosmic::Element::from)
|
||||
.map(Into::into)
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue