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: #GFileMonitor
36 * #GVolumeMonitor is for listing the user interesting devices and volumes
37 * on the computer. In other words, what a file selector or file manager
38 * would show in a sidebar.
41 G_DEFINE_TYPE (GVolumeMonitor, g_volume_monitor, G_TYPE_OBJECT);
57 static guint signals[LAST_SIGNAL] = { 0 };
61 g_volume_monitor_finalize (GObject *object)
63 GVolumeMonitor *monitor;
65 monitor = G_VOLUME_MONITOR (object);
67 if (G_OBJECT_CLASS (g_volume_monitor_parent_class)->finalize)
68 (*G_OBJECT_CLASS (g_volume_monitor_parent_class)->finalize) (object);
72 g_volume_monitor_class_init (GVolumeMonitorClass *klass)
74 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
76 gobject_class->finalize = g_volume_monitor_finalize;
79 * GVolumeMonitor::volume-added:
80 * @volume_monitor: The volume monitor emitting the signal.
81 * @volume: a #GVolume that was added.
83 * Emitted when a mountable volume is added to the system.
85 signals[VOLUME_ADDED] = g_signal_new (I_("volume_added"),
86 G_TYPE_VOLUME_MONITOR,
88 G_STRUCT_OFFSET (GVolumeMonitorClass, volume_added),
90 g_cclosure_marshal_VOID__OBJECT,
91 G_TYPE_NONE, 1, G_TYPE_VOLUME);
94 * GVolumeMonitor::volume-removed:
95 * @volume_monitor: The volume monitor emitting the signal.
96 * @volume: a #GVolume that was removed.
98 * Emitted when a mountable volume is removed from the system.
100 signals[VOLUME_REMOVED] = g_signal_new (I_("volume_removed"),
101 G_TYPE_VOLUME_MONITOR,
103 G_STRUCT_OFFSET (GVolumeMonitorClass, volume_removed),
105 g_cclosure_marshal_VOID__OBJECT,
106 G_TYPE_NONE, 1, G_TYPE_VOLUME);
109 * GVolumeMonitor::volume-changed:
110 * @volume_monitor: The volume monitor emitting the signal.
111 * @volume: a #GVolume that changed.
113 * Emitted when mountable volume is changed.
115 signals[VOLUME_CHANGED] = g_signal_new (I_("volume_changed"),
116 G_TYPE_VOLUME_MONITOR,
118 G_STRUCT_OFFSET (GVolumeMonitorClass, volume_changed),
120 g_cclosure_marshal_VOID__OBJECT,
121 G_TYPE_NONE, 1, G_TYPE_VOLUME);
124 * GVolumeMonitor::mount-added:
125 * @volume_monitor: The volume monitor emitting the signal.
126 * @mount: a #GMount that was added.
128 * Emitted when a mount is added.
130 signals[MOUNT_ADDED] = g_signal_new (I_("mount_added"),
131 G_TYPE_VOLUME_MONITOR,
133 G_STRUCT_OFFSET (GVolumeMonitorClass, mount_added),
135 g_cclosure_marshal_VOID__OBJECT,
136 G_TYPE_NONE, 1, G_TYPE_MOUNT);
139 * GVolumeMonitor::mount-removed:
140 * @volume_monitor: The volume monitor emitting the signal.
141 * @mount: a #GMount that was removed.
143 * Emitted when a mount is removed.
145 signals[MOUNT_REMOVED] = g_signal_new (I_("mount_removed"),
146 G_TYPE_VOLUME_MONITOR,
148 G_STRUCT_OFFSET (GVolumeMonitorClass, mount_removed),
150 g_cclosure_marshal_VOID__OBJECT,
151 G_TYPE_NONE, 1, G_TYPE_MOUNT);
154 * GVolumeMonitor::mount-pre-unmount:
155 * @volume_monitor: The volume monitor emitting the signal.
156 * @mount: a #GMount that is being unmounted.
158 * Emitted when a mount is about to be removed.
160 signals[MOUNT_PRE_UNMOUNT] = g_signal_new (I_("mount_pre_unmount"),
161 G_TYPE_VOLUME_MONITOR,
163 G_STRUCT_OFFSET (GVolumeMonitorClass, mount_pre_unmount),
165 g_cclosure_marshal_VOID__OBJECT,
166 G_TYPE_NONE, 1, G_TYPE_MOUNT);
169 * GVolumeMonitor::mount-changed:
170 * @volume_monitor: The volume monitor emitting the signal.
171 * @mount: a #GMount that changed.
173 * Emitted when a mount changes.
175 signals[MOUNT_CHANGED] = g_signal_new (I_("mount_changed"),
176 G_TYPE_VOLUME_MONITOR,
178 G_STRUCT_OFFSET (GVolumeMonitorClass, mount_changed),
180 g_cclosure_marshal_VOID__OBJECT,
181 G_TYPE_NONE, 1, G_TYPE_MOUNT);
184 * GVolumeMonitor::drive-connected:
185 * @volume_monitor: The volume monitor emitting the signal.
186 * @drive: a #GDrive that was connected.
188 * Emitted when a drive is connected to the system.
190 signals[DRIVE_CONNECTED] = g_signal_new (I_("drive_connected"),
191 G_TYPE_VOLUME_MONITOR,
193 G_STRUCT_OFFSET (GVolumeMonitorClass, drive_connected),
195 g_cclosure_marshal_VOID__OBJECT,
196 G_TYPE_NONE, 1, G_TYPE_DRIVE);
199 * GVolumeMonitor::drive-disconnected:
200 * @volume_monitor: The volume monitor emitting the signal.
201 * @drive: a #GDrive that was disconnected.
203 * Emitted when a drive is disconnected from the system.
205 signals[DRIVE_DISCONNECTED] = g_signal_new (I_("drive_disconnected"),
206 G_TYPE_VOLUME_MONITOR,
208 G_STRUCT_OFFSET (GVolumeMonitorClass, drive_disconnected),
210 g_cclosure_marshal_VOID__OBJECT,
211 G_TYPE_NONE, 1, G_TYPE_DRIVE);
214 * GVolumeMonitor::drive-changed:
215 * @volume_monitor: The volume monitor emitting the signal.
216 * @drive: the drive that changed
218 * Emitted when a drive changes.
220 signals[DRIVE_CHANGED] = g_signal_new (I_("drive_changed"),
221 G_TYPE_VOLUME_MONITOR,
223 G_STRUCT_OFFSET (GVolumeMonitorClass, drive_changed),
225 g_cclosure_marshal_VOID__OBJECT,
226 G_TYPE_NONE, 1, G_TYPE_DRIVE);
231 g_volume_monitor_init (GVolumeMonitor *monitor)
237 * g_volume_monitor_get_connected_drives:
238 * @volume_monitor: a #GVolumeMonitor.
240 * Gets a list of drives connected to the system.
242 * The returned list should be freed with g_list_free(), but
243 * its elements need not be freed.
245 * Returns: a #GList of connected #GDrives - free with g_list_free().
248 g_volume_monitor_get_connected_drives (GVolumeMonitor *volume_monitor)
250 GVolumeMonitorClass *class;
252 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
254 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
256 return class->get_connected_drives (volume_monitor);
260 * g_volume_monitor_get_volumes:
261 * @volume_monitor: a #GVolumeMonitor.
263 * Gets a list of the volumes on the system.
265 * The returned list should be freed with g_list_free(), but
266 * its elements need not be freed.
268 * Returns: a #GList of #GVolume - free with g_list_free().
271 g_volume_monitor_get_volumes (GVolumeMonitor *volume_monitor)
273 GVolumeMonitorClass *class;
275 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
277 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
279 return class->get_volumes (volume_monitor);
283 * g_volume_monitor_get_mounts:
284 * @volume_monitor: a #GVolumeMonitor.
286 * Gets a list of the mounts on the system.
288 * The returned list should be freed with g_list_free(), but
289 * its elements need not be freed.
291 * Returns: a #GList of #GMount - free with g_list_free().
294 g_volume_monitor_get_mounts (GVolumeMonitor *volume_monitor)
296 GVolumeMonitorClass *class;
298 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
300 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
302 return class->get_mounts (volume_monitor);
306 * g_volume_monitor_get_volume_for_uuid:
307 * @volume_monitor: a #GVolumeMonitor.
308 * @uuid: the UUID to look for
310 * Finds a #GVolume object by it's UUID (see g_volume_get_uuid())
312 * Returns: a #GVolume or %NULL if no such volume is available.
315 g_volume_monitor_get_volume_for_uuid (GVolumeMonitor *volume_monitor,
318 GVolumeMonitorClass *class;
320 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
321 g_return_val_if_fail (uuid != NULL, NULL);
323 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
325 return class->get_volume_for_uuid (volume_monitor, uuid);
329 * g_volume_monitor_get_mount_for_uuid:
330 * @volume_monitor: a #GVolumeMonitor.
331 * @uuid: the UUID to look for
333 * Finds a #GMount object by it's UUID (see g_mount_get_uuid())
335 * Returns: a #GMount or %NULL if no such mount is available.
338 g_volume_monitor_get_mount_for_uuid (GVolumeMonitor *volume_monitor,
341 GVolumeMonitorClass *class;
343 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor), NULL);
344 g_return_val_if_fail (uuid != NULL, NULL);
346 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor);
348 return class->get_mount_for_uuid (volume_monitor, uuid);
352 #define __G_VOLUME_MONITOR_C__
353 #include "gioaliasdef.c"