From bbe82972975c24a90a3f94fc425db3ae543fd935 Mon Sep 17 00:00:00 2001 From: Joseph Lyons Date: Wed, 8 Feb 2023 11:23:44 -0500 Subject: [PATCH] Add feedback information text --- crates/feedback/src/feedback_editor.rs | 52 ++++++++++++++++++++++++++ crates/zed/src/zed.rs | 4 +- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/crates/feedback/src/feedback_editor.rs b/crates/feedback/src/feedback_editor.rs index 21932107e4..4380b606d9 100644 --- a/crates/feedback/src/feedback_editor.rs +++ b/crates/feedback/src/feedback_editor.rs @@ -509,3 +509,55 @@ impl ToolbarItemView for SubmitFeedbackButton { } } } + +pub struct FeedbackInfoText { + active_item: Option>, +} + +impl FeedbackInfoText { + pub fn new() -> Self { + Self { + active_item: Default::default(), + } + } +} + +impl Entity for FeedbackInfoText { + type Event = (); +} + +impl View for FeedbackInfoText { + fn ui_name() -> &'static str { + "FeedbackInfoText" + } + + fn render(&mut self, cx: &mut RenderContext) -> ElementBox { + let theme = cx.global::().theme.clone(); + Label::new( + "We read whatever you submit here. For issues and discussions, visit the community repo on GitHub.".to_string(), + theme.workspace.titlebar.outdated_warning.text.clone(), + ) + .contained() + .with_style(theme.workspace.titlebar.outdated_warning.container) + .aligned() + .boxed() + } +} + +impl ToolbarItemView for FeedbackInfoText { + fn set_active_pane_item( + &mut self, + active_pane_item: Option<&dyn ItemHandle>, + cx: &mut ViewContext, + ) -> workspace::ToolbarItemLocation { + cx.notify(); + if let Some(feedback_editor) = active_pane_item.and_then(|i| i.downcast::()) + { + self.active_item = Some(feedback_editor); + ToolbarItemLocation::PrimaryLeft { flex: None } + } else { + self.active_item = None; + ToolbarItemLocation::Hidden + } + } +} diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index d1f861cd93..6c92d4c0b8 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -11,7 +11,7 @@ use collections::VecDeque; pub use editor; use editor::{Editor, MultiBuffer}; -use feedback::feedback_editor::SubmitFeedbackButton; +use feedback::feedback_editor::{FeedbackInfoText, SubmitFeedbackButton}; use futures::StreamExt; use gpui::{ actions, @@ -290,6 +290,8 @@ pub fn initialize_workspace( toolbar.add_item(project_search_bar, cx); let submit_feedback_button = cx.add_view(|_| SubmitFeedbackButton::new()); toolbar.add_item(submit_feedback_button, cx); + let feedback_info_text = cx.add_view(|_| FeedbackInfoText::new()); + toolbar.add_item(feedback_info_text, cx); }) }); }