soylent r99 - trunk/src



Author: treitter
Date: Thu Mar 13 06:32:03 2008
New Revision: 99
URL: http://svn.gnome.org/viewvc/soylent?rev=99&view=rev

Log:
Pop up an error dialog if MC fails to start a new chat

Modified:
   trunk/src/soylent-browser-person-view.c
   trunk/src/soylent-browser-person-view.h
   trunk/src/soylent-browser.c
   trunk/src/soylent-person.c

Modified: trunk/src/soylent-browser-person-view.c
==============================================================================
--- trunk/src/soylent-browser-person-view.c	(original)
+++ trunk/src/soylent-browser-person-view.c	Thu Mar 13 06:32:03 2008
@@ -397,7 +397,7 @@
 
   g_return_val_if_fail (browser != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
    */
 
   wtree = soylent_browser_get_widget_tree (browser);
@@ -443,7 +443,7 @@
 
   g_return_val_if_fail (browser != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
    */
 
   wtree = soylent_browser_get_widget_tree (browser);
@@ -474,7 +474,7 @@
   browser = (SoylentBrowser*) user_data;
   g_return_val_if_fail (browser != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
    */
 
   wtree = soylent_browser_get_widget_tree (browser);
@@ -529,7 +529,7 @@
 
   g_return_val_if_fail (user_data != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
    */
 
   cb_data = (cb_entry_changed_e_contact*) user_data;
@@ -579,7 +579,7 @@
 
   g_return_val_if_fail (user_data != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), retval);
    */
 
   browser = (SoylentBrowser*) user_data;
@@ -649,6 +649,35 @@
   return retval;
 }
 
+/* Display a MissionControl chat error dialog */
+void
+soylent_browser_person_error_chat_new_cb (MissionControl *mc, GError *error,
+                                          gpointer user_data)
+{
+  SoylentBrowser *browser = NULL;
+  GladeXML *wtree = NULL;
+  GtkMessageDialog *error_chat_new = NULL;
+
+  g_return_if_fail (user_data != NULL);
+  /* FIXME: uncomment once SoylentBrowser is a GObject:
+  g_return_if_fail (SOYLENT_IS_BROWSER (browser));
+   */
+
+  browser = (SoylentBrowser*) user_data;
+  wtree = soylent_browser_get_widget_tree (browser);
+  error_chat_new = GTK_MESSAGE_DIALOG (glade_xml_get_widget (wtree,
+                                                             "error_chat_new"));
+  if (error)
+    {
+      gtk_message_dialog_format_secondary_text (error_chat_new,
+                                                "Failed to open a chat: %s",
+                                                error->message);
+      g_clear_error (&error);
+
+      gtk_widget_show (GTK_WIDGET (error_chat_new));
+    }
+}
+
 /* Commit any new details to the person being edited
  *
  * Return TRUE for success, FALSE for any failure. */
@@ -668,7 +697,7 @@
 
   g_return_val_if_fail (user_data != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), retval);
    */
 
   browser = (SoylentBrowser*) user_data;
@@ -998,7 +1027,7 @@
 
   g_return_val_if_fail (browser != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
    */
 
   wtree = soylent_browser_get_widget_tree (browser);
@@ -1020,7 +1049,10 @@
   GHashTable *edits_pending = NULL;
 
   g_return_val_if_fail (user_data != NULL, retval);
-  /* FIXME: when SoylentBrowser is a GObject, check SOYLENT_IS_BROWSER */
+  /* FIXME: uncomment once SoylentBrowser is a GObject:
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), retval);
+   */
+
   browser = (SoylentBrowser*) user_data;
 
   edits_pending = soylent_browser_get_edits_pending (browser);
@@ -1272,13 +1304,15 @@
   SoylentPerson *person = NULL;
   EmpathyContactManager *live_manager = NULL;
 
-  browser = (SoylentBrowser*) user_data;
-  g_return_val_if_fail (browser != NULL, retval);
+  g_return_val_if_fail (user_data != NULL, retval);
+  /* FIXME: uncomment once SoylentBrowser is a GObject:
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), retval);
+  */
 
+  browser = (SoylentBrowser*) user_data;
   live_manager = soylent_browser_get_live_manager (browser);
   if (live_manager)
     {
-      /* FIXME: pick a better name */
       MissionControl *mission_control = NULL;
 
       mission_control = empathy_mission_control_new ();
@@ -1328,17 +1362,13 @@
                                                                 (live_contact);
                               if (account)
                                 {
-                                  /* FIXME: fill in the callback and user_data;
-                                   * this will let us know whether this
-                                   * succeeded or not */
                               mission_control_request_channel_with_string_handle
-                                                  (mission_control, account,
-                                                   TP_IFACE_CHANNEL_TYPE_TEXT,
-                                                   im_handle,
-                                                   TP_HANDLE_TYPE_CONTACT, NULL,
-                                                   NULL);
-                                  /* FIXME: qualify this based on the callback
-                                   * function set above */
+                                      (mission_control, account,
+                                       TP_IFACE_CHANNEL_TYPE_TEXT, im_handle,
+                                       TP_HANDLE_TYPE_CONTACT,
+                                       soylent_browser_person_error_chat_new_cb,
+                                       browser);
+
                                   retval = TRUE;
                                 }
                               else
@@ -1650,7 +1680,7 @@
 
   g_return_val_if_fail (browser != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), retval);
    */
   g_return_val_if_fail (attr_name != NULL, retval);
 
@@ -2799,7 +2829,7 @@
 
   g_return_val_if_fail (browser != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), retval);
    */
   g_return_val_if_fail (cbox_name != NULL, retval);
 
@@ -2831,7 +2861,7 @@
 
   g_return_val_if_fail (browser != NULL, retval);
   /* FIXME: uncomment once SoylentBrowser is a GObject:
-  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), NULL);
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
    */
 
   wtree = soylent_browser_get_widget_tree (browser);

Modified: trunk/src/soylent-browser-person-view.h
==============================================================================
--- trunk/src/soylent-browser-person-view.h	(original)
+++ trunk/src/soylent-browser-person-view.h	Thu Mar 13 06:32:03 2008
@@ -65,6 +65,9 @@
                                                        SoylentPerson *person);
 
 gboolean entry_changed_e_contact (GtkEditable *editable, gpointer user_data);
