diff options
author | Not Zed <NotZed@Ximian.com> | 2002-11-12 22:59:35 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2002-11-12 22:59:35 +0800 |
commit | f9804e11931411358ce98ad5a7726de6d68f2115 (patch) | |
tree | a8fb046c3abbc7c0e07147c21557a3e22504dbda /mail/mail-session.c | |
parent | 83f816df158441ca750b0bc12b7ccab2d43c0e43 (diff) | |
download | gsoc2013-evolution-f9804e11931411358ce98ad5a7726de6d68f2115.tar.gz gsoc2013-evolution-f9804e11931411358ce98ad5a7726de6d68f2115.tar.zst gsoc2013-evolution-f9804e11931411358ce98ad5a7726de6d68f2115.zip |
Commented out stuff that doesn't build yet. Also fixed idl build rule.
2002-11-13 Not Zed <NotZed@Ximian.com>
* Makefile.am: Commented out stuff that doesn't build yet. Also
fixed idl build rule. importers still not built.
* main.c (main): bonobactivationise. remove push visual/colormap.
(main): no longer activate activation, let bonobo_init do it.
* mail-signature-editor.c (menu_help): Change help api.
* mail-session.c (user_message_destroy_noreply): removed. Not
used?
* mail-local.c (load_metainfo): xml root->children.
* mail-format.c (g_string_append_len): Removed, it exists now.
2002-11-12 Not Zed <NotZed@Ximian.com>
* subscribe-dialog.c: gnome2ised, use gtkdialog.
(subscribe_get_global_extras): use a weak ref rather than destroy signal.
* message-tag-followup.c: gnome2ised.
* message-tag-editor.c: gnome2ised & converted to gtkdialog.
* message-list.c: gnome2ised.
(message_list_finalise): From destroy method. maybe should be
destroy still.
* message-browser.c: port to gnome2
(message_browser_finalise): renamed from destroy method.
* mail-stream-gtkhtml.c: removed redundant
camel_class_get_global_classfuncs() call.
* mail-signature-editor.c: gtkdialogised, & bonobo api changes.
* mail-search-dialogue.c: gtkdialogised.
* mail-folder-cache.c: cleaned up camel ref/hook casts.
* mail-composer-prefs.c (mail_composer_prefs_get_type): convert to
gtype.
* mail-font-prefs.c (mail_font_prefs_destroy): from finalise.
* mail-config.c: s/bonobo_config/e_config_listener/
Added /apps/Evolution prefix to the evolution keys.
Changed to use e_config_listener, etc.
(mail_config_init): remove bonobo_config stuff.
(mail_config_check_service): gtk dialogise.
(check_response): from check_cancelled.
* mail-config-druid.c (mail_config_druid_destroy): renamed from
_finalize, turned into destroy handler.
(construct): set type to toplevel, GTK_WINDOW_DIALOG no longer exists.
* mail-config-factory.c (mail_config_register_factory): bonobo api
changes.
* mail-crypto.c (mail_crypto_get_pgp_cipher_context): cleaned up
unref casts.
* mail-display.c (write_data_to_file): gnome->gtkdialog.
(on_link_clicked): use ascii_str*cmp on url.
(save_part): g_path stuff.
(launch_cb): gtk dialog.
(pixmap_press): de-oafify.
(pixbuf_for_mime_type): gnome-vfs api changes.
(do_attachment_header): Change the pixmap to a gtkimage.
(do_signature): "
(pixbuf_gen_idle): "
(do_attachment_header): ascii_str*cmp
(do_attachment_header): gnome pixmap->gtkimage.
(mail_display_destroy): protect against gtk mentalness.
(html_button_press_event): ascii_str*cmp
(drag_data_get_cb): added comment for translators of filename.
* mail-format.c (component_supports): de-oafise.
(is_anonymous): ascii_strncmp
(attachment_header): remove utf8<>locale stuff, and gnomevfs api
changes.
(format_mime_part): fix g_strdown call.
(write_field_row_begin): kill utf8->gtk stuff.
(write_address): "
(default_header_index): ascii_strcasecmp
(handle_text_plain): "
(handle_text_enriched): "
(handle_multipart_encrypted): remove utf/gtk stuff.
(handle_message_external_body): ascii_str*cmp
* mail-identify.c (mail_identify_mime_part):
(identify_by_magic): gnome vfs api changes.
* mail-importer.c: Converted.
* mail-local.c (load_metainfo): xml childs -> children.
(mls_get_folder): g_strerror.
(mls_delete_folder): g_strerror.
(reconfigure_got_folder): Gnome->GtkDialog
(reconfigure_response): from reconfigure_clicked.
* mail-mt.c (mail_msg_check_error): gnome -> gtk dialog
(error_response): renmae from error_gone. destroy widget on any
response.
* mail-offline-handler.c (impl_finalise): renamed from
impl_destroy since thats what it should be anyway.
* mail-ops.c: removed utf8 widget conversion & camel_object_un/ref
casts.
* mail-preferences.c (mail_preferences_get_type): glib2'ised.
* mail-search.c (mail_search_finalise): renmaed from destroy &
properly chain.
(mail_search_get_type): glib2 & make gtkdialog parent.
(entry_run_search): run search when entry activated. not sure if
gtkdialog has anohter way to do this on an arbitrary widget.
* mail-send-recv.c (dialogue_response): renamed from clicked. Use
gtkdialog.
* mail-session.c (request_password_deleted): removed, redundant.
(pass_response): rename from pass_got, changed for gtkdialog.
(user_message_destroy): Removed, redundant.
(user_message_response): Renamed from user_message_clicked.
2002-11-11 Not Zed <NotZed@Ximian.com>
* mail-stream-gtkhtml.c (mail_stream_gtkhtml_class_init): dont use
get_global_classfuncs, just get the type
* mail-tools.c: converted gnome2 api's.
* mail-vfolder.c (vfolder_editor_response): clicked->response.
(vfolder_editor_destroy): Removed.
(vfolder_edit): gtk dialog api
(edit_rule_response): clicked->response.
(vfolder_edit_rule): gnomedialog->gtkdialog.
(vfolder_gui_add_rule): "
(new_rule_clicked): clicked->response
svn path=/trunk/; revision=18723
Diffstat (limited to 'mail/mail-session.c')
-rw-r--r-- | mail/mail-session.c | 178 |
1 files changed, 85 insertions, 93 deletions
diff --git a/mail/mail-session.c b/mail/mail-session.c index 011f09edca..11285f8a12 100644 --- a/mail/mail-session.c +++ b/mail/mail-session.c @@ -25,14 +25,13 @@ #endif #include <stdlib.h> + +#include <gtk/gtkdialog.h> +#include <gtk/gtkstock.h> + #include <libgnome/gnome-defs.h> #include <libgnome/gnome-config.h> #include <libgnome/gnome-sound.h> -#include <libgnomeui/gnome-dialog.h> -#include <libgnomeui/gnome-dialog-util.h> -#include <libgnomeui/gnome-messagebox.h> -#include <libgnomeui/gnome-stock.h> - #include <gal/widgets/e-unicode.h> #include "camel/camel-filter-driver.h" @@ -150,9 +149,8 @@ make_key (CamelService *service, const char *item) /* ********************************************************************** */ -static GnomeDialog *password_dialogue = NULL; +static GtkDialog *password_dialogue = NULL; static EDList password_list = E_DLIST_INITIALISER(password_list); -static int password_destroy_id; struct _pass_msg { struct _mail_msg msg; @@ -167,7 +165,9 @@ struct _pass_msg { char *service_url; char *key; + MailConfigService *config_service; GtkWidget *check; + GtkWidget *entry; char *result; int ismain; }; @@ -175,29 +175,20 @@ struct _pass_msg { static void do_get_pass(struct _mail_msg *mm); static void -pass_got (char *string, void *data) +pass_response(GtkDialog *dialogue, int button, void *data) { struct _pass_msg *m = data; - - if (string) { - MailConfigService *service = NULL; - const MailConfigAccount *mca; + + switch(button) { + case GTK_RESPONSE_OK: { gboolean cache, remember; - m->result = g_strdup (string); - remember = cache = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (m->check)); + m->result = g_strdup(gtk_entry_get_text((GtkEntry *)m->entry)); + remember = cache = m->check?gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (m->check)):FALSE; + if (m->service_url) { - mca = mail_config_get_account_by_source_url (m->service_url); - if (mca) { - service = mca->source; - } else { - mca = mail_config_get_account_by_transport_url (m->service_url); - if (mca) - service = mca->transport; - } - - if (service) { - mail_config_service_set_save_passwd (service, cache); + if (m->service) { + mail_config_service_set_save_passwd (m->config_service, cache); /* set `cache' to TRUE because people don't want to have to re-enter their passwords for this session even if they told @@ -217,14 +208,14 @@ pass_got (char *string, void *data) if (remember) e_passwords_remember_password (m->key); } - } else { + break; } + default: camel_exception_set(m->ex, CAMEL_EXCEPTION_USER_CANCEL, _("User canceled operation.")); + break; } - if (password_destroy_id) { - gtk_signal_disconnect((GtkObject *)password_dialogue, password_destroy_id); - password_destroy_id = 0; - } + gtk_widget_destroy((GtkWidget *)dialogue); + g_object_unref(dialogue); password_dialogue = NULL; e_msgport_reply((EMsg *)m); @@ -234,22 +225,10 @@ pass_got (char *string, void *data) } static void -request_password_deleted(GtkWidget *w, struct _pass_msg *m) -{ - password_destroy_id = 0; - pass_got(NULL, m); -} - -static void request_password(struct _pass_msg *m) { - const MailConfigAccount *mca = NULL; - GtkWidget *dialogue; - GtkWidget *check, *check_label, *entry; - GList *children, *iter; - gboolean show; char *title; - unsigned int accel_key; + const MailConfigAccount *mca = NULL; /* If we already have a password_dialogue up, save this request till later */ if (!m->ismain && password_dialogue) { @@ -257,6 +236,38 @@ request_password(struct _pass_msg *m) return; } + if (m->service_url) { + if ( (mca = mail_config_get_account_by_source_url(m->service_url)) ) + m->config_service = mca->source; + else if ( (mca = mail_config_get_account_by_transport_url (m->service_url)) ) + m->config_service = mca->transport; + } + + if (mca) + title = g_strdup_printf (_("Enter Password for %s"), mca->name); + else + title = g_strdup (_("Enter Password")); + + password_dialogue = (GtkDialog *)gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, "%s", m->prompt); + g_signal_connect(password_dialogue, "response", G_CALLBACK(pass_response), m); + gtk_window_set_title (GTK_WINDOW (password_dialogue), title); + g_free (title); + + m->entry = gtk_entry_new(); + gtk_entry_set_visibility((GtkEntry *)m->entry, !m->secret); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (password_dialogue)->vbox), m->entry, TRUE, FALSE, 0); + gtk_widget_show(m->entry); + + if (m->service_url == NULL || m->service != NULL) { + m->check = gtk_check_button_new_with_mnemonic(m->service_url? _("_Remember this password") : + _("_Remember this password for the remainder of this session")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (m->check), m->config_service->save_passwd); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (password_dialogue)->vbox), m->check, TRUE, FALSE, 0); + gtk_widget_show(m->check); + } + +#if 0 + /* FIXME: Remove this total snot */ /* assume we can use any widget to translate string for display */ @@ -264,7 +275,7 @@ request_password(struct _pass_msg *m) title = e_utf8_to_gtk_string (GTK_WIDGET (check_label), m->prompt); password_dialogue = (GnomeDialog *)dialogue = gnome_request_dialog (m->secret, title, NULL, 0, pass_got, m, NULL); g_free(title); - password_destroy_id = gtk_signal_connect((GtkObject *)dialogue, "destroy", request_password_deleted, m); + password_destroy_id = g_signal_connect((GtkObject *)dialogue, "destroy", request_password_deleted, m); check = gtk_check_button_new (); gtk_misc_set_alignment (GTK_MISC (check_label), 0.0, 0.5); @@ -309,7 +320,7 @@ request_password(struct _pass_msg *m) g_list_free (children); if (entry) { - gtk_object_ref (GTK_OBJECT (entry)); + g_object_ref((entry)); gtk_container_remove (GTK_CONTAINER (GNOME_DIALOG (dialogue)->vbox), entry); } @@ -318,7 +329,7 @@ request_password(struct _pass_msg *m) if (entry) { gtk_box_pack_end (GTK_BOX (GNOME_DIALOG (dialogue)->vbox), entry, TRUE, FALSE, 0); gtk_widget_grab_focus (entry); - gtk_object_unref (GTK_OBJECT (entry)); + g_object_unref((entry)); } m->check = check; @@ -334,11 +345,12 @@ request_password(struct _pass_msg *m) gtk_window_set_title (GTK_WINDOW (dialogue), title); g_free (title); +#endif if (m->ismain) - gnome_dialog_run_and_close ((GnomeDialog *)dialogue); + gtk_dialog_run(password_dialogue); else - gtk_widget_show(dialogue); + gtk_widget_show((GtkWidget *)password_dialogue); } static void @@ -444,9 +456,8 @@ forget_password (CamelSession *session, CamelService *service, const char *item, /* ********************************************************************** */ -static GnomeDialog *message_dialogue; +static GtkDialog *message_dialogue; static EDList message_list = E_DLIST_INITIALISER(password_list); -static guint message_destroy_id; struct _user_message_msg { struct _mail_msg msg; @@ -461,48 +472,31 @@ struct _user_message_msg { static void do_user_message (struct _mail_msg *mm); -/* if we dont have to wait for reply, we just check to see if any newly waiting prompts are there */ -static void -user_message_destroy_noreply(GnomeDialog *gd, void *data) -{ - struct _user_message_msg *m; - - message_dialogue = NULL; - if ((m = (struct _user_message_msg *)e_dlist_remhead(&message_list))) - do_user_message((struct _mail_msg *)m); -} - /* clicked, send back the reply */ static void -user_message_clicked(GnomeDialog *gd, int button, struct _user_message_msg *m) +user_message_response(GtkDialog *gd, int button, struct _user_message_msg *m) { + gtk_widget_destroy((GtkWidget *)gd); + g_object_unref(gd); + message_dialogue = NULL; - if (message_destroy_id) { - gtk_signal_disconnect((GtkObject *)gd, message_destroy_id); - message_destroy_id = 0; + /* if !allow_cancel, then we've already replied */ + if (m->allow_cancel) { + m->result = button == GTK_RESPONSE_OK; + e_msgport_reply((EMsg *)m); } - m->result = button == 0; - e_msgport_reply((EMsg *)m); - /* check for pendings */ if ((m = (struct _user_message_msg *)e_dlist_remhead(&message_list))) do_user_message((struct _mail_msg *)m); } static void -user_message_destroy(GnomeDialog *gd, struct _user_message_msg *m) -{ - message_destroy_id = 0; - user_message_clicked(gd, -1, m); -} - -static void do_user_message (struct _mail_msg *mm) { struct _user_message_msg *m = (struct _user_message_msg *)mm; - const char *msg_type; + GtkMessageType msg_type; if (!m->ismain && message_dialogue != NULL) { e_dlist_addtail(&message_list, (EDListNode *)m); @@ -511,35 +505,33 @@ do_user_message (struct _mail_msg *mm) switch (m->type) { case CAMEL_SESSION_ALERT_INFO: - msg_type = GNOME_MESSAGE_BOX_INFO; + msg_type = GTK_MESSAGE_INFO; break; case CAMEL_SESSION_ALERT_WARNING: - msg_type = GNOME_MESSAGE_BOX_WARNING; + msg_type = GTK_MESSAGE_WARNING; break; case CAMEL_SESSION_ALERT_ERROR: - msg_type = GNOME_MESSAGE_BOX_ERROR; + msg_type = GTK_MESSAGE_ERROR; break; default: - msg_type = NULL; + msg_type = GTK_MESSAGE_INFO; } - message_dialogue = (GnomeDialog *)gnome_message_box_new(m->prompt, msg_type, GNOME_STOCK_BUTTON_OK, - m->allow_cancel ? GNOME_STOCK_BUTTON_CANCEL : NULL, - NULL); - gnome_dialog_set_default(message_dialogue, 1); - gnome_dialog_set_close(message_dialogue, TRUE); - gtk_window_set_policy (GTK_WINDOW (message_dialogue), TRUE, TRUE, TRUE); + message_dialogue = (GtkDialog *)gtk_message_dialog_new( + NULL, 0, msg_type, + m->allow_cancel?GTK_BUTTONS_OK_CANCEL:GTK_BUTTONS_OK, + m->prompt); + gtk_dialog_set_default_response(message_dialogue, m->allow_cancel?GTK_RESPONSE_CANCEL:GTK_RESPONSE_OK); + g_object_set(message_dialogue, "allow_shrink", TRUE, "allow_grow", TRUE, NULL); /* We only need to wait for the result if we allow cancel otherwise show but send result back instantly */ if (m->allow_cancel) { - gtk_signal_connect((GtkObject*)message_dialogue, "clicked", user_message_clicked, m); - message_destroy_id = gtk_signal_connect((GtkObject*)message_dialogue, "destroy", user_message_destroy, m); + g_signal_connect(message_dialogue, "response", G_CALLBACK(user_message_response), m); if (m->ismain) - gnome_dialog_run_and_close ((GnomeDialog *)message_dialogue); + gtk_dialog_run(message_dialogue); else gtk_widget_show((GtkWidget *)message_dialogue); } else { - gtk_signal_connect((GtkObject *)message_dialogue, "destroy", user_message_destroy_noreply, NULL); gtk_widget_show((GtkWidget *)message_dialogue); m->result = TRUE; e_msgport_reply((EMsg *)m); @@ -760,7 +752,7 @@ register_timeout (CamelSession *session, guint32 interval, CamelTimeoutCallback MAIL_SESSION_UNLOCK(session, lock); - camel_object_ref((CamelObject *)ms); + camel_object_ref(ms); mail_async_event_emit(ms->async, MAIL_ASYNC_GUI, (MailAsyncFunc)main_register_timeout, (CamelObject *)session, (void *)ret, NULL); return ret; @@ -802,7 +794,7 @@ remove_timeout (CamelSession *session, guint handle) MAIL_SESSION_UNLOCK(session, lock); if (remove) { - camel_object_ref((CamelObject *)ms); + camel_object_ref(ms); mail_async_event_emit(ms->async, MAIL_ASYNC_GUI, (MailAsyncFunc)main_remove_timeout, (CamelObject *)session, (void *)handle, NULL); } else @@ -913,7 +905,7 @@ main_get_filter_driver (CamelSession *session, const char *type, CamelException g_string_free (fsearch, TRUE); g_string_free (faction, TRUE); - gtk_object_unref (GTK_OBJECT (fc)); + g_object_unref(fc); return driver; } |