Update NotificationToast implementation and use in Workspace component
This commit is contained in:
parent
943c02bf79
commit
c6d831a564
3 changed files with 22 additions and 15 deletions
|
@ -1,7 +1,9 @@
|
||||||
use gpui3::{div, Element, ParentElement, StyleHelpers, ViewContext};
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
|
use gpui3::{Element, ParentElement, StyleHelpers, ViewContext};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
h_stack, v_stack, Button, Icon, IconButton, IconElement, Label, ThemeColor, Toast, ToastOrigin,
|
h_stack, v_stack, Icon, IconButton, IconElement, Label, ThemeColor, Toast, ToastOrigin,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Notification toasts are used to display a message
|
/// Notification toasts are used to display a message
|
||||||
|
@ -9,26 +11,27 @@ use crate::{
|
||||||
///
|
///
|
||||||
/// To simply convey information, use a Status.
|
/// To simply convey information, use a Status.
|
||||||
pub struct NotificationToast<S: 'static + Send + Sync + Clone> {
|
pub struct NotificationToast<S: 'static + Send + Sync + Clone> {
|
||||||
|
state_type: PhantomData<S>,
|
||||||
left_icon: Option<Icon>,
|
left_icon: Option<Icon>,
|
||||||
title: String,
|
title: String,
|
||||||
message: String,
|
message: String,
|
||||||
primary_action: Button<S>,
|
// primary_action: Button<S>,
|
||||||
secondary_action: Option<Button<S>>,
|
// secondary_action: Option<Button<S>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<S: 'static + Send + Sync + Clone> NotificationToast<S> {
|
impl<S: 'static + Send + Sync + Clone> NotificationToast<S> {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
title: impl Into<String>,
|
title: impl Into<String>,
|
||||||
message: impl Into<String>,
|
message: impl Into<String>,
|
||||||
actions: Vec<Button<S>>,
|
// primary_action: Button<S>,
|
||||||
primary_action: Button<S>,
|
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
state_type: PhantomData,
|
||||||
left_icon: None,
|
left_icon: None,
|
||||||
title: title.into(),
|
title: title.into(),
|
||||||
message: message.into(),
|
message: message.into(),
|
||||||
primary_action,
|
// primary_action,
|
||||||
secondary_action: None,
|
// secondary_action: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,10 +40,10 @@ impl<S: 'static + Send + Sync + Clone> NotificationToast<S> {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_secondary_action(mut self, action: Button<S>) -> Self {
|
// pub fn set_secondary_action(mut self, action: Button<S>) -> Self {
|
||||||
self.secondary_action = Some(action);
|
// self.secondary_action = Some(action);
|
||||||
self
|
// self
|
||||||
}
|
// }
|
||||||
|
|
||||||
fn render(&mut self, _view: &mut S, cx: &mut ViewContext<S>) -> impl Element<ViewState = S> {
|
fn render(&mut self, _view: &mut S, cx: &mut ViewContext<S>) -> impl Element<ViewState = S> {
|
||||||
let color = ThemeColor::new(cx);
|
let color = ThemeColor::new(cx);
|
||||||
|
@ -80,6 +83,6 @@ impl<S: 'static + Send + Sync + Clone> NotificationToast<S> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
Toast::new(ToastOrigin::BottomRight)
|
Toast::new(ToastOrigin::BottomRight).child(notification)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
0
crates/ui2/src/components/notification_project_share.rs
Normal file
0
crates/ui2/src/components/notification_project_share.rs
Normal file
|
@ -1,13 +1,13 @@
|
||||||
use chrono::DateTime;
|
use chrono::DateTime;
|
||||||
use gpui3::{px, relative, rems, view, Context, Size, View};
|
use gpui3::{px, relative, rems, view, Context, Size, View};
|
||||||
|
|
||||||
use crate::prelude::*;
|
|
||||||
use crate::{
|
use crate::{
|
||||||
hello_world_rust_editor_with_status_example, random_players_with_call_status, theme, v_stack,
|
hello_world_rust_editor_with_status_example, random_players_with_call_status, theme, v_stack,
|
||||||
AssistantPanel, ChatMessage, ChatPanel, CollabPanel, EditorPane, Label, LanguageSelector,
|
AssistantPanel, ChatMessage, ChatPanel, CollabPanel, EditorPane, Label, LanguageSelector,
|
||||||
Livestream, Pane, PaneGroup, Panel, PanelAllowedSides, PanelSide, ProjectPanel, SplitDirection,
|
Livestream, Pane, PaneGroup, Panel, PanelAllowedSides, PanelSide, ProjectPanel, SplitDirection,
|
||||||
StatusBar, Terminal, TitleBar, Toast, ToastOrigin,
|
StatusBar, Terminal, TitleBar, Toast, ToastOrigin,
|
||||||
};
|
};
|
||||||
|
use crate::{prelude::*, NotificationToast};
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Workspace {
|
pub struct Workspace {
|
||||||
|
@ -266,7 +266,11 @@ impl Workspace {
|
||||||
.filter(|_| self.is_language_selector_open()),
|
.filter(|_| self.is_language_selector_open()),
|
||||||
)
|
)
|
||||||
.child(Toast::new(ToastOrigin::Bottom).child(Label::new("A toast")))
|
.child(Toast::new(ToastOrigin::Bottom).child(Label::new("A toast")))
|
||||||
.child(Toast::new(ToastOrigin::BottomRight).child(Label::new("Another toast")))
|
// .child(Toast::new(ToastOrigin::BottomRight).child(Label::new("Another toast")))
|
||||||
|
.child(NotificationToast::new(
|
||||||
|
"A notification",
|
||||||
|
"This is a notification",
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue