1pub mod channel_view;
2pub mod collab_panel;
3pub mod notification_panel;
4pub mod notifications;
5mod panel_settings;
6
7use std::{rc::Rc, sync::Arc};
8
9pub use collab_panel::CollabPanel;
10use gpui::{
11 App, Pixels, PlatformDisplay, Size, WindowBackgroundAppearance, WindowBounds,
12 WindowDecorations, WindowKind, WindowOptions, point,
13};
14use panel_settings::MessageEditorSettings;
15pub use panel_settings::{CollaborationPanelSettings, NotificationPanelSettings};
16use release_channel::ReleaseChannel;
17use settings::Settings;
18use ui::px;
19use workspace::AppState;
20
21pub fn init(app_state: &Arc<AppState>, cx: &mut App) {
22 CollaborationPanelSettings::register(cx);
23 NotificationPanelSettings::register(cx);
24 MessageEditorSettings::register(cx);
25
26 channel_view::init(cx);
27 collab_panel::init(cx);
28 notification_panel::init(cx);
29 notifications::init(app_state, cx);
30 title_bar::init(cx);
31}
32
33fn notification_window_options(
34 screen: Rc<dyn PlatformDisplay>,
35 size: Size<Pixels>,
36 cx: &App,
37) -> WindowOptions {
38 let notification_margin_width = px(16.);
39 let notification_margin_height = px(-48.);
40
41 let bounds = gpui::Bounds::<Pixels> {
42 origin: screen.bounds().top_right()
43 - point(
44 size.width + notification_margin_width,
45 notification_margin_height,
46 ),
47 size,
48 };
49
50 let app_id = ReleaseChannel::global(cx).app_id();
51
52 WindowOptions {
53 window_bounds: Some(WindowBounds::Windowed(bounds)),
54 titlebar: None,
55 focus: false,
56 show: true,
57 kind: WindowKind::PopUp,
58 is_movable: false,
59 display_id: Some(screen.id()),
60 window_background: WindowBackgroundAppearance::Transparent,
61 app_id: Some(app_id.to_owned()),
62 window_min_size: None,
63 window_decorations: Some(WindowDecorations::Client),
64 tabbing_identifier: None,
65 ..Default::default()
66 }
67}