{- |
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.WebKit.Objects.DOMBarInfo
    ( 

-- * Exported types
    DOMBarInfo(..)                          ,
    IsDOMBarInfo                            ,
    toDOMBarInfo                            ,
    noDOMBarInfo                            ,


 -- * Methods
-- ** getVisible #method:getVisible#
    dOMBarInfoGetVisible                    ,




 -- * Properties
-- ** visible #attr:visible#
    DOMBarInfoVisiblePropertyInfo           ,
    dOMBarInfoVisible                       ,
    getDOMBarInfoVisible                    ,




    ) 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
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMObject as WebKit.DOMObject

newtype DOMBarInfo = DOMBarInfo (ManagedPtr DOMBarInfo)
foreign import ccall "webkit_dom_bar_info_get_type"
    c_webkit_dom_bar_info_get_type :: IO GType

instance GObject DOMBarInfo where
    gobjectType _ = c_webkit_dom_bar_info_get_type
    

class GObject o => IsDOMBarInfo o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError DOMBarInfo a) =>
    IsDOMBarInfo a
#endif
instance IsDOMBarInfo DOMBarInfo
instance WebKit.DOMObject.IsDOMObject DOMBarInfo
instance GObject.Object.IsObject DOMBarInfo

toDOMBarInfo :: IsDOMBarInfo o => o -> IO DOMBarInfo
toDOMBarInfo = unsafeCastTo DOMBarInfo

noDOMBarInfo :: Maybe DOMBarInfo
noDOMBarInfo = Nothing

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

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

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

-- VVV Prop "visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMBarInfoVisible :: (MonadIO m, IsDOMBarInfo o) => o -> m Bool
getDOMBarInfoVisible obj = liftIO $ getObjectPropertyBool obj "visible"

data DOMBarInfoVisiblePropertyInfo
instance AttrInfo DOMBarInfoVisiblePropertyInfo where
    type AttrAllowedOps DOMBarInfoVisiblePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMBarInfoVisiblePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMBarInfoVisiblePropertyInfo = IsDOMBarInfo
    type AttrGetType DOMBarInfoVisiblePropertyInfo = Bool
    type AttrLabel DOMBarInfoVisiblePropertyInfo = "visible"
    type AttrOrigin DOMBarInfoVisiblePropertyInfo = DOMBarInfo
    attrGet _ = getDOMBarInfoVisible
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMBarInfo
type instance O.AttributeList DOMBarInfo = DOMBarInfoAttributeList
type DOMBarInfoAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("visible", DOMBarInfoVisiblePropertyInfo)] :: [(Symbol, *)])

dOMBarInfoVisible :: AttrLabelProxy "visible"
dOMBarInfoVisible = AttrLabelProxy

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

-- method DOMBarInfo::get_visible
-- method type : MemberFunction
-- Args : [Arg {argCName = "self", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "A #WebKitDOMBarInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_bar_info_get_visible" webkit_dom_bar_info_get_visible :: 
    Ptr () ->                               -- self : TBasicType TPtr
    IO CInt

{-# DEPRECATED dOMBarInfoGetVisible ["(Since version 2.2)"] #-}
{- |
The BarInfo type has been removed from the DOM spec, this function does nothing.
-}
dOMBarInfoGetVisible ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    Ptr ()
    {- ^ /@self@/: A @/WebKitDOMBarInfo/@ -}
    -> m Bool
    {- ^ __Returns:__ A 'Bool' -}
dOMBarInfoGetVisible self = liftIO $ do
    result <- webkit_dom_bar_info_get_visible self
    let result' = (/= 0) result
    return result'