use dashmap::DashMap;
use std::path::PathBuf;
pub struct AppResourceService {
icon_paths: DashMap<String, String>,
icons_dir: String,
}
impl AppResourceService {
pub fn new(icons_dir: String) -> Self {
let icon_paths = DashMap::new();
let icons_dir_path = PathBuf::from(&icons_dir);
let icons = [
("tray_icon", "128x128@2x.png"),
("web_pages", "web_pages.png"),
("tips", "tips.png"),
("terminal", "terminal.png"),
("settings", "settings.png"),
("refresh", "refresh.png"),
("register", "register.png"),
("game", "game.png"),
("exit", "exit.png"),
];
for (name, filename) in icons {
let path = icons_dir_path.join(filename);
icon_paths.insert(name.to_string(), path.to_string_lossy().to_string());
}
Self {
icon_paths,
icons_dir,
}
}
pub fn get_icon_path(&self, name: &str) -> Option<String> {
self.icon_paths.get(name).map(|v| v.value().clone())
}
pub fn icons_dir(&self) -> &str {
&self.icons_dir
}
}