use crate::{app::GLOB_COPIED_METADATA, MetadataTool};
use egui::{Margin, RichText, Rounding, Stroke};
use egui_toast::{Toast, ToastKind, ToastOptions, Toasts};
pub fn create_sidebar(app: &mut MetadataTool, ctx: &egui::Context) {
egui::SidePanel::left("side_panel").show(ctx, |ui| {
ui.heading(format!(
"{}{}",
"MetaYoinker",
egui_phosphor::regular::MAGIC_WAND,
));
app.load_files_or_err(ui);
if app.windows.is_empty() {
ui.label("No Files Loaded");
} else {
ui.label(
(if app.windows.len() > 1 {
"Loaded files:"
} else {
"Loaded file:"
})
.to_string(),
);
app.dropped_files.clear();
for window in &app.windows {
ui.monospace(&window.metadata.file_name);
}
}
ui.with_layout(egui::Layout::bottom_up(egui::Align::LEFT), |ui| {
ui.horizontal(|ui| {
ui.spacing_mut().item_spacing.x = 0.0;
ui.label("Made by ZeWaka ");
ui.hyperlink_to("(GitHub)", env!("CARGO_PKG_REPOSITORY"));
});
egui::global_dark_light_mode_buttons(ui);
ui.add_space(10.0);
ui.separator();
ui.add_space(10.0);
ui.with_layout(egui::Layout::bottom_up(egui::Align::Center), |ui| {
egui::Frame::default()
.stroke(Stroke {
width: 1.0,
color: {
let meta_guard = GLOB_COPIED_METADATA.lock();
if (*meta_guard).is_some() {
egui::Color32::LIGHT_GREEN
} else {
egui::Color32::LIGHT_RED
}
},
})
.rounding(Rounding::same(2.0))
.inner_margin(Margin::same(6.0))
.show(ui, |ui| {
let meta_clipboard_guard = GLOB_COPIED_METADATA.lock();
let meta_clipboard = &*meta_clipboard_guard;
if let Some(meta) = meta_clipboard {
ui.label(meta.file_name.clone());
} else {
ui.label(RichText::new("None").color(egui::Color32::LIGHT_RED));
}
ui.add_space(5.0);
let has_meta_in_clipboard = meta_clipboard.is_some();
drop(meta_clipboard_guard); ui.horizontal(|ui| {
ui.heading("Clipboard:");
ui.add_enabled_ui(has_meta_in_clipboard, |ui| {
if ui.button(RichText::new("Clear").size(20.0)).clicked() {
clear_meta_clipboard(&mut app.toasts);
}
});
});
});
});
});
});
}
fn clear_meta_clipboard(toasts: &mut Toasts) {
toasts.add(Toast {
text: "Cleared clipboard".into(),
kind: ToastKind::Info,
options: ToastOptions::default()
.duration_in_seconds(1.5)
.show_progress(true),
});
*GLOB_COPIED_METADATA.lock() = None;
}