]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-main-window.c
More flexible API for EmpathyContactWidget, we now have flags to set
[empathy.git] / libempathy-gtk / empathy-main-window.c
index 7f61afcdb908f2ba6faae7e8d96a7a917a9561b4..7543c456e9e67374ad71225c8ff5ef0a1a9cd569 100644 (file)
@@ -35,6 +35,7 @@
 #include <libempathy/empathy-chatroom.h>
 #include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-contact-factory.h>
 
 #include "empathy-main-window.h"
 #include "empathy-contact-dialogs.h"
@@ -51,6 +52,7 @@
 #include "empathy-new-chatroom-dialog.h"
 #include "empathy-chatrooms-window.h"
 #include "empathy-log-window.h"
+#include "empathy-gtk-enum-types.h"
 
 #define DEBUG_DOMAIN "MainWindow"
 
@@ -66,7 +68,7 @@
 typedef struct {
        EmpathyContactListView  *list_view;
        EmpathyContactListStore *list_store;
-       MissionControl         *mc;
+       MissionControl          *mc;
        EmpathyChatroomManager  *chatroom_manager;
 
        /* Main widgets */
@@ -287,9 +289,9 @@ empathy_main_window_show (void)
        empathy_status_presets_get_all ();
 
        list_iface = EMPATHY_CONTACT_LIST (empathy_contact_manager_new ());
-       empathy_contact_list_setup (list_iface);
        window->list_store = empathy_contact_list_store_new (list_iface);
        window->list_view = empathy_contact_list_view_new (window->list_store);
+       empathy_contact_list_view_set_interactive (window->list_view, TRUE);
        g_object_unref (list_iface);
 
        gtk_widget_show (GTK_WIDGET (window->list_view));
@@ -661,7 +663,24 @@ static void
 main_window_edit_personal_information_cb (GtkWidget         *widget,
                                          EmpathyMainWindow *window)
 {
-       //empathy_vcard_dialog_show (GTK_WINDOW (window->window));
+       GSList *accounts;
+
+       accounts = mission_control_get_online_connections (window->mc, NULL);
+       if (accounts) {
+               EmpathyContactFactory *factory;
+               EmpathyContact        *contact;
+               McAccount             *account;
+
+               account = accounts->data;
+               factory = empathy_contact_factory_new ();
+               contact = empathy_contact_factory_get_user (factory, account);
+               empathy_contact_information_dialog_show (contact,
+                                                        GTK_WINDOW (window->window),
+                                                        TRUE, FALSE);
+               g_slist_foreach (accounts, (GFunc) g_object_unref, NULL);
+               g_slist_free (accounts);
+               g_object_unref (factory);
+       }
 }
 
 static void
@@ -896,13 +915,13 @@ main_window_notify_compact_contact_list_cb (EmpathyConf        *conf,
 }
 
 static void
-main_window_notify_sort_criterium_cb (EmpathyConf        *conf,
+main_window_notify_sort_criterium_cb (EmpathyConf       *conf,
                                      const gchar       *key,
                                      EmpathyMainWindow *window)
 {
        gchar *str = NULL;
 
-       if (empathy_conf_get_string (conf, key, &str)) {
+       if (empathy_conf_get_string (conf, key, &str) && str) {
                GType       type;
                GEnumClass *enum_class;
                GEnumValue *enum_value;
@@ -914,7 +933,7 @@ main_window_notify_sort_criterium_cb (EmpathyConf        *conf,
 
                if (enum_value) {
                        empathy_contact_list_store_set_sort_criterium (window->list_store, 
-                                                                     enum_value->value);
+                                                                      enum_value->value);
                }
        }
 }