libpanel/
session_item.rs

1use crate::{prelude::*, SessionItem};
2use glib::translate::*;
3use std::ptr;
4
5impl SessionItem {
6    #[doc(alias = "panel_session_item_get_metadata")]
7    #[doc(alias = "get_metadata")]
8    #[inline]
9    pub fn metadata<T: FromVariant>(&self, key: &str) -> Option<T> {
10        self.metadata_value(key, Some(&*T::static_variant_type()))
11            .and_then(|t| t.get())
12    }
13
14    #[doc(alias = "panel_session_item_has_metadata")]
15    pub fn has_metadata(&self, key: &str) -> bool {
16        unsafe {
17            from_glib(ffi::panel_session_item_has_metadata(
18                self.to_glib_none().0,
19                key.to_glib_none().0,
20                ptr::null_mut(),
21            ))
22        }
23    }
24
25    #[doc(alias = "panel_session_item_has_metadata")]
26    pub fn metadata_type(&self, key: &str) -> Option<glib::VariantType> {
27        unsafe {
28            let mut value_type = ptr::null();
29            let ret = from_glib(ffi::panel_session_item_has_metadata(
30                self.to_glib_none().0,
31                key.to_glib_none().0,
32                &mut value_type,
33            ));
34            if ret {
35                Some(from_glib_none(value_type))
36            } else {
37                None
38            }
39        }
40    }
41
42    #[doc(alias = "panel_session_item_set_metadata")]
43    #[inline]
44    pub fn set_metadata<T: ToVariant>(&self, key: &str, value: Option<T>) {
45        self.set_metadata_value(key, value.map(|v| v.to_variant()).as_ref())
46    }
47}