{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.WebKit2.Objects.BackForwardListItem
    ( 

-- * Exported types
    BackForwardListItem(..)                 ,
    IsBackForwardListItem                   ,
    toBackForwardListItem                   ,
    noBackForwardListItem                   ,


 -- * Methods
-- ** getOriginalUri #method:getOriginalUri#
    BackForwardListItemGetOriginalUriMethodInfo,
    backForwardListItemGetOriginalUri       ,


-- ** getTitle #method:getTitle#
    BackForwardListItemGetTitleMethodInfo   ,
    backForwardListItemGetTitle             ,


-- ** getUri #method:getUri#
    BackForwardListItemGetUriMethodInfo     ,
    backForwardListItemGetUri               ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GObject.Objects.Object as GObject.Object

newtype BackForwardListItem = BackForwardListItem (ManagedPtr BackForwardListItem)
foreign import ccall "webkit_back_forward_list_item_get_type"
    c_webkit_back_forward_list_item_get_type :: IO GType

instance GObject BackForwardListItem where
    gobjectType _ = c_webkit_back_forward_list_item_get_type
    

class GObject o => IsBackForwardListItem o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError BackForwardListItem a) =>
    IsBackForwardListItem a
#endif
instance IsBackForwardListItem BackForwardListItem
instance GObject.Object.IsObject BackForwardListItem

toBackForwardListItem :: IsBackForwardListItem o => o -> IO BackForwardListItem
toBackForwardListItem = unsafeCastTo BackForwardListItem

noBackForwardListItem :: Maybe BackForwardListItem
noBackForwardListItem = Nothing

type family ResolveBackForwardListItemMethod (t :: Symbol) (o :: *) :: * where
    ResolveBackForwardListItemMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveBackForwardListItemMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveBackForwardListItemMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveBackForwardListItemMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveBackForwardListItemMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveBackForwardListItemMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveBackForwardListItemMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveBackForwardListItemMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveBackForwardListItemMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveBackForwardListItemMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveBackForwardListItemMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveBackForwardListItemMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveBackForwardListItemMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveBackForwardListItemMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveBackForwardListItemMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveBackForwardListItemMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveBackForwardListItemMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveBackForwardListItemMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveBackForwardListItemMethod "getOriginalUri" o = BackForwardListItemGetOriginalUriMethodInfo
    ResolveBackForwardListItemMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveBackForwardListItemMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveBackForwardListItemMethod "getTitle" o = BackForwardListItemGetTitleMethodInfo
    ResolveBackForwardListItemMethod "getUri" o = BackForwardListItemGetUriMethodInfo
    ResolveBackForwardListItemMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveBackForwardListItemMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveBackForwardListItemMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveBackForwardListItemMethod t BackForwardListItem, O.MethodInfo info BackForwardListItem p) => O.IsLabelProxy t (BackForwardListItem -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveBackForwardListItemMethod t BackForwardListItem, O.MethodInfo info BackForwardListItem p) => O.IsLabel t (BackForwardListItem -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

instance O.HasAttributeList BackForwardListItem
type instance O.AttributeList BackForwardListItem = BackForwardListItemAttributeList
type BackForwardListItemAttributeList = ('[ ] :: [(Symbol, *)])

type instance O.SignalList BackForwardListItem = BackForwardListItemSignalList
type BackForwardListItemSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method BackForwardListItem::get_original_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "list_item", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardListItem", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_item_get_original_uri" webkit_back_forward_list_item_get_original_uri :: 
    Ptr BackForwardListItem ->              -- list_item : TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})
    IO CString

{- |
See also 'GI.WebKit2.Objects.BackForwardListItem.backForwardListItemGetUri'.
-}
backForwardListItemGetOriginalUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardListItem a) =>
    a
    {- ^ /@listItem@/: a 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem' -}
    -> m T.Text
    {- ^ __Returns:__ the original URI of /@listItem@/ or 'Nothing'
   when the original URI is empty. -}
backForwardListItemGetOriginalUri listItem = liftIO $ do
    listItem' <- unsafeManagedPtrCastPtr listItem
    result <- webkit_back_forward_list_item_get_original_uri listItem'
    checkUnexpectedReturnNULL "backForwardListItemGetOriginalUri" result
    result' <- cstringToText result
    touchManagedPtr listItem
    return result'

data BackForwardListItemGetOriginalUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsBackForwardListItem a) => O.MethodInfo BackForwardListItemGetOriginalUriMethodInfo a signature where
    overloadedMethod _ = backForwardListItemGetOriginalUri

-- method BackForwardListItem::get_title
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "list_item", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardListItem", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_item_get_title" webkit_back_forward_list_item_get_title :: 
    Ptr BackForwardListItem ->              -- list_item : TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})
    IO CString

{- |
/No description available in the introspection data./
-}
backForwardListItemGetTitle ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardListItem a) =>
    a
    {- ^ /@listItem@/: a 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem' -}
    -> m T.Text
    {- ^ __Returns:__ the page title of /@listItem@/ or 'Nothing'
   when the title is empty. -}
backForwardListItemGetTitle listItem = liftIO $ do
    listItem' <- unsafeManagedPtrCastPtr listItem
    result <- webkit_back_forward_list_item_get_title listItem'
    checkUnexpectedReturnNULL "backForwardListItemGetTitle" result
    result' <- cstringToText result
    touchManagedPtr listItem
    return result'

data BackForwardListItemGetTitleMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsBackForwardListItem a) => O.MethodInfo BackForwardListItemGetTitleMethodInfo a signature where
    overloadedMethod _ = backForwardListItemGetTitle

-- method BackForwardListItem::get_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "list_item", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardListItem", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_item_get_uri" webkit_back_forward_list_item_get_uri :: 
    Ptr BackForwardListItem ->              -- list_item : TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})
    IO CString

{- |
This URI may differ from the original URI if the page was,
for example, redirected to a new location.
See also 'GI.WebKit2.Objects.BackForwardListItem.backForwardListItemGetOriginalUri'.
-}
backForwardListItemGetUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardListItem a) =>
    a
    {- ^ /@listItem@/: a 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem' -}
    -> m T.Text
    {- ^ __Returns:__ the URI of /@listItem@/ or 'Nothing'
   when the URI is empty. -}
backForwardListItemGetUri listItem = liftIO $ do
    listItem' <- unsafeManagedPtrCastPtr listItem
    result <- webkit_back_forward_list_item_get_uri listItem'
    checkUnexpectedReturnNULL "backForwardListItemGetUri" result
    result' <- cstringToText result
    touchManagedPtr listItem
    return result'

data BackForwardListItemGetUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsBackForwardListItem a) => O.MethodInfo BackForwardListItemGetUriMethodInfo a signature where
    overloadedMethod _ = backForwardListItemGetUri