1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
3 /* GIO - GLib Input, Output and Streaming Library
5 * Copyright (C) 2006-2007 Red Hat, Inc.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General
18 * Public License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20 * Boston, MA 02111-1307, USA.
22 * Author: Alexander Larsson <alexl@redhat.com>
23 * David Zeuthen <davidz@redhat.com>
27 #include "gvolumemonitor.h"
36 * SECTION:gvolumemonitor
37 * @short_description: Volume Monitor
39 * @see_also: #GFileMonitor
41 * #GVolumeMonitor is for listing the user interesting devices and volumes
42 * on the computer. In other words, what a file selector or file manager
43 * would show in a sidebar.
46 G_DEFINE_TYPE (GVolumeMonitor
, g_volume_monitor
, G_TYPE_OBJECT
);
63 static guint signals
[LAST_SIGNAL
] = { 0 };
67 g_volume_monitor_finalize (GObject
*object
)
69 GVolumeMonitor
*monitor
;
71 monitor
= G_VOLUME_MONITOR (object
);
73 G_OBJECT_CLASS (g_volume_monitor_parent_class
)->finalize (object
);
77 g_volume_monitor_class_init (GVolumeMonitorClass
*klass
)
79 GObjectClass
*gobject_class
= G_OBJECT_CLASS (klass
);
81 gobject_class
->finalize
= g_volume_monitor_finalize
;
84 * GVolumeMonitor::volume-added:
85 * @volume_monitor: The volume monitor emitting the signal.
86 * @volume: a #GVolume that was added.
88 * Emitted when a mountable volume is added to the system.
90 signals
[VOLUME_ADDED
] = g_signal_new (I_("volume-added"),
91 G_TYPE_VOLUME_MONITOR
,
93 G_STRUCT_OFFSET (GVolumeMonitorClass
, volume_added
),
95 g_cclosure_marshal_VOID__OBJECT
,
96 G_TYPE_NONE
, 1, G_TYPE_VOLUME
);
99 * GVolumeMonitor::volume-removed:
100 * @volume_monitor: The volume monitor emitting the signal.
101 * @volume: a #GVolume that was removed.
103 * Emitted when a mountable volume is removed from the system.
105 signals
[VOLUME_REMOVED
] = g_signal_new (I_("volume-removed"),
106 G_TYPE_VOLUME_MONITOR
,
108 G_STRUCT_OFFSET (GVolumeMonitorClass
, volume_removed
),
110 g_cclosure_marshal_VOID__OBJECT
,
111 G_TYPE_NONE
, 1, G_TYPE_VOLUME
);
114 * GVolumeMonitor::volume-changed:
115 * @volume_monitor: The volume monitor emitting the signal.
116 * @volume: a #GVolume that changed.
118 * Emitted when mountable volume is changed.
120 signals
[VOLUME_CHANGED
] = g_signal_new (I_("volume-changed"),
121 G_TYPE_VOLUME_MONITOR
,
123 G_STRUCT_OFFSET (GVolumeMonitorClass
, volume_changed
),
125 g_cclosure_marshal_VOID__OBJECT
,
126 G_TYPE_NONE
, 1, G_TYPE_VOLUME
);
129 * GVolumeMonitor::mount-added:
130 * @volume_monitor: The volume monitor emitting the signal.
131 * @mount: a #GMount that was added.
133 * Emitted when a mount is added.
135 signals
[MOUNT_ADDED
] = g_signal_new (I_("mount-added"),
136 G_TYPE_VOLUME_MONITOR
,
138 G_STRUCT_OFFSET (GVolumeMonitorClass
, mount_added
),
140 g_cclosure_marshal_VOID__OBJECT
,
141 G_TYPE_NONE
, 1, G_TYPE_MOUNT
);
144 * GVolumeMonitor::mount-removed:
145 * @volume_monitor: The volume monitor emitting the signal.
146 * @mount: a #GMount that was removed.
148 * Emitted when a mount is removed.
150 signals
[MOUNT_REMOVED
] = g_signal_new (I_("mount-removed"),
151 G_TYPE_VOLUME_MONITOR
,
153 G_STRUCT_OFFSET (GVolumeMonitorClass
, mount_removed
),
155 g_cclosure_marshal_VOID__OBJECT
,
156 G_TYPE_NONE
, 1, G_TYPE_MOUNT
);
159 * GVolumeMonitor::mount-pre-unmount:
160 * @volume_monitor: The volume monitor emitting the signal.
161 * @mount: a #GMount that is being unmounted.
163 * Emitted when a mount is about to be removed.
165 signals
[MOUNT_PRE_UNMOUNT
] = g_signal_new (I_("mount-pre-unmount"),
166 G_TYPE_VOLUME_MONITOR
,
168 G_STRUCT_OFFSET (GVolumeMonitorClass
, mount_pre_unmount
),
170 g_cclosure_marshal_VOID__OBJECT
,
171 G_TYPE_NONE
, 1, G_TYPE_MOUNT
);
174 * GVolumeMonitor::mount-changed:
175 * @volume_monitor: The volume monitor emitting the signal.
176 * @mount: a #GMount that changed.
178 * Emitted when a mount changes.
180 signals
[MOUNT_CHANGED
] = g_signal_new (I_("mount-changed"),
181 G_TYPE_VOLUME_MONITOR
,
183 G_STRUCT_OFFSET (GVolumeMonitorClass
, mount_changed
),
185 g_cclosure_marshal_VOID__OBJECT
,
186 G_TYPE_NONE
, 1, G_TYPE_MOUNT
);
189 * GVolumeMonitor::drive-connected:
190 * @volume_monitor: The volume monitor emitting the signal.
191 * @drive: a #GDrive that was connected.
193 * Emitted when a drive is connected to the system.
195 signals
[DRIVE_CONNECTED
] = g_signal_new (I_("drive-connected"),
196 G_TYPE_VOLUME_MONITOR
,
198 G_STRUCT_OFFSET (GVolumeMonitorClass
, drive_connected
),
200 g_cclosure_marshal_VOID__OBJECT
,
201 G_TYPE_NONE
, 1, G_TYPE_DRIVE
);
204 * GVolumeMonitor::drive-disconnected:
205 * @volume_monitor: The volume monitor emitting the signal.
206 * @drive: a #GDrive that was disconnected.
208 * Emitted when a drive is disconnected from the system.
210 signals
[DRIVE_DISCONNECTED
] = g_signal_new (I_("drive-disconnected"),
211 G_TYPE_VOLUME_MONITOR
,
213 G_STRUCT_OFFSET (GVolumeMonitorClass
, drive_disconnected
),
215 g_cclosure_marshal_VOID__OBJECT
,
216 G_TYPE_NONE
, 1, G_TYPE_DRIVE
);
219 * GVolumeMonitor::drive-changed:
220 * @volume_monitor: The volume monitor emitting the signal.
221 * @drive: the drive that changed
223 * Emitted when a drive changes.
225 signals
[DRIVE_CHANGED
] = g_signal_new (I_("drive-changed"),
226 G_TYPE_VOLUME_MONITOR
,
228 G_STRUCT_OFFSET (GVolumeMonitorClass
, drive_changed
),
230 g_cclosure_marshal_VOID__OBJECT
,
231 G_TYPE_NONE
, 1, G_TYPE_DRIVE
);
234 * GVolumeMonitor::drive-eject-button:
235 * @volume_monitor: The volume monitor emitting the signal.
236 * @drive: the drive where the eject button was pressed
238 * Emitted when the eject button is pressed on @drive.
242 signals
[DRIVE_EJECT_BUTTON
] = g_signal_new (I_("drive-eject-button"),
243 G_TYPE_VOLUME_MONITOR
,
245 G_STRUCT_OFFSET (GVolumeMonitorClass
, drive_eject_button
),
247 g_cclosure_marshal_VOID__OBJECT
,
248 G_TYPE_NONE
, 1, G_TYPE_DRIVE
);
253 g_volume_monitor_init (GVolumeMonitor
*monitor
)
259 * g_volume_monitor_get_connected_drives:
260 * @volume_monitor: a #GVolumeMonitor.
262 * Gets a list of drives connected to the system.
264 * The returned list should be freed with g_list_free(), after
265 * its elements have been unreffed with g_object_unref().
267 * Returns: a #GList of connected #GDrive objects.
270 g_volume_monitor_get_connected_drives (GVolumeMonitor
*volume_monitor
)
272 GVolumeMonitorClass
*class;
274 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor
), NULL
);
276 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor
);
278 return class->get_connected_drives (volume_monitor
);
282 * g_volume_monitor_get_volumes:
283 * @volume_monitor: a #GVolumeMonitor.
285 * Gets a list of the volumes on the system.
287 * The returned list should be freed with g_list_free(), after
288 * its elements have been unreffed with g_object_unref().
290 * Returns: a #GList of #GVolume objects.
293 g_volume_monitor_get_volumes (GVolumeMonitor
*volume_monitor
)
295 GVolumeMonitorClass
*class;
297 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor
), NULL
);
299 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor
);
301 return class->get_volumes (volume_monitor
);
305 * g_volume_monitor_get_mounts:
306 * @volume_monitor: a #GVolumeMonitor.
308 * Gets a list of the mounts on the system.
310 * The returned list should be freed with g_list_free(), after
311 * its elements have been unreffed with g_object_unref().
313 * Returns: a #GList of #GMount objects.
316 g_volume_monitor_get_mounts (GVolumeMonitor
*volume_monitor
)
318 GVolumeMonitorClass
*class;
320 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor
), NULL
);
322 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor
);
324 return class->get_mounts (volume_monitor
);
328 * g_volume_monitor_get_volume_for_uuid:
329 * @volume_monitor: a #GVolumeMonitor.
330 * @uuid: the UUID to look for
332 * Finds a #GVolume object by its UUID (see g_volume_get_uuid())
334 * Returns: a #GVolume or %NULL if no such volume is available.
335 * Free the returned object with g_object_unref().
338 g_volume_monitor_get_volume_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_volume_for_uuid (volume_monitor
, uuid
);
352 * g_volume_monitor_get_mount_for_uuid:
353 * @volume_monitor: a #GVolumeMonitor.
354 * @uuid: the UUID to look for
356 * Finds a #GMount object by its UUID (see g_mount_get_uuid())
358 * Returns: a #GMount or %NULL if no such mount is available.
359 * Free the returned object with g_object_unref().
362 g_volume_monitor_get_mount_for_uuid (GVolumeMonitor
*volume_monitor
,
365 GVolumeMonitorClass
*class;
367 g_return_val_if_fail (G_IS_VOLUME_MONITOR (volume_monitor
), NULL
);
368 g_return_val_if_fail (uuid
!= NULL
, NULL
);
370 class = G_VOLUME_MONITOR_GET_CLASS (volume_monitor
);
372 return class->get_mount_for_uuid (volume_monitor
, uuid
);
376 #define __G_VOLUME_MONITOR_C__
377 #include "gioaliasdef.c"