soylent r105 - trunk/src
- From: treitter svn gnome org
- To: svn-commits-list gnome org
- Subject: soylent r105 - trunk/src
- Date: Sun, 16 Mar 2008 21:37:32 +0000 (GMT)
Author: treitter
Date: Sun Mar 16 21:37:32 2008
New Revision: 105
URL: http://svn.gnome.org/viewvc/soylent?rev=105&view=rev
Log:
continued soylent-browser-person-view.c cleanup
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 Sun Mar 16 21:37:32 2008
@@ -99,8 +99,8 @@
const gchar *param_val);
/* Setup/update sections of the person view UI with latest data from e-d-s */
-static void soylent_browser_person_view_update (SoylentBrowser *browser,
- SoylentPerson *person);
+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,
@@ -356,10 +356,15 @@
}
#else
{
- soylent_browser_person_view_update (browser, person);
+ gboolean view_update_retval = FALSE;
- retval = soylent_browser_view_set_mode (browser,
- SB_PEOPLE_VIEW_MODE_EDIT);
+ view_update_retval = soylent_browser_person_view_update (browser,
+ person);
+ if (view_update_retval)
+ {
+ retval = soylent_browser_view_set_mode (browser,
+ SB_PEOPLE_VIEW_MODE_EDIT);
+ }
}
#endif /* HAVE_CONTACTS_APP */
}
@@ -1623,15 +1628,21 @@
/* If we've found our match */
if (g_str_equal (e_uid, e_uid_cur))
{
- gboolean set_mode_retval = FALSE;
+ gboolean view_update_retval = FALSE;
+
+ view_update_retval = soylent_browser_person_view_update (browser,
+ person);
+ if (view_update_retval)
+ {
+ gboolean set_mode_retval = FALSE;
- soylent_browser_person_view_update (browser, person);
- set_mode_retval = soylent_browser_view_set_mode
+ set_mode_retval = soylent_browser_view_set_mode
(browser,
SB_PEOPLE_VIEW_MODE_EDIT);
- if (set_mode_retval)
- {
- retval = TRUE;
+ if (set_mode_retval)
+ {
+ retval = TRUE;
+ }
}
}
}
@@ -1906,7 +1917,7 @@
}
else if (GTK_IS_TEXT_VIEW (widget))
{
- GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
+ GtkTextBuffer *buf = NULL;
GtkTextIter start, end;
buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
@@ -1948,66 +1959,68 @@
/* FIXME: convert to support multivalued mail fields/widgets */
/* Propagate existing mailing address changes to the person-being-edited's
- * EContact */
+ * EContact
+ *
+ * Return TRUE for success, FALSE for any failure. */
static gboolean
soylent_browser_person_set_mail_fields_from_widgets (gpointer key,
gpointer value,
gpointer user_data)
{
+ gboolean retval = FALSE;
const gchar *widget_name = NULL;
EContactField e_contact_field = 0;
SoylentBrowser *browser = NULL;
GladeXML *wtree = NULL;
- const gchar *contents_new = NULL;
EContact *e_contact = NULL;
EContactAddress *addr = NULL;
const gchar *context_str = NULL;
guint fieldnum = 0;
+ g_return_val_if_fail (key != 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;
+ wtree = soylent_browser_get_widget_tree (browser);
+
widget_name = (const gchar*) key;
e_contact_field = *((EContactField*) value);
- browser = (SoylentBrowser *) user_data;
- wtree = soylent_browser_get_widget_tree (browser);
+
context_str = widget_name + 5;
e_contact = soylent_browser_get_selected_person_e_contact (browser);
addr = e_contact_get (e_contact, e_contact_field);
for (fieldnum = 0; fieldnum < MAIL_FIELDS_NUM; fieldnum++)
{
- GObject *widget_cur;
- gchar *widget_name = g_strdup_printf ("%s_person_mail_%s_%s",
- MAIL_WIDGET_TYPE_STRS[fieldnum],
- context_str,
- MAIL_FIELD_STRS[fieldnum]);
-
- widget_cur = G_OBJECT (glade_xml_get_widget (wtree, widget_name));
- g_free (widget_name);
+ GtkWidget *widget_cur = NULL;
+ gchar *widget_name = NULL;
+ const gchar *contents_new = NULL;
+ widget_name = g_strdup_printf ("%s_person_mail_%s_%s",
+ MAIL_WIDGET_TYPE_STRS[fieldnum],
+ context_str, MAIL_FIELD_STRS[fieldnum]);
+ widget_cur = glade_xml_get_widget (wtree, widget_name);
if (GTK_IS_ENTRY (widget_cur))
{
contents_new = gtk_entry_get_text (GTK_ENTRY (widget_cur));
}
else if (GTK_IS_TEXT_VIEW (widget_cur))
{
+ GtkTextBuffer *buf = NULL;
GtkTextIter start;
GtkTextIter end;
- widget_cur =
- G_OBJECT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget_cur)));
- gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (widget_cur), &start,
- &end);
- contents_new = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (widget_cur),
- &start, &end, FALSE);
- }
- else
- {
- g_warning ("got neither a GtkEntry nor GtkTextView for an address"
- "field widget");
- return TRUE;
+ buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget_cur));
+ gtk_text_buffer_get_bounds (buf, &start, &end);
+ contents_new = gtk_text_buffer_get_text (buf, &start, &end, FALSE);
}
e_contact_address_set_field (addr, MAIL_FIELD_STRS[fieldnum],
contents_new);
+ g_free (widget_name);
}
if (e_contact_address_is_empty (addr))
@@ -2024,7 +2037,9 @@
- E_CONTACT_FIRST_ADDRESS_ID + E_CONTACT_FIRST_LABEL_ID,
(gpointer) e_contact_address_to_label (addr));
- return TRUE;
+ retval = TRUE;
+
+ return retval;
}
/* FIXME: if this changes it to "" (deletes it), find matching EmpathyContact in
@@ -2056,59 +2071,67 @@
const gchar* widget_name,
const gchar* value)
{
+ gboolean retval = FALSE;
GladeXML *wtree = NULL;
GtkLabel *label = NULL;
const gchar *label_text = NULL;
gchar *proto_name_lc = NULL;
gchar *field_name = NULL;
EContactField field = 0;
- guint widget_num = 0;
gchar *context_str = NULL;
gchar *label_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 (e_contact != NULL, retval);
+ g_return_val_if_fail (E_IS_CONTACT (e_contact), retval);
+ g_return_val_if_fail (widget_name, retval);
+
wtree = soylent_browser_get_widget_tree (browser);
context_str = (gchar*) CONTEXT_STRS[CONTEXT_WORK];
label_str = g_strstr_len (widget_name, strlen (widget_name), "person");
label_str = g_strdup_printf ("label_%s", label_str);
label = GTK_LABEL (glade_xml_get_widget (wtree, label_str));
- if (label == NULL)
- {
- g_warning ("invalid widget (trying to save contents): %s", widget_name);
- return TRUE;
- }
-
label_text = gtk_label_get_text (label);
proto_name_lc = g_ascii_strdown (label_text, strlen (label_text));
field_name = g_strdup_printf ("im_%s", proto_name_lc);
field = e_contact_field_id (field_name);
context_str = (gchar*) CONTEXT_STRS[CONTEXT_WORK];
-
if (!g_strstr_len (widget_name, strlen (widget_name), context_str))
{
context_str = (gchar*) CONTEXT_STRS[CONTEXT_HOME];
- if (!g_strstr_len(widget_name, strlen (widget_name), context_str))
+ if (!g_strstr_len (widget_name, strlen (widget_name), context_str))
{
g_warning ("could not find a valid context in the widget name");
- return TRUE;
+ context_str = NULL;
}
}
- context_str = g_ascii_strup (context_str, -1);
+ if (context_str)
+ {
+ guint widget_num = 0;
+
+ /* FIXME: more error checking */
+ widget_num = g_ascii_strtoull (g_strrstr (label_str, "_") + 1, NULL, 10);
+
+ context_str = g_ascii_strup (context_str, -1);
+ e_vcard_attr_list_set_value (e_contact, field, context_str, widget_num,
+ value);
- /* FIXME: more error checking */
- widget_num = g_ascii_strtoull (g_strrstr (label_str, "_") + 1, NULL, 10);
+ retval = TRUE;
+ }
- e_vcard_attr_list_set_value (e_contact, field, context_str, widget_num,
- value);
g_free (label_str);
g_free (proto_name_lc);
g_free (field_name);
g_free (context_str);
- return TRUE;
+ return retval;
}
/* Save an email address for the person being edited
@@ -2196,27 +2219,36 @@
return retval;
}
-/* Update the entire Person View UI section */
-static void
+/* Update the entire Person View UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_view_update (SoylentBrowser *browser,
SoylentPerson *person)
{
- if (person)
- {
- 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);
- }
- else
- {
- g_warning ("invalid person\n");
- /* TODO: set everything as empty */
- }
+ 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);
+ */
+
+ 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;
+
+ return retval;
}
/* Update the Detail Add section widgets based on broader, related widgets
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]