Compare commits

...

2 Commits

Author SHA1 Message Date
e395fc9289 commit 2024-09-17 16:53:57 +05:30
a62a6f8b9a comments 2024-09-17 12:17:05 +05:30
2 changed files with 25 additions and 14 deletions

View File

@ -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

View File

@ -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,