module System.Gnome.VFS.VolumeMonitor (
VolumeMonitor,
VolumeMonitorClass,
volumeMonitor,
volumeMonitorGetConnectedDrives,
volumeMonitorGetDriveByID,
volumeMonitorGetMountedVolumes,
volumeMonitorGetVolumeByID,
volumeMonitorGetVolumeForPath,
onVolumeMonitorVolumeMounted,
afterVolumeMonitorVolumeMounted,
onVolumeMonitorVolumePreUnmount,
afterVolumeMonitorVolumePreUnmount,
onVolumeMonitorVolumeUnmounted,
afterVolumeMonitorVolumeUnmounted
) where
import Control.Exception
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.GList (readGList)
import System.Glib.UTFString
import System.Gnome.VFS.Marshal
import System.Gnome.VFS.Types
import System.Gnome.VFS.Signals
import System.Gnome.VFS.BasicTypes
import System.IO (FilePath)
volumeMonitor :: VolumeMonitor
volumeMonitor = unsafePerformIO $ gnome_vfs_get_volume_monitor >>= wrapVolumeMonitor
volumeMonitorGetConnectedDrives :: VolumeMonitorClass volumeMonitor =>
volumeMonitor
-> IO [Drive]
volumeMonitorGetConnectedDrives volumeMonitor =
(\(VolumeMonitor arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_volume_monitor_get_connected_drives argPtr1) (castToVolumeMonitor volumeMonitor) >>=
readGList >>= mapM newDrive
volumeMonitorGetDriveByID :: VolumeMonitorClass volumeMonitor =>
volumeMonitor
-> DriveID
-> IO (Maybe Drive)
volumeMonitorGetDriveByID volumeMonitor id =
(\(VolumeMonitor arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_volume_monitor_get_drive_by_id argPtr1 arg2) (castToVolumeMonitor volumeMonitor) id >>=
maybePeek newDrive
volumeMonitorGetMountedVolumes :: VolumeMonitorClass volumeMonitor =>
volumeMonitor
-> IO [Volume]
volumeMonitorGetMountedVolumes volumeMonitor =
(\(VolumeMonitor arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_volume_monitor_get_mounted_volumes argPtr1) (castToVolumeMonitor volumeMonitor) >>=
readGList >>= mapM newVolume
volumeMonitorGetVolumeByID :: VolumeMonitorClass volumeMonitor =>
volumeMonitor
-> VolumeID
-> IO (Maybe Volume)
volumeMonitorGetVolumeByID volumeMonitor id =
(\(VolumeMonitor arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_volume_monitor_get_volume_by_id argPtr1 arg2) (castToVolumeMonitor volumeMonitor) id >>=
maybePeek newVolume
volumeMonitorGetVolumeForPath :: VolumeMonitorClass volumeMonitor =>
volumeMonitor
-> FilePath
-> IO (Maybe Volume)
volumeMonitorGetVolumeForPath volumeMonitor path =
(withUTFString path $ (\(VolumeMonitor arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_volume_monitor_get_volume_for_path argPtr1 arg2) (castToVolumeMonitor volumeMonitor)) >>=
maybePeek newVolume
onVolumeMonitorDriveConnected,
afterVolumeMonitorDriveConnected,
onVolumeMonitorDriveDisconnected,
afterVolumeMonitorDriveDisconnected,
onVolumeMonitorVolumeMounted,
afterVolumeMonitorVolumeMounted,
onVolumeMonitorVolumePreUnmount,
afterVolumeMonitorVolumePreUnmount,
onVolumeMonitorVolumeUnmounted,
afterVolumeMonitorVolumeUnmounted
:: (VolumeMonitorClass volumeMonitor) =>
volumeMonitor
-> (Volume -> IO ())
-> IO (ConnectId volumeMonitor)
onVolumeMonitorDriveConnected = connect_OBJECT__NONE "drive-connected" False
afterVolumeMonitorDriveConnected = connect_OBJECT__NONE "drive-connected" True
onVolumeMonitorDriveDisconnected = connect_OBJECT__NONE "drive-disconnected" False
afterVolumeMonitorDriveDisconnected = connect_OBJECT__NONE "drive-disconnected" True
onVolumeMonitorVolumeMounted = connect_OBJECT__NONE "volume-mounted" False
afterVolumeMonitorVolumeMounted = connect_OBJECT__NONE "volume-mounted" True
onVolumeMonitorVolumePreUnmount = connect_OBJECT__NONE "volume-pre-unmount" False
afterVolumeMonitorVolumePreUnmount = connect_OBJECT__NONE "volume-pre-unmount" True
onVolumeMonitorVolumeUnmounted = connect_OBJECT__NONE "volume-unmounted" False
afterVolumeMonitorVolumeUnmounted = connect_OBJECT__NONE "volume-unmounted" True
foreign import ccall safe "gnome_vfs_get_volume_monitor"
gnome_vfs_get_volume_monitor :: (IO (Ptr VolumeMonitor))
foreign import ccall safe "gnome_vfs_volume_monitor_get_connected_drives"
gnome_vfs_volume_monitor_get_connected_drives :: ((Ptr VolumeMonitor) -> (IO (Ptr ())))
foreign import ccall safe "gnome_vfs_volume_monitor_get_drive_by_id"
gnome_vfs_volume_monitor_get_drive_by_id :: ((Ptr VolumeMonitor) -> (CULong -> (IO (Ptr Drive))))
foreign import ccall safe "gnome_vfs_volume_monitor_get_mounted_volumes"
gnome_vfs_volume_monitor_get_mounted_volumes :: ((Ptr VolumeMonitor) -> (IO (Ptr ())))
foreign import ccall safe "gnome_vfs_volume_monitor_get_volume_by_id"
gnome_vfs_volume_monitor_get_volume_by_id :: ((Ptr VolumeMonitor) -> (CULong -> (IO (Ptr Volume))))
foreign import ccall safe "gnome_vfs_volume_monitor_get_volume_for_path"
gnome_vfs_volume_monitor_get_volume_for_path :: ((Ptr VolumeMonitor) -> ((Ptr CChar) -> (IO (Ptr Volume))))