Add feedback information text

Joseph Lyons created

Change summary

crates/feedback/src/feedback_editor.rs | 52 ++++++++++++++++++++++++++++
crates/zed/src/zed.rs                  |  4 +
2 files changed, 55 insertions(+), 1 deletion(-)

Detailed changes

crates/feedback/src/feedback_editor.rs 🔗

@@ -509,3 +509,55 @@ impl ToolbarItemView for SubmitFeedbackButton {
         }
     }
 }
+
+pub struct FeedbackInfoText {
+    active_item: Option<ViewHandle<FeedbackEditor>>,
+}
+
+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<Self>) -> ElementBox {
+        let theme = cx.global::<Settings>().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<Self>,
+    ) -> workspace::ToolbarItemLocation {
+        cx.notify();
+        if let Some(feedback_editor) = active_pane_item.and_then(|i| i.downcast::<FeedbackEditor>())
+        {
+            self.active_item = Some(feedback_editor);
+            ToolbarItemLocation::PrimaryLeft { flex: None }
+        } else {
+            self.active_item = None;
+            ToolbarItemLocation::Hidden
+        }
+    }
+}

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);
                     })
                 });
             }