soylent r92 - trunk/src
- From: treitter svn gnome org
- To: svn-commits-list gnome org
- Subject: soylent r92 - trunk/src
- Date: Sat, 8 Mar 2008 06:09:01 +0000 (GMT)
Author: treitter
Date: Sat Mar 8 06:09:01 2008
New Revision: 92
URL: http://svn.gnome.org/viewvc/soylent?rev=92&view=rev
Log:
clean up the detail_add_person_add_mail_attrs() function and its caller
Modified:
trunk/src/soylent-browser-person-view.c
trunk/src/soylent-browser-person-view.h
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 8 06:09:01 2008
@@ -81,8 +81,8 @@
static gboolean detail_add_person_add_attr (SoylentBrowser *browser,
const gchar *attr_name,
const gchar *param_val);
-static void detail_add_person_add_mail_attrs (SoylentBrowser *browser,
- const gchar *param_val);
+static gboolean detail_add_person_add_mail_attrs (SoylentBrowser *browser,
+ 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,
@@ -688,7 +688,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 (browser), NULL);
*/
wtree = soylent_browser_get_widget_tree (browser);
@@ -712,11 +712,13 @@
return retval;
}
-/* FIXME: make this boolean */
-/* Commit any new details to the person being edited */
-void
-commit_detail_add (GtkWidget *widget, gpointer user_data)
+/* Commit any new details to the person being edited
+ *
+ * Return TRUE for success, FALSE for any failure. */
+gboolean
+commit_detail_add (GtkWidget *btn_detail_add, gpointer user_data)
{
+ gboolean retval = FALSE;
SoylentBrowser *browser = NULL;
GladeXML *wtree = NULL;
GtkComboBox *cbox_domain = NULL;
@@ -726,12 +728,16 @@
gchar *param_val = NULL;
SoylentPerson *person = NULL;
+ 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);
+ */
+
browser = (SoylentBrowser*) user_data;
wtree = soylent_browser_get_widget_tree (browser);
cbox_domain = GTK_COMBO_BOX (glade_xml_get_widget (wtree,
"cbox_detail_domain"));
- entry_add = GTK_ENTRY (glade_xml_get_widget (wtree, "entry_detail_add"));
domain = gtk_combo_box_get_active_text (cbox_domain);
/* Make sure any changes to existing details between editing the new detail
@@ -770,6 +776,8 @@
else if (g_str_equal (domain, "Mailing Address"))
{
/* TODO: set the corresponding LABEL attribute that Evolution sets */
+ param_val = soylent_browser_detail_add_get_cbox_val (browser,
+ "cbox_detail_type");
attr_name = g_strdup (EVC_ADR);
}
else
@@ -781,28 +789,32 @@
{
if (g_str_equal (attr_name, EVC_ADR))
{
- /* FIXME: check the return value */
- detail_add_person_add_mail_attrs (browser, param_val);
+ retval = detail_add_person_add_mail_attrs (browser, param_val);
}
else
{
- /* FIXME: check the return value */
- detail_add_person_add_attr (browser, attr_name, param_val);
+ retval = detail_add_person_add_attr (browser, attr_name, param_val);
}
}
/* Make sure we actually commit these changes back */
- soylent_browser_person_view_save_changes (NULL, browser);
+ if (retval)
+ {
+ soylent_browser_person_view_save_changes (NULL, browser);
- person = soylent_browser_get_selected_person (browser);
- soylent_browser_person_view_update (browser, person);
+ person = soylent_browser_get_selected_person (browser);
+ soylent_browser_person_view_update (browser, person);
+ }
+ entry_add = GTK_ENTRY (glade_xml_get_widget (wtree, "entry_detail_add"));
gtk_entry_set_text (entry_add, "");
- gtk_widget_set_sensitive (widget, FALSE);
+ gtk_widget_set_sensitive (btn_detail_add, FALSE);
g_free (domain);
g_free (attr_name);
g_free (param_val);
+
+ return retval;
}
/* Hook up signal handlers for the Detail Add UI section widgets
@@ -1676,8 +1688,152 @@
return retval;
}
-/* Save a new mailing address for the person being edited */
-static void
+/* Save a new mailing address for the person being edited
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
+detail_add_person_add_mail_attrs (SoylentBrowser *browser,
+ const gchar *param_val)
+/*
+detail_add_person_add_attr (SoylentBrowser *browser, const gchar *attr_name,
+ const gchar *param_val)
+ */
+{
+ gboolean retval = FALSE;
+ GladeXML *wtree = NULL;
+ EVCard *e_vcard = NULL;
+
+ 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), retval);
+ */
+
+ wtree = soylent_browser_get_widget_tree (browser);
+
+ e_vcard = E_VCARD (soylent_browser_get_selected_person_e_contact (browser));
+ if (e_vcard && E_IS_VCARD (e_vcard))
+ {
+ EContactAddress *addr = NULL;
+
+ g_debug ("\n%s\n", e_vcard_to_string (e_vcard, EVC_FORMAT_VCARD_30));
+
+ addr = g_new (EContactAddress, 1);
+ if (addr)
+ {
+ GtkTextView *tv_add_street = NULL;
+ GtkTextBuffer *tb_add_street = NULL;
+ GtkEntry *entry_add_po = NULL;
+ GtkEntry *entry_add_locality = NULL;
+ GtkEntry *entry_add_region = NULL;
+ GtkEntry *entry_add_code = NULL;
+ GtkEntry *entry_add_country = NULL;
+ GtkTextIter start;
+ GtkTextIter end;
+ EVCardAttribute *attr = NULL;
+
+ /*
+ GtkEntry *entry_add = NULL;
+ const gchar *attr_val = NULL;
+ */
+
+ entry_add_po = GTK_ENTRY (glade_xml_get_widget
+ (wtree,
+ "entry_person_mail_add_po"));
+ entry_add_locality = GTK_ENTRY (glade_xml_get_widget
+ (wtree,
+ "entry_person_mail_add_locality"));
+ entry_add_region= GTK_ENTRY (glade_xml_get_widget
+ (wtree,
+ "entry_person_mail_add_region"));
+ entry_add_code = GTK_ENTRY (glade_xml_get_widget
+ (wtree,
+ "entry_person_mail_add_code"));
+ entry_add_country = GTK_ENTRY (glade_xml_get_widget
+ (wtree,
+ "entry_person_mail_add_country"));
+ tv_add_street = GTK_TEXT_VIEW (glade_xml_get_widget
+ (wtree,
+ "tv_person_mail_add_street"));
+ tb_add_street = gtk_text_view_get_buffer (tv_add_street);
+ gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (tb_add_street), &start,
+ &end);
+
+ /* next two are dummy - just so the e_contact_address_free() below
+ * doesn't cause a segfault */
+ addr->address_format = g_strdup ("");
+ addr->ext = g_strdup ("");
+ addr->po = g_strdup (gtk_entry_get_text (entry_add_po));
+ addr->street = g_strdup (gtk_text_buffer_get_text (tb_add_street,
+ &start, &end,
+ FALSE));
+ addr->locality = g_strdup (gtk_entry_get_text (entry_add_locality));
+ addr->region = g_strdup (gtk_entry_get_text (entry_add_region));
+ addr->country = g_strdup (gtk_entry_get_text (entry_add_country));
+ addr->code = g_strdup (gtk_entry_get_text (entry_add_code));
+
+ /*
+ entry_add = GTK_ENTRY (glade_xml_get_widget (wtree, "entry_detail_add"));
+ attr_val = gtk_entry_get_text (entry_add);
+ */
+
+
+ attr = e_vcard_attribute_new (NULL, EVC_ADR);
+ if (attr)
+ {
+ EVCardAttributeParam *param = NULL;
+
+ if (param_val)
+ {
+ param = e_vcard_attribute_param_new (EVC_TYPE);
+ e_vcard_attribute_add_param_with_value (attr, param,
+ param_val);
+ }
+
+ e_vcard_add_attribute_with_values (e_vcard, attr, addr->po, "",
+ addr->street, addr->locality,
+ addr->region, addr->code,
+ addr->country, NULL);
+
+ /* XXX: do we need to free attr and param here? */
+ attr = e_vcard_attribute_new (NULL, "LABEL");
+ if (attr)
+ {
+ if (param)
+ {
+ e_vcard_attribute_add_param
+ (attr,
+ e_vcard_attribute_param_copy (param));
+ }
+ e_vcard_add_attribute_with_value
+ (e_vcard, attr,
+ e_contact_address_to_label (addr));
+ }
+
+ e_contact_address_free (addr);
+
+
+
+
+ /* XXX: do we need to free attr and param here? */
+
+ /*
+ vcard = E_VCARD (soylent_browser_get_selected_person_e_contact (browser));
+ e_vcard_add_attribute_with_value (vcard, attr, attr_val);
+ */
+
+ retval = TRUE;
+ }
+ }
+ }
+
+ return retval;
+}
+
+#if 0
+/* Save a new mailing address for the person being edited
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
detail_add_person_add_mail_attrs (SoylentBrowser *browser,
const gchar *param_val)
{
@@ -1696,6 +1852,11 @@
GtkTextIter start;
GtkTextIter end;
+ 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);
+ */
+
wtree = soylent_browser_get_widget_tree (browser);
attr = e_vcard_attribute_new (NULL, EVC_ADR);
@@ -1715,7 +1876,8 @@
"entry_person_mail_add_country"));
gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (tb_add_street), &start, &end);
- /* next two are dummy - just so the _free() below doesn't cause a segfault */
+ /* next two are dummy - just so the e_contact_address_free() below doesn't
+ * cause a segfault */
addr->address_format = g_strdup ("");
addr->ext = g_strdup ("");
addr->po = g_strdup (gtk_entry_get_text (entry_add_po));
@@ -1726,7 +1888,6 @@
addr->country = g_strdup (gtk_entry_get_text (entry_add_country));
addr->code = g_strdup (gtk_entry_get_text (entry_add_code));
- /* TODO: Also need to set TYPE=VOICE for phone, etc. */
param = e_vcard_attribute_param_new (EVC_TYPE);
if (!param_val)
@@ -1757,6 +1918,7 @@
/* XXX: do we need to free attr and param here? */
}
+#endif
/* Save edits to the current person's existing details */
static gboolean
Modified: trunk/src/soylent-browser-person-view.h
==============================================================================
--- trunk/src/soylent-browser-person-view.h (original)
+++ trunk/src/soylent-browser-person-view.h Sat Mar 8 06:09:01 2008
@@ -70,7 +70,7 @@
gchar* soylent_browser_detail_add_get_cbox_val (SoylentBrowser *browser,
const gchar *cbox_name);
gchar* soylent_browser_detail_add_get_web_attr_name (SoylentBrowser *browser);
-void commit_detail_add (GtkWidget *widget, gpointer user_data);
+gboolean commit_detail_add (GtkWidget *widget, gpointer user_data);
/* Setup/update sections of the person view UI with latest data from e-d-s */
void btn_detail_add_update (GtkWidget *widget, gpointer user_data);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]