mirror of
https://github.com/aljazceru/notedeck.git
synced 2025-12-17 08:44:20 +01:00
BIN
assets/icons/edit_icon_4x_dark.png
Normal file
BIN
assets/icons/edit_icon_4x_dark.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 719 B |
@@ -6,7 +6,7 @@ use crate::ui::note::NoteOptions;
|
||||
use crate::{colors, images};
|
||||
use crate::{notes_holder::NotesHolder, NostrName};
|
||||
use egui::load::TexturePoll;
|
||||
use egui::{Label, RichText, Rounding, ScrollArea, Sense, Stroke};
|
||||
use egui::{vec2, Color32, Label, Layout, Rect, RichText, Rounding, ScrollArea, Sense, Stroke};
|
||||
use enostr::Pubkey;
|
||||
use nostrdb::{Ndb, ProfileRecord, Transaction};
|
||||
pub use picture::ProfilePic;
|
||||
@@ -108,6 +108,7 @@ impl<'a> ProfileView<'a> {
|
||||
pfp_rect.set_height(size);
|
||||
let pfp_rect = pfp_rect.translate(egui::vec2(0.0, -(padding + 2.0 + (size / 2.0))));
|
||||
|
||||
ui.horizontal(|ui| {
|
||||
ui.put(
|
||||
pfp_rect,
|
||||
ProfilePic::new(self.img_cache, get_profile_url(Some(&profile))).size(size),
|
||||
@@ -124,6 +125,11 @@ impl<'a> ProfileView<'a> {
|
||||
});
|
||||
}
|
||||
|
||||
ui.with_layout(Layout::right_to_left(egui::Align::Max), |ui| {
|
||||
ui.add(edit_profile_button())
|
||||
});
|
||||
});
|
||||
|
||||
ui.add_space(18.0);
|
||||
|
||||
ui.add(display_name_widget(get_display_name(Some(&profile)), false));
|
||||
@@ -222,6 +228,66 @@ fn copy_key_widget(pfp_rect: &egui::Rect) -> impl egui::Widget + '_ {
|
||||
}
|
||||
}
|
||||
|
||||
fn edit_profile_button() -> impl egui::Widget + 'static {
|
||||
|ui: &mut egui::Ui| -> egui::Response {
|
||||
let (rect, resp) = ui.allocate_exact_size(vec2(124.0, 32.0), Sense::click());
|
||||
let painter = ui.painter_at(rect);
|
||||
let rect = painter.round_rect_to_pixels(rect);
|
||||
|
||||
painter.rect_filled(
|
||||
rect,
|
||||
Rounding::same(8.0),
|
||||
if resp.hovered() {
|
||||
ui.visuals().widgets.active.bg_fill
|
||||
} else {
|
||||
ui.visuals().widgets.inactive.bg_fill
|
||||
},
|
||||
);
|
||||
painter.rect_stroke(
|
||||
rect.shrink(1.0),
|
||||
Rounding::same(8.0),
|
||||
if resp.hovered() {
|
||||
ui.visuals().widgets.active.bg_stroke
|
||||
} else {
|
||||
ui.visuals().widgets.inactive.bg_stroke
|
||||
},
|
||||
);
|
||||
|
||||
let edit_icon_size = vec2(16.0, 16.0);
|
||||
let galley = painter.layout(
|
||||
"Edit Profile".to_owned(),
|
||||
NotedeckTextStyle::Button.get_font_id(ui.ctx()),
|
||||
ui.visuals().text_color(),
|
||||
rect.width(),
|
||||
);
|
||||
|
||||
let space_between_icon_galley = 8.0;
|
||||
let half_icon_size = edit_icon_size.x / 2.0;
|
||||
let galley_rect = {
|
||||
let galley_rect = Rect::from_center_size(rect.center(), galley.rect.size());
|
||||
galley_rect.translate(vec2(half_icon_size + space_between_icon_galley / 2.0, 0.0))
|
||||
};
|
||||
|
||||
let edit_icon_rect = {
|
||||
let mut center = galley_rect.left_center();
|
||||
center.x -= half_icon_size + space_between_icon_galley;
|
||||
painter.round_rect_to_pixels(Rect::from_center_size(
|
||||
painter.round_pos_to_pixel_center(center),
|
||||
edit_icon_size,
|
||||
))
|
||||
};
|
||||
|
||||
painter.galley(galley_rect.left_top(), galley, Color32::WHITE);
|
||||
|
||||
egui::Image::new(egui::include_image!(
|
||||
"../../../../../assets/icons/edit_icon_4x_dark.png"
|
||||
))
|
||||
.paint_at(ui, edit_icon_rect);
|
||||
|
||||
resp
|
||||
}
|
||||
}
|
||||
|
||||
fn display_name_widget(name: NostrName<'_>, add_placeholder_space: bool) -> impl egui::Widget + '_ {
|
||||
move |ui: &mut egui::Ui| -> egui::Response {
|
||||
let disp_resp = name.display_name.map(|disp_name| {
|
||||
|
||||
Reference in New Issue
Block a user