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())
}
}