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}