Adjust icon color based on whether the various components are open

This commit is contained in:
Marshall Bowers 2023-10-11 12:09:08 -04:00
parent acf2c2c6a5
commit 382693a199

View file

@ -101,16 +101,19 @@ impl<S: 'static + Send + Sync + Clone> StatusBar<S> {
} }
fn left_tools(&self, theme: &Theme) -> impl Element<State = S> { fn left_tools(&self, theme: &Theme) -> impl Element<State = S> {
let workspace_state = get_workspace_state();
div() div()
.flex() .flex()
.items_center() .items_center()
.gap_1() .gap_1()
.child( .child(
IconButton::new(Icon::FileTree) IconButton::new(Icon::FileTree)
.color(IconColor::Accent) .when(
workspace_state.show_project_panel.load(Ordering::SeqCst),
|this| this.color(IconColor::Accent),
)
.on_click(|_, cx| { .on_click(|_, cx| {
let workspace_state = get_workspace_state();
let is_showing_project_panel = let is_showing_project_panel =
workspace_state.show_project_panel.load(Ordering::SeqCst); workspace_state.show_project_panel.load(Ordering::SeqCst);
@ -133,6 +136,8 @@ impl<S: 'static + Send + Sync + Clone> StatusBar<S> {
} }
fn right_tools(&self, theme: &Theme) -> impl Element<State = S> { fn right_tools(&self, theme: &Theme) -> impl Element<State = S> {
let workspace_state = get_workspace_state();
div() div()
.flex() .flex()
.items_center() .items_center()
@ -166,9 +171,13 @@ impl<S: 'static + Send + Sync + Clone> StatusBar<S> {
.flex() .flex()
.items_center() .items_center()
.gap_1() .gap_1()
.child(IconButton::new(Icon::Terminal).on_click(|_, cx| { .child(
let workspace_state = get_workspace_state(); IconButton::new(Icon::Terminal)
.when(
workspace_state.show_terminal.load(Ordering::SeqCst),
|this| this.color(IconColor::Accent),
)
.on_click(|_, cx| {
let is_showing_terminal = let is_showing_terminal =
workspace_state.show_terminal.load(Ordering::SeqCst); workspace_state.show_terminal.load(Ordering::SeqCst);
@ -183,10 +192,15 @@ impl<S: 'static + Send + Sync + Clone> StatusBar<S> {
.unwrap(); .unwrap();
cx.notify(); cx.notify();
})) }),
.child(IconButton::new(Icon::MessageBubbles).on_click(|_, cx| { )
let workspace_state = get_workspace_state(); .child(
IconButton::new(Icon::MessageBubbles)
.when(
workspace_state.show_chat_panel.load(Ordering::SeqCst),
|this| this.color(IconColor::Accent),
)
.on_click(|_, cx| {
let is_showing_chat_panel = let is_showing_chat_panel =
workspace_state.show_chat_panel.load(Ordering::SeqCst); workspace_state.show_chat_panel.load(Ordering::SeqCst);
@ -201,7 +215,8 @@ impl<S: 'static + Send + Sync + Clone> StatusBar<S> {
.unwrap(); .unwrap();
cx.notify(); cx.notify();
})) }),
)
.child(IconButton::new(Icon::Ai)), .child(IconButton::new(Icon::Ai)),
) )
} }