use crate::telepathy; use dbus::{arg, tree}; use std::collections::HashMap; #[derive(Debug)] pub struct Protocol {} pub type ParamSpec = ( String, // Name u32, // Flags (Conn_Mgr_Param_Flags) String, // Signature arg::Variant>, // Default ); pub type Variant = arg::Variant>; pub const NAME: &'static str = "delta"; // FIXME: these should come from codegen //const FLAG_NONE: u32 = 0; const FLAG_REQUIRED: u32 = 1; //const FLAG_REGISTER: u32 = 2; //const FLAG_HAS_DEFAULT: u32 = 4; const FLAG_SECRET: u32 = 8; //const FLAG_DBUS_PROP: u32 = 16; pub fn parameters() -> Vec { vec![ ( "account".to_string(), FLAG_REQUIRED, "s".to_string(), arg::Variant(Box::new("".to_string())), ), ( "password".to_string(), FLAG_REQUIRED | FLAG_SECRET, "s".to_string(), arg::Variant(Box::new("".to_string())), ), ] } impl telepathy::Protocol for Protocol { fn identify_account(&self, params: HashMap<&str, Variant>) -> Result { println!("Protocol::identify_account({:?})", params); Err(tree::MethodErr::no_arg()) } fn normalize_contact(&self, contact_id: &str) -> Result { println!("Protocol::normalize_contact({})", contact_id); Err(tree::MethodErr::no_arg()) } fn interfaces(&self) -> Result, tree::MethodErr> { println!("Protocol::interfaces()"); Ok(vec![]) } fn parameters(&self) -> Result, tree::MethodErr> { println!("Protocol::parameters()"); Ok(parameters()) } fn connection_interfaces(&self) -> Result, tree::MethodErr> { println!("Protocol::connection_interfaces()"); Ok(vec![]) } fn requestable_channel_classes( &self, ) -> Result< Vec<( ::std::collections::HashMap>>, Vec, )>, tree::MethodErr, > { println!("Protocol::requestable_channel_classes()"); Ok(vec![]) } fn vcard_field(&self) -> Result { println!("Protocol::vcard_field()"); Ok("email".to_string()) } fn english_name(&self) -> Result { println!("Protocol::english_name()"); Ok("Delta Chat".to_string()) } fn icon(&self) -> Result { println!("Protocol::icon()"); Ok("im-delta".to_string()) } fn authentication_types(&self) -> Result, tree::MethodErr> { println!("Protocol::authentication_types()"); Ok(vec![]) } }