soylent r91 - trunk/src
- From: treitter svn gnome org
- To: svn-commits-list gnome org
- Subject: soylent r91 - trunk/src
- Date: Fri, 7 Mar 2008 06:36:32 +0000 (GMT)
Author: treitter
Date: Fri Mar 7 06:36:31 2008
New Revision: 91
URL: http://svn.gnome.org/viewvc/soylent?rev=91&view=rev
Log:
continued commit_detail_add() cleanups
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 Fri Mar 7 06:36:31 2008
@@ -643,6 +643,8 @@
return retval;
}
+/* Return an uppercased copy of the contents of the given GtkComboBox or NULL
+ * for any failure. */
gchar*
soylent_browser_detail_add_get_cbox_val (SoylentBrowser *browser,
const gchar *cbox_name)
@@ -668,6 +670,48 @@
return retval;
}
+/* Return a copy of the VCard name for the active Detail Add:Web GtkComboBox or
+ * NULL for any failure. */
+gchar*
+soylent_browser_detail_add_get_web_attr_name (SoylentBrowser *browser)
+{
+ const gchar *menu_strs[] = {"Home Page", "Blog", "Calendar", "Video Phone",
+ NULL,};
+ const gchar *attr_strs[] = {EVC_URL, EVC_X_BLOG_URL, EVC_CALURI,
+ EVC_X_VIDEO_URL, NULL,};
+
+ gchar *retval = NULL;
+ GladeXML *wtree = NULL;
+ GtkComboBox *cbox = NULL;
+ gchar *attr_val_menu = NULL;
+ guint i;
+
+ 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);
+ */
+
+ wtree = soylent_browser_get_widget_tree (browser);
+ cbox = GTK_COMBO_BOX (glade_xml_get_widget (wtree, "cbox_detail_type_web"));
+ attr_val_menu = gtk_combo_box_get_active_text (cbox);
+ for (i = 0; menu_strs[i] != NULL; i++)
+ {
+ if (g_str_equal (attr_val_menu, menu_strs[i]))
+ {
+ retval = g_strdup (attr_strs[i]);
+ }
+ }
+
+ if (!retval)
+ {
+ g_warning ("Didn't find a supported VCard attr. name in menu");
+ }
+
+ g_free (attr_val_menu);
+
+ return retval;
+}
+
/* FIXME: make this boolean */
/* Commit any new details to the person being edited */
void
@@ -680,6 +724,7 @@
gchar *domain = NULL;
gchar *attr_name = NULL;
gchar *param_val = NULL;
+ SoylentPerson *person = NULL;
browser = (SoylentBrowser*) user_data;
wtree = soylent_browser_get_widget_tree (browser);
@@ -695,63 +740,32 @@
if (g_str_equal (domain, "Email"))
{
+ attr_name = g_strdup (EVC_EMAIL);
param_val = soylent_browser_detail_add_get_cbox_val (browser,
"cbox_detail_type");
- attr_name = g_strdup ("EMAIL");
}
else if (g_str_equal (domain, "Instant Messaging"))
{
gchar *proto = NULL;
- param_val = soylent_browser_detail_add_get_cbox_val (browser,
- "cbox_detail_type");
proto = soylent_browser_detail_add_get_cbox_val (browser,
"cbox_detail_proto");
attr_name = g_strdup_printf ("X-%s", proto);
+ param_val = soylent_browser_detail_add_get_cbox_val (browser,
+ "cbox_detail_type");
g_free (proto);
}
else if (g_str_equal (domain, "Phone"))
{
+ attr_name = g_strdup (EVC_TEL);
param_val = soylent_browser_detail_add_get_cbox_val
(browser,
"cbox_detail_type_phone");
- attr_name = g_strdup ("TEL");
}
else if (g_str_equal (domain, "Web Address"))
{
- /* FIXME: this doesn't seem to save them for some reason - maybe because
- * the attributes don't have parameters? or it's getting botched or
- * something */
- const gchar *menu_strs[] = {"Home Page", "Blog", "Calendar",
- "Video Phone", NULL,};
- const gchar *param_strs[] = {"URL", "X-EVOLUTION-BLOG-URL", "CALURI",
- "X-EVOLUTION-VIDEO-URL", NULL,};
- GtkComboBox *cbox_type_web = NULL;
- gchar *param_val_menu = NULL;
- guint i;
-
- cbox_type_web = GTK_COMBO_BOX (glade_xml_get_widget
- (wtree,
- "cbox_detail_type_web"));
- param_val_menu = gtk_combo_box_get_active_text (cbox_type_web);
-
- for (i = 0; menu_strs[i] != NULL; i++)
- {
- if (g_str_equal (param_val_menu, menu_strs[i]))
- {
- param_val = g_ascii_strup (param_strs[i], -1);
- }
-
- g_print ("\nparam_val: '%s'\n", param_val);
- }
-
- if (!param_val)
- {
- g_warning ("Didn't find a supported VCard parameter type in menu");
- }
-
- g_free (param_val_menu);
+ attr_name = soylent_browser_detail_add_get_web_attr_name (browser);
}
else if (g_str_equal (domain, "Mailing Address"))
{
@@ -765,22 +779,23 @@
if (attr_name)
{
- /* FIXME: Please, mommy, make the bad hacker stop! */
if (g_str_equal (attr_name, EVC_ADR))
{
+ /* FIXME: check the return value */
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);
}
}
/* Make sure we actually commit these changes back */
soylent_browser_person_view_save_changes (NULL, browser);
- soylent_browser_person_view_update (browser,
- soylent_browser_get_selected_person
- (browser));
+
+ person = soylent_browser_get_selected_person (browser);
+ soylent_browser_person_view_update (browser, person);
gtk_entry_set_text (entry_add, "");
gtk_widget_set_sensitive (widget, FALSE);
@@ -1615,9 +1630,6 @@
gboolean retval = FALSE;
EVCard *vcard = NULL;
EVCardAttribute *attr = NULL;
- EVCardAttributeParam *param = NULL;
- GtkEntry *entry_add = NULL;
- const gchar *attr_val = NULL;
GladeXML *wtree = NULL;
g_return_val_if_fail (browser != NULL, retval);
@@ -1625,33 +1637,41 @@
g_return_val_if_fail (SOYLENT_IS_BROWSER (user_data), NULL);
*/
g_return_val_if_fail (attr_name != NULL, retval);
- g_return_val_if_fail (param_val != NULL, retval);
wtree = soylent_browser_get_widget_tree (browser);
attr = e_vcard_attribute_new (NULL, attr_name);
- entry_add = GTK_ENTRY (glade_xml_get_widget (wtree, "entry_detail_add"));
- attr_val = gtk_entry_get_text (entry_add);
- /* TODO: Also need to set TYPE=VOICE for phone, etc. */
- param = e_vcard_attribute_param_new (EVC_TYPE);
-
- /* FIXME: this special-case code is really ugly; push it into the appropriate
- * detail_add_get_attr_val_*() functions */
- /*
- if (!param_val)
+ if (attr)
{
- GtkComboBox *cbox_type = GTK_COMBO_BOX (glade_xml_get_widget (wtree,
- "cbox_detail_type"));
- gchar *param_val_lc = gtk_combo_box_get_active_text (cbox_type);
- param_val = g_ascii_strup (param_val_lc, -1);
+ GtkEntry *entry_add = NULL;
+ const gchar *attr_val = NULL;
- g_free (param_val_lc);
- }
- */
+ entry_add = GTK_ENTRY (glade_xml_get_widget (wtree, "entry_detail_add"));
+ attr_val = gtk_entry_get_text (entry_add);
- e_vcard_attribute_add_param_with_value (attr, param, param_val);
- vcard = E_VCARD (soylent_browser_get_selected_person_e_contact (browser));
- e_vcard_add_attribute_with_value (vcard, attr, attr_val);
+ if (param_val)
+ {
+ EVCardAttributeParam *param = NULL;
+
+ param = e_vcard_attribute_param_new (EVC_TYPE);
+ e_vcard_attribute_add_param_with_value (attr, param, param_val);
+
+ /* Mimicking the way Evolution sets up phone VCard entries (for better
+ * or worse...) */
+ if (g_str_equal (attr_name, EVC_TEL)
+ && (g_str_equal (param_val, "HOME")
+ || g_str_equal (param_val, "WORK")))
+ {
+ param = e_vcard_attribute_param_new (EVC_TYPE);
+ e_vcard_attribute_add_param_with_value (attr, param, "VOICE");
+ }
+ }
+
+ 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;
}
Modified: trunk/src/soylent-browser-person-view.h
==============================================================================
--- trunk/src/soylent-browser-person-view.h (original)
+++ trunk/src/soylent-browser-person-view.h Fri Mar 7 06:36:31 2008
@@ -69,7 +69,8 @@
/* Committing changes from the above functions */
gchar* soylent_browser_detail_add_get_cbox_val (SoylentBrowser *browser,
const gchar *cbox_name);
-void commit_detail_add (GtkWidget *widget, gpointer user_data);
+gchar* soylent_browser_detail_add_get_web_attr_name (SoylentBrowser *browser);
+void 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]