panel_settings.rs

 1use gpui::Pixels;
 2use settings::{RegisterSetting, Settings};
 3use ui::px;
 4use workspace::dock::DockPosition;
 5
 6#[derive(Debug, RegisterSetting)]
 7pub struct CollaborationPanelSettings {
 8    pub button: bool,
 9    pub dock: DockPosition,
10    pub default_width: Pixels,
11}
12
13#[derive(Debug, RegisterSetting)]
14pub struct NotificationPanelSettings {
15    pub button: bool,
16    pub dock: DockPosition,
17    pub default_width: Pixels,
18    pub show_count_badge: bool,
19}
20
21impl Settings for CollaborationPanelSettings {
22    fn from_settings(content: &settings::SettingsContent) -> Self {
23        let panel = content.collaboration_panel.as_ref().unwrap();
24
25        Self {
26            button: panel.button.unwrap(),
27            dock: panel.dock.unwrap().into(),
28            default_width: panel.default_width.map(px).unwrap(),
29        }
30    }
31}
32
33impl Settings for NotificationPanelSettings {
34    fn from_settings(content: &settings::SettingsContent) -> Self {
35        let panel = content.notification_panel.as_ref().unwrap();
36        return Self {
37            button: panel.button.unwrap(),
38            dock: panel.dock.unwrap().into(),
39            default_width: panel.default_width.map(px).unwrap(),
40            show_count_badge: panel.show_count_badge.unwrap(),
41        };
42    }
43}