Compare commits
2 Commits
d4f2140f55
...
e395fc9289
Author | SHA1 | Date | |
---|---|---|---|
e395fc9289 | |||
a62a6f8b9a |
@ -7,7 +7,7 @@ use zbus::{Connection, Result};
|
||||
const SERVER_NAME: &str = "SNot";
|
||||
const VENDOR: &str = "candifloss.cc";
|
||||
const VERSION: &str = "0.1.0";
|
||||
const SPEC_VERSION: &str = "0.1.0";
|
||||
const SPEC_VERSION: &str = "1.0";
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<()> {
|
||||
@ -27,7 +27,7 @@ async fn main() -> Result<()> {
|
||||
// Respond with server information
|
||||
let response = (SERVER_NAME, VENDOR, VERSION, SPEC_VERSION); // (name, vendor, version, spec_version)
|
||||
connection.reply(&msg, &response).await?;
|
||||
println!("Request received: {member}\n\tName: {SERVER_NAME}\n\tVendor: {VENDOR}\n\tVersion: {VERSION}\n\tSpec_version: {SPEC_VERSION}");
|
||||
println!("Request received: {member}\n\tName: {SERVER_NAME},\tVendor: {VENDOR},\tVersion: {VERSION},\tSpec_version: {SPEC_VERSION}");
|
||||
}
|
||||
"GetCapabilities" => {
|
||||
// Respond with supported capabilities
|
||||
|
@ -1,20 +1,22 @@
|
||||
use std::collections::HashMap;
|
||||
use std::collections::{btree_map::Range, HashMap};
|
||||
use zbus::{message::Body, Result};
|
||||
use zvariant::OwnedValue;
|
||||
|
||||
pub struct Notification {
|
||||
app_name: String,
|
||||
replace_id: u32,
|
||||
icon: String,
|
||||
summary: String,
|
||||
body: String,
|
||||
actions: Vec<String>,
|
||||
hints: HashMap<String, OwnedValue>,
|
||||
expir_timeout: i32,
|
||||
// A notificaion object
|
||||
app_name: String, // The application that sent the notification
|
||||
replace_id: u32, // (Optional) ID of an existing notification to be updated, replaced by this
|
||||
icon: String, // See icon specifications: https://specifications.freedesktop.org/notification-spec/latest/icons-and-images.html
|
||||
summary: String, // Notification title
|
||||
body: String, // Notification content/body
|
||||
actions: Vec<String>, // Action requests that can be sent back to the client -
|
||||
hints: HashMap<String, OwnedValue>, // Extra useful data - notif type, urgency, sound file, icon data, etc.
|
||||
expir_timeout: i32, // Seconds till this notif expires. Optional
|
||||
}
|
||||
|
||||
impl Notification {
|
||||
pub fn urgency(&self) -> String {
|
||||
// Obtain urgency
|
||||
match self.hints.get("urgency") {
|
||||
Some(value) => {
|
||||
// Attempt to convert OwnedValue to u8
|
||||
@ -22,18 +24,27 @@ impl Notification {
|
||||
Ok(0) => "Low".to_string(),
|
||||
Ok(1) => "Normal".to_string(),
|
||||
Ok(2) => "Critical".to_string(),
|
||||
_ => "Unknown".to_string(),
|
||||
_ => "Other".to_string(), // There are no accepted values other that these 3
|
||||
}
|
||||
}
|
||||
None => "Unknown".to_string(),
|
||||
None => "Unknown".to_string(), // This possibly never occurs, or something might be wrong
|
||||
}
|
||||
}
|
||||
|
||||
pub fn actions(&self) -> HashMap<String, String> {
|
||||
let mut acts: HashMap<String, String>;
|
||||
for i in Range(self.actions.len()) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_notif(msg_body: &Body) -> Result<Notification> {
|
||||
// Convert the DBus message body into Notification
|
||||
let (app_name, replace_id, icon, summary, body, actions, hints, expir_timeout) =
|
||||
msg_body.deserialize()?;
|
||||
msg_body.deserialize()?; // Deserialized into a tuple
|
||||
Ok(Notification {
|
||||
// Make a Notification object from the obtained tuple
|
||||
app_name,
|
||||
replace_id,
|
||||
icon,
|
||||
|
Loading…
Reference in New Issue
Block a user