Re: [evolution-patches] camel provider changes for connector



Hi,

Thanks a lot for those review comments ... I have done all the changes you mentioned. Please check the new patch attached, and let me know if this is fine to commit.

On Mon, 2004-05-03 at 12:12 +0800, Not Zed wrote:
        GtkResponseType response;

you need to initialise response, since in the 'goto failed' case it wont be set.

Done, this was an over-look on my part, while i modified the logic below.

+       GtkLabel *top_label;
+                       ", lic_name);
multiline strings like this are illegal, you need to break them up such as:
"Please read carefully ..."
"for %s ..."

etc.  i.e. separate strings on different lines.  They can't include embedded newlines.

Also, this string must be translatable.

Also .. since this funciton is just using stuff from the provider, jsut pass the provider, rather than each field separately.

Done .. modified the string and also the function argument. I was not very clear about this argument thing though. Looks like the idea was that, i need not keep on adding the arguements in future, and i just pass the main structure itself. Was there any other reason than this ??

+       gtk_label_set_label (top_label, label_text);
+
+       dialog_title = g_strdup_printf ("%s License Agreement", lic_name);
This also needs translation (wrapped in _()).
Done ...

+       gtk_window_set_title (GTK_WINDOW (top_widget), dialog_title);
+               return FALSE;
much easier to read:
  return response == GTK_RESPONSE_ACCEPT;

This was cool .. i like this style .. Hope to follow this in this future :)

 }
 
+               }
better:
     for (l = providers_list;l && !accepted;l=g_slist_next(l))
        accepted = strcmp(tmp_list->data, prov->protocol) == 0;

(we use 'l' for a temp list all over the place, so its simpler than tmp_list too, but it isn't so important).

done ... This was another cool trick .. :)

                if (!accepted) {
                }

you still need to free the providers list.

Done ...
-               g_free (gconf_license_key);
        }
        return TRUE;
 }

Michael Zucchi <notzed ximian com>

Ximian Evolution and Free Software Developer


Novell, Inc.
            Thanks
                                        -- Sarfraaz Ahmed <asarfraaz novell com>
Index: mail-account-gui.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-account-gui.c,v
retrieving revision 1.161
diff -u -r1.161 mail-account-gui.c
--- mail-account-gui.c	28 Apr 2004 06:39:25 -0000	1.161
+++ mail-account-gui.c	3 May 2004 07:52:50 -0000
@@ -157,21 +157,6 @@
 	g_free (value);
 }
 
-static void 
-set_license_rejected (GtkWidget *widget, gpointer data)
-{
-	gtk_dialog_response (GTK_DIALOG (data), GTK_RESPONSE_DELETE_EVENT);
-	return;
-}
-
-static void
-set_license_accepted (GtkWidget *widget, gpointer data)
-{
-	gtk_dialog_response (GTK_DIALOG (data), GTK_RESPONSE_ACCEPT);
-	return;
-
-}
-
 static void
 check_button_state (GtkToggleButton *button, gpointer data)
 {
@@ -217,14 +202,16 @@
 }
 
 static gboolean
