libfeedback 0.0.1

Rust bindings for libfeedback
Documentation
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from
// from gir-files (https://github.com/gtk-rs/gir-files.git)
// DO NOT EDIT

use glib::{prelude::*, translate::*};

/// Enum values used to indicate why the feedbacks for an event ended.
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
#[non_exhaustive]
#[doc(alias = "LfbEventEndReason")]
pub enum EventEndReason {
    /// There was no feedback in the current theme for this event
    ///                                  so no feedback was provided to the user.
    #[doc(alias = "LFB_EVENT_END_REASON_NOT_FOUND")]
    NotFound,
    /// All feedbacks finished playing their natural length
    #[doc(alias = "LFB_EVENT_END_REASON_NATURAL")]
    Natural,
    /// Feedbacks ran until the set timeout expired
    #[doc(alias = "LFB_EVENT_END_REASON_EXPIRED")]
    Expired,
    /// The feedbacks were ended explicitly
    #[doc(alias = "LFB_EVENT_END_REASON_EXPLICIT")]
    Explicit,
    #[doc(hidden)]
    __Unknown(i32),
}

#[doc(hidden)]
impl IntoGlib for EventEndReason {
    type GlibType = ffi::LfbEventEndReason;

    #[inline]
    fn into_glib(self) -> ffi::LfbEventEndReason {
        match self {
            Self::NotFound => ffi::LFB_EVENT_END_REASON_NOT_FOUND,
            Self::Natural => ffi::LFB_EVENT_END_REASON_NATURAL,
            Self::Expired => ffi::LFB_EVENT_END_REASON_EXPIRED,
            Self::Explicit => ffi::LFB_EVENT_END_REASON_EXPLICIT,
            Self::__Unknown(value) => value,
        }
    }
}

#[doc(hidden)]
impl FromGlib<ffi::LfbEventEndReason> for EventEndReason {
    #[inline]
    unsafe fn from_glib(value: ffi::LfbEventEndReason) -> Self {
        skip_assert_initialized!();

        match value {
            ffi::LFB_EVENT_END_REASON_NOT_FOUND => Self::NotFound,
            ffi::LFB_EVENT_END_REASON_NATURAL => Self::Natural,
            ffi::LFB_EVENT_END_REASON_EXPIRED => Self::Expired,
            ffi::LFB_EVENT_END_REASON_EXPLICIT => Self::Explicit,
            value => Self::__Unknown(value),
        }
    }
}

impl StaticType for EventEndReason {
    #[inline]
    #[doc(alias = "lfb_event_end_reason_get_type")]
    fn static_type() -> glib::Type {
        unsafe { from_glib(ffi::lfb_event_end_reason_get_type()) }
    }
}

impl glib::HasParamSpec for EventEndReason {
    type ParamSpec = glib::ParamSpecEnum;
    type SetValue = Self;
    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;

    fn param_spec_builder() -> Self::BuilderFn {
        Self::ParamSpec::builder_with_default
    }
}

impl glib::value::ValueType for EventEndReason {
    type Type = Self;
}

unsafe impl<'a> glib::value::FromValue<'a> for EventEndReason {
    type Checker = glib::value::GenericValueTypeChecker<Self>;

    #[inline]
    unsafe fn from_value(value: &'a glib::Value) -> Self {
        skip_assert_initialized!();
        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
    }
}

impl ToValue for EventEndReason {
    #[inline]
    fn to_value(&self) -> glib::Value {
        let mut value = glib::Value::for_value_type::<Self>();
        unsafe {
            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
        }
        value
    }

    #[inline]
    fn value_type(&self) -> glib::Type {
        Self::static_type()
    }
}

impl From<EventEndReason> for glib::Value {
    #[inline]
    fn from(v: EventEndReason) -> Self {
        skip_assert_initialized!();
        ToValue::to_value(&v)
    }
}

/// Enum values to indicate the current state of the feedbacks
/// triggered by an event.
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
#[non_exhaustive]
#[doc(alias = "LfbEventState")]
pub enum EventState {
    /// An error occurred triggering feedbacks
    #[doc(alias = "LFB_EVENT_STATE_ERRORED")]
    Errored,
    /// No state information yet
    #[doc(alias = "LFB_EVENT_STATE_NONE")]
    None,
    /// The feedbacks for this event are currently running
    #[doc(alias = "LFB_EVENT_STATE_RUNNING")]
    Running,
    /// All feedbacks for this event ended
    #[doc(alias = "LFB_EVENT_STATE_ENDED")]
    Ended,
    #[doc(hidden)]
    __Unknown(i32),
}

#[doc(hidden)]
impl IntoGlib for EventState {
    type GlibType = ffi::LfbEventState;

    #[inline]
    fn into_glib(self) -> ffi::LfbEventState {
        match self {
            Self::Errored => ffi::LFB_EVENT_STATE_ERRORED,
            Self::None => ffi::LFB_EVENT_STATE_NONE,
            Self::Running => ffi::LFB_EVENT_STATE_RUNNING,
            Self::Ended => ffi::LFB_EVENT_STATE_ENDED,
            Self::__Unknown(value) => value,
        }
    }
}

#[doc(hidden)]
impl FromGlib<ffi::LfbEventState> for EventState {
    #[inline]
    unsafe fn from_glib(value: ffi::LfbEventState) -> Self {
        skip_assert_initialized!();

        match value {
            ffi::LFB_EVENT_STATE_ERRORED => Self::Errored,
            ffi::LFB_EVENT_STATE_NONE => Self::None,
            ffi::LFB_EVENT_STATE_RUNNING => Self::Running,
            ffi::LFB_EVENT_STATE_ENDED => Self::Ended,
            value => Self::__Unknown(value),
        }
    }
}

impl StaticType for EventState {
    #[inline]
    #[doc(alias = "lfb_event_state_get_type")]
    fn static_type() -> glib::Type {
        unsafe { from_glib(ffi::lfb_event_state_get_type()) }
    }
}

impl glib::HasParamSpec for EventState {
    type ParamSpec = glib::ParamSpecEnum;
    type SetValue = Self;
    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;

    fn param_spec_builder() -> Self::BuilderFn {
        Self::ParamSpec::builder_with_default
    }
}

impl glib::value::ValueType for EventState {
    type Type = Self;
}

unsafe impl<'a> glib::value::FromValue<'a> for EventState {
    type Checker = glib::value::GenericValueTypeChecker<Self>;

    #[inline]
    unsafe fn from_value(value: &'a glib::Value) -> Self {
        skip_assert_initialized!();
        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
    }
}

impl ToValue for EventState {
    #[inline]
    fn to_value(&self) -> glib::Value {
        let mut value = glib::Value::for_value_type::<Self>();
        unsafe {
            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
        }
        value
    }

    #[inline]
    fn value_type(&self) -> glib::Type {
        Self::static_type()
    }
}

impl From<EventState> for glib::Value {
    #[inline]
    fn from(v: EventState) -> Self {
        skip_assert_initialized!();
        ToValue::to_value(&v)
    }
}