soylent r96 - trunk/src
- From: treitter svn gnome org
- To: svn-commits-list gnome org
- Subject: soylent r96 - trunk/src
- Date: Sat, 8 Mar 2008 20:13:13 +0000 (GMT)
Author: treitter
Date: Sat Mar 8 20:13:13 2008
New Revision: 96
URL: http://svn.gnome.org/viewvc/soylent?rev=96&view=rev
Log:
Clean up the code that re-initializes the Detail Add widgets
Modified:
trunk/src/soylent-browser-person-view.c
trunk/src/soylent-browser-person-view.h
trunk/src/soylent-browser.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 8 20:13:13 2008
@@ -763,14 +763,15 @@
*
* Return TRUE for success, FALSE for any failure */
gboolean
-cbox_detail_add_setup (SoylentBrowser *browser)
+soylent_browser_person_detail_add_cbox_setup (SoylentBrowser *browser,
+ gboolean skip_domain_cbox)
{
const gchar *cbox_names[] = {"cbox_detail_domain", "cbox_detail_proto",
"cbox_detail_type", "cbox_detail_type_phone",
"cbox_detail_type_web",};
gboolean retval = FALSE;
GladeXML *wtree = NULL;
- GtkComboBox *cbox_cur = NULL;
+ guint num_cbox = ARRAY_LEN (cbox_names);
guint i = 0;
g_return_val_if_fail (browser != NULL, retval);
@@ -784,32 +785,28 @@
wtree = soylent_browser_get_widget_tree (browser);
/* Glade lets us set these values, but they aren't honored */
- for (i = 0; i < (sizeof (cbox_names) / sizeof (const gchar*)); i++)
+ for (i = (skip_domain_cbox ? 1 : 0); i < num_cbox; i++)
{
- cbox_cur = GTK_COMBO_BOX (glade_xml_get_widget (wtree,
- cbox_names[i]));
- if (cbox_cur && GTK_IS_COMBO_BOX (cbox_cur))
- {
- gtk_combo_box_set_active(cbox_cur, 0);
- }
- else
- {
- g_critical ("failed to get combo box widget: %s", cbox_names[i]);
- retval = FALSE;
- }
+ GtkComboBox *cbox_cur = NULL;
+
+ cbox_cur = GTK_COMBO_BOX (glade_xml_get_widget (wtree, cbox_names[i]));
+ gtk_combo_box_set_active (cbox_cur, 0);
}
return retval;
}
/* Update the visibility of the Detail Add UI section "Type" combo boxes, based
- * on the current "Domain" combo box selection */
-void
-cbox_detail_type_update (GtkWidget *widget, gpointer user_data)
+ * on the current "Domain" combo box selection
+ *
+ * Return TRUE for success, FALSE for any failure */
+gboolean
+soylent_browser_person_detail_add_cbox_update (GtkComboBox *cbox_domain,
+ gpointer user_data)
{
+ gboolean retval = FALSE;
SoylentBrowser *browser = NULL;
GladeXML *wtree = NULL;
- GtkComboBox *cbox_domain = NULL;
GtkWidget *cbox_proto = NULL;
GtkWidget *cbox_type = NULL;
GtkWidget *cbox_type_phone = NULL;
@@ -818,66 +815,69 @@
GtkWidget *align_detail_add = NULL;
gchar *domain = 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), retval);
+ */
browser = (SoylentBrowser*) user_data;
wtree = soylent_browser_get_widget_tree (browser);
- cbox_domain = GTK_COMBO_BOX (glade_xml_get_widget (wtree,
- "cbox_detail_domain"));
+
cbox_proto = glade_xml_get_widget (wtree, "cbox_detail_proto");
cbox_type = glade_xml_get_widget (wtree, "cbox_detail_type");
cbox_type_phone = glade_xml_get_widget (wtree, "cbox_detail_type_phone");
cbox_type_web = glade_xml_get_widget (wtree, "cbox_detail_type_web");
- vbox_entry_detail_add = glade_xml_get_widget (wtree,
- "vbox_entry_detail_add");
+ vbox_entry_detail_add = glade_xml_get_widget (wtree, "vbox_entry_detail_add");
align_detail_add = glade_xml_get_widget (wtree, "align_detail_mail");
- domain = gtk_combo_box_get_active_text (cbox_domain);
- /* FIXME: There's got to be a cleaner (yet readable) way of doing this;
- * maybe make a struct to configure this stuff, fill one out for each domain,
- * then run through the array as appropriate. Maybe goto? :) */
+ soylent_browser_person_detail_add_cbox_setup (browser, TRUE);
+
+ /* Hide all of the widgets up-front to simplify the logic below */
+ gtk_widget_hide (cbox_proto);
+ gtk_widget_hide (cbox_type);
+ gtk_widget_hide (cbox_type_phone);
+ gtk_widget_hide (cbox_type_web);
+ gtk_widget_hide (vbox_entry_detail_add);
+ gtk_widget_hide (align_detail_add);
+
+ domain = gtk_combo_box_get_active_text (cbox_domain);
if (g_str_equal (domain, "Instant Messaging"))
{
gtk_widget_show (cbox_proto);
gtk_widget_show (cbox_type);
- gtk_widget_hide (cbox_type_phone);
- gtk_widget_hide (cbox_type_web);
}
else if (g_str_equal (domain, "Phone"))
{
- gtk_widget_hide (cbox_proto);
- gtk_widget_hide (cbox_type);
gtk_widget_show (cbox_type_phone);
- gtk_widget_hide (cbox_type_web);
}
else if (g_str_equal (domain, "Web Address"))
{
- gtk_widget_hide (cbox_proto);
- gtk_widget_hide (cbox_type);
- gtk_widget_hide (cbox_type_phone);
gtk_widget_show (cbox_type_web);
}
else if (g_str_equal (domain, "Mailing Address"))
{
- gtk_widget_hide (cbox_proto);
gtk_widget_show (cbox_type);
- gtk_widget_hide (cbox_type_phone);
- gtk_widget_hide (cbox_type_web);
+ }
+ else /* Email */
+ {
+ gtk_widget_show (cbox_type);
+ }
- gtk_widget_hide (vbox_entry_detail_add);
+ /* Display either the mailing Address fields or the generic entry box,
+ * depending on whether we're entering a Mailing Address or not */
+ if (g_str_equal (domain, "Mailing Address"))
+ {
gtk_widget_show (align_detail_add);
-
- return;
}
else
{
- gtk_widget_hide (cbox_proto);
- gtk_widget_show (cbox_type);
- gtk_widget_hide (cbox_type_phone);
- gtk_widget_hide (cbox_type_web);
+ gtk_widget_show (vbox_entry_detail_add);
}
- gtk_widget_show (vbox_entry_detail_add);
- gtk_widget_hide (align_detail_add);
+ /* There isn't anything to check between the validation block and here */
+ retval = TRUE;
+
+ return retval;
}
/* Set the sensitivity of the Detail Add button based on whether there are
@@ -2139,7 +2139,7 @@
entry_detail_add = GTK_ENTRY (glade_xml_get_widget (wtree,
"entry_detail_add"));
- cbox_detail_add_setup (browser);
+ soylent_browser_person_detail_add_cbox_setup (browser, FALSE);
gtk_entry_set_text (entry_detail_add, "");
/* Set up 'changed' signals for the mail "Detail Add" fields */
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 20:13:13 2008
@@ -72,7 +72,11 @@
/* 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);
-gboolean cbox_detail_add_setup (SoylentBrowser *browser);
-void cbox_detail_type_update (GtkWidget *widget, gpointer user_data);
+gboolean soylent_browser_person_detail_add_cbox_setup
+ (SoylentBrowser *browser,
+ gboolean skip_domain_cbox);
+gboolean soylent_browser_person_detail_add_cbox_update
+ (GtkComboBox *cbox_domain,
+ gpointer user_data);
#endif /* _SOYLENT_BROWSER_PERSON_VIEW_H_ */
Modified: trunk/src/soylent-browser.c
==============================================================================
--- trunk/src/soylent-browser.c (original)
+++ trunk/src/soylent-browser.c Sat Mar 8 20:13:13 2008
@@ -1496,7 +1496,8 @@
{
gtk_combo_box_set_active (cbox_presence, 0);
- retval = cbox_detail_add_setup (browser);
+ retval = soylent_browser_person_detail_add_cbox_setup (browser,
+ FALSE);
}
else
{
@@ -1566,8 +1567,8 @@
/* Adding new details to a person */
/* general */
- {"cbox_detail_domain", "changed", cbox_detail_type_update, CB_DATA_SIMPLE,
- browser},
+ {"cbox_detail_domain", "changed",
+ soylent_browser_person_detail_add_cbox_update, CB_DATA_SIMPLE, browser},
{"entry_detail_add", "changed", btn_detail_add_update, CB_DATA_SIMPLE,
browser},
{"btn_detail_add", "clicked", soylent_browser_person_detail_add_commit,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]