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}