soylent r106 - trunk/src
- From: treitter svn gnome org
- To: svn-commits-list gnome org
- Subject: soylent r106 - trunk/src
- Date: Mon, 17 Mar 2008 00:44:23 +0000 (GMT)
Author: treitter
Date: Mon Mar 17 00:44:23 2008
New Revision: 106
URL: http://svn.gnome.org/viewvc/soylent?rev=106&view=rev
Log:
More soylent-browser-person-view.c work; in the middle of cleaning up soylent_browser_person_view_im_update(), but it's better than it was
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 Mon Mar 17 00:44:23 2008
@@ -101,22 +101,27 @@
/* Setup/update sections of the person view UI with latest data from e-d-s */
static gboolean soylent_browser_person_view_update (SoylentBrowser *browser,
SoylentPerson *person);
-static void soylent_browser_person_view_email_update (SoylentBrowser *browser,
- SoylentPerson *person);
-static void soylent_browser_person_view_im_update (SoylentBrowser *browser,
- SoylentPerson *person);
-static void soylent_browser_person_view_avatar_update (SoylentBrowser *browser,
+static gboolean soylent_browser_person_view_email_update
+ (SoylentBrowser *browser,
+ SoylentPerson *person);
+static gboolean soylent_browser_person_view_im_update (SoylentBrowser *browser,
+ SoylentPerson *person);
+static gboolean soylent_browser_person_view_avatar_update
+ (SoylentBrowser *browser,
+ SoylentPerson *person);
+static gboolean soylent_browser_person_view_mail_update
+ (SoylentBrowser *browser,
+ SoylentPerson *person);
+static gboolean soylent_browser_person_view_name_update
+ (SoylentBrowser *browser,
SoylentPerson *person);
-static void soylent_browser_person_view_mail_update (SoylentBrowser *browser,
- SoylentPerson *person);
-static void soylent_browser_person_view_name_update (SoylentBrowser *browser,
- SoylentPerson *person);
-static void soylent_browser_person_view_detail_add_update
+static gboolean soylent_browser_person_view_detail_add_update
(SoylentBrowser *browser);
-static void soylent_browser_person_view_phone_update (SoylentBrowser *browser,
- SoylentPerson *person);
-static void soylent_browser_person_view_web_update (SoylentBrowser *browser,
- SoylentPerson *person);
+static gboolean soylent_browser_person_view_phone_update
+ (SoylentBrowser *browser,
+ SoylentPerson *person);
+static gboolean soylent_browser_person_view_web_update (SoylentBrowser *browser,
+ SoylentPerson *person);
/* Save unsaved changes to the person's details and return to Browse Mode
*
@@ -2237,17 +2242,17 @@
g_return_val_if_fail (SOYLENT_IS_PERSON (PERSON), retval);
*/
- soylent_browser_person_view_phone_update (browser, person);
- soylent_browser_person_view_im_update (browser, person);
- soylent_browser_person_view_email_update (browser, person);
- soylent_browser_person_view_mail_update (browser, person);
- soylent_browser_person_view_web_update (browser, person);
- soylent_browser_person_view_name_update (browser, person);
- soylent_browser_person_view_avatar_update (browser, person);
- soylent_browser_person_view_detail_add_update (browser);
-
retval = TRUE;
+ retval &= soylent_browser_person_view_phone_update (browser, person);
+ retval &= soylent_browser_person_view_im_update (browser, person);
+ retval &= soylent_browser_person_view_email_update (browser, person);
+ retval &= soylent_browser_person_view_mail_update (browser, person);
+ retval &= soylent_browser_person_view_web_update (browser, person);
+ retval &= soylent_browser_person_view_name_update (browser, person);
+ retval &= soylent_browser_person_view_avatar_update (browser, person);
+ retval &= soylent_browser_person_view_detail_add_update (browser);
+
return retval;
}
@@ -2255,51 +2260,71 @@
*
* Eg, if we set the Type of Detail combo box to Mailing Address, display the
* mailing address field widgets and hide the single GtkEntry for single-value
- * details */
-static void
+ * details
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_detail_add_update (SoylentBrowser *browser)
{
+ gboolean retval = FALSE;
+ gboolean cbox_setup_retval = FALSE;
GladeXML *wtree = NULL;
GtkEntry *entry_detail_add = NULL;
gint i = 0;
- wtree = soylent_browser_get_widget_tree (browser);
+ g_return_val_if_fail (browser != NULL, retval);
+ /* FIXME: uncomment once SoylentBrowser is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+ */
+ wtree = soylent_browser_get_widget_tree (browser);
entry_detail_add = GTK_ENTRY (glade_xml_get_widget (wtree,
"entry_detail_add"));
- soylent_browser_person_detail_add_cbox_setup (browser, FALSE);
- gtk_entry_set_text (entry_detail_add, "");
+ cbox_setup_retval = soylent_browser_person_detail_add_cbox_setup (browser,
+ FALSE);
+ if (cbox_setup_retval)
+ {
+ gtk_entry_set_text (entry_detail_add, "");
+
+ /* Set up 'changed' signals for the mail "Detail Add" fields */
+ for (i = 0; i < MAIL_FIELDS_NUM; i++)
+ {
+ GtkWidget *widget_cur = NULL;
+ gchar *widget_name = NULL;
+
+ widget_name = g_strdup_printf ("%s_person_mail_add_%s",
+ MAIL_WIDGET_TYPE_STRS[i],
+ MAIL_FIELD_STRS[i]);
+ widget_cur = glade_xml_get_widget (wtree, widget_name);
+ if (GTK_IS_TEXT_VIEW (widget_cur))
+ {
+ GtkTextBuffer *buf = NULL;
- /* Set up 'changed' signals for the mail "Detail Add" fields */
- for (i = 0; i < MAIL_FIELDS_NUM; i++)
- {
- GObject *widget_cur = NULL;
- gchar *widget_name = NULL;
+ buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget_cur));
+ gtk_text_buffer_set_text (buf, "", -1);
+ }
+ else if (GTK_IS_ENTRY (widget_cur))
+ {
+ gtk_entry_set_text (GTK_ENTRY (widget_cur), "");
+ }
- widget_name = g_strdup_printf ("%s_person_mail_add_%s",
- MAIL_WIDGET_TYPE_STRS[i],
- MAIL_FIELD_STRS[i]);
- widget_cur = G_OBJECT (glade_xml_get_widget (wtree, widget_name));
- if (GTK_IS_TEXT_VIEW (widget_cur))
- {
- widget_cur =
- G_OBJECT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget_cur)));
- gtk_text_buffer_set_text (GTK_TEXT_BUFFER (widget_cur), "", -1);
- }
- else if (GTK_IS_ENTRY (widget_cur))
- {
- gtk_entry_set_text (GTK_ENTRY (widget_cur), "");
+ g_free (widget_name);
}
- g_free (widget_name);
+ retval = TRUE;
}
+
+ return retval;
}
-/* Update the Person View:Email UI section */
-static void
+/* Update the Person View:Email UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_email_update (SoylentBrowser *browser,
SoylentPerson *person)
{
+ gboolean retval = FALSE;
GladeXML *wtree = NULL;
EContact *e_contact = NULL;
GtkEntry *entry_email = NULL;
@@ -2307,253 +2332,314 @@
gchar *widget_str = NULL;
gchar *email_str = NULL;
guint email_list_pos = 0;
- GList *email_strs_head = NULL;
GList *l = NULL;
- guint num_entries_set_email = 0;
+ guint num_entries_set = 0;
GtkFrame *frame_email = NULL;
GtkFixed *fixed_email = NULL;
- wtree = soylent_browser_get_widget_tree (browser);
- e_contact = soylent_person_get_e_contact (person);
+ g_return_val_if_fail (browser != NULL, retval);
+ /* FIXME: uncomment once SoylentBrowser is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+ */
+ g_return_val_if_fail (person != NULL, retval);
+ /* FIXME: uncomment once SoylentPerson is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_PERSON (PERSON), retval);
+ */
+ wtree = soylent_browser_get_widget_tree (browser);
frame_email = GTK_FRAME (glade_xml_get_widget (wtree, "frame_person_email"));
fixed_email = GTK_FIXED (glade_xml_get_widget (wtree, "fixed_person_email"));
- email_strs_head = e_contact_get (e_contact, E_CONTACT_EMAIL);
- for (l = email_strs_head;
- l && email_list_pos < MAX_GUI_EMAIL;
- l = g_list_next (l), email_list_pos++)
- {
- widget_str = g_strdup_printf ("entry_person_email_%c",
- '1' + email_list_pos);
- entry_email = GTK_ENTRY (glade_xml_get_widget (wtree, widget_str));
- g_free (widget_str);
-
- widget_str = g_strdup_printf ("hbox_person_email_%c",
- '1' + email_list_pos);
- hbox_email = GTK_HBOX (glade_xml_get_widget (wtree, widget_str));
- g_free (widget_str);
+ e_contact = soylent_person_get_e_contact (person);
+ if (e_contact && E_IS_CONTACT (e_contact))
+ {
+ GList *email_strs_head = NULL;
- email_str = (gchar*) l->data;
+ /* Display up to MAX_GUI_EMAIL email addresses in the Email section of the
+ * person editor */
+ email_strs_head = e_contact_get (e_contact, E_CONTACT_EMAIL);
+ for (l = email_strs_head;
+ l && email_list_pos < MAX_GUI_EMAIL;
+ l = g_list_next (l), email_list_pos++)
+ {
+ widget_str = g_strdup_printf ("entry_person_email_%c",
+ '1' + email_list_pos);
+ entry_email = GTK_ENTRY (glade_xml_get_widget (wtree, widget_str));
+ g_free (widget_str);
+
+ widget_str = g_strdup_printf ("hbox_person_email_%c",
+ '1' + email_list_pos);
+ hbox_email = GTK_HBOX (glade_xml_get_widget (wtree, widget_str));
+ g_free (widget_str);
- if (email_str)
- {
- entry_set_text_block_handler
- (entry_email, email_str,
- soylent_browser_person_entry_changed_e_contact_cb);
- gtk_widget_show (GTK_WIDGET (hbox_email));
- num_entries_set_email++;
+ email_str = (gchar*) l->data;
+ if (email_str)
+ {
+ entry_set_text_block_handler
+ (entry_email, email_str,
+ soylent_browser_person_entry_changed_e_contact_cb);
+ gtk_widget_show (GTK_WIDGET (hbox_email));
+ num_entries_set++;
+ }
+ else
+ {
+ gtk_widget_hide (GTK_WIDGET (hbox_email));
+ }
+
+ g_free (email_str);
}
- else
+
+ /* If the number of email addresses > MAX_GUI_EMAIL, free the strings we
+ * couldn't display */
+ for (; l; l = g_list_next (l))
{
- gtk_widget_hide (GTK_WIDGET (hbox_email));
+ email_str = (gchar*) l->data;
+ g_free (email_str);
}
+ g_list_free (email_strs_head);
- g_free (email_str);
- }
-
- /* Make sure we free any allocated email strings beyond MAX_GUI_EMAIL */
- for (; l; l = g_list_next (l))
- {
- email_str = (gchar*) l->data;
- g_free (email_str);
- }
+ /* If the number of email addresses < MAX_GUI_EMAIL, hide unused email
+ * GtkEntrys */
+ for (; email_list_pos < MAX_GUI_EMAIL; email_list_pos++)
+ {
+ widget_str = g_strdup_printf ("hbox_person_email_%c",
+ '1' + email_list_pos);
+ hbox_email = GTK_HBOX (glade_xml_get_widget (wtree, widget_str));
+ g_free (widget_str);
- g_list_free (email_strs_head);
+ gtk_widget_hide (GTK_WIDGET (hbox_email));
+ }
- for (; email_list_pos < MAX_GUI_EMAIL; email_list_pos++)
- {
- widget_str = g_strdup_printf ("hbox_person_email_%c",
- '1' + email_list_pos);
- hbox_email = GTK_HBOX (glade_xml_get_widget (wtree, widget_str));
- g_free (widget_str);
+ if (num_entries_set == 0)
+ {
+ gtk_widget_hide (GTK_WIDGET (frame_email));
+ gtk_widget_hide (GTK_WIDGET (fixed_email));
+ }
+ else
+ {
+ gtk_widget_show (GTK_WIDGET (frame_email));
+ gtk_widget_show (GTK_WIDGET (fixed_email));
+ }
- gtk_widget_hide (GTK_WIDGET (hbox_email));
+ retval = TRUE;
}
- if (num_entries_set_email == 0)
- {
- gtk_widget_hide (GTK_WIDGET (frame_email));
- gtk_widget_hide (GTK_WIDGET (fixed_email));
- return;
- }
-
- gtk_widget_show (GTK_WIDGET (frame_email));
- gtk_widget_show (GTK_WIDGET (fixed_email));
+ return retval;
}
/* FIXME - this needs a stick of live dynamite throw its way */
-/* Update the Person View:IM UI section */
-static void
+/* Update the Person View:IM UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_im_update (SoylentBrowser *browser,
SoylentPerson *person)
{
+ gboolean retval = FALSE;
const guint CONTEXT_NUM = 2;
- const guint NUM_PROTO = 6;
- guint entry_num[2];
+ const guint PROTO_NUM = 6;
+ const guint ENTRY_POS_INIT = 0;
+ guint entry_pos[2];
GladeXML *wtree = NULL;
EContact *e_contact = NULL;
- GtkLabel *label_im = NULL;
- GtkEntry *entry_im = NULL;
- GtkHBox *hbox_im = NULL;
- GtkFrame *frame_im = NULL;
- GtkFrame *frame_im_work = NULL;
- GtkFrame *frame_im_home = NULL;
- GtkFixed *fixed_im_work = NULL;
- GtkFixed *fixed_im_home = NULL;
- frame_im = NULL;
- frame_im_work = NULL;
- frame_im_home = NULL;
- fixed_im_work = NULL;
- fixed_im_home = NULL;
- gchar *widget_str = NULL;
- guint context = 0;
- guint proto = 0;
const gchar *im_name = NULL;
- GList *im_attr_list = NULL;
- GList *l = NULL;
EVCardAttribute *attr = NULL;
+ g_return_val_if_fail (browser != NULL, retval);
+ /* FIXME: uncomment once SoylentBrowser is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+ */
+ g_return_val_if_fail (person != NULL, retval);
+ /* FIXME: uncomment once SoylentPerson is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_PERSON (PERSON), retval);
+ */
+
wtree = soylent_browser_get_widget_tree (browser);
e_contact = soylent_person_get_e_contact (person);
- frame_im = GTK_FRAME (glade_xml_get_widget (wtree, "frame_person_im"));
- frame_im_work = GTK_FRAME (glade_xml_get_widget (wtree,
- "frame_person_im_work"));
- frame_im_home = GTK_FRAME (glade_xml_get_widget (wtree,
- "frame_person_im_home"));
- fixed_im_work = GTK_FIXED (glade_xml_get_widget (wtree,
- "fixed_person_im_work"));
- fixed_im_home = GTK_FIXED (glade_xml_get_widget (wtree,
- "fixed_person_im_home"));
- entry_num[CONTEXT_HOME] = entry_num[CONTEXT_WORK] = 1;
-
- for (proto = E_CONTACT_IM_AIM; proto < E_CONTACT_IM_AIM + NUM_PROTO; proto++)
+ if (e_contact && E_IS_CONTACT (e_contact))
{
- im_attr_list = e_contact_get_attributes (e_contact, proto);
+ guint context = 0;
+ guint proto = 0;
- for (context = CONTEXT_FIRST; context < CONTEXT_NUM; context++)
+ entry_pos[CONTEXT_HOME] = entry_pos[CONTEXT_WORK] = ENTRY_POS_INIT;
+ for (proto = E_CONTACT_IM_AIM;
+ proto < (E_CONTACT_IM_AIM + PROTO_NUM);
+ proto++)
{
- for (l = im_attr_list; l; l = g_list_next(l))
+ for (context = CONTEXT_FIRST; context < CONTEXT_NUM; context++)
{
- GList *param_type_value = NULL;
+ GList *im_attr_list = NULL;
+ GList *l = NULL;
- if (entry_num[context] > IM_FIELDS_PER_CONTEXT)
+ im_attr_list = e_contact_get_attributes (e_contact, proto);
+ for (l = im_attr_list; l; l = g_list_next(l))
{
- break;
- }
+ GtkHBox *hbox_im = NULL;
+ GtkLabel *label_im = NULL;
+ GtkEntry *entry_im = NULL;
+ GList *param_type_value = NULL;
+ gchar *widget_str = NULL;
- attr = l->data;
- im_name = e_vcard_attribute_get_value (attr);
+ if (entry_pos[context] >= IM_FIELDS_PER_CONTEXT)
+ {
+ break;
+ }
- param_type_value = e_vcard_attribute_get_param (attr, EVC_TYPE);
+ attr = l->data;
+ im_name = e_vcard_attribute_get_value (attr);
- widget_str = g_strdup_printf ("hbox_person_im_%s_%c",
- CONTEXT_STRS[context],
- '0' + entry_num[context]);
- hbox_im = GTK_HBOX (glade_xml_get_widget (wtree, widget_str));
- g_free (widget_str);
+ param_type_value = e_vcard_attribute_get_param (attr,
+ EVC_TYPE);
- /* "HOME" is the catch-all, since that's how Evo does it */
- if ((context != CONTEXT_HOME
- && !(param_type_value
- && (g_ascii_strcasecmp (param_type_value->data,
- CONTEXT_STRS[context]) == 0)))
- || (context == CONTEXT_HOME
- && !(param_type_value
- && (g_ascii_strcasecmp (param_type_value->data,
- CONTEXT_STRS[CONTEXT_HOME])
- == 0))))
- {
- continue;
+ widget_str = g_strdup_printf ("hbox_person_im_%s_%c",
+ CONTEXT_STRS[context],
+ '1' + entry_pos[context]);
+ hbox_im = GTK_HBOX (glade_xml_get_widget (wtree, widget_str));
+ g_free (widget_str);
+
+ /* "HOME" is the catch-all, since that's how Evo does it */
+ if ( (context != CONTEXT_HOME
+ && !(param_type_value
+ && (g_ascii_strcasecmp (param_type_value->data,
+ CONTEXT_STRS[context])
+ == 0)))
+ || (context == CONTEXT_HOME
+ && !(param_type_value
+ && (g_ascii_strcasecmp
+ (param_type_value->data,
+ CONTEXT_STRS[CONTEXT_HOME])
+ == 0))))
+ {
+ continue;
+ }
+
+ widget_str = g_strdup_printf ("entry_person_im_%s_%c",
+ CONTEXT_STRS[context],
+ '1' + entry_pos[context]);
+
+ entry_im = GTK_ENTRY (glade_xml_get_widget (wtree,
+ widget_str));
+ g_free (widget_str);
+
+ widget_str = g_strdup_printf ("label_person_im_%s_%c",
+ CONTEXT_STRS[context],
+ '1' + entry_pos[context]);
+
+ label_im = GTK_LABEL (glade_xml_get_widget (wtree,
+ widget_str));
+ g_free (widget_str);
+
+ if (im_name)
+ {
+ gtk_label_set_text
+ (label_im,
+ e_vcard_attribute_get_name (attr) + 2);
+ entry_set_text_block_handler
+ (entry_im, im_name,
+ soylent_browser_person_entry_changed_e_contact_cb);
+
+ gtk_widget_show (GTK_WIDGET (hbox_im));
+ }
+
+ entry_pos[context]++;
}
+ }
+ }
- widget_str = g_strdup_printf ("entry_person_im_%s_%c",
- CONTEXT_STRS[context],
- '0' + entry_num[context]);
+ /* Show or hide frames depending on whether their contents were updated
+ * above */
+ {
+ GtkFrame *frame_im = NULL;
+ guint i = 0;
+ guint frames_visible = 0;
- entry_im = GTK_ENTRY (glade_xml_get_widget (wtree, widget_str));
- g_free (widget_str);
+ frame_im = GTK_FRAME (glade_xml_get_widget (wtree,
+ "frame_person_im"));
- widget_str = g_strdup_printf ("label_person_im_%s_%c",
- CONTEXT_STRS[context],
- '0' + entry_num[context]);
+ for (i = 0; i < CONTEXT_NUM; i++)
+ {
+ GtkFrame *frame_im_cur = NULL;
+ gchar *widget_str = NULL;
- label_im = GTK_LABEL (glade_xml_get_widget (wtree, widget_str));
- g_free (widget_str);
+ widget_str = g_strdup_printf ("frame_person_im_%s",
+ CONTEXT_STRS[i]);
+ frame_im_cur = GTK_FRAME (glade_xml_get_widget (wtree,
+ widget_str));
- if (im_name)
+ if (entry_pos[i] == ENTRY_POS_INIT)
{
- gtk_label_set_text (label_im,
- e_vcard_attribute_get_name (attr) + 2);
- entry_set_text_block_handler
- (entry_im, im_name,
- soylent_browser_person_entry_changed_e_contact_cb);
-
- gtk_widget_show (GTK_WIDGET (hbox_im));
+ gtk_widget_hide (GTK_WIDGET (frame_im_cur));
+ }
+ else
+ {
+ frames_visible++;
+ gtk_widget_show (GTK_WIDGET (frame_im_cur));
}
- entry_num[context]++;
+ g_free (widget_str);
}
- }
- }
-
- if (entry_num[CONTEXT_HOME] == 1 && entry_num[CONTEXT_WORK] == 1)
- {
- gtk_widget_hide (GTK_WIDGET (frame_im));
- }
- else
- {
- if (entry_num[CONTEXT_WORK] == 1)
- {
- gtk_widget_hide (GTK_WIDGET (frame_im_work));
- }
- else
- {
- gtk_widget_show (GTK_WIDGET (frame_im_work));
- }
- if (entry_num[CONTEXT_HOME] == 1)
- {
- gtk_widget_hide (GTK_WIDGET (frame_im_home));
- }
- else
- {
- gtk_widget_show (GTK_WIDGET (frame_im_home));
+ if (frames_visible > 0)
+ {
+ gtk_widget_show (GTK_WIDGET (frame_im));
+ }
+ else
+ {
+ gtk_widget_hide (GTK_WIDGET (frame_im));
+ }
}
- gtk_widget_show (GTK_WIDGET (frame_im));
- }
-
- /* Hide unfilled hboxes (if the lists combined contain fewer entries in each
- * context than IM_FIELDS_PER_CONTEXT) */
- for (context = CONTEXT_FIRST; context < CONTEXT_NUM; context++)
- {
- for (; entry_num[context] <= IM_FIELDS_PER_CONTEXT; entry_num[context]++)
+ /* Hide unfilled hboxes (if the lists combined contain fewer entries in
+ * each context than IM_FIELDS_PER_CONTEXT) */
+ for (context = CONTEXT_FIRST; context < CONTEXT_NUM; context++)
{
- widget_str = g_strdup_printf ("hbox_person_im_%s_%c",
- CONTEXT_STRS[context],
- '0' + entry_num[context]);
- hbox_im = GTK_HBOX (glade_xml_get_widget (wtree, widget_str));
+ for (; entry_pos[context] < IM_FIELDS_PER_CONTEXT; entry_pos[context]++)
+ {
+ gchar *widget_str = NULL;
+ GtkHBox *hbox_im = NULL;
+
+ widget_str = g_strdup_printf ("hbox_person_im_%s_%c",
+ CONTEXT_STRS[context],
+ '1' + entry_pos[context]);
+ hbox_im = GTK_HBOX (glade_xml_get_widget (wtree, widget_str));
- gtk_widget_hide (GTK_WIDGET (hbox_im));
- g_free (widget_str);
+ gtk_widget_hide (GTK_WIDGET (hbox_im));
+ g_free (widget_str);
+ }
}
- }
+
+ /* FIXME: actually set this appropriately above */
+ retval = TRUE;
+ }
+
+ return retval;
}
-/* Update the Person View:Avatar UI section */
-static void
+/* Update the Person View:Avatar UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_avatar_update (SoylentBrowser *browser,
SoylentPerson *person)
{
+ gboolean retval = FALSE;
GladeXML *wtree = NULL;
EContact *e_contact = NULL;
GtkImage *img_person_view = NULL;
EContactPhoto *photo = NULL;
GdkPixbuf *pixbuf = NULL;
+ g_return_val_if_fail (browser != NULL, retval);
+ /* FIXME: uncomment once SoylentBrowser is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+ */
+ g_return_val_if_fail (person != NULL, retval);
+ /* FIXME: uncomment once SoylentPerson is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_PERSON (PERSON), retval);
+ */
+
wtree = soylent_browser_get_widget_tree (browser);
e_contact = soylent_person_get_e_contact (person);
img_person_view = GTK_IMAGE (glade_xml_get_widget (wtree, "img_person_view"));
@@ -2584,14 +2670,22 @@
gtk_image_clear (img_person_view);
/* FIXME - probably need to free the pixbuf and the photo */
}
+
+ /* FIXME: actually set this appropriately above */
+ retval = TRUE;
+
+ return retval;
}
-/* Update the Person View:Mail UI section */
-static void
+/* Update the Person View:Mail UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_mail_update (SoylentBrowser *browser,
SoylentPerson *person)
{
const guint CONTEXT_NUM = 3;
+ gboolean retval = FALSE;
GladeXML *wtree = NULL;
EContact *e_contact = NULL;
GtkFrame *frame_mail = NULL;
@@ -2599,6 +2693,14 @@
guint frames_visible = 0;
const EContactAddress *addr = NULL;
+ g_return_val_if_fail (browser != NULL, retval);
+ /* FIXME: uncomment once SoylentBrowser is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+ */
+ g_return_val_if_fail (person != NULL, retval);
+ /* FIXME: uncomment once SoylentPerson is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_PERSON (PERSON), retval);
+ */
wtree = soylent_browser_get_widget_tree (browser);
e_contact = soylent_person_get_e_contact (person);
frame_mail = GTK_FRAME (glade_xml_get_widget (wtree, "frame_person_mail"));
@@ -2695,10 +2797,17 @@
g_assert (GTK_IS_WIDGET (frame_mail));
gtk_widget_hide (GTK_WIDGET (frame_mail));
}
+
+ /* FIXME: actually set this appropriately above */
+ retval = TRUE;
+
+ return retval;
}
-/* Update the Person View:Name UI section */
-static void
+/* Update the Person View:Name UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_name_update (SoylentBrowser *browser,
SoylentPerson *person)
{
@@ -2707,6 +2816,16 @@
GtkEntry *entry_name = NULL;
const gchar *name = NULL;
+gboolean retval = FALSE;
+
+ g_return_val_if_fail (browser != NULL, retval);
+ /* FIXME: uncomment once SoylentBrowser is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+ */
+ g_return_val_if_fail (person != NULL, retval);
+ /* FIXME: uncomment once SoylentPerson is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_PERSON (PERSON), retval);
+ */
wtree = soylent_browser_get_widget_tree (browser);
e_contact = soylent_person_get_e_contact (person);
entry_name = GTK_ENTRY (glade_xml_get_widget (wtree, "entry_person_name"));
@@ -2721,10 +2840,17 @@
soylent_debug ("\n%s\n",
e_vcard_to_string (E_VCARD (e_contact), EVC_FORMAT_VCARD_30));
*/
+
+ /* FIXME: actually set this appropriately above */
+ retval = TRUE;
+
+ return retval;
}
-/* Update the Person View:Phone UI section */
-static void
+/* Update the Person View:Phone UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_phone_update (SoylentBrowser *browser,
SoylentPerson *person)
{
@@ -2734,6 +2860,7 @@
const gchar *context_list[] = {"work", "home", "cell",};
const guint NUM_CONTEXT = 3;
const guint CONTEXT_POS_WORK = 0;
+ gboolean retval = FALSE;
GladeXML *wtree = NULL;
EContact *e_contact = NULL;
GtkEntry *entry_phone = NULL;
@@ -2745,9 +2872,17 @@
* position in CONTEXT_STRS and have this loop skip over CONTEXT_OTHER */
gchar *widget_str = NULL;
guint context = 0;
- guint num_entries_set_phone = 0;
+ guint num_entries_set = 0;
const gchar *phone_str = NULL;
+ g_return_val_if_fail (browser != NULL, retval);
+ /* FIXME: uncomment once SoylentBrowser is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+ */
+ g_return_val_if_fail (person != NULL, retval);
+ /* FIXME: uncomment once SoylentPerson is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_PERSON (PERSON), retval);
+ */
wtree = soylent_browser_get_widget_tree (browser);
e_contact = soylent_person_get_e_contact (person);
frame_phone = GTK_FRAME (glade_xml_get_widget (wtree, "frame_person_phone"));
@@ -2772,7 +2907,7 @@
entry_set_text_block_handler
(entry_phone, phone_str,
soylent_browser_person_entry_changed_e_contact_cb);
- num_entries_set_phone++;
+ num_entries_set++;
gtk_widget_show (GTK_WIDGET (hbox_phone));
}
@@ -2782,22 +2917,29 @@
}
}
- if (num_entries_set_phone == 0)
+ /* FIXME We should probably include at least some of the other phone numbers*/
+
+ if (num_entries_set == 0)
{
gtk_widget_hide (GTK_WIDGET (frame_phone));
gtk_widget_hide (GTK_WIDGET (fixed_phone));
-
- return;
+ }
+ else
+ {
+ gtk_widget_show (GTK_WIDGET (frame_phone));
+ gtk_widget_show (GTK_WIDGET (fixed_phone));
}
- /* FIXME We should probably include at least some of the other phone numbers*/
+ /* FIXME: actually set this appropriately above */
+ retval = TRUE;
- gtk_widget_show (GTK_WIDGET (frame_phone));
- gtk_widget_show (GTK_WIDGET (fixed_phone));
+ return retval;
}
-/* Update the Person View:Web URLs UI section */
-static void
+/* Update the Person View:Web URLs UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_web_update (SoylentBrowser *browser,
SoylentPerson *person)
{
@@ -2807,6 +2949,7 @@
E_CONTACT_VIDEO_URL,};
const guint NUM_TYPE = 4;
const gchar *type_list[] = {"homepage", "blog", "calendar", "video",};
+ gboolean retval = FALSE;
GladeXML *wtree = NULL;
EContact *e_contact = NULL;
GtkEntry *entry_web = NULL;
@@ -2817,6 +2960,15 @@
guint num_entries_set = 0;
const gchar *web_name = NULL;
+
+ g_return_val_if_fail (browser != NULL, retval);
+ /* FIXME: uncomment once SoylentBrowser is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+ */
+ g_return_val_if_fail (person != NULL, retval);
+ /* FIXME: uncomment once SoylentPerson is a GObject:
+ g_return_val_if_fail (SOYLENT_IS_PERSON (PERSON), retval);
+ */
wtree = soylent_browser_get_widget_tree (browser);
e_contact = soylent_person_get_e_contact (person);
frame_web = GTK_FRAME (glade_xml_get_widget (wtree, "frame_person_web"));
@@ -2860,6 +3012,11 @@
{
gtk_widget_show (GTK_WIDGET (frame_web));
}
+
+ /* FIXME: actually set this appropriately above */
+ retval = TRUE;
+
+ return retval;
}
/* Return an uppercased copy of the contents of the given GtkComboBox or NULL
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]