diff options
-rw-r--r-- | libempathy/empathy-tp-file.c | 75 |
1 files changed, 30 insertions, 45 deletions
diff --git a/libempathy/empathy-tp-file.c b/libempathy/empathy-tp-file.c index 020e7af67..ee9f01e9b 100644 --- a/libempathy/empathy-tp-file.c +++ b/libempathy/empathy-tp-file.c @@ -390,49 +390,6 @@ tp_file_finalize (GObject *object) } static void -tp_file_get_all_cb (TpProxy *proxy, - GHashTable *properties, - const GError *error, - gpointer user_data, - GObject *weak_object) -{ - EmpathyTpFile *tp_file = (EmpathyTpFile *) user_data; - - if (error) - { - DEBUG ("Failed to get properties: %s", error->message); - return; - } - - tp_file->priv->size = g_value_get_uint64 ( - g_hash_table_lookup (properties, "Size")); - - tp_file->priv->state = g_value_get_uint ( - g_hash_table_lookup (properties, "State")); - - /* Invalid reason, so empathy_file_get_state_change_reason() can give - * a warning if called for a not closed file transfer. */ - tp_file->priv->state_change_reason = -1; - - tp_file->priv->transferred_bytes = g_value_get_uint64 ( - g_hash_table_lookup (properties, "TransferredBytes")); - - tp_file->priv->filename = g_value_dup_string ( - g_hash_table_lookup (properties, "Filename")); - - tp_file->priv->content_hash = g_value_dup_string ( - g_hash_table_lookup (properties, "ContentHash")); - - tp_file->priv->description = g_value_dup_string ( - g_hash_table_lookup (properties, "Description")); - - if (tp_file->priv->state == EMP_FILE_TRANSFER_STATE_LOCAL_PENDING) - tp_file->priv->incoming = TRUE; - - g_hash_table_destroy (properties); -} - -static void tp_file_closed_cb (TpChannel *file_channel, EmpathyTpFile *tp_file, GObject *weak_object) @@ -584,6 +541,7 @@ tp_file_constructor (GType type, GObject *file_obj; EmpathyTpFile *tp_file; TpHandle handle; + GHashTable *properties; file_obj = G_OBJECT_CLASS (empathy_tp_file_parent_class)->constructor (type, n_props, props); @@ -616,8 +574,35 @@ tp_file_constructor (GType type, tp_file->priv->contact = empathy_contact_factory_get_from_handle ( tp_file->priv->factory, tp_file->priv->account, (guint) handle); - tp_cli_dbus_properties_call_get_all (tp_file->priv->channel, - -1, EMP_IFACE_CHANNEL_TYPE_FILE, tp_file_get_all_cb, tp_file, NULL, NULL); + tp_cli_dbus_properties_run_get_all (tp_file->priv->channel, + -1, EMP_IFACE_CHANNEL_TYPE_FILE, &properties, NULL, NULL); + + tp_file->priv->size = g_value_get_uint64 ( + g_hash_table_lookup (properties, "Size")); + + tp_file->priv->state = g_value_get_uint ( + g_hash_table_lookup (properties, "State")); + + /* Invalid reason, so empathy_file_get_state_change_reason() can give + * a warning if called for a not closed file transfer. */ + tp_file->priv->state_change_reason = -1; + + tp_file->priv->transferred_bytes = g_value_get_uint64 ( + g_hash_table_lookup (properties, "TransferredBytes")); + + tp_file->priv->filename = g_value_dup_string ( + g_hash_table_lookup (properties, "Filename")); + + tp_file->priv->content_hash = g_value_dup_string ( + g_hash_table_lookup (properties, "ContentHash")); + + tp_file->priv->description = g_value_dup_string ( + g_hash_table_lookup (properties, "Description")); + + if (tp_file->priv->state == EMP_FILE_TRANSFER_STATE_LOCAL_PENDING) + tp_file->priv->incoming = TRUE; + + g_hash_table_destroy (properties); return file_obj; } |