aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-04-25 22:07:44 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-04-25 22:07:44 +0800
commit86fdd3a1cba7c156cfa127322e258f5636b45a99 (patch)
treee49802fd9008a59587fca1cafb1801b8b3bf0db6 /mail
parentc2119e513bc7482fc0150287af8502a5ff67191a (diff)
parent23df769955ea54f756a579c19964df87ae6fd5c8 (diff)
downloadgsoc2013-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/ChangeLog155
-rw-r--r--mail/default/Makefile.am2
-rw-r--r--mail/default/ca/Inbox317
-rw-r--r--mail/default/ca/Makefile.am7
-rw-r--r--mail/em-composer-prefs.h5
-rw-r--r--mail/em-filter-editor.c44
-rw-r--r--mail/em-filter-rule.c53
-rw-r--r--mail/em-filter-source-element.c40
-rw-r--r--mail/em-folder-browser.c8
-rw-r--r--mail/em-folder-selector.c2
-rw-r--r--mail/em-folder-tree.c3
-rw-r--r--mail/em-folder-utils.c18
-rw-r--r--mail/em-mailer-prefs.h11
-rw-r--r--mail/em-subscribe-editor.c88
-rw-r--r--mail/em-utils.c48
-rw-r--r--mail/mail-config.c146
-rw-r--r--mail/mail-folder-cache.c29
-rw-r--r--mail/mail-folder-cache.h1
-rw-r--r--mail/mail-mt.c4
-rw-r--r--mail/mail-ops.c18
-rw-r--r--mail/mail-session.c6
-rw-r--r--mail/message-list.c30
-rw-r--r--mail/message-tag-followup.c20
-rw-r--r--mail/message-tag-followup.h2
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, &gtiter);
+ gtk_list_store_set (
+ store, &gtiter,
+ 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, &gtiter);
+ gtk_list_store_set (
+ store, &gtiter,
+ 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;