improv: make popover styling consistent
Makes all popovers use the same styling, with hover highlights.
This commit is contained in:
parent
a73f8c85db
commit
7a1a3115d8
11 changed files with 98 additions and 133 deletions
|
|
@ -400,7 +400,7 @@ impl cosmic::Application for SettingsApp {
|
||||||
crate::pages::Message::AccessibilityShortcuts(message) => {
|
crate::pages::Message::AccessibilityShortcuts(message) => {
|
||||||
if let Some(page) = self
|
if let Some(page) = self
|
||||||
.pages
|
.pages
|
||||||
.page_mut::<input::keyboard::shortcuts::accessibility::Page>()
|
.page_mut::<input::keyboard::shortcuts::accessibility::Page>()
|
||||||
{
|
{
|
||||||
return page.update(message).map(Into::into);
|
return page.update(message).map(Into::into);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -238,7 +238,7 @@ impl page::Page<crate::pages::Message> for Page {
|
||||||
let control = widget::column::with_capacity(2)
|
let control = widget::column::with_capacity(2)
|
||||||
.push(description)
|
.push(description)
|
||||||
.push(pin)
|
.push(pin)
|
||||||
.spacing(theme::active().cosmic().space_xxs());
|
.spacing(theme::spacing().space_xxs);
|
||||||
|
|
||||||
let confirm_button =
|
let confirm_button =
|
||||||
widget::button::suggested(fl!("confirm")).on_press(Message::PinConfirm);
|
widget::button::suggested(fl!("confirm")).on_press(Message::PinConfirm);
|
||||||
|
|
@ -783,12 +783,11 @@ fn status() -> Section<crate::pages::Message> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn popup_button(message: Option<Message>, text: &str) -> Element<'_, Message> {
|
fn popup_button(message: Option<Message>, text: &str) -> Element<'_, Message> {
|
||||||
let theme = theme::active();
|
let spacing = theme::spacing();
|
||||||
let theme = theme.cosmic();
|
|
||||||
widget::text::body(text)
|
widget::text::body(text)
|
||||||
.align_y(Alignment::Center)
|
.align_y(Alignment::Center)
|
||||||
.apply(widget::button::custom)
|
.apply(widget::button::custom)
|
||||||
.padding([theme.space_xxxs(), theme.space_xs()])
|
.padding([spacing.space_xxxs, spacing.space_xs])
|
||||||
.width(Length::Fill)
|
.width(Length::Fill)
|
||||||
.class(theme::Button::MenuItem)
|
.class(theme::Button::MenuItem)
|
||||||
.on_press_maybe(message)
|
.on_press_maybe(message)
|
||||||
|
|
@ -839,24 +838,23 @@ fn connected_devices() -> Section<crate::pages::Message> {
|
||||||
)
|
)
|
||||||
.position(widget::popover::Position::Bottom)
|
.position(widget::popover::Position::Bottom)
|
||||||
.on_close(Message::PopupDevice(None))
|
.on_close(Message::PopupDevice(None))
|
||||||
.popup({
|
.popup(
|
||||||
widget::container(
|
widget::column()
|
||||||
widget::column()
|
.push_maybe(device.is_connected().then(|| {
|
||||||
.push_maybe(device.is_connected().then(|| {
|
popup_button(
|
||||||
popup_button(
|
Some(Message::DisconnectDevice(path.clone())),
|
||||||
Some(Message::DisconnectDevice(path.clone())),
|
&descriptions[device_disconnect],
|
||||||
&descriptions[device_disconnect],
|
)
|
||||||
)
|
}))
|
||||||
}))
|
.push(popup_button(
|
||||||
.push(popup_button(
|
Some(Message::ForgetDevice(path.clone())),
|
||||||
Some(Message::ForgetDevice(path.clone())),
|
&descriptions[device_forget],
|
||||||
&descriptions[device_forget],
|
))
|
||||||
)),
|
.width(Length::Fixed(200.0))
|
||||||
)
|
.apply(widget::container)
|
||||||
.width(Length::Fixed(200.0))
|
.padding(theme::spacing().space_xxs)
|
||||||
.padding(theme::active().cosmic().space_xxxs())
|
.class(theme::Container::Dropdown),
|
||||||
.class(theme::Container::Dialog)
|
)
|
||||||
})
|
|
||||||
.into()
|
.into()
|
||||||
} else {
|
} else {
|
||||||
widget::button::icon(widget::icon::from_name("view-more-symbolic"))
|
widget::button::icon(widget::icon::from_name("view-more-symbolic"))
|
||||||
|
|
@ -983,7 +981,7 @@ fn multiple_adapter() -> Section<crate::pages::Message> {
|
||||||
.size(20)
|
.size(20)
|
||||||
.into(),
|
.into(),
|
||||||
widget::horizontal_space()
|
widget::horizontal_space()
|
||||||
.width(theme::active().cosmic().space_xxs())
|
.width(theme::spacing().space_xxs)
|
||||||
.into(),
|
.into(),
|
||||||
text(&adapter.alias).wrapping(Wrapping::Word).into(),
|
text(&adapter.alias).wrapping(Wrapping::Word).into(),
|
||||||
widget::horizontal_space().into(),
|
widget::horizontal_space().into(),
|
||||||
|
|
|
||||||
|
|
@ -441,7 +441,7 @@ impl Content {
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
// Icon theme previews
|
// Icon theme previews
|
||||||
widget::column::with_children(vec![
|
widget::column::with_children([
|
||||||
text::heading(&*ICON_THEME).into(),
|
text::heading(&*ICON_THEME).into(),
|
||||||
flex_row(
|
flex_row(
|
||||||
self.icon_themes
|
self.icon_themes
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ pub fn button(
|
||||||
cosmic::widget::column()
|
cosmic::widget::column()
|
||||||
.push(
|
.push(
|
||||||
cosmic::widget::button::custom_image_button(
|
cosmic::widget::button::custom_image_button(
|
||||||
cosmic::widget::column::with_children(vec![
|
cosmic::widget::column::with_children([
|
||||||
cosmic::widget::row()
|
cosmic::widget::row()
|
||||||
.extend(
|
.extend(
|
||||||
handles
|
handles
|
||||||
|
|
|
||||||
|
|
@ -439,8 +439,8 @@ pub fn lists<
|
||||||
return Element::from(text::body(fl!("unknown")));
|
return Element::from(text::body(fl!("unknown")));
|
||||||
};
|
};
|
||||||
|
|
||||||
column::with_children(vec![
|
column::with_children([
|
||||||
column::with_children(vec![
|
column::with_children([
|
||||||
text::body(fl!("start-segment")).into(),
|
text::body(fl!("start-segment")).into(),
|
||||||
AppletReorderList::new(
|
AppletReorderList::new(
|
||||||
config
|
config
|
||||||
|
|
@ -471,7 +471,7 @@ pub fn lists<
|
||||||
])
|
])
|
||||||
.spacing(space_xxs)
|
.spacing(space_xxs)
|
||||||
.into(),
|
.into(),
|
||||||
column::with_children(vec![
|
column::with_children([
|
||||||
text::body(fl!("center-segment")).into(),
|
text::body(fl!("center-segment")).into(),
|
||||||
AppletReorderList::new(
|
AppletReorderList::new(
|
||||||
config
|
config
|
||||||
|
|
@ -501,7 +501,7 @@ pub fn lists<
|
||||||
])
|
])
|
||||||
.spacing(space_xxs)
|
.spacing(space_xxs)
|
||||||
.into(),
|
.into(),
|
||||||
column::with_children(vec![
|
column::with_children([
|
||||||
text::body(fl!("end-segment")).into(),
|
text::body(fl!("end-segment")).into(),
|
||||||
AppletReorderList::new(
|
AppletReorderList::new(
|
||||||
config
|
config
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,7 @@ use cosmic::{
|
||||||
Apply, Element, Task,
|
Apply, Element, Task,
|
||||||
app::{ContextDrawer, context_drawer},
|
app::{ContextDrawer, context_drawer},
|
||||||
cosmic_config::{self, ConfigSet},
|
cosmic_config::{self, ConfigSet},
|
||||||
iced::{Alignment, Color, Length},
|
iced::{Alignment, Length},
|
||||||
iced_core::Border,
|
|
||||||
theme,
|
theme,
|
||||||
widget::{self, ListColumn, button, container, icon, radio, row, settings},
|
widget::{self, ListColumn, button, container, icon, radio, row, settings},
|
||||||
};
|
};
|
||||||
|
|
@ -166,23 +165,19 @@ fn popover_menu_row(
|
||||||
label: String,
|
label: String,
|
||||||
message: impl Fn(DefaultKey) -> SourceContext + 'static,
|
message: impl Fn(DefaultKey) -> SourceContext + 'static,
|
||||||
) -> cosmic::Element<'static, Message> {
|
) -> cosmic::Element<'static, Message> {
|
||||||
|
let spacing = theme::spacing();
|
||||||
widget::text::body(label)
|
widget::text::body(label)
|
||||||
.apply(widget::container)
|
.align_y(Alignment::Center)
|
||||||
.class(cosmic::theme::Container::custom(|theme| {
|
|
||||||
widget::container::Style {
|
|
||||||
background: None,
|
|
||||||
..container::Catalog::style(theme, &cosmic::theme::Container::List)
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
.apply(button::custom)
|
.apply(button::custom)
|
||||||
.on_press(())
|
.padding([spacing.space_xxxs, spacing.space_xs])
|
||||||
.class(theme::Button::Transparent)
|
.width(Length::Fill)
|
||||||
|
.class(theme::Button::MenuItem)
|
||||||
|
.on_press(Message::SourceContext(message(id)))
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(move |()| Message::SourceContext(message(id)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
|
fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
|
||||||
widget::column::with_children(vec![
|
widget::column::with_children([
|
||||||
popover_menu_row(
|
popover_menu_row(
|
||||||
id,
|
id,
|
||||||
fl!("keyboard-sources", "move-up"),
|
fl!("keyboard-sources", "move-up"),
|
||||||
|
|
@ -193,7 +188,10 @@ fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
|
||||||
fl!("keyboard-sources", "move-down"),
|
fl!("keyboard-sources", "move-down"),
|
||||||
SourceContext::MoveDown,
|
SourceContext::MoveDown,
|
||||||
),
|
),
|
||||||
cosmic::widget::divider::horizontal::default().into(),
|
widget::divider::horizontal::default()
|
||||||
|
.apply(widget::container)
|
||||||
|
.padding(8)
|
||||||
|
.into(),
|
||||||
popover_menu_row(
|
popover_menu_row(
|
||||||
id,
|
id,
|
||||||
fl!("keyboard-sources", "settings"),
|
fl!("keyboard-sources", "settings"),
|
||||||
|
|
@ -206,25 +204,10 @@ fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
|
||||||
),
|
),
|
||||||
popover_menu_row(id, fl!("keyboard-sources", "remove"), SourceContext::Remove),
|
popover_menu_row(id, fl!("keyboard-sources", "remove"), SourceContext::Remove),
|
||||||
])
|
])
|
||||||
.padding([2, 8])
|
.width(Length::Fixed(200.0))
|
||||||
.width(Length::Shrink)
|
.apply(widget::container)
|
||||||
.height(Length::Shrink)
|
.padding(theme::spacing().space_xxs)
|
||||||
.apply(cosmic::widget::container)
|
.class(theme::Container::Dropdown)
|
||||||
.class(cosmic::theme::Container::custom(|theme| {
|
|
||||||
let cosmic = theme.cosmic();
|
|
||||||
let background = &cosmic.background;
|
|
||||||
container::Style {
|
|
||||||
icon_color: Some(background.on.into()),
|
|
||||||
text_color: Some(background.on.into()),
|
|
||||||
background: Some(Color::from(background.base).into()),
|
|
||||||
border: Border {
|
|
||||||
color: background.component.divider.into(),
|
|
||||||
width: 1.0,
|
|
||||||
radius: cosmic.corner_radii.radius_s.into(),
|
|
||||||
},
|
|
||||||
shadow: Default::default(),
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -236,7 +219,8 @@ fn popover_button(id: DefaultKey, expanded: bool) -> cosmic::Element<'static, Me
|
||||||
.on_press(on_press);
|
.on_press(on_press);
|
||||||
|
|
||||||
if expanded {
|
if expanded {
|
||||||
cosmic::widget::popover(button)
|
widget::popover(button)
|
||||||
|
.position(widget::popover::Position::Bottom)
|
||||||
.popup(popover_menu(id))
|
.popup(popover_menu(id))
|
||||||
.on_close(Message::ExpandInputSourcePopover(None))
|
.on_close(Message::ExpandInputSourcePopover(None))
|
||||||
.into()
|
.into()
|
||||||
|
|
@ -713,7 +697,7 @@ fn input_sources() -> Section<crate::pages::Message> {
|
||||||
.on_press(Message::ShowInputSourcesContext);
|
.on_press(Message::ShowInputSourcesContext);
|
||||||
|
|
||||||
widget::column::with_capacity(2)
|
widget::column::with_capacity(2)
|
||||||
.spacing(cosmic::theme::spacing().space_xxs)
|
.spacing(theme::spacing().space_xxs)
|
||||||
.push(section)
|
.push(section)
|
||||||
.push(
|
.push(
|
||||||
widget::container(add_input_source)
|
widget::container(add_input_source)
|
||||||
|
|
@ -816,7 +800,7 @@ fn keyboard_typing_assist() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
row::with_capacity(3)
|
row::with_capacity(3)
|
||||||
.align_y(Alignment::Center)
|
.align_y(Alignment::Center)
|
||||||
.spacing(cosmic::theme::spacing().space_s)
|
.spacing(theme::spacing().space_s)
|
||||||
.push(widget::text::body(&descriptions[short]))
|
.push(widget::text::body(&descriptions[short]))
|
||||||
.push(delay_slider)
|
.push(delay_slider)
|
||||||
.push(widget::text::body(&descriptions[long]))
|
.push(widget::text::body(&descriptions[long]))
|
||||||
|
|
@ -836,7 +820,7 @@ fn keyboard_typing_assist() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
row::with_capacity(3)
|
row::with_capacity(3)
|
||||||
.align_y(Alignment::Center)
|
.align_y(Alignment::Center)
|
||||||
.spacing(cosmic::theme::spacing().space_s)
|
.spacing(theme::spacing().space_s)
|
||||||
.push(widget::text::body(&descriptions[slow]))
|
.push(widget::text::body(&descriptions[slow]))
|
||||||
.push(rate_slider)
|
.push(rate_slider)
|
||||||
.push(widget::text::body(&descriptions[fast]))
|
.push(widget::text::body(&descriptions[fast]))
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,13 @@ pub mod tiling;
|
||||||
use cosmic::app::ContextDrawer;
|
use cosmic::app::ContextDrawer;
|
||||||
use cosmic::iced::Length;
|
use cosmic::iced::Length;
|
||||||
use cosmic::widget::{self, icon, settings, text};
|
use cosmic::widget::{self, icon, settings, text};
|
||||||
use cosmic::{theme, Apply, Element, Task};
|
use cosmic::{Apply, Element, Task, theme};
|
||||||
use cosmic_config::ConfigGet;
|
use cosmic_config::ConfigGet;
|
||||||
|
use cosmic_settings_config::Binding;
|
||||||
use cosmic_settings_config::shortcuts::action::{
|
use cosmic_settings_config::shortcuts::action::{
|
||||||
Direction, FocusDirection, Orientation, ResizeDirection,
|
Direction, FocusDirection, Orientation, ResizeDirection,
|
||||||
};
|
};
|
||||||
use cosmic_settings_config::shortcuts::{self, Action, Shortcuts};
|
use cosmic_settings_config::shortcuts::{self, Action, Shortcuts};
|
||||||
use cosmic_settings_config::Binding;
|
|
||||||
use cosmic_settings_page::Section;
|
use cosmic_settings_page::Section;
|
||||||
use cosmic_settings_page::{self as page, section};
|
use cosmic_settings_page::{self as page, section};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
|
|
|
||||||
|
|
@ -826,8 +826,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
return cosmic::widget::column().into();
|
return cosmic::widget::column().into();
|
||||||
};
|
};
|
||||||
|
|
||||||
let theme = cosmic::theme::active();
|
let spacing = cosmic::theme::spacing();
|
||||||
let spacing = &theme.cosmic().spacing;
|
|
||||||
|
|
||||||
let mut view = widget::column::with_capacity(4);
|
let mut view = widget::column::with_capacity(4);
|
||||||
|
|
||||||
|
|
@ -883,7 +882,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
widget::popover(view_more_button.on_press(Message::ViewMore(None)))
|
widget::popover(view_more_button.on_press(Message::ViewMore(None)))
|
||||||
.position(widget::popover::Position::Bottom)
|
.position(widget::popover::Position::Bottom)
|
||||||
.on_close(Message::ViewMore(None))
|
.on_close(Message::ViewMore(None))
|
||||||
.popup({
|
.popup(
|
||||||
widget::column()
|
widget::column()
|
||||||
.push_maybe(is_connected.then(|| {
|
.push_maybe(is_connected.then(|| {
|
||||||
popup_button(
|
popup_button(
|
||||||
|
|
@ -901,9 +900,9 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
))
|
))
|
||||||
.width(Length::Fixed(200.0))
|
.width(Length::Fixed(200.0))
|
||||||
.apply(widget::container)
|
.apply(widget::container)
|
||||||
.padding(1)
|
.padding(cosmic::theme::spacing().space_xxs)
|
||||||
.class(cosmic::style::Container::Dropdown)
|
.class(cosmic::theme::Container::Dropdown),
|
||||||
})
|
)
|
||||||
.apply(|e| Some(Element::from(e)))
|
.apply(|e| Some(Element::from(e)))
|
||||||
} else {
|
} else {
|
||||||
view_more_button
|
view_more_button
|
||||||
|
|
@ -937,12 +936,11 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn popup_button(message: Message, text: &str) -> Element<'_, Message> {
|
fn popup_button(message: Message, text: &str) -> Element<'_, Message> {
|
||||||
let theme = cosmic::theme::active();
|
let spacing = cosmic::theme::spacing();
|
||||||
let theme = theme.cosmic();
|
|
||||||
widget::text::body(text)
|
widget::text::body(text)
|
||||||
.align_y(Alignment::Center)
|
.align_y(Alignment::Center)
|
||||||
.apply(widget::button::custom)
|
.apply(widget::button::custom)
|
||||||
.padding([theme.space_xxxs(), theme.space_xs()])
|
.padding([spacing.space_xxxs, spacing.space_xs])
|
||||||
.width(Length::Fill)
|
.width(Length::Fill)
|
||||||
.class(cosmic::theme::Button::MenuItem)
|
.class(cosmic::theme::Button::MenuItem)
|
||||||
.on_press(message)
|
.on_press(message)
|
||||||
|
|
|
||||||
|
|
@ -225,9 +225,7 @@ impl page::Page<crate::pages::Message> for Page {
|
||||||
|
|
||||||
fn context_drawer(&self) -> Option<ContextDrawer<'_, crate::pages::Message>> {
|
fn context_drawer(&self) -> Option<ContextDrawer<'_, crate::pages::Message>> {
|
||||||
let drawer = self.qr_drawer.as_ref()?;
|
let drawer = self.qr_drawer.as_ref()?;
|
||||||
|
let spacing = cosmic::theme::spacing();
|
||||||
let theme = cosmic::theme::active();
|
|
||||||
let spacing = &theme.cosmic().spacing;
|
|
||||||
|
|
||||||
let qr_section = if let Some(ref qr_data) = self.qr_code_data {
|
let qr_section = if let Some(ref qr_data) = self.qr_code_data {
|
||||||
widget::container(widget::qr_code(qr_data).cell_size(5)).center_x(Length::Fill)
|
widget::container(widget::qr_code(qr_data).cell_size(5)).center_x(Length::Fill)
|
||||||
|
|
@ -749,8 +747,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
return cosmic::widget::column().into();
|
return cosmic::widget::column().into();
|
||||||
};
|
};
|
||||||
|
|
||||||
let theme = cosmic::theme::active();
|
let spacing = cosmic::theme::spacing();
|
||||||
let spacing = &theme.cosmic().spacing;
|
|
||||||
|
|
||||||
let wifi_enable = widget::settings::item::builder(§ion.descriptions[wifi_txt])
|
let wifi_enable = widget::settings::item::builder(§ion.descriptions[wifi_txt])
|
||||||
.control(widget::toggler(state.wifi_enabled).on_toggle(Message::WiFiEnable));
|
.control(widget::toggler(state.wifi_enabled).on_toggle(Message::WiFiEnable));
|
||||||
|
|
@ -851,7 +848,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
widget::popover(view_more_button.on_press(Message::ViewMore(None)))
|
widget::popover(view_more_button.on_press(Message::ViewMore(None)))
|
||||||
.position(widget::popover::Position::Bottom)
|
.position(widget::popover::Position::Bottom)
|
||||||
.on_close(Message::ViewMore(None))
|
.on_close(Message::ViewMore(None))
|
||||||
.popup({
|
.popup(
|
||||||
widget::column()
|
widget::column()
|
||||||
.push_maybe(is_connected.then(|| {
|
.push_maybe(is_connected.then(|| {
|
||||||
popup_button(
|
popup_button(
|
||||||
|
|
@ -875,10 +872,11 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
§ion.descriptions[forget_txt],
|
§ion.descriptions[forget_txt],
|
||||||
)
|
)
|
||||||
}))
|
}))
|
||||||
.width(Length::Fixed(170.0))
|
.width(Length::Fixed(200.0))
|
||||||
.apply(widget::container)
|
.apply(widget::container)
|
||||||
.class(cosmic::style::Container::Dialog)
|
.padding(cosmic::theme::spacing().space_xxs)
|
||||||
})
|
.class(cosmic::theme::Container::Dropdown),
|
||||||
|
)
|
||||||
.apply(|e| Some(Element::from(e)))
|
.apply(|e| Some(Element::from(e)))
|
||||||
} else if is_known {
|
} else if is_known {
|
||||||
view_more_button
|
view_more_button
|
||||||
|
|
@ -938,12 +936,11 @@ fn is_connected(state: &NetworkManagerState, network: &AccessPoint) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn popup_button(message: Message, text: &str) -> Element<'_, Message> {
|
fn popup_button(message: Message, text: &str) -> Element<'_, Message> {
|
||||||
let theme = cosmic::theme::active();
|
let spacing = cosmic::theme::spacing();
|
||||||
let theme = theme.cosmic();
|
|
||||||
widget::text::body(text)
|
widget::text::body(text)
|
||||||
.align_y(Alignment::Center)
|
.align_y(Alignment::Center)
|
||||||
.apply(widget::button::custom)
|
.apply(widget::button::custom)
|
||||||
.padding([theme.space_xxxs(), theme.space_xs()])
|
.padding([spacing.space_xxxs, spacing.space_xs])
|
||||||
.width(Length::Fill)
|
.width(Length::Fill)
|
||||||
.class(cosmic::theme::Button::MenuItem)
|
.class(cosmic::theme::Button::MenuItem)
|
||||||
.on_press(message)
|
.on_press(message)
|
||||||
|
|
|
||||||
|
|
@ -449,7 +449,7 @@ impl Page {
|
||||||
|
|
||||||
fn device_view<'a>(
|
fn device_view<'a>(
|
||||||
&'a self,
|
&'a self,
|
||||||
spacing: &cosmic::cosmic_theme::Spacing,
|
spacing: cosmic::cosmic_theme::Spacing,
|
||||||
nm_state: &'a NmState,
|
nm_state: &'a NmState,
|
||||||
connect_txt: &'a str,
|
connect_txt: &'a str,
|
||||||
connected_txt: &'a str,
|
connected_txt: &'a str,
|
||||||
|
|
@ -509,7 +509,7 @@ impl Page {
|
||||||
widget::popover(view_more_button.on_press(Message::ViewMore(None)))
|
widget::popover(view_more_button.on_press(Message::ViewMore(None)))
|
||||||
.position(widget::popover::Position::Bottom)
|
.position(widget::popover::Position::Bottom)
|
||||||
.on_close(Message::ViewMore(None))
|
.on_close(Message::ViewMore(None))
|
||||||
.popup({
|
.popup(
|
||||||
widget::column()
|
widget::column()
|
||||||
.push_maybe(is_connected.then(|| {
|
.push_maybe(is_connected.then(|| {
|
||||||
popup_button(
|
popup_button(
|
||||||
|
|
@ -529,9 +529,9 @@ impl Page {
|
||||||
}))
|
}))
|
||||||
.width(Length::Fixed(200.0))
|
.width(Length::Fixed(200.0))
|
||||||
.apply(widget::container)
|
.apply(widget::container)
|
||||||
.padding(spacing.space_xxxs)
|
.padding(cosmic::theme::spacing().space_xxs)
|
||||||
.class(cosmic::style::Container::Dialog)
|
.class(cosmic::theme::Container::Dropdown),
|
||||||
})
|
)
|
||||||
.apply(|e| Some(Element::from(e)))
|
.apply(|e| Some(Element::from(e)))
|
||||||
} else {
|
} else {
|
||||||
view_more_button
|
view_more_button
|
||||||
|
|
@ -576,8 +576,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
return cosmic::widget::column().into();
|
return cosmic::widget::column().into();
|
||||||
};
|
};
|
||||||
|
|
||||||
let theme = cosmic::theme::active();
|
let spacing = cosmic::theme::spacing();
|
||||||
let spacing = &theme.cosmic().spacing;
|
|
||||||
|
|
||||||
let mut view = widget::column::with_capacity(4);
|
let mut view = widget::column::with_capacity(4);
|
||||||
|
|
||||||
|
|
@ -611,12 +610,11 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn popup_button(message: Message, text: &str) -> Element<'_, Message> {
|
fn popup_button(message: Message, text: &str) -> Element<'_, Message> {
|
||||||
let theme = cosmic::theme::active();
|
let spacing = cosmic::theme::spacing();
|
||||||
let theme = theme.cosmic();
|
|
||||||
widget::text::body(text)
|
widget::text::body(text)
|
||||||
.align_y(Alignment::Center)
|
.align_y(Alignment::Center)
|
||||||
.apply(widget::button::custom)
|
.apply(widget::button::custom)
|
||||||
.padding([theme.space_xxxs(), theme.space_xs()])
|
.padding([spacing.space_xxxs, spacing.space_xs])
|
||||||
.width(Length::Fill)
|
.width(Length::Fill)
|
||||||
.class(cosmic::theme::Button::MenuItem)
|
.class(cosmic::theme::Button::MenuItem)
|
||||||
.on_press(message)
|
.on_press(message)
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@ use std::rc::Rc;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use cosmic::app::{ContextDrawer, context_drawer};
|
use cosmic::app::{ContextDrawer, context_drawer};
|
||||||
use cosmic::iced::{Alignment, Border, Color, Length};
|
use cosmic::iced::{Alignment, Length};
|
||||||
use cosmic::iced_core::text::Wrapping;
|
use cosmic::iced_core::text::Wrapping;
|
||||||
use cosmic::widget::{self, button, container};
|
use cosmic::widget::{self, button};
|
||||||
use cosmic::{Apply, Element, theme};
|
use cosmic::{Apply, Element};
|
||||||
use cosmic_config::{ConfigGet, ConfigSet};
|
use cosmic_config::{ConfigGet, ConfigSet};
|
||||||
use cosmic_settings_page::Section;
|
use cosmic_settings_page::Section;
|
||||||
use cosmic_settings_page::{self as page, section};
|
use cosmic_settings_page::{self as page, section};
|
||||||
|
|
@ -817,6 +817,7 @@ fn popover_button(id: usize, expanded: bool) -> Element<'static, Message> {
|
||||||
|
|
||||||
if expanded {
|
if expanded {
|
||||||
widget::popover(button)
|
widget::popover(button)
|
||||||
|
.position(widget::popover::Position::Bottom)
|
||||||
.popup(popover_menu(id))
|
.popup(popover_menu(id))
|
||||||
.on_close(Message::ExpandLanguagePopover(None))
|
.on_close(Message::ExpandLanguagePopover(None))
|
||||||
.into()
|
.into()
|
||||||
|
|
@ -826,38 +827,31 @@ fn popover_button(id: usize, expanded: bool) -> Element<'static, Message> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn popover_menu(id: usize) -> Element<'static, Message> {
|
fn popover_menu(id: usize) -> Element<'static, Message> {
|
||||||
widget::column::with_children(vec![
|
widget::column::with_children([
|
||||||
popover_menu_row(
|
popover_menu_row(
|
||||||
id,
|
id,
|
||||||
fl!("keyboard-sources", "move-up"),
|
fl!("keyboard-sources", "move-up"),
|
||||||
SourceContext::MoveUp,
|
SourceContext::MoveUp,
|
||||||
),
|
),
|
||||||
cosmic::widget::divider::horizontal::default().into(),
|
widget::divider::horizontal::default()
|
||||||
|
.apply(widget::container)
|
||||||
|
.padding([0, 8])
|
||||||
|
.into(),
|
||||||
popover_menu_row(
|
popover_menu_row(
|
||||||
id,
|
id,
|
||||||
fl!("keyboard-sources", "move-down"),
|
fl!("keyboard-sources", "move-down"),
|
||||||
SourceContext::MoveDown,
|
SourceContext::MoveDown,
|
||||||
),
|
),
|
||||||
cosmic::widget::divider::horizontal::default().into(),
|
widget::divider::horizontal::default()
|
||||||
|
.apply(widget::container)
|
||||||
|
.padding([0, 8])
|
||||||
|
.into(),
|
||||||
popover_menu_row(id, fl!("keyboard-sources", "remove"), SourceContext::Remove),
|
popover_menu_row(id, fl!("keyboard-sources", "remove"), SourceContext::Remove),
|
||||||
])
|
])
|
||||||
.padding(8)
|
.width(Length::Fixed(200.0))
|
||||||
.width(Length::Shrink)
|
.apply(widget::container)
|
||||||
.height(Length::Shrink)
|
.padding(cosmic::theme::spacing().space_xxs)
|
||||||
.apply(cosmic::widget::container)
|
.class(cosmic::theme::Container::Dropdown)
|
||||||
.class(cosmic::theme::Container::custom(|theme| {
|
|
||||||
let cosmic = theme.cosmic();
|
|
||||||
container::Style {
|
|
||||||
icon_color: Some(theme.cosmic().background.on.into()),
|
|
||||||
text_color: Some(theme.cosmic().background.on.into()),
|
|
||||||
background: Some(Color::from(theme.cosmic().background.base).into()),
|
|
||||||
border: Border {
|
|
||||||
radius: cosmic.corner_radii.radius_m.into(),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
shadow: Default::default(),
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -866,19 +860,15 @@ fn popover_menu_row(
|
||||||
label: String,
|
label: String,
|
||||||
message: impl Fn(usize) -> SourceContext + 'static,
|
message: impl Fn(usize) -> SourceContext + 'static,
|
||||||
) -> cosmic::Element<'static, Message> {
|
) -> cosmic::Element<'static, Message> {
|
||||||
|
let spacing = cosmic::theme::spacing();
|
||||||
widget::text::body(label)
|
widget::text::body(label)
|
||||||
.apply(widget::container)
|
.align_y(Alignment::Center)
|
||||||
.class(cosmic::theme::Container::custom(|theme| {
|
|
||||||
widget::container::Style {
|
|
||||||
background: None,
|
|
||||||
..widget::container::Catalog::style(theme, &cosmic::theme::Container::List)
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
.apply(button::custom)
|
.apply(button::custom)
|
||||||
.on_press(())
|
.padding([spacing.space_xxxs, spacing.space_xs])
|
||||||
.class(theme::Button::Transparent)
|
.width(Length::Fill)
|
||||||
|
.class(cosmic::theme::Button::MenuItem)
|
||||||
|
.on_press(Message::SourceContext(message(id)))
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(move |()| Message::SourceContext(message(id)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn set_locale(
|
pub async fn set_locale(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue