diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-20 22:08:04 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-20 22:08:04 +0300 |
| commit | c584037c77c63f6a08f8837f357c89432b8043e7 (patch) | |
| tree | 16647d6628a11dbbf5e576fb86f2a87b507e202e /src/ui | |
| parent | f7b26a911772dab16a49d982002d2bbe58e0956b (diff) | |
feat: badge outdated integration updates
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/menus.rs | 65 | ||||
| -rw-r--r-- | src/ui/settings.rs | 15 | ||||
| -rw-r--r-- | src/ui/sidebar.rs | 8 |
3 files changed, 40 insertions, 48 deletions
diff --git a/src/ui/menus.rs b/src/ui/menus.rs index d17aa897..aa5e3b79 100644 --- a/src/ui/menus.rs +++ b/src/ui/menus.rs @@ -148,53 +148,32 @@ pub(super) fn render_global_launcher_menu(app: &AppState, frame: &mut Frame) { let selected = idx == app.global_menu.highlighted; let rect = Rect::new(inner.x, y, inner.width, 1); - if *item == "update ready" { - let line = if selected { - Line::from(vec![ - Span::styled( - " update ready ", - Style::default() - .fg(panel_contrast_fg(&app.palette)) - .bg(app.palette.accent) - .add_modifier(Modifier::BOLD), - ), - Span::styled( - "● ", - Style::default() - .fg(panel_contrast_fg(&app.palette)) - .bg(app.palette.accent) - .add_modifier(Modifier::BOLD), - ), - ]) - } else { - Line::from(vec![ - Span::styled(" update ready ", Style::default().fg(app.palette.text)), - Span::styled( - "● ", - Style::default() - .fg(app.palette.accent) - .add_modifier(Modifier::BOLD), - ), - ]) - }; - frame.render_widget(Paragraph::new(line).alignment(Alignment::Left), rect); - continue; - } - - let style = if selected { + let selected_style = Style::default() + .fg(panel_contrast_fg(&app.palette)) + .bg(app.palette.accent) + .add_modifier(Modifier::BOLD); + let item_style = if selected { + selected_style + } else { + Style::default().fg(app.palette.text) + }; + let badge_style = if selected { + selected_style + } else { Style::default() - .fg(panel_contrast_fg(&app.palette)) - .bg(app.palette.accent) + .fg(app.palette.accent) .add_modifier(Modifier::BOLD) + }; + + let line = if app.global_menu_item_has_badge(item) { + Line::from(vec![ + Span::styled(" ●", badge_style), + Span::styled(format!(" {item} "), item_style), + ]) } else { - Style::default().fg(app.palette.text) + Line::from(Span::styled(format!(" {item} "), item_style)) }; - frame.render_widget( - Paragraph::new(format!(" {item} ")) - .style(style) - .alignment(Alignment::Left), - rect, - ); + frame.render_widget(Paragraph::new(line).alignment(Alignment::Left), rect); } } diff --git a/src/ui/settings.rs b/src/ui/settings.rs index c191eef2..f104c882 100644 --- a/src/ui/settings.rs +++ b/src/ui/settings.rs @@ -48,7 +48,20 @@ pub(super) fn render_settings_overlay(app: &AppState, frame: &mut Frame, area: R header_rows[0], ); - let tabs = Tabs::new(SettingsSection::ALL.iter().map(|s| s.label())) + let tab_labels = SettingsSection::ALL.iter().map(|section| { + if app.settings_section_has_badge(*section) { + Line::from(vec![ + Span::styled( + "● ", + Style::default().fg(p.accent).add_modifier(Modifier::BOLD), + ), + Span::raw(section.label()), + ]) + } else { + Line::from(section.label()) + } + }); + let tabs = Tabs::new(tab_labels) .select( SettingsSection::ALL .iter() diff --git a/src/ui/sidebar.rs b/src/ui/sidebar.rs index b6b5bc9e..1d722d2a 100644 --- a/src/ui/sidebar.rs +++ b/src/ui/sidebar.rs @@ -731,13 +731,13 @@ fn render_workspace_list(app: &AppState, frame: &mut Frame, area: Rect, is_navig ); let menu_rect = app.global_launcher_rect(); - let menu_line = if app.update_available.is_some() { + let menu_line = if app.global_menu_attention_badge_visible() { Line::from(vec![ - Span::styled("menu", Style::default().fg(p.overlay0)), Span::styled( - " ●", + "● ", Style::default().fg(p.accent).add_modifier(Modifier::BOLD), ), + Span::styled("menu", Style::default().fg(p.overlay0)), ]) } else { Line::from(vec![Span::styled("menu", Style::default().fg(p.overlay0))]) @@ -887,7 +887,7 @@ fn render_sidebar_toggle( if toggle_area == Rect::default() { return; } - let icon_style = if app.update_available.is_some() { + let icon_style = if app.global_menu_attention_badge_visible() { Style::default().fg(p.accent).add_modifier(Modifier::BOLD) } else { Style::default().fg(p.overlay0) |
