-static void
-event_manager_tube_approved_cb (EventPriv *event)
-{
- empathy_tube_dispatch_handle (event->approval->tube_dispatch);
-}
-
-static void
-event_manager_add_tube_approval (EventManagerApproval *approval,
- EmpathyTubeDispatchAbility ability)
-{
- const gchar *icon_name;
- gchar *header;
- const gchar *msg;
-
- header = g_strdup_printf (_("%s is offering you an invitation"),
- empathy_contact_get_name (approval->contact));
-
- if (ability == EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE)
- {
- icon_name = GTK_STOCK_EXECUTE;
- msg = _("An external application will be started to handle it.");
- }
- else
- {
- icon_name = GTK_STOCK_DIALOG_ERROR;
- msg = _("You don't have the needed external "
- "application to handle it.");
- }
-
- event_manager_add (approval->manager, approval->contact,
- EMPATHY_EVENT_TYPE_TUBE, icon_name, header, msg, approval,
- event_manager_tube_approved_cb, approval);
-
- g_free (header);
- /* FIXME better sound for incoming tubes ? */
- empathy_sound_play (empathy_main_window_get (),
- EMPATHY_SOUND_CONVERSATION_NEW);
-}
-
-static void
-event_manager_tube_dispatch_ability_cb (GObject *object,
- GParamSpec *spec, gpointer user_data)
-{
- EventManagerApproval *approval = (EventManagerApproval *) user_data;
- EmpathyTubeDispatchAbility dispatchability;
-
- dispatchability =
- empathy_tube_dispatch_is_dispatchable (approval->tube_dispatch);
-
- if (dispatchability != EMPATHY_TUBE_DISPATCHABILITY_UNKNOWN)
- {
- event_manager_add_tube_approval (approval, dispatchability);
- g_signal_handler_disconnect (object, approval->handler);
- approval->handler = 0;
- }
-}
-
-static void
-event_manager_tube_got_contact_cb (EmpathyTpContactFactory *factory,
- EmpathyContact *contact,
- const GError *error,
- gpointer user_data,
- GObject *object)
-{
- EventManagerApproval *approval = (EventManagerApproval *) user_data;
- EmpathyTubeDispatchAbility dispatchability;
-
- if (error != NULL)
- {
- /* FIXME: We should probably still display the event */
- DEBUG ("Error: %s", error->message);
- return;
- }
-
- approval->contact = g_object_ref (contact);
-
- dispatchability = empathy_tube_dispatch_is_dispatchable
- (approval->tube_dispatch);
-
- switch (dispatchability)
- {
- case EMPATHY_TUBE_DISPATCHABILITY_UNKNOWN:
- approval->handler = g_signal_connect (approval->tube_dispatch,
- "notify::dispatchability",
- G_CALLBACK (event_manager_tube_dispatch_ability_cb), approval);
- approval->handler_instance = G_OBJECT (approval->tube_dispatch);
- break;
- case EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE:
- /* fallthrough */
- case EMPATHY_TUBE_DISPATCHABILITY_IMPOSSIBLE:
- event_manager_add_tube_approval (approval, dispatchability);
- break;
- }
-}
-