X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgdrive.c;h=5d79286561160a7a152d0e839fd32679d447032d;hb=2a2b11b1bb6c702d6b2ef1c37524a57688a94a4e;hp=0e8c8efb755313c7ec5da3e41ef85681c97ae350;hpb=f8532a13e2054e649f75ca2a58e01604be05549e;p=platform%2Fupstream%2Fglib.git
diff --git a/gio/gdrive.c b/gio/gdrive.c
index 0e8c8ef..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,7 +21,8 @@
#include "config.h"
#include "gdrive.h"
-#include "gsimpleasyncresult.h"
+#include "gtask.h"
+#include "gthemedicon.h"
#include "gasyncresult.h"
#include "gioerror.h"
#include "glibintl.h"
@@ -41,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
@@ -175,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.
*
@@ -358,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;
}
@@ -393,6 +421,8 @@ g_drive_eject_finish (GDrive *drive,
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);
@@ -431,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;
}
@@ -473,6 +503,8 @@ g_drive_eject_with_operation_finish (GDrive *drive,
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)
@@ -508,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;
}
@@ -541,6 +573,8 @@ g_drive_poll_for_media_finish (GDrive *drive,
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);
@@ -711,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;
}
@@ -745,6 +780,8 @@ g_drive_start_finish (GDrive *drive,
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);
@@ -810,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;
}
@@ -844,6 +882,8 @@ g_drive_stop_finish (GDrive *drive,
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);