use libdav::{PropertyName, names};
use crate::base::Property;
#[non_exhaustive]
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum AddressBookProperty {
DisplayName,
Description,
}
impl AddressBookProperty {
#[must_use]
pub fn dav_propname(&self) -> &PropertyName<'_, '_> {
match self {
AddressBookProperty::DisplayName => &names::DISPLAY_NAME,
AddressBookProperty::Description => &names::ADDRESSBOOK_DESCRIPTION,
}
}
#[must_use]
pub fn name(&self) -> &str {
match self {
AddressBookProperty::DisplayName => "displayname",
AddressBookProperty::Description => "description",
}
}
#[must_use]
pub fn known_properties() -> &'static [Property] {
&[
Property::AddressBook(AddressBookProperty::DisplayName),
Property::AddressBook(AddressBookProperty::Description),
]
}
#[must_use]
pub fn filename(&self) -> &'static str {
match self {
AddressBookProperty::DisplayName => "displayname",
AddressBookProperty::Description => "description",
}
}
}
impl From<AddressBookProperty> for Property {
fn from(value: AddressBookProperty) -> Self {
Property::AddressBook(value)
}
}