#include <libempathy/empathy-idle.h>
#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-call-factory.h>
#include <libempathy/empathy-chatroom-manager.h>
+#include <libempathy/empathy-account-manager.h>
#include <libempathy/empathy-dispatcher.h>
#include <libempathy/empathy-dispatch-operation.h>
+#include <libempathy/empathy-log-manager.h>
#include <libempathy/empathy-tp-chat.h>
#include <libempathy/empathy-tp-call.h>
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
#include <libempathy/empathy-debug.h>
+#include <gst/gst.h>
+
static BaconMessageConnection *connection = NULL;
static void
}
if (id) {
+ EmpathyAccountManager *manager;
+ TpConnection *connection;
McAccount *account;
- account = empathy_tp_chat_get_account (tp_chat);
+ manager = empathy_account_manager_dup_singleton ();
+ connection = empathy_tp_chat_get_connection (tp_chat);
+ account = empathy_account_manager_get_account (manager,
+ connection);
chat = empathy_chat_window_find_chat (account, id);
+ g_object_unref (manager);
}
if (chat) {
empathy_dispatch_operation_claim (operation);
} else if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_STREAMED_MEDIA) {
- EmpathyTpCall *call;
-
- call = EMPATHY_TP_CALL (
- empathy_dispatch_operation_get_channel_wrapper (operation));
+ EmpathyCallFactory *factory;
- empathy_dispatch_operation_claim (operation);
-
- empathy_call_window_new (call);
- } else if (channel_type == EMP_IFACE_QUARK_CHANNEL_TYPE_FILE_TRANSFER) {
+ factory = empathy_call_factory_get ();
+ empathy_call_factory_claim_channel (factory, operation);
+ } else if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_FILE_TRANSFER) {
EmpathyFTManager *ft_manager;
EmpathyTpFile *tp_file;
empathy_dispatch_operation_get_channel_wrapper (operation));
empathy_ft_manager_add_tp_file (ft_manager, tp_file);
empathy_dispatch_operation_claim (operation);
+ g_object_unref (ft_manager);
}
}
return (retval > 0) ? retval : 0;
}
+static gboolean
+show_version_cb (const char *option_name,
+ const char *value,
+ gpointer data,
+ GError **error)
+{
+ g_print ("%s\n", PACKAGE_STRING);
+
+ exit (EXIT_SUCCESS);
+
+ return FALSE;
+}
+
+static void
+new_call_handler_cb (EmpathyCallFactory *factory, EmpathyCallHandler *handler,
+ gboolean outgoing, gpointer user_data)
+{
+ EmpathyCallWindow *window;
+
+ window = empathy_call_window_new (handler);
+ gtk_widget_show (GTK_WIDGET (window));
+}
+
int
main (int argc, char *argv[])
{
guint32 startup_timestamp;
EmpathyStatusIcon *icon;
EmpathyDispatcher *dispatcher;
+ EmpathyLogManager *log_manager;
EmpathyChatroomManager *chatroom_manager;
+ EmpathyFTManager *ft_manager;
+ EmpathyCallFactory *call_factory;
GtkWidget *window;
MissionControl *mc;
EmpathyIdle *idle;
0, G_OPTION_ARG_NONE, &accounts_dialog,
N_("Show the accounts dialog"),
NULL },
+ { "version", 'v',
+ G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, show_version_cb, NULL, NULL },
{ NULL }
};
/* Init */
g_thread_init (NULL);
+ empathy_init ();
+
if (!gtk_init_with_args (&argc, &argv,
- _("- Empathy Instant Messenger"),
+ N_("- Empathy Instant Messenger"),
options, GETTEXT_PACKAGE, &error)) {
g_warning ("Error in empathy init: %s", error->message);
return EXIT_FAILURE;
}
+
empathy_gtk_init ();
- g_set_application_name (PACKAGE_NAME);
+ g_set_application_name (_(PACKAGE_NAME));
+ g_setenv("PULSE_PROP_media.role", "phone", TRUE);
+
+ gst_init (&argc, &argv);
+
gtk_window_set_default_icon_name ("empathy");
textdomain (GETTEXT_PACKAGE);
dispatcher = empathy_dispatcher_dup_singleton ();
g_signal_connect (dispatcher, "dispatch", G_CALLBACK (dispatch_cb), NULL);
+ /* Logging */
+ log_manager = empathy_log_manager_dup_singleton ();
+ empathy_log_manager_observe (log_manager, dispatcher);
+
chatroom_manager = empathy_chatroom_manager_dup_singleton (NULL);
empathy_chatroom_manager_observe (chatroom_manager, dispatcher);
- notify_init ("Empathy");
+ ft_manager = empathy_ft_manager_dup_singleton ();
+
+ notify_init (_(PACKAGE_NAME));
+ /* Create the call factory */
+ call_factory = empathy_call_factory_initialise ();
+ g_signal_connect (G_OBJECT (call_factory), "new-call-handler",
+ G_CALLBACK (new_call_handler_cb), NULL);
+
gtk_main ();
empathy_idle_set_state (idle, MC_PRESENCE_OFFLINE);
g_object_unref (mc);
g_object_unref (idle);
g_object_unref (icon);
+ g_object_unref (log_manager);
g_object_unref (dispatcher);
g_object_unref (chatroom_manager);
+ g_object_unref (ft_manager);
+
+ notify_uninit ();
return EXIT_SUCCESS;
}