Implement user menu

This commit is contained in:
Conrad Irwin 2023-12-13 14:12:59 -07:00
parent 426d298173
commit 3094cb749e
5 changed files with 52 additions and 19 deletions

2
Cargo.lock generated
View File

@ -1957,6 +1957,7 @@ dependencies = [
"db2",
"editor2",
"feature_flags2",
"feedback2",
"futures 0.3.28",
"fuzzy2",
"gpui2",
@ -1978,6 +1979,7 @@ dependencies = [
"settings2",
"smallvec",
"theme2",
"theme_selector2",
"time",
"tree-sitter-markdown",
"ui2",

View File

@ -32,7 +32,7 @@ collections = { path = "../collections" }
# context_menu = { path = "../context_menu" }
# drag_and_drop = { path = "../drag_and_drop" }
editor = { package="editor2", path = "../editor2" }
#feedback = { path = "../feedback" }
feedback = { package = "feedback2", path = "../feedback2" }
fuzzy = { package = "fuzzy2", path = "../fuzzy2" }
gpui = { package = "gpui2", path = "../gpui2" }
language = { package = "language2", path = "../language2" }
@ -46,7 +46,7 @@ rpc = { package ="rpc2", path = "../rpc2" }
settings = { package = "settings2", path = "../settings2" }
feature_flags = { package = "feature_flags2", path = "../feature_flags2"}
theme = { package = "theme2", path = "../theme2" }
# theme_selector = { path = "../theme_selector" }
theme_selector = { package = "theme_selector2", path = "../theme_selector2" }
# vcs_menu = { path = "../vcs_menu" }
ui = { package = "ui2", path = "../ui2" }
util = { path = "../util" }

View File

@ -1,8 +1,8 @@
use crate::face_pile::FacePile;
use call::{ActiveCall, ParticipantLocation, Room};
use client::{proto::PeerId, Client, ParticipantIndex, User, UserStore};
use client::{proto::PeerId, Client, ParticipantIndex, SignOut, User, UserStore};
use gpui::{
actions, canvas, div, overlay, point, px, rems, AppContext, DismissEvent, Div, Element,
actions, canvas, div, overlay, point, px, rems, Action, AppContext, DismissEvent, Div, Element,
FocusableView, Hsla, InteractiveElement, IntoElement, Model, ParentElement, Path, Render,
Stateful, StatefulInteractiveElement, Styled, Subscription, ViewContext, VisualContext,
WeakView, WindowBounds,
@ -16,7 +16,7 @@ use ui::{
IconButton, IconElement, KeyBinding, Tooltip,
};
use util::ResultExt;
use workspace::{notifications::NotifyResultExt, Workspace, WORKSPACE_DB};
use workspace::{notifications::NotifyResultExt, Feedback, Workspace, WORKSPACE_DB};
const MAX_PROJECT_NAME_LENGTH: usize = 40;
const MAX_BRANCH_NAME_LENGTH: usize = 40;
@ -239,7 +239,19 @@ impl Render for CollabTitlebarItem {
this.child(
popover_menu("user-menu")
.menu(|cx| {
ContextMenu::build(cx, |menu, _| menu.header("ADADA"))
ContextMenu::build(cx, |menu, _| {
menu.action(
"Settings",
zed_actions::OpenSettings.boxed_clone(),
)
.action("Theme", theme_selector::Toggle.boxed_clone())
.separator()
.action(
"Share Feedback",
feedback::GiveFeedback.boxed_clone(),
)
.action("Sign Out", client::SignOut.boxed_clone())
})
})
.trigger(
ButtonLike::new("user-menu")
@ -259,16 +271,6 @@ impl Render for CollabTitlebarItem {
)
.anchor(gpui::AnchorCorner::TopRight),
)
// this.child(
// ButtonLike::new("user-menu")
// .child(
// h_stack().gap_0p5().child(Avatar::data(avatar)).child(
// IconElement::new(Icon::ChevronDown).color(Color::Muted),
// ),
// )
// .style(ButtonStyle::Subtle)
// .tooltip(move |cx| Tooltip::text("Toggle User Menu", cx)),
// )
} else {
this.child(Button::new("sign_in", "Sign in").on_click(move |_, cx| {
let client = client.clone();
@ -280,6 +282,36 @@ impl Render for CollabTitlebarItem {
})
.detach();
}))
.child(
popover_menu("user-menu")
.menu(|cx| {
ContextMenu::build(cx, |menu, _| {
menu.action(
"Settings",
zed_actions::OpenSettings.boxed_clone(),
)
.action("Theme", theme_selector::Toggle.boxed_clone())
.separator()
.action(
"Share Feedback",
feedback::GiveFeedback.boxed_clone(),
)
})
})
.trigger(
ButtonLike::new("user-menu")
.child(
h_stack().gap_0p5().child(
IconElement::new(Icon::ChevronDown)
.color(Color::Muted),
),
)
.style(ButtonStyle::Subtle)
.tooltip(move |cx| {
Tooltip::text("Toggle User Menu", cx)
}),
),
)
}
})),
)

View File

@ -41,7 +41,7 @@ use workspace::{
notifications::simple_message_notification::MessageNotification, open_new, AppState, NewFile,
NewWindow, Workspace, WorkspaceSettings,
};
use zed_actions::{OpenBrowser, OpenZedURL, Quit};
use zed_actions::{OpenBrowser, OpenSettings, OpenZedURL, Quit};
actions!(
zed,
@ -59,7 +59,6 @@ actions!(
OpenLicenses,
OpenLocalSettings,
OpenLog,
OpenSettings,
OpenTelemetryLog,
ResetBufferFontSize,
ResetDatabase,

View File

@ -22,4 +22,4 @@ pub struct OpenZedURL {
impl_actions!(zed, [OpenBrowser, OpenZedURL]);
actions!(zed, [Quit]);
actions!(zed, [OpenSettings, Quit]);