panel_settings.rs

 1use gpui::Pixels;
 2use settings::Settings;
 3use ui::px;
 4use util::MergeFrom as _;
 5use workspace::dock::DockPosition;
 6
 7#[derive(Debug)]
 8pub struct CollaborationPanelSettings {
 9    pub button: bool,
10    pub dock: DockPosition,
11    pub default_width: Pixels,
12}
13
14#[derive(Debug)]
15pub struct NotificationPanelSettings {
16    pub button: bool,
17    pub dock: DockPosition,
18    pub default_width: Pixels,
19}
20
21impl Settings for CollaborationPanelSettings {
22    fn from_defaults(content: &settings::SettingsContent, _cx: &mut ui::App) -> 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    fn refine(&mut self, content: &settings::SettingsContent, _cx: &mut ui::App) {
33        if let Some(panel) = content.collaboration_panel.as_ref() {
34            self.button.merge_from(&panel.button);
35            self.default_width
36                .merge_from(&panel.default_width.map(Pixels::from));
37            self.dock.merge_from(&panel.dock.map(Into::into));
38        }
39    }
40
41    fn import_from_vscode(
42        _vscode: &settings::VsCodeSettings,
43        _content: &mut settings::SettingsContent,
44    ) {
45    }
46}
47
48impl Settings for NotificationPanelSettings {
49    fn from_defaults(content: &settings::SettingsContent, _cx: &mut ui::App) -> Self {
50        let panel = content.notification_panel.as_ref().unwrap();
51        return Self {
52            button: panel.button.unwrap(),
53            dock: panel.dock.unwrap().into(),
54            default_width: panel.default_width.map(px).unwrap(),
55        };
56    }
57
58    fn refine(&mut self, content: &settings::SettingsContent, _cx: &mut ui::App) {
59        let Some(panel) = content.notification_panel.as_ref() else {
60            return;
61        };
62        self.button.merge_from(&panel.button);
63        self.dock.merge_from(&panel.dock.map(Into::into));
64        self.default_width.merge_from(&panel.default_width.map(px));
65    }
66
67    fn import_from_vscode(
68        _vscode: &settings::VsCodeSettings,
69        _current: &mut settings::SettingsContent,
70    ) {
71    }
72}