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

-- * Exported types
    DOMStyleMedia(..)                       ,
    IsDOMStyleMedia                         ,
    toDOMStyleMedia                         ,
    noDOMStyleMedia                         ,


 -- * Methods
-- ** matchMedium #method:matchMedium#
    DOMStyleMediaMatchMediumMethodInfo      ,
    dOMStyleMediaMatchMedium                ,




 -- * Properties
-- ** type #attr:type#
    DOMStyleMediaTypePropertyInfo           ,
    dOMStyleMediaType                       ,
    getDOMStyleMediaType                    ,




    ) 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 DOMStyleMedia = DOMStyleMedia (ManagedPtr DOMStyleMedia)
foreign import ccall "webkit_dom_style_media_get_type"
    c_webkit_dom_style_media_get_type :: IO GType

instance GObject DOMStyleMedia where
    gobjectType _ = c_webkit_dom_style_media_get_type
    

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

toDOMStyleMedia :: IsDOMStyleMedia o => o -> IO DOMStyleMedia
toDOMStyleMedia = unsafeCastTo DOMStyleMedia

noDOMStyleMedia :: Maybe DOMStyleMedia
noDOMStyleMedia = Nothing

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

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

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

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

getDOMStyleMediaType :: (MonadIO m, IsDOMStyleMedia o) => o -> m (Maybe T.Text)
getDOMStyleMediaType obj = liftIO $ getObjectPropertyString obj "type"

data DOMStyleMediaTypePropertyInfo
instance AttrInfo DOMStyleMediaTypePropertyInfo where
    type AttrAllowedOps DOMStyleMediaTypePropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMStyleMediaTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMStyleMediaTypePropertyInfo = IsDOMStyleMedia
    type AttrGetType DOMStyleMediaTypePropertyInfo = (Maybe T.Text)
    type AttrLabel DOMStyleMediaTypePropertyInfo = "type"
    type AttrOrigin DOMStyleMediaTypePropertyInfo = DOMStyleMedia
    attrGet _ = getDOMStyleMediaType
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMStyleMedia
type instance O.AttributeList DOMStyleMedia = DOMStyleMediaAttributeList
type DOMStyleMediaAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("type", DOMStyleMediaTypePropertyInfo)] :: [(Symbol, *)])

dOMStyleMediaType :: AttrLabelProxy "type"
dOMStyleMediaType = AttrLabelProxy

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

-- method DOMStyleMedia::match_medium
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMStyleMedia"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMStyleMedia", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mediaquery", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #gchar", 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_style_media_match_medium" webkit_dom_style_media_match_medium :: 
    Ptr DOMStyleMedia ->                    -- self : TInterface (Name {namespace = "WebKit", name = "DOMStyleMedia"})
    CString ->                              -- mediaquery : TBasicType TUTF8
    IO CInt

{- |
/No description available in the introspection data./
-}
dOMStyleMediaMatchMedium ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMStyleMedia a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMStyleMedia.DOMStyleMedia' -}
    -> T.Text
    {- ^ /@mediaquery@/: A @/gchar/@ -}
    -> m Bool
    {- ^ __Returns:__ A 'Bool' -}
dOMStyleMediaMatchMedium self mediaquery = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    mediaquery' <- textToCString mediaquery
    result <- webkit_dom_style_media_match_medium self' mediaquery'
    let result' = (/= 0) result
    touchManagedPtr self
    freeMem mediaquery'
    return result'

data DOMStyleMediaMatchMediumMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsDOMStyleMedia a) => O.MethodInfo DOMStyleMediaMatchMediumMethodInfo a signature where
    overloadedMethod _ = dOMStyleMediaMatchMedium