collab_ui.rs

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