* wip: update to use cosmic-advanced-text * use cosmic-advanced-text branch of iced * fix: line height and spacing for segmented button and update to get svg fix * fix: spin button styling & spacing * update iced to fix segmented button border radius * feat: example improvements * feat: helper for loading fonts * feat: add focus style to button * fix: slider height and iced fixed * feat: hash icon width and height * cleanup * update ci * refactor: always use lazy feature of iced * update iced * update iced * cleanup & update iced * update iced: new slider & tiny-skia quad updates * update iced: fixes for tiny-skia quad rendering with edge case border radius * re-export iced_runtime & iced_widget * merge master * udpate iced * update iced * update iced * update iced * fix: make rectangle_tracker subscription only return update if there is some * feat: derive macro for loading a cosmic-config * feat (cosmic-config): iced subscription * fix (example): update to rectangle tracker subscription * fix (cosmic-config) * refactor(cosmic-config-derive): add support for types with generic parameters * fix (cosmic-config): feature gate updates for subscription helpers * feat: support for custom & system themes + move cosmic-theme to libcosmic * feat: sorta hacky way of creating header bars for libcosmic + update iced to get support for resizable windows in iced-sctk * update iced * update and reexport sctk * fix: applet border radius * feat (cosmic-theme): add id and name methods * fix(cosmic-theme): reexport palette from cosmic-theme * fix(cosmic-config-derive): allow use with reexported cosmic-config * feat: update iced with fix and refactor applet env vars * update iced
52 lines
1.6 KiB
Rust
52 lines
1.6 KiB
Rust
// Copyright 2022 System76 <info@system76.com>
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
//! Navigation side panel for switching between views.
|
|
//!
|
|
//! For details on the model, see the [`segmented_button`] module for more details.
|
|
|
|
use apply::Apply;
|
|
use iced::{
|
|
widget::{container, scrollable},
|
|
Background, Length,
|
|
};
|
|
use iced_core::Color;
|
|
|
|
use crate::{theme, widget::segmented_button, Theme};
|
|
|
|
/// Navigation side panel for switching between views.
|
|
///
|
|
/// For details on the model, see the [`segmented_button`] module for more details.
|
|
pub fn nav_bar<Message>(
|
|
model: &segmented_button::SingleSelectModel,
|
|
on_activate: fn(segmented_button::Entity) -> Message,
|
|
) -> iced::widget::Container<Message, crate::Renderer>
|
|
where
|
|
Message: Clone + 'static,
|
|
{
|
|
segmented_button::vertical(model)
|
|
.button_height(32)
|
|
.button_padding([16, 10, 16, 10])
|
|
.button_spacing(8)
|
|
.icon_size(16)
|
|
.on_activate(on_activate)
|
|
.spacing(8)
|
|
.style(crate::theme::SegmentedButton::ViewSwitcher)
|
|
.apply(scrollable)
|
|
.apply(container)
|
|
.height(Length::Fill)
|
|
.padding(11)
|
|
.style(theme::Container::custom(nav_bar_style))
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn nav_bar_style(theme: &Theme) -> iced_style::container::Appearance {
|
|
let cosmic = &theme.cosmic();
|
|
iced_style::container::Appearance {
|
|
text_color: Some(cosmic.on_bg_color().into()),
|
|
background: Some(Background::Color(cosmic.primary.base.into())),
|
|
border_radius: 8.0.into(),
|
|
border_width: 0.0,
|
|
border_color: Color::TRANSPARENT,
|
|
}
|
|
}
|