+void soylent_browser_person_error_chat_new_cb (MissionControl *mc,
+                                               GError *error,
+                                               gpointer user_data);
 
 /* Committing changes from the above functions */
 gboolean soylent_browser_person_detail_add_commit (GtkWidget *btn_detail_add,

Modified: trunk/src/soylent-browser.c
==============================================================================
--- trunk/src/soylent-browser.c	(original)
+++ trunk/src/soylent-browser.c	Thu Mar 13 06:32:03 2008
@@ -1561,6 +1561,12 @@
       {"dia_delete_person_confirm", "delete-event", gtk_widget_hide_on_delete,
        CB_DATA_SIMPLE, browser},
 
+      /* Error dialogs */
+      {"error_chat_new", "delete-event", gtk_widget_hide_on_delete,
+       CB_DATA_SIMPLE, browser},
+      {"error_chat_new", "close", gtk_widget_hide, CB_DATA_SIMPLE, browser},
+      {"error_chat_new", "response", gtk_widget_hide, CB_DATA_SIMPLE, browser},
+
       /* Automatically save changes when closing the Person Details window */
       {"window_person_view", "delete-event",
        soylent_browser_person_view_save_finalize_cb, CB_DATA_SIMPLE, browser},

Modified: trunk/src/soylent-person.c
==============================================================================
--- trunk/src/soylent-person.c	(original)
+++ trunk/src/soylent-person.c	Thu Mar 13 06:32:03 2008
@@ -120,7 +120,6 @@
   return person->presence;
 }
 
-/* FIXME: should this be a pointer instead? */
 GtkTreeIter*
 soylent_person_get_icon_view_iter (SoylentPerson *person)
 {
@@ -808,7 +807,6 @@
   return retval;
 }
 
-/*TODO: make a _new function and put it somewhere sensible...*/
 void
 soylent_person_free (SoylentPerson *value)
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]