{- |
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.DOMMediaQueryList
    ( 

-- * Exported types
    DOMMediaQueryList(..)                   ,
    IsDOMMediaQueryList                     ,
    toDOMMediaQueryList                     ,
    noDOMMediaQueryList                     ,


 -- * Methods
-- ** getMatches #method:getMatches#
    DOMMediaQueryListGetMatchesMethodInfo   ,
    dOMMediaQueryListGetMatches             ,


-- ** getMedia #method:getMedia#
    DOMMediaQueryListGetMediaMethodInfo     ,
    dOMMediaQueryListGetMedia               ,




 -- * Properties
-- ** matches #attr:matches#
    DOMMediaQueryListMatchesPropertyInfo    ,
    dOMMediaQueryListMatches                ,
    getDOMMediaQueryListMatches             ,


-- ** media #attr:media#
    DOMMediaQueryListMediaPropertyInfo      ,
    dOMMediaQueryListMedia                  ,
    getDOMMediaQueryListMedia               ,




    ) 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 DOMMediaQueryList = DOMMediaQueryList (ManagedPtr DOMMediaQueryList)
foreign import ccall "webkit_dom_media_query_list_get_type"
    c_webkit_dom_media_query_list_get_type :: IO GType

instance GObject DOMMediaQueryList where
    gobjectType _ = c_webkit_dom_media_query_list_get_type
    

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

toDOMMediaQueryList :: IsDOMMediaQueryList o => o -> IO DOMMediaQueryList
toDOMMediaQueryList = unsafeCastTo DOMMediaQueryList

noDOMMediaQueryList :: Maybe DOMMediaQueryList
noDOMMediaQueryList = Nothing

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

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

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

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

getDOMMediaQueryListMatches :: (MonadIO m, IsDOMMediaQueryList o) => o -> m Bool
getDOMMediaQueryListMatches obj = liftIO $ getObjectPropertyBool obj "matches"

data DOMMediaQueryListMatchesPropertyInfo
instance AttrInfo DOMMediaQueryListMatchesPropertyInfo where
    type AttrAllowedOps DOMMediaQueryListMatchesPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMMediaQueryListMatchesPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMMediaQueryListMatchesPropertyInfo = IsDOMMediaQueryList
    type AttrGetType DOMMediaQueryListMatchesPropertyInfo = Bool
    type AttrLabel DOMMediaQueryListMatchesPropertyInfo = "matches"
    type AttrOrigin DOMMediaQueryListMatchesPropertyInfo = DOMMediaQueryList
    attrGet _ = getDOMMediaQueryListMatches
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

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

getDOMMediaQueryListMedia :: (MonadIO m, IsDOMMediaQueryList o) => o -> m (Maybe T.Text)
getDOMMediaQueryListMedia obj = liftIO $ getObjectPropertyString obj "media"

data DOMMediaQueryListMediaPropertyInfo
instance AttrInfo DOMMediaQueryListMediaPropertyInfo where
    type AttrAllowedOps DOMMediaQueryListMediaPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMMediaQueryListMediaPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMMediaQueryListMediaPropertyInfo = IsDOMMediaQueryList
    type AttrGetType DOMMediaQueryListMediaPropertyInfo = (Maybe T.Text)
    type AttrLabel DOMMediaQueryListMediaPropertyInfo = "media"
    type AttrOrigin DOMMediaQueryListMediaPropertyInfo = DOMMediaQueryList
    attrGet _ = getDOMMediaQueryListMedia
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMMediaQueryList
type instance O.AttributeList DOMMediaQueryList = DOMMediaQueryListAttributeList
type DOMMediaQueryListAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("matches", DOMMediaQueryListMatchesPropertyInfo), '("media", DOMMediaQueryListMediaPropertyInfo)] :: [(Symbol, *)])

dOMMediaQueryListMatches :: AttrLabelProxy "matches"
dOMMediaQueryListMatches = AttrLabelProxy

dOMMediaQueryListMedia :: AttrLabelProxy "media"
dOMMediaQueryListMedia = AttrLabelProxy

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

-- method DOMMediaQueryList::get_matches
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMMediaQueryList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMMediaQueryList", 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_media_query_list_get_matches" webkit_dom_media_query_list_get_matches :: 
    Ptr DOMMediaQueryList ->                -- self : TInterface (Name {namespace = "WebKit", name = "DOMMediaQueryList"})
    IO CInt

{- |
/No description available in the introspection data./
-}
dOMMediaQueryListGetMatches ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMMediaQueryList a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMMediaQueryList.DOMMediaQueryList' -}
    -> m Bool
    {- ^ __Returns:__ A 'Bool' -}
dOMMediaQueryListGetMatches self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_media_query_list_get_matches self'
    let result' = (/= 0) result
    touchManagedPtr self
    return result'

data DOMMediaQueryListGetMatchesMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsDOMMediaQueryList a) => O.MethodInfo DOMMediaQueryListGetMatchesMethodInfo a signature where
    overloadedMethod _ = dOMMediaQueryListGetMatches

-- method DOMMediaQueryList::get_media
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMMediaQueryList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMMediaQueryList", 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_dom_media_query_list_get_media" webkit_dom_media_query_list_get_media :: 
    Ptr DOMMediaQueryList ->                -- self : TInterface (Name {namespace = "WebKit", name = "DOMMediaQueryList"})
    IO CString

{- |
/No description available in the introspection data./
-}
dOMMediaQueryListGetMedia ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMMediaQueryList a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMMediaQueryList.DOMMediaQueryList' -}
    -> m T.Text
    {- ^ __Returns:__ A @/gchar/@ -}
dOMMediaQueryListGetMedia self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_media_query_list_get_media self'
    checkUnexpectedReturnNULL "dOMMediaQueryListGetMedia" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr self
    return result'

data DOMMediaQueryListGetMediaMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsDOMMediaQueryList a) => O.MethodInfo DOMMediaQueryListGetMediaMethodInfo a signature where
    overloadedMethod _ = dOMMediaQueryListGetMedia