-display_license(const char *filename)
+display_license (CamelProvider *prov)
 {
 	GladeXML *xml;
 	GtkWidget *top_widget;
 	GtkTextView *text_entry;
 	GtkButton *button_yes, *button_no;
 	GtkCheckButton *check_button;
-	GtkResponseType response;
+	GtkResponseType response = GTK_RESPONSE_NONE;
+	GtkLabel *top_label;
+	char *label_text, *dialog_title;
 	gboolean status;
 	
 	xml = glade_xml_new (EVOLUTION_GLADEDIR "/mail-license.glade", 
@@ -232,7 +219,7 @@
 	
 	top_widget = glade_xml_get_widget (xml, "lic_dialog");
 	text_entry = GTK_TEXT_VIEW (glade_xml_get_widget (xml, "textview1"));
-	status = populate_text_entry (GTK_TEXT_VIEW (text_entry), filename);
+	status = populate_text_entry (GTK_TEXT_VIEW (text_entry), prov->license_file);
 	if (!status)
 		goto failed;
 
@@ -246,25 +233,29 @@
 	check_button = GTK_CHECK_BUTTON (glade_xml_get_widget (xml, 
 							"lic_checkbutton"));
 
+	top_label = GTK_LABEL (glade_xml_get_widget (xml, "lic_top_label"));
+
+	label_text = g_strdup_printf (_("\n Please read carefully the license agreement\n" " for %s displayed below\n" " and tick the check box for accepting it\n"), prov->license_name);
+
+	gtk_label_set_label (top_label, label_text);
+
+	dialog_title = g_strdup_printf (_("%s License Agreement"), prov->license_name);
+	
+	gtk_window_set_title (GTK_WINDOW (top_widget), dialog_title);
+
 	g_signal_connect (check_button, "toggled", 
 				G_CALLBACK (check_button_state), button_yes);
-	g_signal_connect (button_yes, "clicked", 
-				G_CALLBACK (set_license_accepted), 
-				GTK_WIDGET (top_widget));
-	g_signal_connect (button_no, "clicked", 
-				G_CALLBACK (set_license_rejected), 
-				GTK_WIDGET (top_widget));
-
+	
 	response = gtk_dialog_run (GTK_DIALOG (top_widget));
-	if (response == GTK_RESPONSE_ACCEPT) {
-		gtk_widget_destroy (top_widget);
-		g_object_unref (xml);
-		return TRUE;
-	}
+	
+	g_free (label_text);
+	g_free (dialog_title);
+
 failed:
 	gtk_widget_destroy (top_widget);
 	g_object_unref (xml);
-	return FALSE;
+	
+	return (response == GTK_RESPONSE_ACCEPT);
 }
 
 static gboolean
@@ -331,32 +322,34 @@
 mail_account_gui_check_for_license (CamelProvider *prov)
 {
 	GConfClient *gconf;
-	gboolean accepted, status;
-	char *gconf_license_key;
+	gboolean accepted = FALSE, status;
+	GSList * providers_list, *l;
 
 	if (prov->flags & CAMEL_PROVIDER_HAS_LICENSE) {
 		gconf = mail_config_get_gconf_client ();
-		gconf_license_key = g_strdup_printf (
-			"/apps/evolution/mail/licenses/%s_accepted",
-			prov->license);
 		
-		accepted = gconf_client_get_bool (gconf, gconf_license_key,
-						  NULL);
+		providers_list = gconf_client_get_list (gconf, "/apps/evolution/mail/licenses", GCONF_VALUE_STRING, NULL);
+		for (l = providers_list; l && !accepted; l = g_slist_next (l))
+			accepted = (strcmp ((char *)l->data, prov->protocol) == 0);
 		if (!accepted) {
 			/* Since the license is not yet accepted, pop-up a 
 			 * dialog to display the license agreement and check 
 			 * if the user accepts it
 			 */
 
-			if (display_license (prov->license_file)) {
-				status = gconf_client_set_bool (gconf, 
-						gconf_license_key, TRUE, NULL);
+			if (display_license (prov)) {
+				providers_list = g_slist_append (providers_list,
+						 (gpointer)prov->protocol);
+				status = gconf_client_set_list (gconf, 
+						"/apps/evolution/mail/licenses",
+						GCONF_VALUE_STRING,
+						 providers_list, NULL);
 			} else {
-				g_free (gconf_license_key);
+				g_slist_free (providers_list);
 				return FALSE;
 			}
 		}
-		g_free (gconf_license_key);
+		g_slist_free (providers_list);
 	}
 	return TRUE;
 }
Index: evolution-mail.schemas.in.in
===================================================================
RCS file: /cvs/gnome/evolution/mail/evolution-mail.schemas.in.in,v
retrieving revision 1.14
diff -u -r1.14 evolution-mail.schemas.in.in
--- evolution-mail.schemas.in.in	30 Apr 2004 18:23:21 -0000	1.14
+++ evolution-mail.schemas.in.in	3 May 2004 07:53:03 -0000
@@ -814,5 +814,21 @@
       </locale>
     </schema>
 
+    <schema>
+      <key>/schemas/apps/evolution/mail/licenses</key>
+      <applyto>/apps/evolution/mail/licenses</applyto>
+      <owner>evolution-mail</owner>
+      <type>list</type>
+      <list_type>string</list_type>
+      <default></default>
+      <locale name="C">
+         <short>List of accepted licenses</short>
+         <long>
+                List of protocol names whose license
+                has been accepted
+         </long>
+      </locale>
+    </schema>
+
   </schemalist>
 </gconfschemafile>
Index: mail-license.glade
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-license.glade,v
retrieving revision 1.1
diff -u -r1.1 mail-license.glade
--- mail-license.glade	23 Apr 2004 06:15:39 -0000	1.1
+++ mail-license.glade	3 May 2004 07:53:10 -0000
@@ -5,7 +5,7 @@
 
 <widget class="GtkDialog" id="lic_dialog">
   <property name="visible">True</property>
-  <property name="title" translatable="yes">Exchange Connector License Agreement for Evolution</property>
+  <property name="title" translatable="yes">License Agreement</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
   <property name="modal">False</property>
@@ -29,10 +29,10 @@
 	      <property name="visible">True</property>
 	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
-	      <property name="label" translatable="yes">NO</property>
-	      <property name="use_underline">True</property>
+	      <property name="label">gtk-no</property>
+	      <property name="use_stock">True</property>
 	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">0</property>
+	      <property name="response_id">-6</property>
 	    </widget>
 	  </child>
 
@@ -41,10 +41,64 @@
 	      <property name="visible">True</property>
 	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
-	      <property name="label" translatable="yes">YES</property>
-	      <property name="use_underline">True</property>
 	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">0</property>
+	      <property name="response_id">-3</property>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment1">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">0</property>
+		  <property name="yscale">0</property>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox1">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">2</property>
+
+		      <child>
+			<widget class="GtkImage" id="image1">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-yes</property>
+			  <property name="icon_size">4</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label1">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Accept License</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
 	    </widget>
 	  </child>
 	</widget>
@@ -66,8 +120,7 @@
 	    <widget class="GtkLabel" id="lic_top_label">
 	      <property name="visible">True</property>
 	      <property name="label" translatable="yes">
- Please read carefully the license agreement 
- for Evolution Exchange Connector displayed 
+ Please read carefully the license agreement displayed
  below and tick the check box for accepting it
 </property>
 	      <property name="use_underline">False</property>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]