copy toolbar rendering to notedeck_ui
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
@@ -17,6 +17,7 @@ pub mod side_panel;
|
|||||||
pub mod support;
|
pub mod support;
|
||||||
pub mod thread;
|
pub mod thread;
|
||||||
pub mod timeline;
|
pub mod timeline;
|
||||||
|
pub mod toolbar;
|
||||||
pub mod wallet;
|
pub mod wallet;
|
||||||
pub mod widgets;
|
pub mod widgets;
|
||||||
|
|
||||||
|
|||||||
66
crates/notedeck_columns/src/ui/toolbar.rs
Normal file
66
crates/notedeck_columns/src/ui/toolbar.rs
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
use egui::{Color32, Layout};
|
||||||
|
use notedeck_ui::icons::{home_button, notifications_button};
|
||||||
|
|
||||||
|
use crate::{toolbar::ToolbarAction, ui::side_panel::search_button_impl, Damus};
|
||||||
|
|
||||||
|
pub fn toolbar(ui: &mut egui::Ui, unseen_notification: bool) -> Option<ToolbarAction> {
|
||||||
|
use egui_tabs::{TabColor, Tabs};
|
||||||
|
|
||||||
|
let rect = ui.available_rect_before_wrap();
|
||||||
|
ui.painter().hline(
|
||||||
|
rect.x_range(),
|
||||||
|
rect.top(),
|
||||||
|
ui.visuals().widgets.noninteractive.bg_stroke,
|
||||||
|
);
|
||||||
|
|
||||||
|
if !ui.visuals().dark_mode {
|
||||||
|
ui.painter().rect(
|
||||||
|
rect,
|
||||||
|
0,
|
||||||
|
notedeck_ui::colors::ALMOST_WHITE,
|
||||||
|
egui::Stroke::new(0.0, Color32::TRANSPARENT),
|
||||||
|
egui::StrokeKind::Inside,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let rs = Tabs::new(3)
|
||||||
|
.selected(Damus::initially_selected_toolbar_index())
|
||||||
|
.hover_bg(TabColor::none())
|
||||||
|
.selected_fg(TabColor::none())
|
||||||
|
.selected_bg(TabColor::none())
|
||||||
|
.height(Damus::toolbar_height())
|
||||||
|
.layout(Layout::centered_and_justified(egui::Direction::TopDown))
|
||||||
|
.show(ui, |ui, state| {
|
||||||
|
let index = state.index();
|
||||||
|
|
||||||
|
let mut action: Option<ToolbarAction> = None;
|
||||||
|
|
||||||
|
let btn_size: f32 = 20.0;
|
||||||
|
if index == 0 {
|
||||||
|
if home_button(ui, btn_size).clicked() {
|
||||||
|
action = Some(ToolbarAction::Home);
|
||||||
|
}
|
||||||
|
} else if index == 1
|
||||||
|
&& ui
|
||||||
|
.add(search_button_impl(ui.visuals().text_color(), 2.0))
|
||||||
|
.clicked()
|
||||||
|
{
|
||||||
|
action = Some(ToolbarAction::Search)
|
||||||
|
} else if index == 2
|
||||||
|
&& notifications_button(ui, btn_size, unseen_notification).clicked()
|
||||||
|
{
|
||||||
|
action = Some(ToolbarAction::Notifications);
|
||||||
|
}
|
||||||
|
|
||||||
|
action
|
||||||
|
})
|
||||||
|
.inner();
|
||||||
|
|
||||||
|
for maybe_r in rs {
|
||||||
|
if maybe_r.inner.is_some() {
|
||||||
|
return maybe_r.inner;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user