1 /* GIO - GLib Input, Output and Streaming Library
3 * Copyright (C) 2006-2007 Red Hat, Inc.
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General
16 * Public License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 * Boston, MA 02111-1307, USA.
20 * Author: Alexander Larsson <alexl@redhat.com>
21 * David Zeuthen <davidz@redhat.com>
25 #include "gvolumemonitor.h"
31 * SECTION:gvolumemonitor
32 * @short_description: Volume Monitor
34 * @see_also: #GDirectoryMonitor, #GFileMonitor
36 * Monitors a mounted volume for changes.
39 G_DEFINE_TYPE (GVolumeMonitor, g_volume_monitor, G_TYPE_OBJECT);
55 static guint signals[LAST_SIGNAL] = { 0 };
59 g_volume_monitor_finalize (GObject *object)
61 GVolumeMonitor *monitor;
63 monitor = G_VOLUME_MONITOR (object);
65 if (G_OBJECT_CLASS (g_volume_monitor_parent_class)->finalize)
66 (*G_OBJECT_CLASS (g_volume_monitor_parent_class)->finalize) (object);
70 g_volume_monitor_class_init (GVolumeMonitorClass *klass)
72 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
74 gobject_class->finalize = g_volume_monitor_finalize;
77 * GVolumeMonitor::volume-added:
78 * @volume_monitor: The volume monitor emitting the signal.
79 * @volume: a #GVolume that was added.
81 * Emitted when a mountable volume is added to the system.
83 signals[VOLUME_ADDED] = g_signal_new (I_("volume_added"),
84 G_TYPE_VOLUME_MONITOR,
86 G_STRUCT_OFFSET (GVolumeMonitorClass, volume_added),
88 g_cclosure_marshal_VOID__OBJECT,
89 G_TYPE_NONE, 1, G_TYPE_VOLUME);
92 * GVolumeMonitor::volume-removed:
93 * @volume_monitor: The volume monitor emitting the signal.
94 * @volume: a #GVolume that was removed.
96 * Emitted when a mountable volume is removed from the system.
98 signals[VOLUME_REMOVED] = g_signal_new (I_("volume_removed"),
99 G_TYPE_VOLUME_MONITOR,
101 G_STRUCT_OFFSET (GVolumeMonitorClass, volume_removed),
103 g_cclosure_marshal_VOID__OBJECT,
104 G_TYPE_NONE, 1, G_TYPE_VOLUME);
107 * GVolumeMonitor::volume-changed:
108 * @volume_monitor: The volume monitor emitting the signal.
109 * @volume: a #GVolume that changed.
111 * Emitted when mountable volume is changed.
113 signals[VOLUME_CHANGED] = g_signal_new (I_("volume_changed"),
114 G_TYPE_VOLUME_MONITOR,
116 G_STRUCT_OFFSET (GVolumeMonitorClass, volume_changed),
118 g_cclosure_marshal_VOID__OBJECT,
119 G_TYPE_NONE, 1, G_TYPE_VOLUME);
122 * GVolumeMonitor::mount-added:
123 * @volume_monitor: The volume monitor emitting the signal.
124 * @mount: a #GMount that was added.
126 * Emitted when a mount is added.
128 signals[MOUNT_ADDED] = g_signal_new (I_("mount_added"),
129 G_TYPE_VOLUME_MONITOR,
131 G_STRUCT_OFFSET (GVolumeMonitorClass, mount_added),
133 g_cclosure_marshal_VOID__OBJECT,
134 G_TYPE_NONE, 1, G_TYPE_MOUNT);
137 * GVolumeMonitor::mount-removed:
138 * @volume_monitor: The volume monitor emitting the signal.
139 * @mount: a #GMount that was removed.
141 * Emitted when a mount is removed.
143 signals[MOUNT_REMOVED] = g_signal_new (I_("mount_removed"),
144 G_TYPE_VOLUME_MONITOR,
146 G_STRUCT_OFFSET (GVolumeMonitorClass, mount_removed),
148 g_cclosure_marshal_VOID__OBJECT,
149 G_TYPE_NONE, 1, G_TYPE_MOUNT);
152 * GVolumeMonitor::mount-pre-unmount:
153 * @volume_monitor: The volume monitor emitting the signal.
154 * @mount: a #GMount that is being unmounted.
156 * Emitted when a mount is about to be removed.
158 signals[MOUNT_PRE_UNMOUNT] = g_signal_new (I_("mount_pre_unmount"),
159 G_TYPE_VOLUME_MONITOR,
161 G_STRUCT_OFFSET (GVolumeMonitorClass, mount_pre_unmount),
163 g_cclosure_marshal_VOID__OBJECT,
164 G_TYPE_NONE, 1, G_TYPE_MOUNT);
167 * GVolumeMonitor::mount-changed:
168 * @volume_monitor: The volume monitor emitting the signal.
169 * @mount: a #GMount that changed.
171 * Emitted when a mount changes.
173 signals[MOUNT_CHANGED] = g_signal_new (I_("mount_changed"),
174 G_TYPE_VOLUME_MONITOR,
176 G_STRUCT_OFFSET (GVolumeMonitorClass, mount_changed),
178 g_cclosure_marshal_VOID__OBJECT,
179 G_TYPE_NONE, 1, G_TYPE_MOUNT);
182 * GVolumeMonitor::drive-connected:
183 * @volume_monitor: The volume monitor emitting the signal.
184 * @drive: a #GDrive that was connected.
186 * Emitted when a drive is connected to the system.
188 signals[DRIVE_CONNECTED] = g_signal_new (I_("drive_connected"),
189 G_TYPE_VOLUME_MONITOR,
191 G_STRUCT_OFFSET (GVolumeMonitorClass, drive_connected),
193 g_cclosure_marshal_VOID__OBJECT,
194 G_TYPE_NONE, 1, G_TYPE_DRIVE);
197 * GVolumeMonitor::drive-disconnected:
198 * @volume_monitor: The volume monitor emitting the signal.
199 * @drive: a #GDrive that was disconnected.
201 * Emitted when a drive is disconnected from the system.
203 signals[DRIVE_DISCONNECTED] = g_signal_new (I_("drive_disconnected"),
204 G_TYPE_VOLUME_MONITOR,
206 G_STRUCT_OFFSET (GVolumeMonitorClass, drive_disconnected),
208 g_cclosure_marshal_VOID__OBJECT,
209 G_TYPE_NONE, 1, G_TYPE_DRIVE);
212 * GVolumeMonitor::drive-changed:
213 * @volume_monitor: The volume monitor emitting the signal.
214 * @drive: the drive that changed
216 * Emitted when a drive changes.
218 signals[DRIVE_CHANGED] = g_signal_new (I_("drive_changed"),
219 G_TYPE_VOLUME_MONITOR,
221 G_STRUCT_OFFSET (GVolumeMonitorClass, drive_changed),
223 g_cclosure_marshal_VOID__OBJECT,
224 G_TYPE_NONE, 1, G_TYPE_DRIVE);
229 g_volume_monitor_init (GVolumeMonitor *monitor)
235 * g_volume_monitor_get_connected_drives:
236 * @volume_monitor: a #GVolumeMonitor.
238 * Gets a list of drives connected to the system.
240 * Returns: a #GList of connected #GDrives.
243 g_volume_monitor_get_connected_drives (GVolumeMonitor *volume_monitor)
245 GVolumeMonitorClass *class;
247 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
249 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
251 return class->get_connected_drives (volume_monitor);
255 * g_volume_monitor_get_volumes:
256 * @volume_monitor: a #GVolumeMonitor.
258 * Gets a list of the volumes on the system.
260 * Returns: a #GList of #GVolume.
263 g_volume_monitor_get_volumes (GVolumeMonitor *volume_monitor)
265 GVolumeMonitorClass *class;
267 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
269 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
271 return class->get_volumes (volume_monitor);
275 * g_volume_monitor_get_mounts:
276 * @volume_monitor: a #GVolumeMonitor.
278 * Gets a list of the mounts on the system.
280 * Returns: a #GList of #GMount.
283 g_volume_monitor_get_mounts (GVolumeMonitor *volume_monitor)
285 GVolumeMonitorClass *class;
287 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
289 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
291 return class->get_mounts (volume_monitor);
295 * g_volume_monitor_get_volume_for_uuid:
296 * @volume_monitor: a #GVolumeMonitor.
298 * Finds a #GVolume object by it's UUID (see g_volume_get_uuid())
300 * Returns: a #GVolume or %NULL if no such volume is available.
303 g_volume_monitor_get_volume_for_uuid (GVolumeMonitor *volume_monitor,
306 GVolumeMonitorClass *class;
308 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
309 g_return_val_if_fail (uuid != NULL, NULL);
311 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
313 return class->get_volume_for_uuid (volume_monitor, uuid);
317 * g_volume_monitor_get_mount_for_uuid:
318 * @volume_monitor: a #GVolumeMonitor.
320 * Finds a #GMount object by it's UUID (see g_mount_get_uuid())
322 * Returns: a #GMount or %NULL if no such mount is available.
325 g_volume_monitor_get_mount_for_uuid (GVolumeMonitor *volume_monitor,
328 GVolumeMonitorClass *class;
330 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
331 g_return_val_if_fail (uuid != NULL, NULL);
333 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
335 return class->get_mount_for_uuid (volume_monitor, uuid);
339 #define __G_VOLUME_MONITOR_C__
340 #include "gioaliasdef.c"