From 43f23f54d91c91143544034356cb42e415da9eb9 Mon Sep 17 00:00:00 2001
From: Jeffrey Stedfast <fejj@helixcode.com>
Date: Thu, 11 Jan 2001 00:18:40 +0000
Subject: New function that explains to the user why he can't do the action he

2001-01-10  Jeffrey Stedfast  <fejj@helixcode.com>

	* mail-callbacks.c (configure_mail): New function that explains to
	the user why he can't do the action he requested and then procedes
	to ask if he'd like to configure his accounts now.
	(check_send_configuration): If the user doesn't have configured
	accounts, don't let him continue and call configure_mail().
	(fetch_mail): Same.
	(send_queued_mail): Same.
	(send_receieve_mail): Same.

	* mail-config.c (mail_config_write): Don't save a "is_configured"
	variable. Instead we'll just check to see if we have accounts - if
	yes, then configured == TRUE.
	(mail_config_is_configured): return accounts != NULL.
	(mail_config_get_default_account): Mark the first account as the
	default if none are marked.

svn path=/trunk/; revision=7377
---
 mail/mail-callbacks.c | 38 ++++++++++++++------------------------
 1 file changed, 14 insertions(+), 24 deletions(-)

(limited to 'mail/mail-callbacks.c')

diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c
index f26380773a..7943e27443 100644
--- a/mail/mail-callbacks.c
+++ b/mail/mail-callbacks.c
@@ -64,14 +64,11 @@ struct post_send_data {
 	guint32 flags;
 };
 
-static gboolean
-check_configured (FolderBrowser *fb)
+static void
+configure_mail (FolderBrowser *fb)
 {
 	MailConfigDruid *druid;
 	
-	if (mail_config_is_configured ())
-		return TRUE;
-	
 	if (fb) {
 		GtkWidget *dialog;
 		
@@ -83,7 +80,7 @@ check_configured (FolderBrowser *fb)
 						GNOME_STOCK_BUTTON_YES,
 						GNOME_STOCK_BUTTON_NO, NULL);
 		gnome_dialog_set_parent (GNOME_DIALOG (dialog),
-					 GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET(fb), GTK_TYPE_WINDOW)));
+					 GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (fb), GTK_TYPE_WINDOW)));
 		
 		switch (gnome_dialog_run_and_close (GNOME_DIALOG (dialog))) {
 		case 0:
@@ -95,10 +92,7 @@ check_configured (FolderBrowser *fb)
 		default:
 			break;
 		}
-		
-		return mail_config_is_configured ();
-	} else
-		return FALSE;
+	}
 }
 
 static gboolean
@@ -107,7 +101,8 @@ check_send_configuration (FolderBrowser *fb)
 	const MailConfigAccount *account;
 	
 	/* Check general */
-	if (!check_configured (fb)) {
+	if (!mail_config_is_configured ()) {
+		configure_mail (fb);
 		return FALSE;
 	}
 	
@@ -162,25 +157,14 @@ fetch_mail (GtkWidget *widget, gpointer user_data)
 {
 	GSList *sources;
 	
-	if (!check_configured (FOLDER_BROWSER (user_data))) {
-		GtkWidget *win = gtk_widget_get_ancestor (GTK_WIDGET (user_data),
-							  GTK_TYPE_WINDOW);
-		
-		gnome_error_dialog_parented (_("You have no mail sources "
-					       "configured"),
-					     GTK_WINDOW (win));
+	if (!mail_config_is_configured ()) {
+		configure_mail (FOLDER_BROWSER (user_data));
 		return;
 	}
 	
 	sources = mail_config_get_sources ();
 	
 	if (!sources || !sources->data) {
-		GtkWidget *win = gtk_widget_get_ancestor (GTK_WIDGET (user_data),
-							  GTK_TYPE_WINDOW);
-		
-		gnome_error_dialog_parented (_("You have no mail sources "
-					       "configured"),
-					     GTK_WINDOW (win));
 		return;
 	}
 	
@@ -207,6 +191,7 @@ send_queued_mail (GtkWidget *widget, gpointer user_data)
 	const MailConfigAccount *account;
 	
 	if (!mail_config_is_configured ()) {
+		configure_mail (FOLDER_BROWSER (user_data));
 		return;
 	}
 	
@@ -236,6 +221,11 @@ void
 send_receieve_mail (GtkWidget *widget, gpointer user_data)
 {
 	/* receive first then send, this is a temp fix for POP-before-SMTP */
+	if (!mail_config_is_configured ()) {
+		configure_mail (FOLDER_BROWSER (user_data));
+		return;
+	}
+	
 	fetch_mail (widget, user_data);
 	send_queued_mail (widget, user_data);
 }
-- 
cgit