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

'GI.WebKit.Objects.IconDatabase.IconDatabase' provides access to website icons, as shown
in tab labels, window captions or bookmarks. All views share
the same icon database.

The icon database is enabled by default and stored in
~\/.cache\/webkit\/icondatabase, depending on XDG_CACHE_HOME.

WebKit will automatically look for available icons in link elements
on opened pages as well as an existing favicon.ico and load the
images found into the memory cache if possible. The signal \"icon-loaded\"
will be emitted when any icon is found and loaded.
Old Icons are automatically cleaned up after 4 days.

'GI.WebKit.Objects.IconDatabase.iconDatabaseSetPath' can be used to change the location
of the database and also to disable it by passing 'Nothing'.

If WebKitWebSettings::enable-private-browsing is 'True' new icons
won\'t be added to the database on disk and no existing icons will
be deleted from it.
-}

module GI.WebKit.Objects.IconDatabase
    ( 

-- * Exported types
    IconDatabase(..)                        ,
    IsIconDatabase                          ,
    toIconDatabase                          ,
    noIconDatabase                          ,


 -- * Methods
-- ** clear #method:clear#
    IconDatabaseClearMethodInfo             ,
    iconDatabaseClear                       ,


-- ** getIconPixbuf #method:getIconPixbuf#
    IconDatabaseGetIconPixbufMethodInfo     ,
    iconDatabaseGetIconPixbuf               ,


-- ** getIconUri #method:getIconUri#
    IconDatabaseGetIconUriMethodInfo        ,
    iconDatabaseGetIconUri                  ,


-- ** getPath #method:getPath#
    IconDatabaseGetPathMethodInfo           ,
    iconDatabaseGetPath                     ,


-- ** setPath #method:setPath#
    IconDatabaseSetPathMethodInfo           ,
    iconDatabaseSetPath                     ,




 -- * Properties
-- ** path #attr:path#
    IconDatabasePathPropertyInfo            ,
    constructIconDatabasePath               ,
    getIconDatabasePath                     ,
    iconDatabasePath                        ,
    setIconDatabasePath                     ,




 -- * Signals
-- ** iconLoaded #signal:iconLoaded#
    C_IconDatabaseIconLoadedCallback        ,
    IconDatabaseIconLoadedCallback          ,
    IconDatabaseIconLoadedSignalInfo        ,
    afterIconDatabaseIconLoaded             ,
    genClosure_IconDatabaseIconLoaded       ,
    mk_IconDatabaseIconLoadedCallback       ,
    noIconDatabaseIconLoadedCallback        ,
    onIconDatabaseIconLoaded                ,
    wrap_IconDatabaseIconLoadedCallback     ,




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

newtype IconDatabase = IconDatabase (ManagedPtr IconDatabase)
foreign import ccall "webkit_icon_database_get_type"
    c_webkit_icon_database_get_type :: IO GType

instance GObject IconDatabase where
    gobjectType _ = c_webkit_icon_database_get_type
    

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

toIconDatabase :: IsIconDatabase o => o -> IO IconDatabase
toIconDatabase = unsafeCastTo IconDatabase

noIconDatabase :: Maybe IconDatabase
noIconDatabase = Nothing

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

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

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

-- signal IconDatabase::icon-loaded
{-# DEPRECATED IconDatabaseIconLoadedCallback ["(Since version 1.8)","Use WebKitFaviconDatabase::icon-loaded instead."] #-}
type IconDatabaseIconLoadedCallback =
    WebKit.WebFrame.WebFrame ->
    T.Text ->
    IO ()

noIconDatabaseIconLoadedCallback :: Maybe IconDatabaseIconLoadedCallback
noIconDatabaseIconLoadedCallback = Nothing

type C_IconDatabaseIconLoadedCallback =
    Ptr () ->                               -- object
    Ptr WebKit.WebFrame.WebFrame ->
    CString ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mk_IconDatabaseIconLoadedCallback :: C_IconDatabaseIconLoadedCallback -> IO (FunPtr C_IconDatabaseIconLoadedCallback)

genClosure_IconDatabaseIconLoaded :: IconDatabaseIconLoadedCallback -> IO Closure
genClosure_IconDatabaseIconLoaded cb = do
    let cb' = wrap_IconDatabaseIconLoadedCallback cb
    mk_IconDatabaseIconLoadedCallback cb' >>= newCClosure


wrap_IconDatabaseIconLoadedCallback ::
    IconDatabaseIconLoadedCallback ->
    Ptr () ->
    Ptr WebKit.WebFrame.WebFrame ->
    CString ->
    Ptr () ->
    IO ()
wrap_IconDatabaseIconLoadedCallback _cb _ frame frameUri _ = do
    frame' <- (newObject WebKit.WebFrame.WebFrame) frame
    frameUri' <- cstringToText frameUri
    _cb  frame' frameUri'


onIconDatabaseIconLoaded :: (GObject a, MonadIO m) => a -> IconDatabaseIconLoadedCallback -> m SignalHandlerId
onIconDatabaseIconLoaded obj cb = liftIO $ connectIconDatabaseIconLoaded obj cb SignalConnectBefore
afterIconDatabaseIconLoaded :: (GObject a, MonadIO m) => a -> IconDatabaseIconLoadedCallback -> m SignalHandlerId
afterIconDatabaseIconLoaded obj cb = connectIconDatabaseIconLoaded obj cb SignalConnectAfter

connectIconDatabaseIconLoaded :: (GObject a, MonadIO m) =>
                                 a -> IconDatabaseIconLoadedCallback -> SignalConnectMode -> m SignalHandlerId
connectIconDatabaseIconLoaded obj cb after = liftIO $ do
    let cb' = wrap_IconDatabaseIconLoadedCallback cb
    cb'' <- mk_IconDatabaseIconLoadedCallback cb'
    connectSignalFunPtr obj "icon-loaded" cb'' after

-- VVV Prop "path"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

getIconDatabasePath :: (MonadIO m, IsIconDatabase o) => o -> m T.Text
getIconDatabasePath obj = liftIO $ checkUnexpectedNothing "getIconDatabasePath" $ getObjectPropertyString obj "path"

setIconDatabasePath :: (MonadIO m, IsIconDatabase o) => o -> T.Text -> m ()
setIconDatabasePath obj val = liftIO $ setObjectPropertyString obj "path" (Just val)

constructIconDatabasePath :: (IsIconDatabase o) => T.Text -> IO (GValueConstruct o)
constructIconDatabasePath val = constructObjectPropertyString "path" (Just val)

data IconDatabasePathPropertyInfo
instance AttrInfo IconDatabasePathPropertyInfo where
    type AttrAllowedOps IconDatabasePathPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint IconDatabasePathPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint IconDatabasePathPropertyInfo = IsIconDatabase
    type AttrGetType IconDatabasePathPropertyInfo = T.Text
    type AttrLabel IconDatabasePathPropertyInfo = "path"
    type AttrOrigin IconDatabasePathPropertyInfo = IconDatabase
    attrGet _ = getIconDatabasePath
    attrSet _ = setIconDatabasePath
    attrConstruct _ = constructIconDatabasePath
    attrClear _ = undefined

instance O.HasAttributeList IconDatabase
type instance O.AttributeList IconDatabase = IconDatabaseAttributeList
type IconDatabaseAttributeList = ('[ '("path", IconDatabasePathPropertyInfo)] :: [(Symbol, *)])

iconDatabasePath :: AttrLabelProxy "path"
iconDatabasePath = AttrLabelProxy

data IconDatabaseIconLoadedSignalInfo
instance SignalInfo IconDatabaseIconLoadedSignalInfo where
    type HaskellCallbackType IconDatabaseIconLoadedSignalInfo = IconDatabaseIconLoadedCallback
    connectSignal _ = connectIconDatabaseIconLoaded

type instance O.SignalList IconDatabase = IconDatabaseSignalList
type IconDatabaseSignalList = ('[ '("iconLoaded", IconDatabaseIconLoadedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method IconDatabase::clear
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "database", argType = TInterface (Name {namespace = "WebKit", name = "IconDatabase"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitIconDatabase", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_icon_database_clear" webkit_icon_database_clear :: 
    Ptr IconDatabase ->                     -- database : TInterface (Name {namespace = "WebKit", name = "IconDatabase"})
    IO ()

{-# DEPRECATED iconDatabaseClear ["(Since version 1.8)","Use 'GI.WebKit.Objects.FaviconDatabase.faviconDatabaseClear' instead."] #-}
{- |
Clears all icons from the database.

@since 1.3.13
-}
iconDatabaseClear ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconDatabase a) =>
    a
    {- ^ /@database@/: a 'GI.WebKit.Objects.IconDatabase.IconDatabase' -}
    -> m ()
iconDatabaseClear database = liftIO $ do
    database' <- unsafeManagedPtrCastPtr database
    webkit_icon_database_clear database'
    touchManagedPtr database
    return ()

data IconDatabaseClearMethodInfo
instance (signature ~ (m ()), MonadIO m, IsIconDatabase a) => O.MethodInfo IconDatabaseClearMethodInfo a signature where
    overloadedMethod _ = iconDatabaseClear

-- method IconDatabase::get_icon_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "database", argType = TInterface (Name {namespace = "WebKit", name = "IconDatabase"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitIconDatabase", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "page_uri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "URI of the page containing the icon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_icon_database_get_icon_pixbuf" webkit_icon_database_get_icon_pixbuf :: 
    Ptr IconDatabase ->                     -- database : TInterface (Name {namespace = "WebKit", name = "IconDatabase"})
    CString ->                              -- page_uri : TBasicType TUTF8
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{-# DEPRECATED iconDatabaseGetIconPixbuf ["(Since version 1.8)","Use 'GI.WebKit.Objects.FaviconDatabase.faviconDatabaseTryGetFaviconPixbuf' instead."] #-}
{- |
Obtains a 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf' of the favicon for the given page URI, or
a default icon if there is no icon for the given page. Use
'GI.WebKit.Objects.IconDatabase.iconDatabaseGetIconUri' if you need to distinguish these cases.
Usually you want to connect to WebKitIconDatabase::icon-loaded and call this
method in the callback.

The pixbuf will have the largest size provided by the server and should
be resized before it is displayed.
See also 'GI.WebKit.Objects.WebView.webViewGetIconPixbuf'.

@since 1.3.13
-}
iconDatabaseGetIconPixbuf ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconDatabase a) =>
    a
    {- ^ /@database@/: a 'GI.WebKit.Objects.IconDatabase.IconDatabase' -}
    -> T.Text
    {- ^ /@pageUri@/: URI of the page containing the icon -}
    -> m GdkPixbuf.Pixbuf.Pixbuf
    {- ^ __Returns:__ a new reference to a 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf', or 'Nothing' -}
iconDatabaseGetIconPixbuf database pageUri = liftIO $ do
    database' <- unsafeManagedPtrCastPtr database
    pageUri' <- textToCString pageUri
    result <- webkit_icon_database_get_icon_pixbuf database' pageUri'
    checkUnexpectedReturnNULL "iconDatabaseGetIconPixbuf" result
    result' <- (wrapObject GdkPixbuf.Pixbuf.Pixbuf) result
    touchManagedPtr database
    freeMem pageUri'
    return result'

data IconDatabaseGetIconPixbufMethodInfo
instance (signature ~ (T.Text -> m GdkPixbuf.Pixbuf.Pixbuf), MonadIO m, IsIconDatabase a) => O.MethodInfo IconDatabaseGetIconPixbufMethodInfo a signature where
    overloadedMethod _ = iconDatabaseGetIconPixbuf

-- method IconDatabase::get_icon_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "database", argType = TInterface (Name {namespace = "WebKit", name = "IconDatabase"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitIconDatabase", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "page_uri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "URI of the page containing the icon", 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_icon_database_get_icon_uri" webkit_icon_database_get_icon_uri :: 
    Ptr IconDatabase ->                     -- database : TInterface (Name {namespace = "WebKit", name = "IconDatabase"})
    CString ->                              -- page_uri : TBasicType TUTF8
    IO CString

{-# DEPRECATED iconDatabaseGetIconUri ["(Since version 1.8)","Use 'GI.WebKit.Objects.FaviconDatabase.faviconDatabaseGetFaviconUri' instead."] #-}
{- |
Obtains the URI for the favicon for the given page URI.
See also 'GI.WebKit.Objects.WebView.webViewGetIconUri'.

@since 1.3.13
-}
iconDatabaseGetIconUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconDatabase a) =>
    a
    {- ^ /@database@/: a 'GI.WebKit.Objects.IconDatabase.IconDatabase' -}
    -> T.Text
    {- ^ /@pageUri@/: URI of the page containing the icon -}
    -> m T.Text
    {- ^ __Returns:__ a newly allocated URI for the favicon, or 'Nothing' -}
iconDatabaseGetIconUri database pageUri = liftIO $ do
    database' <- unsafeManagedPtrCastPtr database
    pageUri' <- textToCString pageUri
    result <- webkit_icon_database_get_icon_uri database' pageUri'
    checkUnexpectedReturnNULL "iconDatabaseGetIconUri" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr database
    freeMem pageUri'
    return result'

data IconDatabaseGetIconUriMethodInfo
instance (signature ~ (T.Text -> m T.Text), MonadIO m, IsIconDatabase a) => O.MethodInfo IconDatabaseGetIconUriMethodInfo a signature where
    overloadedMethod _ = iconDatabaseGetIconUri

-- method IconDatabase::get_path
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "database", argType = TInterface (Name {namespace = "WebKit", name = "IconDatabase"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitIconDatabase", 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_icon_database_get_path" webkit_icon_database_get_path :: 
    Ptr IconDatabase ->                     -- database : TInterface (Name {namespace = "WebKit", name = "IconDatabase"})
    IO CString

{-# DEPRECATED iconDatabaseGetPath ["(Since version 1.8)","Use 'GI.WebKit.Objects.FaviconDatabase.faviconDatabaseGetPath' instead."] #-}
{- |
Determines the absolute path to the database folder on disk.

@since 1.3.13
-}
iconDatabaseGetPath ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconDatabase a) =>
    a
    {- ^ /@database@/: a 'GI.WebKit.Objects.IconDatabase.IconDatabase' -}
    -> m T.Text
    {- ^ __Returns:__ the absolute path of the database folder, or 'Nothing' -}
iconDatabaseGetPath database = liftIO $ do
    database' <- unsafeManagedPtrCastPtr database
    result <- webkit_icon_database_get_path database'
    checkUnexpectedReturnNULL "iconDatabaseGetPath" result
    result' <- cstringToText result
    touchManagedPtr database
    return result'

data IconDatabaseGetPathMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsIconDatabase a) => O.MethodInfo IconDatabaseGetPathMethodInfo a signature where
    overloadedMethod _ = iconDatabaseGetPath

-- method IconDatabase::set_path
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "database", argType = TInterface (Name {namespace = "WebKit", name = "IconDatabase"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitIconDatabase", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an absolute path to the icon database folder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_icon_database_set_path" webkit_icon_database_set_path :: 
    Ptr IconDatabase ->                     -- database : TInterface (Name {namespace = "WebKit", name = "IconDatabase"})
    CString ->                              -- path : TBasicType TUTF8
    IO ()

{-# DEPRECATED iconDatabaseSetPath ["(Since version 1.8)","Use 'GI.WebKit.Objects.FaviconDatabase.faviconDatabaseSetPath' instead."] #-}
{- |
Specifies the absolute path to the database folder on disk.

Passing 'Nothing' or \"\" disables the icon database.

@since 1.3.13
-}
iconDatabaseSetPath ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconDatabase a) =>
    a
    {- ^ /@database@/: a 'GI.WebKit.Objects.IconDatabase.IconDatabase' -}
    -> T.Text
    {- ^ /@path@/: an absolute path to the icon database folder -}
    -> m ()
iconDatabaseSetPath database path = liftIO $ do
    database' <- unsafeManagedPtrCastPtr database
    path' <- textToCString path
    webkit_icon_database_set_path database' path'
    touchManagedPtr database
    freeMem path'
    return ()

data IconDatabaseSetPathMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsIconDatabase a) => O.MethodInfo IconDatabaseSetPathMethodInfo a signature where
    overloadedMethod _ = iconDatabaseSetPath