SNot/src/main.rs

66 lines
1.7 KiB
Rust
Raw Normal View History

use std::collections::HashMap;
enum ActionType {
Normal,
Default,
}
struct NotifAction {
key: String,
label: String,
}
2024-08-11 11:31:05 +00:00
struct Notif {
app_name: String,
replace_id: u32,
ico: String, //It's string, right?
summary: String,
body: String,
actions: Vec<(String, String)>,
hints: HashMap<String, String>,
2024-08-11 11:31:05 +00:00
expir_timeout: i32,
}
2024-08-11 11:31:05 +00:00
// Summary should be generally <= 40 chars, as per the specification.
fn truncate_summary(notif: &mut Notif) {
if notif.summary.len() > 40 {
notif.summary.truncate(39);
notif.summary.push_str("");
}
2024-08-11 11:31:05 +00:00
}
2024-08-11 11:31:05 +00:00
fn main() {
let mut not = Notif {
app_name: "snot".to_string(),
replace_id: 0,
ico: "alert.png".to_string(),
2024-08-11 11:31:05 +00:00
summary: "This is a very long suuummmaaarrryyy! Don't you believe me????".to_string(),
body: "short body(hehe)".to_string(),
actions: vec![
("reply".to_string(), "Reply".to_string()),
("close".to_string(), "Close".to_string()),
],
hints: HashMap::new(), // Create an empty HashMap for hints
2024-08-11 11:31:05 +00:00
expir_timeout: 0
};
not.hints.insert("urgency".to_string(), "critical".to_string());
2024-08-11 11:32:35 +00:00
truncate_summary(&mut not); //Limit the summary length
2024-08-11 11:31:05 +00:00
println!("AppName: {}\nReplaceId: {}\nIcon: {}\nSummary: {}\nBody: {}\nExpirationTimeout: {}",
not.app_name,
not.replace_id,
not.ico,
not.summary,
not.body,
not.expir_timeout
);
println!("Actions:");
for (key, label) in &not.actions {
println!("\t{}: {}, ", key, label);
}
println!("Hints:");
for (key, value) in not.hints.iter() {
println!("\t{}: {}, ", key, value);
}
}