pub mod channel_view; pub mod chat_panel; pub mod collab_panel; mod collab_titlebar_item; mod face_pile; pub mod notification_panel; pub mod notifications; mod panel_settings; use std::sync::Arc; pub use collab_titlebar_item::CollabTitlebarItem; use gpui::AppContext; pub use panel_settings::{ ChatPanelSettings, CollaborationPanelSettings, NotificationPanelSettings, }; use settings::Settings; use workspace::AppState; // actions!( // collab, // [ToggleScreenSharing, ToggleMute, ToggleDeafen, LeaveCall] // ); pub fn init(_app_state: &Arc, cx: &mut AppContext) { CollaborationPanelSettings::register(cx); ChatPanelSettings::register(cx); NotificationPanelSettings::register(cx); // vcs_menu::init(cx); collab_titlebar_item::init(cx); // collab_panel::init(cx); // chat_panel::init(cx); // notifications::init(&app_state, cx); // cx.add_global_action(toggle_screen_sharing); // cx.add_global_action(toggle_mute); // cx.add_global_action(toggle_deafen); } // pub fn toggle_screen_sharing(_: &ToggleScreenSharing, cx: &mut AppContext) { // let call = ActiveCall::global(cx).read(cx); // if let Some(room) = call.room().cloned() { // let client = call.client(); // let toggle_screen_sharing = room.update(cx, |room, cx| { // if room.is_screen_sharing() { // report_call_event_for_room( // "disable screen share", // room.id(), // room.channel_id(), // &client, // cx, // ); // Task::ready(room.unshare_screen(cx)) // } else { // report_call_event_for_room( // "enable screen share", // room.id(), // room.channel_id(), // &client, // cx, // ); // room.share_screen(cx) // } // }); // toggle_screen_sharing.detach_and_log_err(cx); // } // } // pub fn toggle_mute(_: &ToggleMute, cx: &mut AppContext) { // let call = ActiveCall::global(cx).read(cx); // if let Some(room) = call.room().cloned() { // let client = call.client(); // room.update(cx, |room, cx| { // let operation = if room.is_muted(cx) { // "enable microphone" // } else { // "disable microphone" // }; // report_call_event_for_room(operation, room.id(), room.channel_id(), &client, cx); // room.toggle_mute(cx) // }) // .map(|task| task.detach_and_log_err(cx)) // .log_err(); // } // } // pub fn toggle_deafen(_: &ToggleDeafen, cx: &mut AppContext) { // if let Some(room) = ActiveCall::global(cx).read(cx).room().cloned() { // room.update(cx, Room::toggle_deafen) // .map(|task| task.detach_and_log_err(cx)) // .log_err(); // } // } // fn notification_window_options( // screen: Rc, // window_size: Vector2F, // ) -> WindowOptions<'static> { // const NOTIFICATION_PADDING: f32 = 16.; // let screen_bounds = screen.content_bounds(); // WindowOptions { // bounds: WindowBounds::Fixed(RectF::new( // screen_bounds.upper_right() // + vec2f( // -NOTIFICATION_PADDING - window_size.x(), // NOTIFICATION_PADDING, // ), // window_size, // )), // titlebar: None, // center: false, // focus: false, // show: true, // kind: WindowKind::PopUp, // is_movable: false, // screen: Some(screen), // } // } // fn render_avatar( // avatar: Option>, // avatar_style: &AvatarStyle, // container: ContainerStyle, // ) -> AnyElement { // avatar // .map(|avatar| { // Image::from_data(avatar) // .with_style(avatar_style.image) // .aligned() // .contained() // .with_corner_radius(avatar_style.outer_corner_radius) // .constrained() // .with_width(avatar_style.outer_width) // .with_height(avatar_style.outer_width) // .into_any() // }) // .unwrap_or_else(|| { // Empty::new() // .constrained() // .with_width(avatar_style.outer_width) // .into_any() // }) // .contained() // .with_style(container) // .into_any() // } // fn is_channels_feature_enabled(cx: &gpui::WindowContext<'_>) -> bool { // cx.is_staff() || cx.has_flag::() // }