diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2009-04-25 22:07:44 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-04-25 22:07:44 +0800 |
commit | 86fdd3a1cba7c156cfa127322e258f5636b45a99 (patch) | |
tree | e49802fd9008a59587fca1cafb1801b8b3bf0db6 /mail | |
parent | c2119e513bc7482fc0150287af8502a5ff67191a (diff) | |
parent | 23df769955ea54f756a579c19964df87ae6fd5c8 (diff) | |
download | gsoc2013-evolution-86fdd3a1cba7c156cfa127322e258f5636b45a99.tar.gz gsoc2013-evolution-86fdd3a1cba7c156cfa127322e258f5636b45a99.tar.zst gsoc2013-evolution-86fdd3a1cba7c156cfa127322e258f5636b45a99.zip |
Merge branch 'master' into kill-bonobo
This was a particularly messy merge. Watch out for regressions!
Conflicts:
ChangeLog
NEWS
a11y/ChangeLog
a11y/widgets/ea-combo-button.c
a11y/widgets/ea-combo-button.h
a11y/widgets/ea-widgets.c
addressbook/ChangeLog
addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in
addressbook/gui/component/addressbook-component.c
addressbook/gui/component/addressbook-component.h
addressbook/gui/component/addressbook-config.c
addressbook/gui/component/addressbook-migrate.h
addressbook/gui/component/addressbook-view.c
addressbook/gui/component/addressbook-view.h
addressbook/gui/component/addressbook.h
addressbook/gui/component/autocompletion-config.c
addressbook/gui/component/autocompletion-config.h
addressbook/gui/component/component-factory.c
addressbook/gui/component/e-book-shell-module-migrate.c
addressbook/gui/component/ldap-config.glade
addressbook/gui/contact-editor/Makefile.am
addressbook/gui/contact-editor/contact-editor.glade
addressbook/gui/contact-editor/e-contact-editor-address.c
addressbook/gui/contact-editor/e-contact-editor-address.h
addressbook/gui/contact-editor/e-contact-editor-im.c
addressbook/gui/contact-editor/e-contact-editor-im.h
addressbook/gui/contact-editor/e-contact-editor.c
addressbook/gui/contact-editor/e-contact-editor.h
addressbook/gui/contact-editor/eab-editor.c
addressbook/gui/contact-editor/eab-editor.h
addressbook/gui/contact-editor/test-editor.c
addressbook/gui/contact-list-editor/Makefile.am
addressbook/gui/widgets/Makefile.am
addressbook/gui/widgets/e-addressbook-model.c
addressbook/gui/widgets/e-addressbook-model.h
addressbook/gui/widgets/e-addressbook-reflow-adapter.c
addressbook/gui/widgets/e-addressbook-view.c
addressbook/gui/widgets/e-addressbook-view.h
addressbook/gui/widgets/e-minicard-view.c
addressbook/gui/widgets/eab-contact-display.c
addressbook/gui/widgets/eab-gui-util.c
addressbook/gui/widgets/eab-menu.c
addressbook/gui/widgets/eab-menu.h
addressbook/gui/widgets/eab-popup-control.c
addressbook/gui/widgets/eab-popup-control.h
addressbook/gui/widgets/eab-popup.c
addressbook/gui/widgets/eab-popup.h
addressbook/gui/widgets/eab-vcard-control.c
addressbook/gui/widgets/eab-vcard-control.h
addressbook/gui/widgets/gal-view-minicard.c
addressbook/gui/widgets/gal-view-minicard.h
addressbook/printing/e-contact-print-style-editor.c
addressbook/printing/e-contact-print-style-editor.h
addressbook/printing/e-contact-print.glade
addressbook/printing/test-contact-print-style-editor.c
addressbook/tools/evolution-addressbook-export.c
addressbook/util/Makefile.am
calendar/ChangeLog
calendar/gui/Makefile.am
calendar/gui/apps_evolution_calendar.schemas.in
calendar/gui/calendar-component.c
calendar/gui/calendar-component.h
calendar/gui/calendar-config.c
calendar/gui/comp-editor-factory.c
calendar/gui/comp-editor-factory.h
calendar/gui/comp-util.c
calendar/gui/comp-util.h
calendar/gui/control-factory.c
calendar/gui/control-factory.h
calendar/gui/dialogs/alarm-dialog.c
calendar/gui/dialogs/cal-prefs-dialog.c
calendar/gui/dialogs/cal-prefs-dialog.glade
calendar/gui/dialogs/cal-prefs-dialog.h
calendar/gui/dialogs/comp-editor.c
calendar/gui/dialogs/comp-editor.h
calendar/gui/dialogs/event-editor.c
calendar/gui/dialogs/event-page.c
calendar/gui/dialogs/memo-editor.c
calendar/gui/dialogs/memo-page.c
calendar/gui/dialogs/recurrence-page.c
calendar/gui/dialogs/task-details-page.c
calendar/gui/dialogs/task-details-page.glade
calendar/gui/dialogs/task-editor.c
calendar/gui/dialogs/task-page.c
calendar/gui/e-cal-component-memo-preview.c
calendar/gui/e-cal-component-memo-preview.h
calendar/gui/e-cal-component-preview.c
calendar/gui/e-cal-component-preview.h
calendar/gui/e-cal-event.h
calendar/gui/e-cal-model.c
calendar/gui/e-cal-popup.c
calendar/gui/e-calendar-table.c
calendar/gui/e-calendar-view.c
calendar/gui/e-day-view.c
calendar/gui/e-itip-control.c
calendar/gui/e-memo-table.c
calendar/gui/e-memos.c
calendar/gui/e-memos.h
calendar/gui/e-tasks.c
calendar/gui/e-tasks.h
calendar/gui/e-week-view.c
calendar/gui/gnome-cal.c
calendar/gui/goto.c
calendar/gui/itip-bonobo-control.c
calendar/gui/itip-bonobo-control.h
calendar/gui/itip-utils.c
calendar/gui/itip-utils.h
calendar/gui/main.c
calendar/gui/memos-component.c
calendar/gui/memos-control.c
calendar/gui/memos-control.h
calendar/gui/migration.c
calendar/gui/migration.h
calendar/gui/tasks-component.c
calendar/gui/tasks-control.c
calendar/importers/main.c
composer/ChangeLog
composer/e-composer-actions.c
composer/e-composer-private.c
composer/e-msg-composer.c
composer/e-msg-composer.h
composer/evolution-composer.ui
configure.in
doc/reference/shell/eshell-overrides.txt
e-util/ChangeLog
e-util/Makefile.am
e-util/e-corba-utils.c
e-util/e-corba-utils.h
e-util/e-gui-utils.c
e-util/e-gui-utils.h
e-util/e-logger.c
e-util/e-non-intrusive-error-dialog.c
e-util/e-non-intrusive-error-dialog.h
e-util/e-plugin-ui.c
e-util/e-util-labels.c
e-util/e-util-labels.h
e-util/e-util.c
e-util/e-util.h
filter/ChangeLog
filter/filter-option.c
help/C/evolution.xml
help/ChangeLog
help/Makefile.am
help/cs/cs.po
help/de/de.po
help/es/es.po
help/eu/figures/Screenshot-Free-Busy.png
help/eu/figures/evo_blink.png
help/eu/figures/evo_dialog-info.png
help/eu/figures/evo_dialog-warning.png
help/eu/figures/evo_email_a.png
help/eu/figures/evo_flag_follow_up_a.png
help/eu/figures/evo_proxyadd_a.png
help/eu/figures/evo_shd_memo_a.png
help/eu/figures/exchange-delegation.png
help/eu/figures/exchange-identity.png
help/eu/figures/exchange-receive-options.png
help/eu/figures/exchange-receive.png
help/eu/figures/exchg-identity.png
help/eu/figures/exchng-identity.png
help/eu/figures/exchng-rec-mail.png
help/eu/figures/exchng-rec-option.png
help/eu/figures/exchng-rec-options.png
help/eu/figures/free_busy.png
help/eu/figures/full-1.png
help/eu/figures/full-2.png
help/eu/figures/full-3.png
help/eu/figures/full-4.png
help/eu/figures/full-5.png
help/eu/figures/full-6.png
help/eu/figures/full-7.png
help/eu/figures/mail-druid-pic.png
help/eu/figures/mail-inbox.png
help/eu/figures/mail-threaded.png
help/eu/figures/mainwindow-pic.png
help/eu/figures/minus.png
help/eu/figures/plus.png
help/eu/figures/proxy-cal.png
help/eu/figures/proxy-login.png
help/eu/figures/schedule.png
help/eu/figures/stock_search.png
help/eu/figures/sub-others-folder.png
help/eu/figures/sub-pub-fold.png
help/eu/figures/vfolder-createrule-fig.png
help/quickref/Makefile.am
mail/ChangeLog
mail/Makefile.am
mail/default/Makefile.am
mail/e-mail-shell-module-migrate.c
mail/e-searching-tokenizer.c
mail/em-account-editor.c
mail/em-account-prefs.h
mail/em-composer-prefs.c
mail/em-composer-prefs.h
mail/em-composer-utils.c
mail/em-filter-folder-element.c
mail/em-folder-browser.c
mail/em-folder-selection-button.h
mail/em-folder-selector.c
mail/em-folder-tree-model.c
mail/em-folder-tree-model.h
mail/em-folder-tree.c
mail/em-folder-tree.h
mail/em-folder-utils.c
mail/em-folder-utils.h
mail/em-folder-view.c
mail/em-format-html-display.c
mail/em-format-html-print.c
mail/em-format-html-print.h
mail/em-format-html.c
mail/em-format-quote.h
mail/em-format.c
mail/em-format.h
mail/em-html-stream.h
mail/em-mailer-prefs.c
mail/em-mailer-prefs.h
mail/em-message-browser.c
mail/em-message-browser.h
mail/em-migrate.h
mail/em-network-prefs.h
mail/em-popup.c
mail/em-search-context.h
mail/em-subscribe-editor.c
mail/em-utils.c
mail/em-utils.h
mail/filtertypes.xml
mail/mail-component-factory.c
mail/mail-component.c
mail/mail-config-factory.c
mail/mail-config-factory.h
mail/mail-config.c
mail/mail-config.glade
mail/mail-crypto.c
mail/mail-crypto.h
mail/mail-dialogs.glade
mail/mail-folder-cache.c
mail/mail-mt.c
mail/mail-send-recv.c
mail/mail-send-recv.h
mail/mail-session.c
mail/mail-session.h
mail/mail-types.h
mail/mail-vfolder.c
mail/message-list.c
mail/message-tag-followup.c
mail/searchtypes.xml
mail/vfoldertypes.xml
plugins/attachment-reminder/Makefile.am
plugins/audio-inline/org-gnome-audio-inline.eplug.xml
plugins/caldav/ChangeLog
plugins/caldav/caldav-source.c
plugins/calendar-http/ChangeLog
plugins/calendar-weather/ChangeLog
plugins/calendar-weather/calendar-weather.c
plugins/email-custom-header/ChangeLog
plugins/email-custom-header/email-custom-header.c
plugins/exchange-operations/ChangeLog
plugins/google-account-setup/ChangeLog
plugins/google-account-setup/Makefile.am
plugins/google-account-setup/google-contacts-source.c
plugins/google-account-setup/google-source.c
plugins/import-ics-attachments/ChangeLog
plugins/import-ics-attachments/Makefile.am
plugins/import-ics-attachments/icsimporter.c
plugins/itip-formatter/ChangeLog
plugins/itip-formatter/itip-view.c
plugins/mail-account-disable/ChangeLog
plugins/mail-account-disable/mail-account-disable.c
plugins/mail-notification/ChangeLog
plugins/mail-notification/mail-notification.c
plugins/mail-to-meeting/ChangeLog
plugins/mail-to-task/ChangeLog
plugins/mark-all-read/mark-all-read.c
plugins/publish-calendar/ChangeLog
plugins/publish-calendar/publish-format-fb.c
plugins/publish-calendar/publish-format-ical.c
plugins/save-attachments/ChangeLog
plugins/save-attachments/Makefile.am
plugins/save-attachments/save-attachments.c
plugins/select-one-source/ChangeLog
plugins/select-one-source/Makefile.am
plugins/select-one-source/select-one-source.c
plugins/startup-wizard/ChangeLog
plugins/startup-wizard/startup-wizard.c
plugins/webdav-account-setup/ChangeLog
plugins/webdav-account-setup/Makefile.am
plugins/webdav-account-setup/webdav-contacts-source.c
po/ChangeLog
po/POTFILES.in
po/ar.po
po/bg.po
po/bn_IN.po
po/ca.po
po/cs.po
po/da.po
po/de.po
po/el.po
po/en_GB.po
po/es.po
po/et.po
po/fr.po
po/gl.po
po/gu.po
po/hi.po
po/hu.po
po/it.po
po/ja.po
po/kn.po
po/ko.po
po/lt.po
po/ml.po
po/mr.po
po/nb.po
po/nl.po
po/pa.po
po/pl.po
po/pt.po
po/ru.po
po/sl.po
po/sr.po
po/sr@latin.po
po/sv.po
po/ta.po
po/te.po
po/th.po
po/tr.po
po/zh_HK.po
po/zh_TW.po
shell/ChangeLog
shell/Evolution-Component.idl
shell/Makefile.am
shell/apps_evolution_shell.schemas.in
shell/e-component-registry.c
shell/e-component-registry.h
shell/e-component-view.c
shell/e-component-view.h
shell/e-corba-config-page.c
shell/e-corba-config-page.h
shell/e-shell-constants.h
shell/e-shell-importer.c
shell/e-shell-importer.h
shell/e-shell-nm.c
shell/e-shell-settings-dialog.c
shell/e-shell-settings-dialog.h
shell/e-shell-view.c
shell/e-shell-view.h
shell/e-shell-window-commands.c
shell/e-shell-window-commands.h
shell/e-shell-window.c
shell/e-shell-window.h
shell/e-shell.c
shell/e-shell.h
shell/e-sidebar.c
shell/e-sidebar.h
shell/e-user-creatable-items-handler.c
shell/e-user-creatable-items-handler.h
shell/es-menu.c
shell/es-menu.h
shell/evolution-component.c
shell/evolution-component.h
shell/evolution-config-control.c
shell/evolution-config-control.h
shell/evolution-listener.c
shell/evolution-listener.h
shell/evolution-shell-component-utils.c
shell/evolution-shell-component-utils.h
shell/importer/evolution-importer-client.c
shell/importer/evolution-importer-client.h
shell/importer/evolution-importer-listener.c
shell/importer/evolution-importer-listener.h
shell/importer/evolution-importer.c
shell/importer/evolution-importer.h
shell/importer/evolution-intelligent-importer.c
shell/importer/evolution-intelligent-importer.h
shell/importer/import.glade
shell/importer/intelligent.c
shell/importer/intelligent.h
shell/main.c
shell/shell.error.xml
shell/test/evolution-test-component.c
shell/test/evolution-test-component.h
smime/ChangeLog
smime/lib/Makefile.am
ui/Makefile.am
ui/evolution-addressbook.xml
ui/evolution-calendar.xml
widgets/ChangeLog
widgets/menus/gal-view-menus.c
widgets/menus/gal-view-menus.h
widgets/misc/ChangeLog
widgets/misc/Makefile.am
widgets/misc/e-activity-handler.c
widgets/misc/e-activity-handler.h
widgets/misc/e-attachment-bar.c
widgets/misc/e-attachment-bar.h
widgets/misc/e-attachment.c
widgets/misc/e-attachment.h
widgets/misc/e-calendar-item.c
widgets/misc/e-charset-picker.c
widgets/misc/e-combo-button.c
widgets/misc/e-combo-button.h
widgets/misc/e-config-page.c
widgets/misc/e-config-page.h
widgets/misc/e-dropdown-button.c
widgets/misc/e-dropdown-button.h
widgets/misc/e-filter-bar.h
widgets/misc/e-info-label.c
widgets/misc/e-info-label.h
widgets/misc/e-multi-config-dialog.c
widgets/misc/e-multi-config-dialog.h
widgets/misc/e-online-button.c
widgets/misc/e-search-bar.c
widgets/misc/e-search-bar.h
widgets/misc/e-signature-combo-box.c
widgets/misc/e-signature-combo-box.h
widgets/misc/e-signature-editor.c
widgets/misc/e-signature-editor.h
widgets/misc/e-task-bar.c
widgets/misc/e-task-bar.h
widgets/misc/e-task-widget.c
widgets/misc/e-task-widget.h
widgets/misc/test-dropdown-button.c
widgets/misc/test-info-label.c
widgets/misc/test-multi-config-dialog.c
widgets/table/ChangeLog
widgets/table/e-cell-date.c
widgets/table/e-table-group-container.c
widgets/table/e-table-group-leaf.c
widgets/table/e-table-group.c
widgets/table/e-table-group.h
widgets/table/e-table.c
widgets/table/e-table.h
Diffstat (limited to 'mail')
-rw-r--r-- | mail/ChangeLog | 155 | ||||
-rw-r--r-- | mail/default/Makefile.am | 2 | ||||
-rw-r--r-- | mail/default/ca/Inbox | 317 | ||||
-rw-r--r-- | mail/default/ca/Makefile.am | 7 | ||||
-rw-r--r-- | mail/em-composer-prefs.h | 5 | ||||
-rw-r--r-- | mail/em-filter-editor.c | 44 | ||||
-rw-r--r-- | mail/em-filter-rule.c | 53 | ||||
-rw-r--r-- | mail/em-filter-source-element.c | 40 | ||||
-rw-r--r-- | mail/em-folder-browser.c | 8 | ||||
-rw-r--r-- | mail/em-folder-selector.c | 2 | ||||
-rw-r--r-- | mail/em-folder-tree.c | 3 | ||||
-rw-r--r-- | mail/em-folder-utils.c | 18 | ||||
-rw-r--r-- | mail/em-mailer-prefs.h | 11 | ||||
-rw-r--r-- | mail/em-subscribe-editor.c | 88 | ||||
-rw-r--r-- | mail/em-utils.c | 48 | ||||
-rw-r--r-- | mail/mail-config.c | 146 | ||||
-rw-r--r-- | mail/mail-folder-cache.c | 29 | ||||
-rw-r--r-- | mail/mail-folder-cache.h | 1 | ||||
-rw-r--r-- | mail/mail-mt.c | 4 | ||||
-rw-r--r-- | mail/mail-ops.c | 18 | ||||
-rw-r--r-- | mail/mail-session.c | 6 | ||||
-rw-r--r-- | mail/message-list.c | 30 | ||||
-rw-r--r-- | mail/message-tag-followup.c | 20 | ||||
-rw-r--r-- | mail/message-tag-followup.h | 2 |
24 files changed, 884 insertions, 173 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 3be6315b11..d4a9c8912f 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,158 @@ +2009-04-24 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #552583 + + * mail-config.c: (mc_get_account_by), (get_source_url_string), + (get_transport_url_string), (mail_config_get_account_by_source_url), + (mail_config_get_account_by_transport_url): + Let the provider compare urls. + +2009-04-24 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #572348 + + * mail-config.glade: + * mail-dialogs.glade: + * em-composer-prefs.h: + * em-composer-prefs.c: + * em-subscribe-editor.c: + * em-filter-editor.c: + * em-filter-rule.c: + * em-filter-source-element.c: + * em-mailer-prefs.h: + * em-mailer-prefs.c: + * message-tag-followup.h: + * message-tag-followup.c: + Remove deprecated Gtk+ symbols. + +2009-04-15 Chenthill Palanisamy <pchenthill@novell.com> + + * mail/mail-ops.c: Corrected a typo error. + +2009-04-13 Chenthill Palanisamy <pchenthill@novell.com> + + Fixes #467659 (bnc) + * mail/mail-mt.c: + * mail/mail-ops.c: Set the description for send mail + operation. + +2009-04-13 Chenthill Palanisamy <pchenthill@novell.com> + + Fixes #471083 (bnc) + * mail/em-folder-utils.c: + * mail/mail-folder-cache.c: + * mail/mail-folder-cache.h: Do not allow deleting + system folders. + +2008-04-04 Tobias Mueller <tobiasmue@gnome.org> + + ** Fix for bug #569765 + + * message-list.c: Don't keep the selected message in the message + list if it is removed from the folder. + Patch by Matt McCutchen <matt@mattmccutchen.net> + +2009-04-02 Milan Crha <mcrha@redhat.com> + + * em-folder-tree.c: (em_folder_tree_get_selected_folder): + Do not ask for a folder when no folder selected. + +2009-03-31 Hiroyuki Ikezoe <poincare@ikezoe.net> + + ** Fix for bug #576921 + + * mail/em-mailer-prefs.h: Remove needless GtkListStore objects. + +2009-03-28 Hiroyuki Ikezoe <poincare@ikezoe.net> + + ** Fix for bug #576921 + + * mail/em-mailer-prefs.h: Remove needless GtkListStore objects. + * mail/em-mailer-prefs.c: Use dispose instead of finalize. + (em_mailer_prefs_dispose): Unref header_list_store. + (init_junk_tree), (init_label_tree): Returns gboolean value instead + of GtkListStore object. Unref GtkListStore right after + gtk_tree_view_set_model. + +2009-03-28 Hiroyuki Ikezoe <poincare@ikezoe.net> + + ** Fix for bug #576845 + + * em-mailr-prefs.c: (init_junk_tree): + Call jh_tree_refill instead of label_tree_refill. + +2009-03-24 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #552583 + + * mail-config.c: (only_username), (mail_config_account_url_equal): + Compare only user names, without a domain part, if such exists. + +2009-03-19 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #504767 + + * em-folder-utils.h: (em_folder_utils_create_folder): + * em-folder-utils.c: (em_folder_utils_create_folder): + * em-folder-selector.c: (emfs_response): + Inherit modality from a parent's window, if any. + * em-folder-browser.c: (emfb_folder_create): + * em-folder-tree.c: (emft_popup_new_folder): + * mail-component.c: (create_item): + Propagate changes in function prototype. + +2009-03-08 David Planella <david.planella@gmail.com> + + Added Catalan translation of the Evolution welcome e-mail + + * default/Makefile.am: Added Catalan (ca) to the list of + subdirectories + * default/ca/Inbox: Added Catalan translation by David Planella + * default/ca/Makefile.am: Created Makefile template + +2009-03-04 Milan Crha <mcrha@redhat.com> + + * mail-ops.c: (empty_trash_exec): Do not unref NULL object. + +2009-03-02 Matt McCutchen <matt@mattmccutchen.net> + + * evolution/mail/em-folder-view.c: + * evolution/mail/em-utils.c: + * evolution/mail/em-utils.h: + * evolution/mail/em-popup.c: + Revert evolution revision 37063 (workaround for bug 563867). + + ** Part of the fix for bug #549838 + +2009-02-26 Andre Klapper <a9016009@gmx.de> + + * message-tag-followup-c: + Remove deprecated gtk_combo_set_case_sensitive() call as FALSE + IS already the default value for the case-sensitive property. + +2009-02-25 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #572268 + + * em-subscribe-editor.c: (sub_fill_level): + Do not duplicate "Loading..." node when adding to existing node. + +2009-02-25 Milan Crha <mcrha@redhat.com> + + ** Part of fix for bug #563212 + + * em-utils.c: (try_open_e_book_cb), (try_open_e_book), + (is_local), (em_utils_in_addressbook), (em_utils_contact_photo): + Ensure empty GError before filling it. Check if group is local based + on its base_uri. Adapt to new e_book_cancel behaviour. + +2009-02-23 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #572543 + + * em-popup.c: (emp_standard_menu_factory): + Always look for alternative apps for application/octet-stream. + 2009-02-11 Andre Klapper <a9016009@gmx.de> * em-folder-browser.c: diff --git a/mail/default/Makefile.am b/mail/default/Makefile.am index dcc70dce00..452431d4d1 100644 --- a/mail/default/Makefile.am +++ b/mail/default/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS=C cs zh_CN de es fi fr hu it ja ko lt mk nl pl pt sr sr@latin sv +SUBDIRS=C ca cs zh_CN de es fi fr hu it ja ko lt mk nl pl pt sr sr@latin sv diff --git a/mail/default/ca/Inbox b/mail/default/ca/Inbox new file mode 100644 index 0000000000..969e924ba2 --- /dev/null +++ b/mail/default/ca/Inbox @@ -0,0 +1,317 @@ +From evolution@novell.com Wed Sep 06 07:45:12 2006 +Return-Path: <evolution@novell.com> +Received: from pop.novell.com (IDENT:mail@localhost [127.0.0.1]) by + pop.novell.com (8.9.3/8.9.3) with ESMTP id HAA20680; Wed, 14 Mar 2007 + 07:45:12 -0400 +Received: from smtp.novell.com (smtp.novell.com [141.154.95.10]) by + pop.novell.com (8.9.3/8.9.3) with ESMTP id HAA20659 for + <evolution@novell.com>; Wed, 14 Mar 2007 07:45:10 -0400 +Received: (qmail 5610 invoked from network); 14 Mar 2007 12:00:00 -0000 +Received: from smtp.novell.com (HELO localhost) (141.154.95.10) by + pop.novell.com with SMTP; 14 Mar 2007 12:00:00 -0000 +From: "L'equip de l'Evolution" <evolution@novell.com> +To: Usuaris de l'Evolution <evolution@novell.com> +Content-Type: multipart/related; type="multipart/alternative"; boundary="=-t4dRE6cqcdSBHOrMdTQ1" +X-Mailer: Evolution 2.26.0 +Date: 18 March 2009 12:00:00 +0000 +Message-Id: <1001418302.27070.20.camel@spectrolite> +Mime-Version: 1.0 +Subject: Us donem la benvinguda a l'Evolution! +Sender: evolution@novell.com +Errors-To: evolution@novell.com +X-Mailman-Version: 1.1 +Status: +X-Evolution-Source: pop://rupert@pop.novell.com/inbox +X-Evolution: 00000002-0000 + + +--=-t4dRE6cqcdSBHOrMdTQ1 +Content-Type: multipart/alternative; boundary="=-2gZ1roA/HoYrlRDVGyiM" + + +--=-2gZ1roA/HoYrlRDVGyiM +Content-Type: text/plain +Content-Transfer-Encoding: 7bit + + +L'equip de l'Evolution s'alegra de donar-vos la benvinguda a l'Evolution, +un sistema complet per a gestionar les vostres comunicacions i la vostra +informació personal. + + +Com començar + + A l'esquerra de la finestra de l'Evolution hi ha la barra + lateral amb els enllaços a totes les vostres carpetes de + correu. A sota d'aquesta trobareu botons per als vostres + calendaris, contactes, tasques, correu i anotacions. + + Per a veure una guia completa de l'Evolution, seleccioneu + «Taula de continguts» al menú «Ajuda», o bé premeu la + tecla F1. + +Com informar sobre errors + + Els errors s'haurien d'enviar a http://bugzilla.gnome.org. + +Més informació + + Us podeu subscriure a la llista de correu dels usuaris de + l'Evolution a http://mail.gnome.org/mailman/listinfo/evolution-list. + + Trobareu més informació sobre el projecte de l'Evolution + a http://www.gnome.org/projects/evolution. + + +Atentament, +L'equip de l'Evolution + + +--=-2gZ1roA/HoYrlRDVGyiM +Content-Type: text/html; charset=utf-8 + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN"> +<HTML> +<HEAD> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8"> + <META NAME="GENERATOR" CONTENT="GtkHTML/0.13.99"> +</HEAD> +<BODY BGCOLOR="#f8fcf8"> +<TABLE BACKGROUND="cid:1001417869.27019.4.camel@spectrolite" CELLSPACING="0" CELLPADDING="0" WIDTH="100%"> +<TR><TD ALIGN="left" VALIGN="top"> +<IMG SRC="cid:1001417869.27019.5.camel@spectrolite" ALIGN="top" BORDER="0" WIDTH="8" HEIGHT="8"></TD> +<TD></TD><TD></TD><TD></TD><TD></TD><TD></TD> +<TD ALIGN="right" VALIGN="top"> +<IMG SRC="cid:1001417929.27019.7.camel@spectrolite" ALIGN="top" BORDER="0" WIDTH="8" HEIGHT="8"></TD> +</TR><TR><TD></TD><TD> +<IMG SRC="cid:1001417989.27019.11.camel@spectrolite" ALIGN="top" BORDER="0" WIDTH="48" HEIGHT="48"></TD> +<TD></TD><TD> +<FONT COLOR="#f8fcf8"><FONT SIZE="4"> + + +<B>L'equip de l'Evolution</B> s'alegra de donar-vos la benvinguda a l'<B>Evolution</B>, un sistema complet per a gestionar les vostres comunicacions i la vostra informació personal. + + +</FONT SIZE="4"></FONT> +</TD><TD></TD><TD> +<IMG SRC="cid:1001417989.27019.11.camel@spectrolite" ALIGN="top" BORDER="0" WIDTH="48" HEIGHT="48"> +</TD><TD></TD></TR><TR><TD ALIGN="left" VALIGN="bottom"> +<IMG SRC="cid:1001417929.27019.8.camel@spectrolite" ALIGN="top" BORDER="0" WIDTH="8" HEIGHT="8"> +</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD> +<TD ALIGN="right" VALIGN="bottom"><div align=right> +<IMG SRC="cid:1001417929.27019.9.camel@spectrolite" ALIGN="top" BORDER="0" WIDTH="8" HEIGHT="8"> +</div></TD></TR></TABLE> + + +<h2> +Com començar +</h2> + +<blockquote> + + A l'esquerra de la finestra de l'Evolution hi ha la barra + lateral amb els enllaços a totes les vostres carpetes de + correu. A sota d'aquesta trobareu botons per als vostres + calendaris, contactes, tasques, correu i anotacions. + +<br><br> + Per a veure una guia completa de l'Evolution, seleccioneu + <b>Taula de continguts</b> al menú <b>Ajuda</b>, o bé premeu la + tecla <b>F1</b>. + +<br><br> +</blockquote> + +<h2> +Com informar sobre errors +</h2> +<blockquote> + Els errors s'haurien d'enviar a <a href="http://bugzilla.gnome.org">http://bugzilla.gnome.org</a>. +<br><br> +</blockquote> + +<h2> +Més informació +</h2> + +<blockquote> + Trobareu més informació sobre el projecte de l'Evolution + a <a href="http://www.gnome.org/projects/evolution">http://www.gnome.org/projects/evolution</a>. + + Us podeu subscriure a la llista de correu dels usuaris de + l'Evolution a <a href="http://lists.gnome.org/mailman/listinfo/evolution">http://lists.gnome.org/mailman/listinfo/evolution</a>. + <!-- + Podeu trobar una llista de respostes a les Preguntes Més Freqüents (PMF) a + <a href="http://go-evolution.org/FAQ">http://go-evolution.org/FAQ</a>. + --> +<br><br> +</blockquote> + +Atentament, +<br> +L'equip de l'Evolution + +</BODY> +</HTML> + +--=-2gZ1roA/HoYrlRDVGyiM-- + +--=-t4dRE6cqcdSBHOrMdTQ1 +Content-Type: image/png +Content-ID: <1001417929.27019.9.camel@spectrolite> +Content-Disposition: attachment; filename=corner-bottomright.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAZiS0dE +AP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EJGQsBAVf+8XgAAAA7SURB +VHjaY/z//z8DPsDEgB8IE1JgSkhBGMP///9xYbP/eCSF////f/4/Hp3n/0MBsg6P////z/uPBgDp +AG5RDY2ymwAAAABJRU5ErkJggg== + +--=-t4dRE6cqcdSBHOrMdTQ1 +Content-Type: image/png +Content-ID: <1001417989.27019.11.camel@spectrolite> +Content-Disposition: attachment; filename=evolution-icon.png +Content-Transfer-Encoding: base64 + +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 + +--=-t4dRE6cqcdSBHOrMdTQ1 +Content-Type: image/png +Content-ID: <1001417929.27019.8.camel@spectrolite> +Content-Disposition: attachment; filename=corner-bottomleft.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAZiS0dE +AP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EJGQsBCVkleUoAAAA/SURB +VHjaY/z//z8DPsDEwMAgTEiBKSEFYXjt+A8BZv///2fAhmEKzv///18YnwKYIjN8CmBg3v///z1g +JgIAui9uUdDfxKcAAAAASUVORK5CYII= + +--=-t4dRE6cqcdSBHOrMdTQ1 +Content-Type: image/png +Content-ID: <1001417929.27019.7.camel@spectrolite> +Content-Disposition: attachment; filename=corner-topright.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAZiS0dE +AP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EJGQsANW9RNIwAAAA7SURB +VHjahcwxDcAwEATBCwZzCQajNCVDGlduouh/petGFwQDE8un/OzFrsB93BW4Tx6kaHVgdmB0IAcq +73eg4H8gZQAAAABJRU5ErkJggg== + +--=-t4dRE6cqcdSBHOrMdTQ1 +Content-Type: image/png +Content-ID: <1001417869.27019.5.camel@spectrolite> +Content-Disposition: attachment; filename=corner-topleft.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAZiS0dE +AP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EJGQsAJuvvdVIAAABISURB +VHjafcxRDYAwDAbhYxbqZRpQOQGYQQkabk8kzRj9kz59l+J3Qz3VUCHBrXaVfCSMFXPQd/gG4w9V +GnBR7FADeKqgesAEj0KK3Z8K59sAAAAASUVORK5CYII= + +--=-t4dRE6cqcdSBHOrMdTQ1 +Content-Type: image/png +Content-ID: <1001417869.27019.4.camel@spectrolite> +Content-Disposition: attachment; filename=bluestripes.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAAZiS0dE +AP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EJGQsLBap83esAAACESURB +VHja7dRBDcAgEADBgwDBEj4wUvdN+2h1kJvVMNmy9vVF4mokr93PGwRkFjBHJ8ADCPAAAjyAAA8g +wAMI8AACPIAADyDAAwjwAAI8gAAPIMADCPAAAjyAAA8gwAMI8AACPIAADyDAAwjwAAI8gAAPIMAD +CPAAAjyAAA8gwAMIOL8fcegyqOBdwTkAAAAASUVORK5CYII= + + +--=-t4dRE6cqcdSBHOrMdTQ1 +Content-Transfer-Encoding: 8bit + +--=-t4dRE6cqcdSBHOrMdTQ1 diff --git a/mail/default/ca/Makefile.am b/mail/default/ca/Makefile.am new file mode 100644 index 0000000000..3c004f99e1 --- /dev/null +++ b/mail/default/ca/Makefile.am @@ -0,0 +1,7 @@ + +defaultlocaldir = $(privdatadir)/default/ca/mail/local + +defaultlocal_DATA = \ + Inbox + +EXTRA_DIST = $(defaultlocal_DATA) diff --git a/mail/em-composer-prefs.h b/mail/em-composer-prefs.h index 623fee0220..19d753e121 100644 --- a/mail/em-composer-prefs.h +++ b/mail/em-composer-prefs.h @@ -65,8 +65,9 @@ struct _EMComposerPrefs { GtkTreeModel *language_model; - /* Keyboard Shortcuts */ - GtkOptionMenu *shortcuts_type; + /* Forwards and Replies */ + GtkComboBox *forward_style; + GtkComboBox *reply_style; /* Signatures */ struct _GtkHTML *sig_preview; diff --git a/mail/em-filter-editor.c b/mail/em-filter-editor.c index fb0c2c4ea6..4a92a65c58 100644 --- a/mail/em-filter-editor.c +++ b/mail/em-filter-editor.c @@ -122,11 +122,29 @@ em_filter_editor_new (EMFilterContext *fc, const EMFilterSource *source_names) } static void -select_source (GtkMenuItem *mi, EMFilterEditor *fe) +free_sources (gpointer data) +{ + GSList *sources = data; + + g_slist_foreach (sources, (GFunc)g_free, NULL); + g_slist_free (sources); +} + +static void +select_source (GtkComboBox *combobox, EMFilterEditor *fe) { char *source; + int idx; + GSList *sources; + + g_return_if_fail (GTK_IS_COMBO_BOX (combobox)); - source = g_object_get_data(G_OBJECT(mi), "source"); + idx = gtk_combo_box_get_active (combobox); + sources = g_object_get_data (G_OBJECT (combobox), "sources"); + + g_return_if_fail (idx >= 0 && idx < g_slist_length (sources)); + + source = (char *)g_slist_nth (sources, idx); g_return_if_fail (source); rule_editor_set_source ((RuleEditor *)fe, source); @@ -135,23 +153,23 @@ select_source (GtkMenuItem *mi, EMFilterEditor *fe) void em_filter_editor_construct (EMFilterEditor *fe, EMFilterContext *fc, GladeXML *gui, const EMFilterSource *source_names) { - GtkWidget *menu, *item, *omenu; + GtkWidget *combobox; int i; GtkTreeViewColumn *column; + GSList *sources = NULL; - omenu = glade_xml_get_widget (gui, "filter_source"); - gtk_option_menu_remove_menu (GTK_OPTION_MENU (omenu)); - menu = gtk_menu_new (); + combobox = glade_xml_get_widget (gui, "filter_source_combobox"); + gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (combobox)))); for (i = 0; source_names[i].source; i++) { - item = gtk_menu_item_new_with_label(source_names[i].name); - g_object_set_data_full((GObject *)item, "source", g_strdup(source_names[i].source), g_free); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show (item); - g_signal_connect (item, "activate", G_CALLBACK (select_source), fe); + gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), source_names[i].name); + sources = g_slist_append (sources, g_strdup(source_names[i].source)); } - gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); - gtk_widget_show (omenu); + + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); + g_signal_connect (combobox, "changed", G_CALLBACK (select_source), fe); + g_object_set_data_full (G_OBJECT (combobox), "sources", sources, free_sources); + gtk_widget_show (combobox); rule_editor_construct ((RuleEditor *) fe, (RuleContext *) fc, gui, source_names[0].source, _("_Filter Rules")); diff --git a/mail/em-filter-rule.c b/mail/em-filter-rule.c index 61156302f8..10f06e38da 100644 --- a/mail/em-filter-rule.c +++ b/mail/em-filter-rule.c @@ -324,39 +324,44 @@ struct _part_data { }; static void -option_activate(GtkMenuItem *item, struct _part_data *data) +part_combobox_changed (GtkComboBox *combobox, struct _part_data *data) { - FilterPart *part = g_object_get_data((GObject *)item, "part"); + FilterPart *part = NULL; FilterPart *newpart; + int index, i; + + index = gtk_combo_box_get_active (combobox); + for (i = 0, part = rule_context_next_part (RULE_CONTEXT (data->f), part); part && i < index; i++, part = rule_context_next_part (RULE_CONTEXT (data->f), part)) { + /* traverse until reached index */ + } + + g_return_if_fail (part != NULL); + g_return_if_fail (i == index); /* dont update if we haven't changed */ - if (!strcmp(part->title, data->part->title)) + if (!strcmp (part->title, data->part->title)) return; /* here we do a widget shuffle, throw away the old widget/rulepart, and create another */ if (data->partwidget) - gtk_container_remove(GTK_CONTAINER(data->container), data->partwidget); + gtk_container_remove (GTK_CONTAINER (data->container), data->partwidget); - newpart = filter_part_clone(part); - filter_part_copy_values(newpart, data->part); - em_filter_rule_replace_action((EMFilterRule *)data->fr, data->part, newpart); - g_object_unref(data->part); + newpart = filter_part_clone (part); + filter_part_copy_values (newpart, data->part); + em_filter_rule_replace_action ((EMFilterRule *)data->fr, data->part, newpart); + g_object_unref (data->part); data->part = newpart; - data->partwidget = filter_part_get_widget(newpart); + data->partwidget = filter_part_get_widget (newpart); if (data->partwidget) - gtk_box_pack_start(GTK_BOX(data->container), data->partwidget, TRUE, TRUE, 0); - - g_object_set_data((GObject *)data->container, "part", newpart); + gtk_box_pack_start (GTK_BOX (data->container), data->partwidget, TRUE, TRUE, 0); } static GtkWidget * get_rule_part_widget(EMFilterContext *f, FilterPart *newpart, FilterRule *fr) { FilterPart *part = NULL; - GtkWidget *menu; - GtkWidget *item; - GtkWidget *omenu; + GtkWidget *combobox; GtkWidget *hbox; GtkWidget *p; int index = 0, current = 0; @@ -373,14 +378,9 @@ get_rule_part_widget(EMFilterContext *f, FilterPart *newpart, FilterRule *fr) data->partwidget = p; data->container = hbox; - menu = gtk_menu_new(); + combobox = gtk_combo_box_new_text (); while ((part = em_filter_context_next_action(f, part))) { - item = gtk_menu_item_new_with_label(_(part->title)); - - g_object_set_data((GObject *)item, "part", part); - g_signal_connect(item, "activate", G_CALLBACK(option_activate), data); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); + gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _(part->title)); if (!strcmp(newpart->title, part->title)) current = index; @@ -388,12 +388,11 @@ get_rule_part_widget(EMFilterContext *f, FilterPart *newpart, FilterRule *fr) index++; } - omenu = gtk_option_menu_new(); - gtk_option_menu_set_menu(GTK_OPTION_MENU(omenu), menu); - gtk_option_menu_set_history(GTK_OPTION_MENU(omenu), current); - gtk_widget_show(omenu); + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), current); + g_signal_connect (combobox, "changed", G_CALLBACK (part_combobox_changed), data); + gtk_widget_show (combobox); - gtk_box_pack_start(GTK_BOX(hbox), omenu, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), combobox, FALSE, FALSE, 0); if (p) gtk_box_pack_start(GTK_BOX(hbox), p, TRUE, TRUE, 0); diff --git a/mail/em-filter-source-element.c b/mail/em-filter-source-element.c index d2b5136751..096f91b2dd 100644 --- a/mail/em-filter-source-element.c +++ b/mail/em-filter-source-element.c @@ -232,21 +232,26 @@ clone(FilterElement *fe) } static void -source_changed(GtkWidget *item, EMFilterSourceElement *fs) +source_changed(GtkComboBox *combobox, EMFilterSourceElement *fs) { - SourceInfo *info = (SourceInfo *)g_object_get_data((GObject *)item, "source"); + SourceInfo *info; + int idx; - g_free(fs->priv->current_url); - fs->priv->current_url = g_strdup(info->url); + idx = gtk_combo_box_get_active (combobox); + g_return_if_fail (idx >= 0 && idx < g_list_length (fs->priv->sources)); + + info = (SourceInfo *) g_list_nth (fs->priv->sources, idx); + g_return_if_fail (info != NULL); + + g_free (fs->priv->current_url); + fs->priv->current_url = g_strdup (info->url); } static GtkWidget * get_widget(FilterElement *fe) { EMFilterSourceElement *fs = (EMFilterSourceElement *)fe; - GtkWidget *menu; - GtkWidget *omenu; - GtkWidget *item; + GtkWidget *combobox; GList *i; SourceInfo *first = NULL; int index, current_index; @@ -254,7 +259,7 @@ get_widget(FilterElement *fe) if (fs->priv->sources == NULL) em_filter_source_element_get_sources(fs); - menu = gtk_menu_new(); + combobox = gtk_combo_box_new_text (); index = 0; current_index = -1; @@ -273,15 +278,9 @@ get_widget(FilterElement *fe) else label = g_strdup_printf("%s <%s>", info->name, info->address); - item = gtk_menu_item_new_with_label(label); + gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), label); g_free(label); - g_object_set_data((GObject *)item, "source", info); - g_signal_connect(item, "activate", G_CALLBACK(source_changed), fs); - - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); - if (fs->priv->current_url && !strcmp(info->url, fs->priv->current_url)) current_index = index; @@ -289,13 +288,10 @@ get_widget(FilterElement *fe) } } - omenu = gtk_option_menu_new(); - gtk_option_menu_set_menu(GTK_OPTION_MENU(omenu), menu); - if (current_index >= 0) { - gtk_option_menu_set_history(GTK_OPTION_MENU(omenu), current_index); + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), current_index); } else { - gtk_option_menu_set_history(GTK_OPTION_MENU(omenu), 0); + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); g_free(fs->priv->current_url); if (first) @@ -304,7 +300,9 @@ get_widget(FilterElement *fe) fs->priv->current_url = NULL; } - return omenu; + g_signal_connect (combobox, "changed", G_CALLBACK (source_changed), fs); + + return combobox; } static void diff --git a/mail/em-folder-browser.c b/mail/em-folder-browser.c index 5d47304d84..bfc69f9132 100644 --- a/mail/em-folder-browser.c +++ b/mail/em-folder-browser.c @@ -864,6 +864,14 @@ static BonoboUIVerb emfb_verbs[] = { BONOBO_UI_VERB_END }; +static gboolean +emfb_select_all_daemon (MessageList *ml) +{ + message_list_select_all(ml); + gtk_widget_grab_focus ((GtkWidget *)ml); + return FALSE; +} + static void emfb_hide_deleted(BonoboUIComponent *uic, const char *path, Bonobo_UIComponent_EventType type, const char *state, void *data) { diff --git a/mail/em-folder-selector.c b/mail/em-folder-selector.c index ee7a515716..32eac59d39 100644 --- a/mail/em-folder-selector.c +++ b/mail/em-folder-selector.c @@ -123,7 +123,7 @@ emfs_response (GtkWidget *dialog, int response, EMFolderSelector *emfs) return; g_object_set_data ((GObject *)emfs->emft, "select", GUINT_TO_POINTER (1)); - em_folder_utils_create_folder(NULL, emfs->emft); + em_folder_utils_create_folder (NULL, emfs->emft, GTK_WINDOW (dialog)); g_signal_stop_emission_by_name (emfs, "response"); } diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c index bd8a2436fb..eaf817a0b7 100644 --- a/mail/em-folder-tree.c +++ b/mail/em-folder-tree.c @@ -2263,7 +2263,8 @@ em_folder_tree_get_selected_folder (EMFolderTree *emft) gtk_tree_model_get (model, &iter, COL_POINTER_CAMEL_STORE, &store, COL_STRING_FULL_NAME, &full_name, -1); - folder = camel_store_get_folder (store, full_name, CAMEL_STORE_FOLDER_INFO_FAST, &ex); + if (store && full_name) + folder = camel_store_get_folder (store, full_name, CAMEL_STORE_FOLDER_INFO_FAST, &ex); camel_exception_clear (&ex); diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index cb1c333bfb..64e9dcf117 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -58,6 +58,7 @@ #include "mail-tools.h" #include "mail-config.h" #include "mail-vfolder.h" +#include "mail-folder-cache.h" #include "em-utils.h" #include "em-popup.h" @@ -402,6 +403,8 @@ em_folder_utils_delete_folder (CamelFolder *folder) { CamelStore *local_store; GtkWidget *dialog; + char *uri; + int flags = 0; local_store = e_mail_shell_module_get_local_store (mail_shell_module); @@ -410,6 +413,12 @@ em_folder_utils_delete_folder (CamelFolder *folder) em_utils_show_error_silent (dialog); return; } + + if (mail_folder_cache_get_folder_info_flags (folder, &flags) && (flags & CAMEL_FOLDER_SYSTEM)) + { + e_error_run(NULL,"mail:no-delete-special-folder", folder->name, NULL); + return; + } camel_object_ref (folder); @@ -680,7 +689,8 @@ emfu_popup_new_folder_response (EMFolderSelector *emfs, int response, gpointer d /* FIXME: these functions must be documented */ void -em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft) { +em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft, GtkWindow *parent) +{ EMFolderTree *folder_tree; EMFolderTreeModel *model; GtkWidget *dialog; @@ -691,6 +701,12 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft) dialog = em_folder_selector_create_new (folder_tree, 0, _("Create Folder"), _("Specify where to create the folder:")); if (folderinfo != NULL) em_folder_selector_set_selected ((EMFolderSelector *) dialog, folderinfo->uri); + if (parent) { + gtk_window_set_transient_for (GTK_WINDOW (dialog), parent); + gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); + if (gtk_window_get_modal (parent)) + gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); + } g_signal_connect (dialog, "response", G_CALLBACK (emfu_popup_new_folder_response), emft); gtk_widget_show (dialog); } diff --git a/mail/em-mailer-prefs.h b/mail/em-mailer-prefs.h index ba7a62dcbd..c7dc6ac80a 100644 --- a/mail/em-mailer-prefs.h +++ b/mail/em-mailer-prefs.h @@ -72,7 +72,14 @@ struct _EMMailerPrefs { GtkOptionMenu *charset; /* Deleting Mail */ - GtkOptionMenu *empty_trash_days; + struct _GtkToggleButton *empty_trash; + struct _GtkComboBox *empty_trash_days; + struct _GtkToggleButton *confirm_expunge; + + /* HTML Mail tab */ + GtkFontButton *font_variable; + GtkFontButton *font_fixed; + GtkToggleButton *font_share; /* Loading Images */ GtkToggleButton *images_always; @@ -98,7 +105,7 @@ struct _EMMailerPrefs { /* Junk prefs */ GtkToggleButton *empty_junk; - GtkOptionMenu *empty_junk_days; + GtkComboBox *empty_junk_days; GtkToggleButton *sa_local_tests_only; GtkToggleButton *sa_use_daemon; diff --git a/mail/em-subscribe-editor.c b/mail/em-subscribe-editor.c index 8abd89bca8..a47c6b931d 100644 --- a/mail/em-subscribe-editor.c +++ b/mail/em-subscribe-editor.c @@ -60,9 +60,8 @@ struct _EMSubscribeEditor { GtkDialog *dialog; GtkWidget *vbox; /* where new stores are added */ - GtkWidget *optionmenu; + GtkWidget *combobox; GtkWidget *none_selected; /* 'please select a xxx' message */ - GtkWidget *none_selected_item; GtkWidget *progress; }; @@ -289,6 +288,8 @@ sub_fill_level(EMSubscribe *sub, CamelFolderInfo *info, GtkTreeIter *parent, in /* first, fill a level up */ fi = info; while (fi) { + gboolean known = FALSE; + if ((node = g_hash_table_lookup(sub->folders, fi->full_name)) == NULL) { gboolean state; @@ -302,6 +303,7 @@ sub_fill_level(EMSubscribe *sub, CamelFolderInfo *info, GtkTreeIter *parent, in g_hash_table_insert(sub->folders, fi->full_name, node); } else if (node->path) { gtk_tree_model_get_iter(gtk_tree_view_get_model(sub->tree), &iter, node->path); + known = TRUE; } d(printf("flags & CAMEL_FOLDER_NOCHILDREN=%d, f & CAMEL_FOLDER_NOINFERIORS=%d\t fi->full_name=[%s], node->path=%p\n", @@ -316,9 +318,11 @@ sub_fill_level(EMSubscribe *sub, CamelFolderInfo *info, GtkTreeIter *parent, in sub_fill_level(sub, fi->child, &iter, FALSE); } else if (!(fi->flags & CAMEL_FOLDER_NOCHILDREN)) { GtkTreeIter new_iter; - d(printf("flags: CAMEL_FOLDER_NOCHILDREN is not set '%s'\n", fi->full_name)); - gtk_tree_store_append(treestore, &new_iter, &iter); - gtk_tree_store_set(treestore, &new_iter, 0, 0, 1, "Loading...", 2, NULL, -1); + d(printf("flags: CAMEL_FOLDER_NOCHILDREN is not set '%s', known:%d\n", fi->full_name, known?1:0)); + if (!known) { + gtk_tree_store_append(treestore, &new_iter, &iter); + gtk_tree_store_set(treestore, &new_iter, 0, 0, 1, "Loading...", 2, NULL, -1); + } } else { if (pending) @@ -353,7 +357,7 @@ sub_folderinfo_exec (struct _emse_folderinfo_msg *m) if (m->seq == m->sub->seq) { camel_operation_register(m->base.cancel); - m->info = camel_store_get_folder_info(m->sub->store, m->node?m->node->info->full_name:pub_full_name, CAMEL_STORE_FOLDER_INFO_FAST | CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL, &m->base.ex); + m->info = camel_store_get_folder_info(m->sub->store, m->node?m->node->info->full_name:pub_full_name, CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL, &m->base.ex); camel_operation_unregister(m->base.cancel); } } @@ -725,20 +729,31 @@ sub_editor_got_store(char *uri, CamelStore *store, void *data) } static void -sub_editor_menu_changed(GtkWidget *w, EMSubscribeEditor *se) +sub_editor_combobox_changed (GtkWidget *w, EMSubscribeEditor *se) { int i, n; struct _EMSubscribe *sub; - d(printf("menu changed\n")); + d(printf("combobox changed\n")); i = 1; - n = gtk_option_menu_get_history((GtkOptionMenu *)se->optionmenu); - if (n == 0) - gtk_widget_show(se->none_selected); - else { - gtk_widget_hide(se->none_selected); - gtk_widget_hide(se->none_selected_item); + n = gtk_combo_box_get_active (GTK_COMBO_BOX (se->combobox)); + if (n == 0) { + gtk_widget_show (se->none_selected); + } else { + GtkTreeIter iter; + GtkTreeModel *model; + + gtk_widget_hide (se->none_selected); + + model = gtk_combo_box_get_model (GTK_COMBO_BOX (se->combobox)); + if (gtk_tree_model_get_iter_first (model, &iter)) { + /* hide the first item */ + gtk_list_store_set ( + GTK_LIST_STORE (model), &iter, + 1, FALSE, + -1); + } } se->current = NULL; @@ -812,7 +827,10 @@ em_subscribe_editor_new(void) EAccountList *accounts; EIterator *iter; GladeXML *xml; - GtkWidget *menu, *w; + GtkWidget *w; + GtkCellRenderer *cell; + GtkListStore *store; + GtkTreeIter gtiter; char *gladefile; se = g_malloc0(sizeof(*se)); @@ -856,12 +874,27 @@ em_subscribe_editor_new(void) w = glade_xml_get_widget(xml, "refresh_button"); g_signal_connect(w, "clicked", G_CALLBACK(sub_editor_refresh), se); - /* setup stores menu */ - se->optionmenu = glade_xml_get_widget(xml, "store_menu"); - menu = gtk_menu_new(); - se->none_selected_item = w = gtk_menu_item_new_with_label(_("No server has been selected")); - gtk_widget_show(w); - gtk_menu_shell_append ((GtkMenuShell *)menu, w); + /* setup stores combobox */ + se->combobox = glade_xml_get_widget (xml, "store_combobox"); + store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); + gtk_combo_box_set_model (GTK_COMBO_BOX (se->combobox), GTK_TREE_MODEL (store)); + g_object_unref (store); + + gtk_cell_layout_clear (GTK_CELL_LAYOUT (se->combobox)); + + cell = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (se->combobox), cell, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (se->combobox), cell, + "text", 0, + "visible", 1, + NULL); + + gtk_list_store_append (store, >iter); + gtk_list_store_set ( + store, >iter, + 0, _("No server has been selected"), + 1, TRUE, + -1); accounts = e_get_account_list (); for (iter = e_list_get_iterator ((EList *) accounts); @@ -872,9 +905,12 @@ em_subscribe_editor_new(void) /* setup url table, and store table? */ if (account->enabled && account->source->url) { d(printf("adding account '%s'\n", account->name)); - w = gtk_menu_item_new_with_label(account->name); - gtk_menu_shell_append ((GtkMenuShell *)menu, w); - gtk_widget_show(w); + gtk_list_store_append (store, >iter); + gtk_list_store_set ( + store, >iter, + 0, account->name, + 1, TRUE, + -1); e_dlist_addtail(&se->stores, (EDListNode *)subscribe_new(se, account->source->url)); } else { d(printf("not adding account '%s'\n", account->name)); @@ -882,8 +918,8 @@ em_subscribe_editor_new(void) } g_object_unref(iter); - gtk_option_menu_set_menu((GtkOptionMenu *)se->optionmenu, menu); - g_signal_connect(se->optionmenu, "changed", G_CALLBACK(sub_editor_menu_changed), se); + gtk_combo_box_set_active (GTK_COMBO_BOX (se->combobox), 0); + g_signal_connect(se->combobox, "changed", G_CALLBACK(sub_editor_combobox_changed), se); if (window_size.width == 0) { /* initialize @window_size with the previous session's size */ diff --git a/mail/em-utils.c b/mail/em-utils.c index a98359e12f..7e110877fa 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -2024,8 +2024,10 @@ try_open_e_book_cb (EBook *book, EBookStatus status, gpointer closure) data->result = status == E_BOOK_ERROR_OK; - if (!data->result) + if (!data->result) { + g_clear_error (data->error); g_set_error (data->error, E_BOOK_ERROR, status, "EBookStatus returned %d", status); + } e_flag_set (data->flag); } @@ -2050,6 +2052,7 @@ try_open_e_book (EBook *book, gboolean only_if_exists, GError **error) if (e_book_async_open (book, only_if_exists, try_open_e_book_cb, &data) != FALSE) { e_flag_free (flag); + g_clear_error (error); g_set_error (error, E_BOOK_ERROR, E_BOOK_ERROR_OTHER_ERROR, "Failed to call e_book_async_open."); return FALSE; } @@ -2064,14 +2067,26 @@ try_open_e_book (EBook *book, gboolean only_if_exists, GError **error) } if (canceled) { + g_clear_error (error); g_set_error (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED, "Operation has been canceled."); e_book_cancel_async_op (book, NULL); + /* it had been canceled, the above callback may not be called, thus setting flag here */ + e_flag_set (flag); } e_flag_wait (flag); e_flag_free (flag); - return data.result; + return data.result && (!error || !*error); +} + +static gboolean +is_local (ESourceGroup *group) +{ + return group && + e_source_group_peek_base_uri (group) && + g_str_has_prefix (e_source_group_peek_base_uri (group), "file://"); +>>>>>>> 23df769955ea54f756a579c19964df87ae6fd5c8:mail/em-utils.c } gboolean @@ -2126,7 +2141,7 @@ em_utils_in_addressbook (CamelInternetAddress *iaddr, gboolean local_only) /* FIXME: this aint threadsafe by any measure, but what can you do eh??? */ for (g = e_source_list_peek_groups(emu_addr_list);g;g=g_slist_next(g)) { - if (local_only && e_source_group_peek_base_uri ((ESourceGroup *)g->data) && !g_str_has_prefix (e_source_group_peek_base_uri ((ESourceGroup *)g->data), "file://")) + if (local_only && !is_local (g->data)) continue; for (s = e_source_group_peek_sources((ESourceGroup *)g->data);s;s=g_slist_next(s)) { @@ -2152,20 +2167,24 @@ em_utils_in_addressbook (CamelInternetAddress *iaddr, gboolean local_only) book = e_book_new(source, &err); if (book == NULL) { - g_warning("Unable to create addressbook: %s", err->message); + if (err && !g_error_matches (err, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) + g_warning ("%s: Unable to create addressbook: %s", G_STRFUNC, err->message); g_clear_error(&err); continue; } + g_clear_error(&err); + hook = mail_cancel_hook_add(emu_addr_cancel_book, book); /* ignore errors, but cancellation errors we don't try to go further either */ if (!try_open_e_book (book, TRUE, &err) || !e_book_get_contacts(book, query, &contacts, &err)) { - stop = err && err->domain == E_BOOK_ERROR && err->code == E_BOOK_ERROR_CANCELLED; + stop = err && g_error_matches (err, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED); mail_cancel_hook_remove(hook); g_object_unref(book); - g_warning("Can't get contacts: %s", err->message); + if (err && !stop) + g_warning ("%s: Can't get contacts: %s", G_STRFUNC, err->message); g_clear_error(&err); continue; } @@ -2227,7 +2246,7 @@ em_utils_contact_photo (struct _CamelInternetAddress *cia, gboolean local) query = e_book_query_field_test(E_CONTACT_EMAIL, E_BOOK_QUERY_IS, addr); for (g = e_source_list_peek_groups(emu_addr_list); g; g = g_slist_next(g)) { - if (local && strcmp (e_source_group_peek_name ((ESourceGroup *)g->data), "On This Computer")) + if (local && !is_local (g->data)) continue; for (s = e_source_group_peek_sources((ESourceGroup *)g->data); s; s=g_slist_next(s)) { @@ -2245,14 +2264,25 @@ em_utils_contact_photo (struct _CamelInternetAddress *cia, gboolean local) source = s->data; book = e_book_new(source, &err); + if (!book) { + if (err && !g_error_matches (err, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) + g_warning ("%s: Unable to create addressbook: %s", G_STRFUNC, err->message); + g_clear_error (&err); + continue; + } + + g_clear_error (&err); + if (!try_open_e_book (book, TRUE, &err) || !e_book_get_contacts(book, query, &contacts, &err)) { - stop = err && err->domain == E_BOOK_ERROR && err->code == E_BOOK_ERROR_CANCELLED; + stop = err && g_error_matches (err, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED); g_object_unref(book); - g_warning("Can't get contacts: %s", err->message); + if (err && !stop) + g_warning ("%s: Can't get contacts: %s", G_STRFUNC, err->message); g_clear_error(&err); continue; } + g_clear_error (&err); if (contacts != NULL) { found = TRUE; diff --git a/mail/mail-config.c b/mail/mail-config.c index 3c39791dfa..1e0bfd2a70 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -210,6 +210,22 @@ gconf_outlook_filenames_changed (GConfClient *client, guint cnxn_id, } static void +gconf_outlook_filenames_changed (GConfClient *client, guint cnxn_id, + GConfEntry *entry, gpointer user_data) +{ + extern int camel_header_param_encode_filenames_in_rfc_2047; + + g_return_if_fail (client != NULL); + + /* pass option to the camel */ + if (gconf_client_get_bool (client, "/apps/evolution/mail/composer/outlook_filenames", NULL)) { + camel_header_param_encode_filenames_in_rfc_2047 = 1; + } else { + camel_header_param_encode_filenames_in_rfc_2047 = 0; + } +} + +static void gconf_jh_check_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer user_data) { @@ -676,41 +692,46 @@ mail_config_account_url_equal (const CamelURL *u1, return (u1->port == u2->port); } -EAccount * -mail_config_get_account_by_source_url (const char *source_url) +static EAccount * +mc_get_account_by (const char *given_url, const char * (get_url_string)(EAccount *account)) { - EAccountList *account_list; EAccount *account = NULL; EIterator *iter; CamelURL *url; + CamelProvider *provider; - g_return_val_if_fail (source_url != NULL, NULL); + g_return_val_if_fail (given_url != NULL, NULL); + g_return_val_if_fail (get_url_string != NULL, NULL); - url = camel_url_new (source_url, NULL); + url = camel_url_new (given_url, NULL); g_return_val_if_fail (url != NULL, NULL); - account_list = e_get_account_list (); - iter = e_list_get_iterator ((EList *) account_list); + provider = camel_provider_get (given_url, NULL); + g_return_val_if_fail (provider != NULL && provider->url_equal != NULL, NULL); + + iter = e_list_get_iterator ((EList *) config->accounts); while (account == NULL && e_iterator_is_valid (iter)) { CamelURL *account_url; + const char *account_url_string; account = (EAccount *) e_iterator_get (iter); e_iterator_next (iter); - if ( !account || (account->source == NULL) || - (account->source->url == NULL) || (*account->source->url == '\0')) { + account_url_string = get_url_string (account); + + if ( !account_url_string || !*account_url_string) { account = NULL; continue; } - account_url = camel_url_new (account->source->url, NULL); + account_url = camel_url_new (account_url_string, NULL); if (account_url == NULL) { account = NULL; continue; } - if (!mail_config_account_url_equal (url, account_url)) + if (!provider->url_equal (url, account_url)) account = NULL; /* not a match */ camel_url_free (account_url); @@ -722,50 +743,91 @@ mail_config_get_account_by_source_url (const char *source_url) return account; } +static const char * +get_source_url_string (EAccount *account) +{ + if (account && account->source && account->source->url && *account->source->url) + return account->source->url; + return NULL; +} + +static const char * +get_transport_url_string (EAccount *account) +{ + if (account && account->transport && account->transport->url && *account->transport->url) + return account->transport->url; + return NULL; +} + EAccount * -mail_config_get_account_by_transport_url (const char *transport_url) +mail_config_get_account_by_source_url (const char *source_url) { - EAccountList *account_list; - EAccount *account = NULL; - EIterator *iter; - CamelURL *url; + return mc_get_account_by (source_url, get_source_url_string); +} - g_return_val_if_fail (transport_url != NULL, NULL); +EAccount * +mail_config_get_account_by_transport_url (const char *transport_url) +{ + return mc_get_account_by (transport_url, get_transport_url_string); +} - url = camel_url_new (transport_url, NULL); - g_return_val_if_fail (url != NULL, NULL); +int +mail_config_has_proxies (EAccount *account) +{ + return e_account_list_account_has_proxies (config->accounts, account); +} - account_list = e_get_account_list (); - iter = e_list_get_iterator ((EList *) account_list); - while (account == NULL && e_iterator_is_valid (iter)) { - CamelURL *account_url; +void +mail_config_remove_account_proxies (EAccount *account) +{ + e_account_list_remove_account_proxies (config->accounts, account); +} - account = (EAccount *) e_iterator_get (iter); +void +mail_config_prune_proxies (void) +{ + e_account_list_prune_proxies (config->accounts); +} - e_iterator_next (iter); +EAccountList * +mail_config_get_accounts (void) +{ + if (config == NULL) + mail_config_init (); - if ( !account || (account->transport == NULL) || - (account->transport->url == NULL) || (*account->transport->url == '\0')) { - account = NULL; - continue; - } + return config->accounts; +} - account_url = camel_url_new (account->transport->url, NULL); - if (account_url == NULL) { - account = NULL; - continue; - } +void +mail_config_add_account (EAccount *account) +{ + e_account_list_add(config->accounts, account); + mail_config_save_accounts (); +} - if (!mail_config_account_url_equal (url, account_url)) - account = NULL; /* not a match */ +void +mail_config_remove_account (EAccount *account) +{ + e_account_list_remove(config->accounts, account); + mail_config_save_accounts (); +} - camel_url_free (account_url); - } +void +mail_config_set_default_account (EAccount *account) +{ + e_account_list_set_default(config->accounts, account); +} - g_object_unref (iter); - camel_url_free (url); +EAccountIdentity * +mail_config_get_default_identity (void) +{ + EAccount *account; - return account; + account = mail_config_get_default_account (); + if (account) + return account->id; + else + return NULL; } EAccountService * diff --git a/mail/mail-folder-cache.c b/mail/mail-folder-cache.c index 8282625f7d..5742be8e5d 100644 --- a/mail/mail-folder-cache.c +++ b/mail/mail-folder-cache.c @@ -1090,3 +1090,32 @@ int mail_note_get_folder_from_uri(const char *uri, CamelFolder **folderp) return fi.fi != NULL; } + +gboolean +mail_folder_cache_get_folder_info_flags (CamelFolder *folder, int *flags) +{ + char *uri; + + uri = mail_tools_folder_to_url (folder); + + struct _find_info fi = { uri, NULL, NULL }; + + if (stores == NULL) + return FALSE; + + fi.url = camel_url_new(uri, NULL); + + LOCK(info_lock); + g_hash_table_foreach(stores, (GHFunc)storeinfo_find_folder_info, &fi); + if (flags) { + if (fi.fi) { + *flags = fi.fi->flags; + } + } + UNLOCK(info_lock); + + camel_url_free(fi.url); + g_free (uri); + + return fi.fi != NULL; +} diff --git a/mail/mail-folder-cache.h b/mail/mail-folder-cache.h index b97184fdac..d685e5a5ad 100644 --- a/mail/mail-folder-cache.h +++ b/mail/mail-folder-cache.h @@ -50,5 +50,6 @@ void mail_note_folder (CamelFolder *folder); /* Returns true if a folder is available (yet), and also sets *folderp (if supplied) to a (referenced) copy of the folder if it has already been opened */ int mail_note_get_folder_from_uri (const char *uri, CamelFolder **folderp); +gboolean mail_folder_cache_get_folder_info_flags (CamelFolder *folder, int *flags); #endif diff --git a/mail/mail-mt.c b/mail/mail-mt.c index 77d8bf5dfb..a70093e855 100644 --- a/mail/mail-mt.c +++ b/mail/mail-mt.c @@ -506,7 +506,7 @@ mail_msg_idle_cb (void) static void mail_msg_proxy (MailMsg *msg) { - if (msg->info->desc != NULL) { + if (msg->info->desc != NULL && msg->cancel) { gchar *text = msg->info->desc (msg); camel_operation_register (msg->cancel); camel_operation_start (msg->cancel, "%s", text); @@ -519,7 +519,7 @@ mail_msg_proxy (MailMsg *msg) mail_disable_stop (); } - if (msg->info->desc != NULL) { + if (msg->info->desc != NULL && msg->cancel) { camel_operation_end (msg->cancel); camel_operation_unregister (msg->cancel); MAIL_MT_LOCK (mail_msg_lock); diff --git a/mail/mail-ops.c b/mail/mail-ops.c index a031999714..b8e442102f 100644 --- a/mail/mail-ops.c +++ b/mail/mail-ops.c @@ -809,6 +809,12 @@ send_queue_done (struct _send_queue_msg *m) m->done(m->destination, m->data); } +static gchar * +send_queue_desc (struct _send_queue_msg *m) +{ + return g_strdup (_("Sending message")); +} + static void send_queue_free (struct _send_queue_msg *m) { @@ -822,7 +828,7 @@ send_queue_free (struct _send_queue_msg *m) static MailMsgInfo send_queue_info = { sizeof (struct _send_queue_msg), - (MailMsgDescFunc) NULL, + (MailMsgDescFunc) send_queue_desc, (MailMsgExecFunc) send_queue_exec, (MailMsgDoneFunc) send_queue_done, (MailMsgFreeFunc) send_queue_free @@ -1665,9 +1671,9 @@ refresh_folder_desc (struct _sync_folder_msg *m) static void refresh_folder_exec (struct _sync_folder_msg *m) { - camel_folder_sync (m->folder, FALSE, &m->base.ex); + //camel_folder_sync (m->folder, FALSE, &m->base.ex); - if (!camel_exception_is_set (&m->base.ex)) + //if (!camel_exception_is_set (&m->base.ex)) camel_folder_refresh_info(m->folder, &m->base.ex); } @@ -1769,10 +1775,10 @@ empty_trash_exec (struct _empty_trash_msg *m) g_free (uri); } - if (trash) + if (trash) { camel_folder_expunge (trash, &m->base.ex); - - camel_object_unref (trash); + camel_object_unref (trash); + } } static void diff --git a/mail/mail-session.c b/mail/mail-session.c index 58b675828a..b1776664fb 100644 --- a/mail/mail-session.c +++ b/mail/mail-session.c @@ -750,6 +750,12 @@ mail_session_shutdown (void) camel_shutdown (); } +void +mail_session_shutdown (void) +{ + camel_shutdown (); +} + gboolean mail_session_get_interactive (void) { diff --git a/mail/message-list.c b/mail/message-list.c index 7a87d173f6..5ae5ba2232 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -40,6 +40,7 @@ #include <camel/camel-file-utils.h> #include <camel/camel-folder.h> #include <camel/camel-folder-thread.h> +#include <camel/camel-folder-summary.h> #include <camel/camel-vee-folder.h> #include <camel/camel-string-utils.h> @@ -4228,13 +4229,19 @@ regen_list_exec (struct _regen_list_msg *m) /* cursor_uid has been filtered out */ if (i == uids->len) { - gboolean was_deleted = (camel_folder_get_message_flags (m->folder, looking_for) & CAMEL_MESSAGE_DELETED) != 0; + CamelMessageInfo *looking_info = camel_folder_get_message_info (m->folder, looking_for); - /* I would really like to check for CAMEL_MESSAGE_FOLDER_FLAGGED on a message, - so I would know whether it was changed locally, and then just check the changes - struct whether change came from the server, but with periodical save it doesn't - matter. So here just check whether the file was deleted and we show it based - on the flag whether we can view deleted messages or not. */ + if (looking_info) { + gboolean was_deleted = (camel_message_info_flags (looking_info) & CAMEL_MESSAGE_DELETED) != 0; + + /* I would really like to check for CAMEL_MESSAGE_FOLDER_FLAGGED on a message, + so I would know whether it was changed locally, and then just check the changes + struct whether change came from the server, but with periodical save it doesn't + matter. So here just check whether the file was deleted and we show it based + on the flag whether we can view deleted messages or not. */ + + if (!was_deleted || (was_deleted && !m->hidedel)) + g_ptr_array_add (uids, (gpointer) camel_pstring_strdup (looking_for)); if (!was_deleted || (was_deleted && !m->hidedel)) g_ptr_array_add (uids, (gpointer) camel_pstring_strdup (looking_for)); @@ -4336,6 +4343,7 @@ regen_list_exec (struct _regen_list_msg *m) e_profile_event_emit("list.threaduids", m->folder->full_name, 0); + //camel_folder_summary_reload_from_db (m->folder->summary, NULL); if (!camel_operation_cancel_check(m->base.cancel)) { /* update/build a new tree */ if (m->dotree) { @@ -4345,6 +4353,16 @@ regen_list_exec (struct _regen_list_msg *m) m->tree = camel_folder_thread_messages_new (m->folder, showuids, m->thread_subject); } else { m->summary = g_ptr_array_new (); + if (showuids->len > camel_folder_summary_cache_size (m->folder->summary) ) { + CamelException ex; + camel_exception_init (&ex); + camel_folder_summary_reload_from_db (m->folder->summary, &ex); + if (camel_exception_is_set (&ex)) { + g_warning ("Exception while reloading: %s\n", camel_exception_get_description (&ex)); + camel_exception_clear (&ex); + } + + } for (i = 0; i < showuids->len; i++) { info = camel_folder_get_message_info (m->folder, showuids->pdata[i]); if (info) diff --git a/mail/message-tag-followup.c b/mail/message-tag-followup.c index 93f037eb82..f2a7437a6f 100644 --- a/mail/message-tag-followup.c +++ b/mail/message-tag-followup.c @@ -112,7 +112,7 @@ message_tag_followup_class_init (MessageTagFollowUpClass *klass) static void message_tag_followup_init (MessageTagFollowUp *editor) { - editor->combo = NULL; + editor->combo_entry = NULL; editor->target_date = NULL; editor->completed = NULL; editor->clear = NULL; @@ -139,7 +139,7 @@ get_tag_list (MessageTagEditor *editor) time_t date; char *text; - camel_tag_set (&tags, "follow-up", gtk_entry_get_text (GTK_ENTRY (followup->combo->entry))); + camel_tag_set (&tags, "follow-up", gtk_entry_get_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (followup->combo_entry))))); date = e_date_edit_get_time (followup->target_date); if (date != (time_t) -1) { @@ -170,7 +170,7 @@ set_tag_list (MessageTagEditor *editor, CamelTag *tags) text = camel_tag_get (&tags, "follow-up"); if (text) - gtk_entry_set_text (GTK_ENTRY (followup->combo->entry), text); + gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (followup->combo_entry))), text); text = camel_tag_get (&tags, "due-by"); if (text && *text) { @@ -195,7 +195,7 @@ clear_clicked (GtkButton *button, gpointer user_data) { MessageTagFollowUp *followup = user_data; - gtk_list_select_item (GTK_LIST (followup->combo->list), DEFAULT_FLAG); + gtk_combo_box_set_active (followup->combo_entry, DEFAULT_FLAG); e_date_edit_set_time (followup->target_date, (time_t) -1); gtk_toggle_button_set_active (followup->completed, FALSE); @@ -268,7 +268,6 @@ construct (MessageTagEditor *editor) GtkCellRenderer *renderer; GtkListStore *model; GtkWidget *widget; - GList *strings; GladeXML *gui; int i; char *gladefile; @@ -311,14 +310,11 @@ construct (MessageTagEditor *editor) gtk_tree_view_insert_column_with_attributes (followup->message_list, -1, _("Subject"), renderer, "text", 1, NULL); - followup->combo = GTK_COMBO (glade_xml_get_widget (gui, "combo")); - gtk_combo_set_case_sensitive (followup->combo, FALSE); - strings = NULL; + followup->combo_entry = GTK_COMBO_BOX (glade_xml_get_widget (gui, "combo")); + gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (followup->combo_entry))); for (i = 0; i < num_available_flags; i++) - strings = g_list_append (strings, (char *) _(available_flags[i])); - gtk_combo_set_popdown_strings (followup->combo, strings); - g_list_free (strings); - gtk_list_select_item (GTK_LIST (followup->combo->list), DEFAULT_FLAG); + gtk_combo_box_append_text (followup->combo_entry, (char *) _(available_flags[i])); + gtk_combo_box_set_active (followup->combo_entry, DEFAULT_FLAG); followup->target_date = E_DATE_EDIT (glade_xml_get_widget (gui, "target_date")); /* glade bug, need to show this ourselves */ diff --git a/mail/message-tag-followup.h b/mail/message-tag-followup.h index 80f261fb80..4b18865d89 100644 --- a/mail/message-tag-followup.h +++ b/mail/message-tag-followup.h @@ -47,7 +47,7 @@ struct _MessageTagFollowUp { struct _GtkTreeView *message_list; - struct _GtkCombo *combo; + struct _GtkComboBox *combo_entry; struct _EDateEdit *target_date; struct _GtkToggleButton *completed; |