X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgdrive.c;h=5d79286561160a7a152d0e839fd32679d447032d;hb=d108ada4b98cb50fb1517f55c4f09acdaf3de471;hp=4a45dff88a1c566e1f6d37c57e0583a24cc4a081;hpb=73007021796f33d7ccec4e5f2bb2b2f8660347f2;p=platform%2Fupstream%2Fglib.git diff --git a/gio/gdrive.c b/gio/gdrive.c index 4a45dff..5d79286 100644 --- a/gio/gdrive.c +++ b/gio/gdrive.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. + * Public License along with this library; if not, see . * * Author: Alexander Larsson * David Zeuthen @@ -23,12 +21,12 @@ #include "config.h" #include "gdrive.h" -#include "gsimpleasyncresult.h" +#include "gtask.h" +#include "gthemedicon.h" #include "gasyncresult.h" #include "gioerror.h" #include "glibintl.h" -#include "gioalias.h" /** * SECTION:gdrive @@ -42,7 +40,7 @@ * #GDrive is a container class for #GVolume objects that stem from * the same piece of media. As such, #GDrive abstracts a drive with * (or without) removable media and provides operations for querying - * whether media is available, determing whether media change is + * whether media is available, determining whether media change is * automatically detected and ejecting the media. * * If the #GDrive reports that media isn't automatically detected, one @@ -160,7 +158,7 @@ g_drive_get_name (GDrive *drive) * * Gets the icon for @drive. * - * Returns: #GIcon for the @drive. + * Returns: (transfer full): #GIcon for the @drive. * Free the returned object with g_object_unref(). **/ GIcon * @@ -176,6 +174,35 @@ g_drive_get_icon (GDrive *drive) } /** + * g_drive_get_symbolic_icon: + * @drive: a #GDrive. + * + * Gets the icon for @drive. + * + * Returns: (transfer full): symbolic #GIcon for the @drive. + * Free the returned object with g_object_unref(). + * + * Since: 2.34 + **/ +GIcon * +g_drive_get_symbolic_icon (GDrive *drive) +{ + GDriveIface *iface; + GIcon *ret; + + g_return_val_if_fail (G_IS_DRIVE (drive), NULL); + + iface = G_DRIVE_GET_IFACE (drive); + + if (iface->get_symbolic_icon != NULL) + ret = iface->get_symbolic_icon (drive); + else + ret = g_themed_icon_new_with_default_fallbacks ("drive-removable-media-symbolic"); + + return ret; +} + +/** * g_drive_has_volumes: * @drive: a #GDrive. * @@ -204,7 +231,7 @@ g_drive_has_volumes (GDrive *drive) * The returned list should be freed with g_list_free(), after * its elements have been unreffed with g_object_unref(). * - * Returns: #GList containing any #GVolume objects on the given @drive. + * Returns: (element-type GVolume) (transfer full): #GList containing any #GVolume objects on the given @drive. **/ GList * g_drive_get_volumes (GDrive *drive) @@ -332,8 +359,8 @@ g_drive_can_poll_for_media (GDrive *drive) * g_drive_eject: * @drive: a #GDrive. * @flags: flags affecting the unmount if required for eject - * @cancellable: optional #GCancellable object, %NULL to ignore. - * @callback: a #GAsyncReadyCallback, or %NULL. + * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. + * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL. * @user_data: user data to pass to @callback * * Asynchronously ejects a drive. @@ -359,10 +386,10 @@ g_drive_eject (GDrive *drive, if (iface->eject == NULL) { - g_simple_async_report_error_in_idle (G_OBJECT (drive), callback, user_data, - G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, - _("drive doesn't implement eject")); - + g_task_report_new_error (drive, callback, user_data, + g_drive_eject_with_operation, + G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("drive doesn't implement eject")); return; } @@ -392,13 +419,11 @@ g_drive_eject_finish (GDrive *drive, g_return_val_if_fail (G_IS_DRIVE (drive), FALSE); g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); - if (G_IS_SIMPLE_ASYNC_RESULT (result)) - { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result); - if (g_simple_async_result_propagate_error (simple, error)) - return FALSE; - } - + if (g_async_result_legacy_propagate_error (result, error)) + return FALSE; + else if (g_async_result_is_tagged (result, g_drive_eject_with_operation)) + return g_task_propagate_boolean (G_TASK (result), error); + iface = G_DRIVE_GET_IFACE (drive); return (* iface->eject_finish) (drive, result, error); @@ -408,9 +433,10 @@ g_drive_eject_finish (GDrive *drive, * g_drive_eject_with_operation: * @drive: a #GDrive. * @flags: flags affecting the unmount if required for eject - * @mount_operation: a #GMountOperation or %NULL to avoid user interaction. - * @cancellable: optional #GCancellable object, %NULL to ignore. - * @callback: a #GAsyncReadyCallback, or %NULL. + * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid + * user interaction. + * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. + * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL. * @user_data: user data passed to @callback. * * Ejects a drive. This is an asynchronous operation, and is @@ -435,13 +461,13 @@ g_drive_eject_with_operation (GDrive *drive, if (iface->eject == NULL && iface->eject_with_operation == NULL) { - g_simple_async_report_error_in_idle (G_OBJECT (drive), - callback, user_data, - G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, - /* Translators: This is an error - * message for drive objects that - * don't implement any of eject or eject_with_operation. */ - _("drive doesn't implement eject or eject_with_operation")); + g_task_report_new_error (drive, callback, user_data, + g_drive_eject_with_operation, + G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + /* Translators: This is an error + * message for drive objects that + * don't implement any of eject or eject_with_operation. */ + _("drive doesn't implement eject or eject_with_operation")); return; } @@ -455,7 +481,7 @@ g_drive_eject_with_operation (GDrive *drive, * g_drive_eject_with_operation_finish: * @drive: a #GDrive. * @result: a #GAsyncResult. - * @error: a #GError location to store the error occuring, or %NULL to + * @error: a #GError location to store the error occurring, or %NULL to * ignore. * * Finishes ejecting a drive. If any errors occurred during the operation, @@ -475,12 +501,10 @@ g_drive_eject_with_operation_finish (GDrive *drive, g_return_val_if_fail (G_IS_DRIVE (drive), FALSE); g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); - if (G_IS_SIMPLE_ASYNC_RESULT (result)) - { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result); - if (g_simple_async_result_propagate_error (simple, error)) - return FALSE; - } + if (g_async_result_legacy_propagate_error (result, error)) + return FALSE; + else if (g_async_result_is_tagged (result, g_drive_eject_with_operation)) + return g_task_propagate_boolean (G_TASK (result), error); iface = G_DRIVE_GET_IFACE (drive); if (iface->eject_with_operation_finish != NULL) @@ -492,8 +516,8 @@ g_drive_eject_with_operation_finish (GDrive *drive, /** * g_drive_poll_for_media: * @drive: a #GDrive. - * @cancellable: optional #GCancellable object, %NULL to ignore. - * @callback: a #GAsyncReadyCallback, or %NULL. + * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. + * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL. * @user_data: user data to pass to @callback * * Asynchronously polls @drive to see if media has been inserted or removed. @@ -516,10 +540,10 @@ g_drive_poll_for_media (GDrive *drive, if (iface->poll_for_media == NULL) { - g_simple_async_report_error_in_idle (G_OBJECT (drive), callback, user_data, - G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, - _("drive doesn't implement polling for media")); - + g_task_report_new_error (drive, callback, user_data, + g_drive_poll_for_media, + G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("drive doesn't implement polling for media")); return; } @@ -547,13 +571,11 @@ g_drive_poll_for_media_finish (GDrive *drive, g_return_val_if_fail (G_IS_DRIVE (drive), FALSE); g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); - if (G_IS_SIMPLE_ASYNC_RESULT (result)) - { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result); - if (g_simple_async_result_propagate_error (simple, error)) - return FALSE; - } - + if (g_async_result_legacy_propagate_error (result, error)) + return FALSE; + else if (g_async_result_is_tagged (result, g_drive_poll_for_media)) + return g_task_propagate_boolean (G_TASK (result), error); + iface = G_DRIVE_GET_IFACE (drive); return (* iface->poll_for_media_finish) (drive, result, error); @@ -592,11 +614,12 @@ g_drive_get_identifier (GDrive *drive, * @drive: a #GDrive * * Gets the kinds of identifiers that @drive has. - * Use g_drive_get_identifer() to obtain the identifiers + * Use g_drive_get_identifier() to obtain the identifiers * themselves. * - * Returns: a %NULL-terminated array of strings containing - * kinds of identifiers. Use g_strfreev() to free. + * Returns: (transfer full) (array zero-terminated=1): a %NULL-terminated + * array of strings containing kinds of identifiers. Use g_strfreev() + * to free. */ char ** g_drive_enumerate_identifiers (GDrive *drive) @@ -692,9 +715,10 @@ g_drive_can_start_degraded (GDrive *drive) * g_drive_start: * @drive: a #GDrive. * @flags: flags affecting the start operation. - * @mount_operation: a #GMountOperation or %NULL to avoid user interaction. - * @cancellable: optional #GCancellable object, %NULL to ignore. - * @callback: a #GAsyncReadyCallback, or %NULL. + * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid + * user interaction. + * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. + * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL. * @user_data: user data to pass to @callback * * Asynchronously starts a drive. @@ -721,9 +745,10 @@ g_drive_start (GDrive *drive, if (iface->start == NULL) { - g_simple_async_report_error_in_idle (G_OBJECT (drive), callback, user_data, - G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, - _("drive doesn't implement start")); + g_task_report_new_error (drive, callback, user_data, + g_drive_start, + G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("drive doesn't implement start")); return; } @@ -753,12 +778,10 @@ g_drive_start_finish (GDrive *drive, g_return_val_if_fail (G_IS_DRIVE (drive), FALSE); g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); - if (G_IS_SIMPLE_ASYNC_RESULT (result)) - { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result); - if (g_simple_async_result_propagate_error (simple, error)) - return FALSE; - } + if (g_async_result_legacy_propagate_error (result, error)) + return FALSE; + else if (g_async_result_is_tagged (result, g_drive_start)) + return g_task_propagate_boolean (G_TASK (result), error); iface = G_DRIVE_GET_IFACE (drive); @@ -794,9 +817,10 @@ g_drive_can_stop (GDrive *drive) * g_drive_stop: * @drive: a #GDrive. * @flags: flags affecting the unmount if required for stopping. - * @mount_operation: a #GMountOperation or %NULL to avoid user interaction. - * @cancellable: optional #GCancellable object, %NULL to ignore. - * @callback: a #GAsyncReadyCallback, or %NULL. + * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid + * user interaction. + * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. + * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL. * @user_data: user data to pass to @callback * * Asynchronously stops a drive. @@ -823,9 +847,10 @@ g_drive_stop (GDrive *drive, if (iface->stop == NULL) { - g_simple_async_report_error_in_idle (G_OBJECT (drive), callback, user_data, - G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, - _("drive doesn't implement stop")); + g_task_report_new_error (drive, callback, user_data, + g_drive_start, + G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("drive doesn't implement stop")); return; } @@ -855,17 +880,37 @@ g_drive_stop_finish (GDrive *drive, g_return_val_if_fail (G_IS_DRIVE (drive), FALSE); g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); - if (G_IS_SIMPLE_ASYNC_RESULT (result)) - { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result); - if (g_simple_async_result_propagate_error (simple, error)) - return FALSE; - } + if (g_async_result_legacy_propagate_error (result, error)) + return FALSE; + else if (g_async_result_is_tagged (result, g_drive_start)) + return g_task_propagate_boolean (G_TASK (result), error); iface = G_DRIVE_GET_IFACE (drive); return (* iface->stop_finish) (drive, result, error); } -#define __G_DRIVE_C__ -#include "gioaliasdef.c" +/** + * g_drive_get_sort_key: + * @drive: A #GDrive. + * + * Gets the sort key for @drive, if any. + * + * Returns: Sorting key for @drive or %NULL if no such key is available. + * + * Since: 2.32 + */ +const gchar * +g_drive_get_sort_key (GDrive *drive) +{ + const gchar *ret = NULL; + GDriveIface *iface; + + g_return_val_if_fail (G_IS_DRIVE (drive), NULL); + + iface = G_DRIVE_GET_IFACE (drive); + if (iface->get_sort_key != NULL) + ret = iface->get_sort_key (drive); + + return ret; +}