goa 0.0.3

The bindings for the GNOME Online Accounts library.
Documentation
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT

use glib::Quark;
use glib::StaticType;
use glib::Type;
use glib::error::ErrorDomain;
use glib::translate::*;
use glib::value::FromValue;
use glib::value::FromValueOptional;
use glib::value::SetValue;
use glib::value::Value;
use goa_sys;
use gobject_sys;
use std::fmt;

#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
#[derive(Clone, Copy)]
pub enum Error {
    Failed,
    NotSupported,
    DialogDismissed,
    AccountExists,
    NotAuthorized,
    Ssl,
    #[doc(hidden)]
    __Unknown(i32),
}

impl fmt::Display for Error {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "Error::{}", match *self {
            Error::Failed => "Failed",
            Error::NotSupported => "NotSupported",
            Error::DialogDismissed => "DialogDismissed",
            Error::AccountExists => "AccountExists",
            Error::NotAuthorized => "NotAuthorized",
            Error::Ssl => "Ssl",
            _ => "Unknown",
        })
    }
}

#[doc(hidden)]
impl ToGlib for Error {
    type GlibType = goa_sys::GoaError;

    fn to_glib(&self) -> goa_sys::GoaError {
        match *self {
            Error::Failed => goa_sys::GOA_ERROR_FAILED,
            Error::NotSupported => goa_sys::GOA_ERROR_NOT_SUPPORTED,
            Error::DialogDismissed => goa_sys::GOA_ERROR_DIALOG_DISMISSED,
            Error::AccountExists => goa_sys::GOA_ERROR_ACCOUNT_EXISTS,
            Error::NotAuthorized => goa_sys::GOA_ERROR_NOT_AUTHORIZED,
            Error::Ssl => goa_sys::GOA_ERROR_SSL,
            Error::__Unknown(value) => value
        }
    }
}

#[doc(hidden)]
impl FromGlib<goa_sys::GoaError> for Error {
    fn from_glib(value: goa_sys::GoaError) -> Self {
        match value {
            0 => Error::Failed,
            1 => Error::NotSupported,
            2 => Error::DialogDismissed,
            3 => Error::AccountExists,
            4 => Error::NotAuthorized,
            5 => Error::Ssl,
            value => Error::__Unknown(value),
        }
    }
}

impl ErrorDomain for Error {
    fn domain() -> Quark {
        unsafe { from_glib(goa_sys::goa_error_quark()) }
    }

    fn code(self) -> i32 {
        self.to_glib()
    }

    fn from(code: i32) -> Option<Self> {
        match code {
            0 => Some(Error::Failed),
            1 => Some(Error::NotSupported),
            2 => Some(Error::DialogDismissed),
            3 => Some(Error::AccountExists),
            4 => Some(Error::NotAuthorized),
            5 => Some(Error::Ssl),
            _ => Some(Error::Failed),
        }
    }
}

impl StaticType for Error {
    fn static_type() -> Type {
        unsafe { from_glib(goa_sys::goa_error_get_type()) }
    }
}

impl<'a> FromValueOptional<'a> for Error {
    unsafe fn from_value_optional(value: &Value) -> Option<Self> {
        Some(FromValue::from_value(value))
    }
}

impl<'a> FromValue<'a> for Error {
    unsafe fn from_value(value: &Value) -> Self {
        from_glib(gobject_sys::g_value_get_enum(value.to_glib_none().0))
    }
}

impl SetValue for Error {
    unsafe fn set_value(value: &mut Value, this: &Self) {
        gobject_sys::g_value_set_enum(value.to_glib_none_mut().0, this.to_glib())
    }
}