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

-- * Exported types
    UserMediaPermissionRequest(..)          ,
    UserMediaPermissionRequestK             ,
    toUserMediaPermissionRequest            ,
    noUserMediaPermissionRequest            ,


 -- * Properties
-- ** IsForAudioDevice
    UserMediaPermissionRequestIsForAudioDevicePropertyInfo,
    getUserMediaPermissionRequestIsForAudioDevice,


-- ** IsForVideoDevice
    UserMediaPermissionRequestIsForVideoDevicePropertyInfo,
    getUserMediaPermissionRequestIsForVideoDevice,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.WebKit2.Types
import GI.WebKit2.Callbacks
import qualified GI.GObject as GObject

newtype UserMediaPermissionRequest = UserMediaPermissionRequest (ForeignPtr UserMediaPermissionRequest)
foreign import ccall "webkit_user_media_permission_request_get_type"
    c_webkit_user_media_permission_request_get_type :: IO GType

type instance ParentTypes UserMediaPermissionRequest = UserMediaPermissionRequestParentTypes
type UserMediaPermissionRequestParentTypes = '[GObject.Object, PermissionRequest]

instance GObject UserMediaPermissionRequest where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_user_media_permission_request_get_type
    

class GObject o => UserMediaPermissionRequestK o
instance (GObject o, IsDescendantOf UserMediaPermissionRequest o) => UserMediaPermissionRequestK o

toUserMediaPermissionRequest :: UserMediaPermissionRequestK o => o -> IO UserMediaPermissionRequest
toUserMediaPermissionRequest = unsafeCastTo UserMediaPermissionRequest

noUserMediaPermissionRequest :: Maybe UserMediaPermissionRequest
noUserMediaPermissionRequest = Nothing

-- VVV Prop "is-for-audio-device"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getUserMediaPermissionRequestIsForAudioDevice :: (MonadIO m, UserMediaPermissionRequestK o) => o -> m Bool
getUserMediaPermissionRequestIsForAudioDevice obj = liftIO $ getObjectPropertyBool obj "is-for-audio-device"

data UserMediaPermissionRequestIsForAudioDevicePropertyInfo
instance AttrInfo UserMediaPermissionRequestIsForAudioDevicePropertyInfo where
    type AttrAllowedOps UserMediaPermissionRequestIsForAudioDevicePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint UserMediaPermissionRequestIsForAudioDevicePropertyInfo = (~) ()
    type AttrBaseTypeConstraint UserMediaPermissionRequestIsForAudioDevicePropertyInfo = UserMediaPermissionRequestK
    type AttrGetType UserMediaPermissionRequestIsForAudioDevicePropertyInfo = Bool
    type AttrLabel UserMediaPermissionRequestIsForAudioDevicePropertyInfo = "UserMediaPermissionRequest::is-for-audio-device"
    attrGet _ = getUserMediaPermissionRequestIsForAudioDevice
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "is-for-video-device"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getUserMediaPermissionRequestIsForVideoDevice :: (MonadIO m, UserMediaPermissionRequestK o) => o -> m Bool
getUserMediaPermissionRequestIsForVideoDevice obj = liftIO $ getObjectPropertyBool obj "is-for-video-device"

data UserMediaPermissionRequestIsForVideoDevicePropertyInfo
instance AttrInfo UserMediaPermissionRequestIsForVideoDevicePropertyInfo where
    type AttrAllowedOps UserMediaPermissionRequestIsForVideoDevicePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint UserMediaPermissionRequestIsForVideoDevicePropertyInfo = (~) ()
    type AttrBaseTypeConstraint UserMediaPermissionRequestIsForVideoDevicePropertyInfo = UserMediaPermissionRequestK
    type AttrGetType UserMediaPermissionRequestIsForVideoDevicePropertyInfo = Bool
    type AttrLabel UserMediaPermissionRequestIsForVideoDevicePropertyInfo = "UserMediaPermissionRequest::is-for-video-device"
    attrGet _ = getUserMediaPermissionRequestIsForVideoDevice
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList UserMediaPermissionRequest = UserMediaPermissionRequestAttributeList
type UserMediaPermissionRequestAttributeList = ('[ '("is-for-audio-device", UserMediaPermissionRequestIsForAudioDevicePropertyInfo), '("is-for-video-device", UserMediaPermissionRequestIsForVideoDevicePropertyInfo)] :: [(Symbol, *)])

type instance SignalList UserMediaPermissionRequest = UserMediaPermissionRequestSignalList
type UserMediaPermissionRequestSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])