keepass_ng/db/types/
iconid.rs1use std::convert::TryFrom;
2
3#[derive(Debug, Default, PartialEq, Eq, Clone, Copy, Hash)]
6#[cfg_attr(feature = "serialization", derive(serde::Serialize))]
7pub struct IconId(pub usize);
8
9impl std::fmt::Display for IconId {
10 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11 #[rustfmt::skip]
12 const EMOJIS: [&str; 69] = [
13 "đ", "đ", "â ī¸", "đĨī¸", "đ", "đŦ", "đ§", "đ", "đ", "đ",
14 "đ", "đˇ", "đĄ", "đ", "đ", "đą", "đ", "đŋ", "đĨī¸", "đ§",
15 "đ§", "đ", "đ", "đ¸", "âĄ", "đģ", "đž", "đ", "đī¸", "đ",
16 "đģ", "đ¨ī¸", "đŗ", "đ", "đ§", "đ", "đī¸", "đ¯", "đģ", "đ°ī¸",
17 "đ", "đī¸", "đž", "đī¸", "đ", "đ", "âšī¸", "đī¸", "đ", "đ",
18 "đĨī¸", "đ", "đ", "â
", "đī¸", "đˇ", "đĨ", "đ", "đ", "đ§",
19 "đ ", "â", "đ§", "đ¤", "đ", "đ", "đĩ", "đ", "đą",
20 ];
21
22 let emoji = EMOJIS.get(self.0).unwrap_or(&"");
23 write!(f, "{emoji}")
24 }
25}
26
27impl IconId {
28 pub const KEY: IconId = IconId(0);
29 pub const WORLD: IconId = IconId(1);
30 pub const WARNING: IconId = IconId(2);
31 pub const NETWORK_SERVER: IconId = IconId(3);
32 pub const MARKED_DIRECTORY: IconId = IconId(4);
33 pub const USER_COMMUNICATION: IconId = IconId(5);
34 pub const PARTS: IconId = IconId(6);
35 pub const NOTEPAD: IconId = IconId(7);
36 pub const WORLD_SOCKET: IconId = IconId(8);
37 pub const IDENTITY: IconId = IconId(9);
38 pub const PAPER_READY: IconId = IconId(10);
39 pub const DIGICAM: IconId = IconId(11);
40 pub const IRCOMMUNICATION: IconId = IconId(12);
41 pub const MULTI_KEYS: IconId = IconId(13);
42 pub const PLUG: IconId = IconId(14);
43 pub const PDA: IconId = IconId(15);
44 pub const BOOK_MARK: IconId = IconId(16);
45 pub const CD_ROM: IconId = IconId(17);
46 pub const MONITOR: IconId = IconId(18);
47 pub const EMAIL: IconId = IconId(19);
48 pub const CONFIG: IconId = IconId(20);
49 pub const CLIPBOARD_READY: IconId = IconId(21);
50 pub const PAPER_NEW: IconId = IconId(22);
51 pub const SCREENSHOT: IconId = IconId(23);
52 pub const THUNDER: IconId = IconId(24);
53 pub const RADIO: IconId = IconId(25);
54 pub const FLOPPY_DISK: IconId = IconId(26);
55 pub const FTP: IconId = IconId(27);
56 pub const FILM: IconId = IconId(28);
57 pub const SECURITY_TERMINAL: IconId = IconId(29);
58 pub const TERMINAL: IconId = IconId(30);
59 pub const PRINTER: IconId = IconId(31);
60 pub const GRID: IconId = IconId(32);
61 pub const CHECKER_BOARD: IconId = IconId(33);
62 pub const WRENCH: IconId = IconId(34);
63 pub const INTERNET: IconId = IconId(35);
64 pub const ZIP_FOLDER: IconId = IconId(36);
65 pub const PERCENT: IconId = IconId(37);
66 pub const WINDOWS_PC: IconId = IconId(38);
67 pub const CLOCK: IconId = IconId(39);
68 pub const SEARCH: IconId = IconId(40);
69 pub const LANDSCAPE: IconId = IconId(41);
70 pub const MEMORY: IconId = IconId(42);
71 pub const RECYCLE_BIN: IconId = IconId(43);
72 pub const CLIPBOARD: IconId = IconId(44);
73 pub const STOP: IconId = IconId(45);
74 pub const INFORMATION: IconId = IconId(46);
75 pub const FILING_CABINET: IconId = IconId(47);
76 pub const FOLDER: IconId = IconId(48);
77 pub const FOLDER_OPEN: IconId = IconId(49);
78 pub const DESKTOP: IconId = IconId(50);
79 pub const LOCK_OPEN: IconId = IconId(51);
80 pub const LOCKED: IconId = IconId(52);
81 pub const APPROVED: IconId = IconId(53);
82 pub const MARKER: IconId = IconId(54);
83 pub const PICTURE_DOC: IconId = IconId(55);
84 pub const CONTACT: IconId = IconId(56);
85 pub const EXCEL_SHEET: IconId = IconId(57);
86 pub const SECURIT_ACCOUNT: IconId = IconId(58);
87 pub const REPAIR: IconId = IconId(59);
88 pub const HOME: IconId = IconId(60);
89 pub const STAR: IconId = IconId(61);
90 pub const LINUX: IconId = IconId(62);
91 pub const ANDROID: IconId = IconId(63);
92 pub const APPLE: IconId = IconId(64);
93 pub const WIKIPEDIA: IconId = IconId(65);
94 pub const DOLLAR: IconId = IconId(66);
95 pub const CERTIFICATE: IconId = IconId(67);
96 pub const MOBILE_PHONE: IconId = IconId(68);
97}
98
99impl TryFrom<usize> for IconId {
100 type Error = crate::error::Error;
101 fn try_from(value: usize) -> Result<Self, Self::Error> {
102 if value > 68 {
103 return Err(crate::error::Error::ParseIconIdError { icon_id: value });
104 }
105 Ok(Self(value))
106 }
107}
108
109impl From<IconId> for usize {
110 fn from(icon_id: IconId) -> Self {
111 icon_id.0
112 }
113}