soylent r100 - trunk/src



Author: treitter
Date: Sat Mar 15 04:10:40 2008
New Revision: 100
URL: http://svn.gnome.org/viewvc/soylent?rev=100&view=rev

Log:
Simplify the logic of soylent_browser_person_selected_email_menu_update_cb()

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

Modified: trunk/src/soylent-browser-person-view.c
==============================================================================
--- trunk/src/soylent-browser-person-view.c	(original)
+++ trunk/src/soylent-browser-person-view.c	Sat Mar 15 04:10:40 2008
@@ -1428,13 +1428,15 @@
 {
   gboolean retval = FALSE;
   SoylentBrowser *browser = NULL;
-  EContact *e_contact = NULL;
-  const GList *email_addrs = NULL;
   GtkMenu *menu_email = NULL;
-  const gchar *email_addr_cur = NULL;
   GList *e_contacts = NULL;
 
-  browser = (SoylentBrowser *) user_data;
+  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;
 
   menu_email = GTK_MENU (gtk_menu_tool_button_get_menu (btntb_email));
 
@@ -1446,47 +1448,43 @@
   e_contacts = soylent_browser_get_selected_people_e_contact (browser);
   if (e_contacts)
     {
-      /* FIXME: we don't handle multi-person email correctly now, so we just
-       * leave the menutoolbutton empty */
       if (!g_list_next (e_contacts))
         {
+          EContact *e_contact = NULL;
+
           e_contact = e_contacts->data;
-          if (!e_contact || !E_CONTACT (e_contact))
+          if (e_contact && E_CONTACT (e_contact))
             {
-              /* FIXME: don't short out here; set retval appropriately */
-              return TRUE;
+              const GList *email_addrs = NULL;
+              const gchar *email_addr_cur = NULL;
+
+              for (email_addrs = e_contact_get (e_contact, E_CONTACT_EMAIL);
+                   email_addrs && (email_addr_cur = email_addrs->data);
+                   email_addrs = g_list_next (email_addrs))
+                {
+                  GtkWidget *item = NULL;
+
+                  item = gtk_menu_item_new_with_label (email_addr_cur);
+                  g_signal_connect
+                          (G_OBJECT (item), "activate",
+                           G_CALLBACK
+                             (soylent_browser_person_action_email_menu_item_cb),
+                           NULL);
+
+                  gtk_menu_shell_append (GTK_MENU_SHELL (menu_email), item);
+                  gtk_widget_show (GTK_WIDGET (item));
+                  gtk_widget_set_sensitive (GTK_WIDGET (btntb_email), TRUE);
+                }
+
             }
         }
       else
         {
-          /* FIXME: don't short out here; set retval appropriately */
-          return TRUE;
+          /* TODO: implement this */
+          g_warning ("Unimplemented feature: multi-person email");
         }
     }
-  else
-    {
-      /* FIXME: don't short out here; set retval appropriately */
-      return TRUE;
-    }
-
-  email_addrs = e_contact_get (e_contact, E_CONTACT_EMAIL);
-  for (; email_addrs && (email_addr_cur = email_addrs->data);
-       email_addrs = g_list_next (email_addrs))
-    {
-      GtkWidget *item = NULL;
-
-      item = gtk_menu_item_new_with_label (email_addr_cur);
-      g_signal_connect
-                (G_OBJECT (item), "activate",
-                 G_CALLBACK (soylent_browser_person_action_email_menu_item_cb),
-                 NULL);
-
-      gtk_menu_shell_append (GTK_MENU_SHELL (menu_email), item);
-      gtk_widget_show (GTK_WIDGET (item));
-      gtk_widget_set_sensitive (GTK_WIDGET (btntb_email), TRUE);
-    }
 
-  /* FIXME: actually set this above, as appropriate */
   retval = TRUE;
 
   return retval;



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