aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/gui/contact-editor/contact-editor.ui214
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c179
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.h3
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.c42
-rw-r--r--calendar/gui/alarm-notify/alarm.c3
-rw-r--r--calendar/gui/apps_evolution_calendar.schemas.in26
-rw-r--r--calendar/gui/calendar-config-keys.h5
-rw-r--r--calendar/gui/dialogs/cal-prefs-dialog.c42
-rw-r--r--calendar/gui/dialogs/cal-prefs-dialog.h2
-rw-r--r--calendar/gui/dialogs/cal-prefs-dialog.ui518
-rw-r--r--calendar/gui/dialogs/comp-editor-util.c26
-rw-r--r--calendar/gui/dialogs/comp-editor-util.h6
-rw-r--r--calendar/gui/dialogs/comp-editor.c132
-rw-r--r--calendar/gui/dialogs/comp-editor.h8
-rw-r--r--calendar/gui/dialogs/copy-source-dialog.c14
-rw-r--r--calendar/gui/dialogs/event-editor.c75
-rw-r--r--calendar/gui/dialogs/event-page.c49
-rw-r--r--calendar/gui/dialogs/event-page.h2
-rw-r--r--calendar/gui/dialogs/memo-page.c1
-rw-r--r--calendar/gui/dialogs/recurrence-page.c34
-rw-r--r--calendar/gui/dialogs/schedule-page.c16
-rw-r--r--calendar/gui/dialogs/task-details-page.c1
-rw-r--r--calendar/gui/dialogs/task-editor.c19
-rw-r--r--calendar/gui/dialogs/task-page.c2
-rw-r--r--calendar/gui/e-cal-model-calendar.c8
-rw-r--r--calendar/gui/e-cal-model-calendar.h4
-rw-r--r--calendar/gui/e-cal-model-memos.c8
-rw-r--r--calendar/gui/e-cal-model-memos.h2
-rw-r--r--calendar/gui/e-cal-model-tasks.c30
-rw-r--r--calendar/gui/e-cal-model-tasks.h2
-rw-r--r--calendar/gui/e-cal-model.c81
-rw-r--r--calendar/gui/e-cal-model.h2
-rw-r--r--calendar/gui/e-calendar-view.c7
-rw-r--r--calendar/gui/e-day-view.c48
-rw-r--r--calendar/gui/e-meeting-store.c51
-rw-r--r--calendar/gui/e-meeting-time-sel.c11
-rw-r--r--calendar/gui/e-week-view.c10
-rw-r--r--calendar/gui/gnome-cal.c63
-rw-r--r--calendar/gui/gnome-cal.h5
-rw-r--r--capplet/settings/Makefile.am1
-rw-r--r--capplet/settings/mail-account-view.c500
-rw-r--r--capplet/settings/mail-account-view.h1
-rw-r--r--capplet/settings/mail-autoconfig/Makefile.am186
-rw-r--r--capplet/settings/mail-autoconfig/README12
-rw-r--r--capplet/settings/mail-autoconfig/a.memail.jp1423
-rw-r--r--capplet/settings/mail-autoconfig/abc.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/agate.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/amail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/amber.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/amethyst.broba.cc27
-rw-r--r--capplet/settings/mail-autoconfig/aol.com30
-rw-r--r--capplet/settings/mail-autoconfig/apost.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/aqua.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/arcor.de38
-rw-r--r--capplet/settings/mail-autoconfig/ballade.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/bay.gunmanet.ne.jp28
-rw-r--r--capplet/settings/mail-autoconfig/bb-niigata.jp24
-rw-r--r--capplet/settings/mail-autoconfig/bc.iij4u.or.jp35
-rw-r--r--capplet/settings/mail-autoconfig/beige.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/blue.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/bmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/bolero.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/bpost.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/brown.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/camel.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/cameo.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/cc9.ne.jp23
-rw-r--r--capplet/settings/mail-autoconfig/cek.ne.jp23
-rw-r--r--capplet/settings/mail-autoconfig/clio.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/cmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/co1.wind.jp25
-rw-r--r--capplet/settings/mail-autoconfig/co2.wind.jp25
-rw-r--r--capplet/settings/mail-autoconfig/co3.wind.jp25
-rw-r--r--capplet/settings/mail-autoconfig/cocoa.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/coda.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/comcast.net29
-rw-r--r--capplet/settings/mail-autoconfig/concerto.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/coral.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/courante.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/cpost.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/cream.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/dan.gunmanet.ne.jp28
-rw-r--r--capplet/settings/mail-autoconfig/dance.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/dmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/e23.jp28
-rw-r--r--capplet/settings/mail-autoconfig/earthlink.net29
-rw-r--r--capplet/settings/mail-autoconfig/ebony.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/email.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/fantasy.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/flamenco.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/fmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/free.fr30
-rw-r--r--capplet/settings/mail-autoconfig/freenet.de39
-rw-r--r--capplet/settings/mail-autoconfig/fuga.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/gmail.com32
-rw-r--r--capplet/settings/mail-autoconfig/gmail.com imap32
-rw-r--r--capplet/settings/mail-autoconfig/gmail.com pop35
-rw-r--r--capplet/settings/mail-autoconfig/gmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/gmx.com24
-rw-r--r--capplet/settings/mail-autoconfig/gmx.net39
-rw-r--r--capplet/settings/mail-autoconfig/go.tvm.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/goo.jp24
-rw-r--r--capplet/settings/mail-autoconfig/googlemail.com32
-rw-r--r--capplet/settings/mail-autoconfig/grape.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/gray.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/hal.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/hana.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/hotmail.co.jp40
-rw-r--r--capplet/settings/mail-autoconfig/hotmail.co.uk41
-rw-r--r--capplet/settings/mail-autoconfig/hotmail.com41
-rw-r--r--capplet/settings/mail-autoconfig/hotmail.de41
-rw-r--r--capplet/settings/mail-autoconfig/hotmail.fr41
-rw-r--r--capplet/settings/mail-autoconfig/hotmail.it41
-rw-r--r--capplet/settings/mail-autoconfig/ic-net.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/iiyama-catv.ne.jp23
-rw-r--r--capplet/settings/mail-autoconfig/imail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/inbox.lt28
-rw-r--r--capplet/settings/mail-autoconfig/inbox.lv28
-rw-r--r--capplet/settings/mail-autoconfig/indigo.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/inet-shibata.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/ivory.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/iwafune.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/jade.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/janis.or.jp44
-rw-r--r--capplet/settings/mail-autoconfig/jet.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/jet.ne.jp imap24
-rw-r--r--capplet/settings/mail-autoconfig/jet.ne.jp pop24
-rw-r--r--capplet/settings/mail-autoconfig/ji.jet.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/jmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/k1.wind.jp32
-rw-r--r--capplet/settings/mail-autoconfig/khaki.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/kmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/kokuyou.ne.jp23
-rw-r--r--capplet/settings/mail-autoconfig/lapis.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/laposte.net29
-rw-r--r--capplet/settings/mail-autoconfig/lemon.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/lilac.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/lime.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/live.co.jp40
-rw-r--r--capplet/settings/mail-autoconfig/live.co.uk41
-rw-r--r--capplet/settings/mail-autoconfig/live.com41
-rw-r--r--capplet/settings/mail-autoconfig/live.de41
-rw-r--r--capplet/settings/mail-autoconfig/live.fr41
-rw-r--r--capplet/settings/mail-autoconfig/live.it41
-rw-r--r--capplet/settings/mail-autoconfig/ma100.tiki.ne.jp54
-rw-r--r--capplet/settings/mail-autoconfig/mac.com30
-rw-r--r--capplet/settings/mail-autoconfig/mahoroba.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/mail.gunmanet.jp29
-rw-r--r--capplet/settings/mail-autoconfig/mail.iwafune.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/maroon.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/me.com30
-rw-r--r--capplet/settings/mail-autoconfig/minuet.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/ml.murakami.ne.jp29
-rw-r--r--capplet/settings/mail-autoconfig/ml.shibata.ne.jp25
-rw-r--r--capplet/settings/mail-autoconfig/mnet.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/mopera.net24
-rw-r--r--capplet/settings/mail-autoconfig/msn.com41
-rw-r--r--capplet/settings/mail-autoconfig/navy.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/nifty.com24
-rw-r--r--capplet/settings/mail-autoconfig/nsat.jp24
-rw-r--r--capplet/settings/mail-autoconfig/olive.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/online.de43
-rw-r--r--capplet/settings/mail-autoconfig/opal.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/orange.fr30
-rw-r--r--capplet/settings/mail-autoconfig/orange.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/orchid.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/pal.kijimadaira.jp23
-rw-r--r--capplet/settings/mail-autoconfig/palette.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/parabox.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/peach.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/peoplepc.com29
-rw-r--r--capplet/settings/mail-autoconfig/plum.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/po.dcn.ne.jp23
-rw-r--r--capplet/settings/mail-autoconfig/po.wind.jp28
-rw-r--r--capplet/settings/mail-autoconfig/polka.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/pop.shibata.ne.jp25
-rw-r--r--capplet/settings/mail-autoconfig/purple.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/rainbow.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/red.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/rmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/rondo.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/rose.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/rouge.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/ruby.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/sakunet.ne.jp23
-rw-r--r--capplet/settings/mail-autoconfig/sea.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/sepia.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/serenade.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/silk.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/silver.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/sky.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/smail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/snow.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/so.wind.ne.jp25
-rw-r--r--capplet/settings/mail-autoconfig/sonata.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/suite.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/symphony.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/t-online.de32
-rw-r--r--capplet/settings/mail-autoconfig/t-online.de free32
-rw-r--r--capplet/settings/mail-autoconfig/t-online.de imap ssl32
-rw-r--r--capplet/settings/mail-autoconfig/t-online.de pop ssl32
-rw-r--r--capplet/settings/mail-autoconfig/taupe.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/tiki.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/tmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/toccata.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/topaz.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/trio.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/umail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/verizon.net29
-rw-r--r--capplet/settings/mail-autoconfig/violet.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/vm.aikis.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/vmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/vp.tiki.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/waltz.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/wanadoo.fr30
-rw-r--r--capplet/settings/mail-autoconfig/wanadoo.fr imap30
-rw-r--r--capplet/settings/mail-autoconfig/wanadoo.fr pop30
-rw-r--r--capplet/settings/mail-autoconfig/wave.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/web.de29
-rw-r--r--capplet/settings/mail-autoconfig/white.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/wine.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/wmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/xmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/xp.wind.jp24
-rw-r--r--capplet/settings/mail-autoconfig/xpost.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/xs4all.nl29
-rw-r--r--capplet/settings/mail-autoconfig/yahoo.com36
-rw-r--r--capplet/settings/mail-autoconfig/ybb.ne.jp24
-rw-r--r--capplet/settings/mail-autoconfig/yellow.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/ymail.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/ypost.plala.or.jp24
-rw-r--r--capplet/settings/mail-autoconfig/zmail.plala.or.jp24
-rw-r--r--capplet/settings/mail-guess-servers.c108
-rw-r--r--composer/e-composer-actions.c8
-rw-r--r--composer/e-composer-actions.h2
-rw-r--r--composer/e-composer-from-header.c10
-rw-r--r--composer/e-composer-from-header.h3
-rw-r--r--composer/e-composer-header-table.c134
-rw-r--r--composer/e-composer-header.c107
-rw-r--r--composer/e-composer-header.h3
-rw-r--r--composer/e-composer-name-header.c32
-rw-r--r--composer/e-composer-name-header.h8
-rw-r--r--composer/e-composer-private.c23
-rw-r--r--composer/e-composer-text-header.c22
-rw-r--r--composer/e-composer-text-header.h4
-rw-r--r--composer/e-msg-composer.c47
-rw-r--r--composer/e-msg-composer.h3
-rw-r--r--composer/evolution-composer.ui1
-rw-r--r--composer/mail-composer.error.xml4
-rw-r--r--configure.ac17
-rw-r--r--data/evolution-alarm-notify.desktop.in.in3
-rw-r--r--doc/reference/shell/eshell-docs.sgml8
-rw-r--r--doc/reference/shell/eshell-sections.txt49
-rw-r--r--doc/reference/shell/eshell.types2
-rw-r--r--doc/reference/shell/tmpl/Evolution-DataServer.sgml1139
-rw-r--r--doc/reference/shell/tmpl/e-account-utils.sgml2
-rw-r--r--doc/reference/shell/tmpl/e-activity-handler.sgml19
-rw-r--r--doc/reference/shell/tmpl/e-categories-config.sgml2
-rw-r--r--doc/reference/shell/tmpl/e-config-upgrade.sgml32
-rw-r--r--doc/reference/shell/tmpl/e-datetime-format.sgml2
-rw-r--r--doc/reference/shell/tmpl/e-dialog-utils.sgml2
-rw-r--r--doc/reference/shell/tmpl/e-extensible.sgml (renamed from doc/reference/shell/tmpl/e-shell-marshal.sgml)27
-rw-r--r--doc/reference/shell/tmpl/e-extension.sgml (renamed from doc/reference/shell/tmpl/e-test-shell-view.sgml)19
-rw-r--r--doc/reference/shell/tmpl/e-icon-factory.sgml2
-rw-r--r--doc/reference/shell/tmpl/e-module.sgml2
-rw-r--r--doc/reference/shell/tmpl/e-print.sgml2
-rw-r--r--doc/reference/shell/tmpl/e-shell-backend.sgml5
-rw-r--r--doc/reference/shell/tmpl/e-shell-common.sgml21
-rw-r--r--doc/reference/shell/tmpl/e-shell-constants.sgml140
-rw-r--r--doc/reference/shell/tmpl/e-shell-content.sgml13
-rw-r--r--doc/reference/shell/tmpl/e-shell-module.sgml180
-rw-r--r--doc/reference/shell/tmpl/e-shell-searchbar.sgml31
-rw-r--r--doc/reference/shell/tmpl/e-shell-view.sgml20
-rw-r--r--doc/reference/shell/tmpl/e-shell-window-actions.sgml309
-rw-r--r--doc/reference/shell/tmpl/e-shell-window-private.sgml25
-rw-r--r--doc/reference/shell/tmpl/e-shell.sgml12
-rw-r--r--doc/reference/shell/tmpl/e-signature-utils.sgml2
-rw-r--r--doc/reference/shell/tmpl/es-event.sgml147
-rw-r--r--doc/reference/shell/tmpl/eshell-unused.sgml2881
-rw-r--r--doc/reference/shell/tmpl/evolution-importer-client.sgml94
-rw-r--r--doc/reference/shell/tmpl/evolution-importer-listener.sgml56
-rw-r--r--doc/reference/shell/tmpl/evolution-importer.sgml117
-rw-r--r--doc/reference/shell/tmpl/evolution-intelligent-importer.sgml67
-rw-r--r--doc/reference/shell/tmpl/intelligent.sgml26
-rw-r--r--e-util/e-account-utils.c5
-rw-r--r--e-util/e-account-utils.h5
-rw-r--r--e-util/e-binding.c2
-rw-r--r--e-util/e-config.c92
-rw-r--r--e-util/e-dialog-utils.c4
-rw-r--r--e-util/e-extensible.c93
-rw-r--r--e-util/e-extensible.h2
-rw-r--r--e-util/e-extension.c31
-rw-r--r--e-util/e-extension.h6
-rw-r--r--e-util/e-folder-map.c10
-rw-r--r--e-util/e-module.c6
-rw-r--r--e-util/e-module.h5
-rw-r--r--e-util/e-selection.c6
-rw-r--r--e-util/e-selection.h6
-rw-r--r--e-util/e-ui-manager.c9
-rw-r--r--e-util/e-ui-manager.h9
-rw-r--r--e-util/e-util.c9
-rw-r--r--e-util/e-util.h5
-rw-r--r--help/C/evolution.xml2
-rw-r--r--mail/e-mail-backend.c6
-rw-r--r--mail/e-mail-display.c20
-rw-r--r--mail/e-mail-migrate.c30
-rw-r--r--mail/e-mail-reader.c76
-rw-r--r--mail/em-account-editor.c9
-rw-r--r--mail/em-composer-utils.c52
-rw-r--r--mail/em-composer-utils.h1
-rw-r--r--mail/em-folder-tree-model.c29
-rw-r--r--mail/em-folder-utils.c2
-rw-r--r--mail/em-format-html.c16
-rw-r--r--mail/evolution-mail.schemas.in15
-rw-r--r--mail/importers/mail-importer.c2
-rw-r--r--mail/mail-config.ui8
-rw-r--r--mail/mail-folder-cache.c5
-rw-r--r--mail/mail-folder-cache.h5
-rw-r--r--mail/mail-ops.c6
-rw-r--r--mail/mail-tools.c6
-rw-r--r--modules/Makefile.am7
-rw-r--r--modules/addressbook/e-book-shell-content.c4
-rw-r--r--modules/addressbook/e-book-shell-migrate.c12
-rw-r--r--modules/calendar/Makefile.am12
-rw-r--r--modules/calendar/e-cal-config-calendar-item.c79
-rw-r--r--modules/calendar/e-cal-config-calendar-item.h30
-rw-r--r--modules/calendar/e-cal-config-date-edit.c79
-rw-r--r--modules/calendar/e-cal-config-date-edit.h30
-rw-r--r--modules/calendar/e-cal-config-meeting-store.c79
-rw-r--r--modules/calendar/e-cal-config-meeting-store.h30
-rw-r--r--modules/calendar/e-cal-config-meeting-time-selector.c83
-rw-r--r--modules/calendar/e-cal-config-meeting-time-selector.h30
-rw-r--r--modules/calendar/e-cal-config-model.c99
-rw-r--r--modules/calendar/e-cal-config-model.h30
-rw-r--r--modules/calendar/e-cal-config-view.c130
-rw-r--r--modules/calendar/e-cal-config-view.h31
-rw-r--r--modules/calendar/e-cal-shell-backend.c2
-rw-r--r--modules/calendar/e-cal-shell-content.c98
-rw-r--r--modules/calendar/e-cal-shell-migrate.c4
-rw-r--r--modules/calendar/e-cal-shell-settings.c8
-rw-r--r--modules/calendar/e-cal-shell-sidebar.c37
-rw-r--r--modules/calendar/e-cal-shell-view-actions.c53
-rw-r--r--modules/calendar/e-cal-shell-view-actions.h2
-rw-r--r--modules/calendar/e-cal-shell-view-private.c66
-rw-r--r--modules/calendar/e-cal-shell-view.c27
-rw-r--r--modules/calendar/e-memo-shell-backend.c2
-rw-r--r--modules/calendar/e-memo-shell-content.c6
-rw-r--r--modules/calendar/e-task-shell-backend.c2
-rw-r--r--modules/calendar/e-task-shell-content.c6
-rw-r--r--modules/calendar/e-task-shell-migrate.c2
-rw-r--r--modules/calendar/evolution-module-calendar.c14
-rw-r--r--modules/connman/Makefile.am22
-rw-r--r--modules/connman/evolution-connman.c209
-rw-r--r--modules/mail/Makefile.am4
-rw-r--r--modules/mail/e-mail-config-format-html.c93
-rw-r--r--modules/mail/e-mail-config-format-html.h30
-rw-r--r--modules/mail/e-mail-config-web-view.c100
-rw-r--r--modules/mail/e-mail-config-web-view.h30
-rw-r--r--modules/mail/e-mail-shell-backend.c26
-rw-r--r--modules/mail/e-mail-shell-content.c6
-rw-r--r--modules/mail/e-mail-shell-view-actions.c2
-rw-r--r--modules/mail/e-mail-shell-view-actions.h4
-rw-r--r--modules/mail/em-composer-prefs.c28
-rw-r--r--modules/mail/em-mailer-prefs.c10
-rw-r--r--modules/mail/evolution-module-mail.c6
-rw-r--r--modules/network-manager/Makefile.am2
-rw-r--r--plugins/bbdb/gaimbuddies.c25
-rw-r--r--plugins/bogo-junk-plugin/bf-junk-filter.c12
-rw-r--r--plugins/groupwise-features/share-folder-common.c2
-rw-r--r--plugins/profiler/profiler.c2
-rw-r--r--plugins/pst-import/pst-importer.c4
-rw-r--r--plugins/sa-junk-plugin/em-junk-filter.c12
-rw-r--r--plugins/startup-wizard/startup-wizard.c8
-rw-r--r--shell/Makefile.am2
-rw-r--r--shell/e-shell-backend.c154
-rw-r--r--shell/e-shell-backend.h11
-rw-r--r--shell/e-shell-content.c202
-rw-r--r--shell/e-shell-content.h14
-rw-r--r--shell/e-shell-meego.c157
-rw-r--r--shell/e-shell-meego.h24
-rw-r--r--shell/e-shell-searchbar.c154
-rw-r--r--shell/e-shell-searchbar.h17
-rw-r--r--shell/e-shell-settings.c6
-rw-r--r--shell/e-shell-settings.h6
-rw-r--r--shell/e-shell-sidebar.c52
-rw-r--r--shell/e-shell-sidebar.h6
-rw-r--r--shell/e-shell-switcher.c66
-rw-r--r--shell/e-shell-switcher.h6
-rw-r--r--shell/e-shell-taskbar.c52
-rw-r--r--shell/e-shell-taskbar.h6
-rw-r--r--shell/e-shell-utils.c60
-rw-r--r--shell/e-shell-utils.h11
-rw-r--r--shell/e-shell-view.c171
-rw-r--r--shell/e-shell-view.h12
-rw-r--r--shell/e-shell-window-actions.c38
-rw-r--r--shell/e-shell-window-private.c16
-rw-r--r--shell/e-shell-window-private.h1
-rw-r--r--shell/e-shell-window.c135
-rw-r--r--shell/e-shell-window.h7
-rw-r--r--shell/e-shell.c202
-rw-r--r--shell/e-shell.h14
-rw-r--r--shell/main.c12
-rw-r--r--smime/gui/component.c2
-rw-r--r--smime/lib/e-cert-db.c2
-rw-r--r--smime/lib/e-pkcs12.c4
-rw-r--r--ui/evolution-calendars.ui37
-rw-r--r--ui/evolution-contacts.ui8
-rw-r--r--ui/evolution-mail-reader.ui4
-rw-r--r--ui/evolution-mail.ui8
-rw-r--r--ui/evolution-memos.ui18
-rw-r--r--ui/evolution-shell.ui7
-rw-r--r--ui/evolution-tasks.ui4
-rw-r--r--widgets/misc/e-account-combo-box.c22
-rw-r--r--widgets/misc/e-account-combo-box.h2
-rw-r--r--widgets/misc/e-calendar-item.c7
-rw-r--r--widgets/misc/e-calendar-item.h24
-rw-r--r--widgets/misc/e-dateedit.c39
-rw-r--r--widgets/misc/e-preferences-window.c89
-rw-r--r--widgets/misc/e-preferences-window.h2
-rw-r--r--widgets/misc/e-web-view.c230
-rw-r--r--widgets/misc/e-web-view.h11
-rw-r--r--widgets/table/e-cell-text.c2
422 files changed, 11824 insertions, 7543 deletions
diff --git a/addressbook/gui/contact-editor/contact-editor.ui b/addressbook/gui/contact-editor/contact-editor.ui
index 964ce434c2..51fc9c9e29 100644
--- a/addressbook/gui/contact-editor/contact-editor.ui
+++ b/addressbook/gui/contact-editor/contact-editor.ui
@@ -78,6 +78,7 @@
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
+ <property name="orientation">vertical</property>
<child internal-child="action_area">
<object class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
@@ -135,11 +136,24 @@
<property name="scrollable">False</property>
<property name="enable_popup">False</property>
<child>
+
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="resize_mode">queue</property>
+
+ <child>
<object class="GtkVBox" id="vbox33">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">1</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkHBox" id="hbox55">
<property name="visible">True</property>
@@ -417,6 +431,7 @@
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">10</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkFrame" id="frame65">
<property name="visible">True</property>
@@ -424,7 +439,7 @@
<property name="label_yalign">0.5</property>
<property name="shadow_type">GTK_SHADOW_NONE</property>
<child>
- <object class="GtkTable" id="table85">
+ <object class="GtkTable" id="email-table">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="n_rows">3</property>
@@ -620,29 +635,72 @@
</object>
</child>
<child type="label">
- <object class="GtkLabel" id="label400">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Email</property>
- <property name="use_underline">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- </child>
+ <object class="GtkHBox" id="hbox561">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="label400">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Email</property>
+ <property name="use_underline">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button-mail-expand">
+ <property name="width_request">20</property>
+ <property name="height_request">20</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="focus_on_click">True</property>
+ <child>
+ <object class="GtkArrow" id="arrow-mail-expand">
+ <property name="visible">True</property>
+ <property name="arrow_type">GTK_ARROW_RIGHT</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ </child>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="a11y-button-mail-expand1">
+ <property name="AtkObject::accessible_name" translatable="yes">Telephone</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
</object>
<packing>
- <property name="padding">0</property>
+ <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
@@ -652,6 +710,7 @@
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkFrame" id="frame64">
<property name="visible">True</property>
@@ -664,6 +723,7 @@
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkTable" id="table84">
<property name="visible">True</property>
@@ -1080,7 +1140,7 @@
</packing>
</child>
<child>
- <object class="GtkEntry" id="entry-im-name-2">
+ <object class="GtkEntry" id="entry-im-name-3">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
@@ -1099,7 +1159,7 @@
</packing>
</child>
<child>
- <object class="GtkEntry" id="entry-im-name-3">
+ <object class="GtkEntry" id="entry-im-name-2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
@@ -1152,7 +1212,7 @@
</packing>
</child>
<child>
- <object class="GtkComboBox" id="combobox-im-service-2">
+ <object class="GtkComboBox" id="combobox-im-service-3">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
@@ -1167,7 +1227,7 @@
</packing>
</child>
<child>
- <object class="GtkComboBox" id="combobox-im-service-3">
+ <object class="GtkComboBox" id="combobox-im-service-2">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
@@ -1234,6 +1294,12 @@
</packing>
</child>
</object>
+
+ </child>
+ </object>
+ </child>
+
+ </object>
<packing>
<property name="tab_expand">False</property>
<property name="tab_fill">True</property>
@@ -1258,12 +1324,24 @@
<property name="angle">0</property>
</object>
</child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow-size-leader">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="GtkViewport" id="viewport2">
+ <property name="visible">True</property>
+ <property name="resize_mode">queue</property>
+
<child>
- <object class="GtkVBox" id="vbox35">
+ <object class="GtkVBox" id="vbox-size-leader">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">12</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkFrame" id="frame67">
<property name="visible">True</property>
@@ -1508,6 +1586,13 @@
</object>
</child>
<child type="label">
+ <object class="GtkHBox" id="hbox5617">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">4</property>
+ <child>
+
+
<object class="GtkLabel" id="label410">
<property name="visible">True</property>
<property name="label" translatable="yes">Web Addresses</property>
@@ -1527,7 +1612,40 @@
<attribute name="weight" value="bold"/>
</attributes>
</object>
- </child>
+ </child>
+ <child>
+ <object class="GtkButton" id="button-web-expand">
+ <property name="width_request">20</property>
+ <property name="height_request">20</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="focus_on_click">True</property>
+ <child>
+ <object class="GtkArrow" id="arrow-web-expand">
+ <property name="visible">True</property>
+ <property name="arrow_type">GTK_ARROW_RIGHT</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ </child>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="a11y-button-web-expand1">
+ <property name="AtkObject::accessible_name" translatable="yes">Web addresses</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
</object>
<packing>
<property name="padding">0</property>
@@ -1881,10 +1999,9 @@
</packing>
</child>
<child>
- <object class="GtkFrame" id="frame69">
+ <object class="GtkExpander" id="expander-personal-misc">
<property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0.5</property>
+ <property name="can_focus">True</property>
<property name="shadow_type">GTK_SHADOW_NONE</property>
<child>
<object class="GtkTable" id="table89">
@@ -2126,11 +2243,18 @@
</packing>
</child>
</object>
+
+ </child>
+ </object>
+ </child>
+
+ </object>
<packing>
<property name="tab_expand">False</property>
<property name="tab_fill">True</property>
</packing>
</child>
+
<child type="tab">
<object class="GtkLabel" id="label422">
<property name="visible">True</property>
@@ -2151,10 +2275,24 @@
</object>
</child>
<child>
+
+ <object class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="GtkViewport" id="viewport3">
+ <property name="visible">True</property>
+ <property name="resize_mode">queue</property>
+
+ <child>
+
<object class="GtkVBox" id="vbox39">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkFrame" id="frame72">
<property name="border_width">6</property>
@@ -2910,12 +3048,10 @@
</packing>
</child>
<child>
- <object class="GtkFrame" id="frame78">
+ <object class="GtkExpander" id="expander-address-other">
<property name="border_width">6</property>
<property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0.5</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="can_focus">True</property>
<child>
<object class="GtkAlignment" id="alignment7">
<property name="border_width">6</property>
@@ -3287,6 +3423,13 @@
</packing>
</child>
</object>
+
+ </child>
+ </object>
+ </child>
+
+ </object>
+
<packing>
<property name="tab_expand">False</property>
<property name="tab_fill">True</property>
@@ -3316,6 +3459,7 @@
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkFrame" id="frame79">
<property name="border_width">6</property>
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index 2807b9e149..f8cae86762 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -742,15 +742,6 @@ init_email_record_location (EContactEditor *editor, gint record)
}
static void
-init_email (EContactEditor *editor)
-{
- gint i;
-
- for (i = 1; i <= EMAIL_SLOTS; i++)
- init_email_record_location (editor, i);
-}
-
-static void
fill_in_email_record (EContactEditor *editor, gint record, const gchar *address, gint location)
{
GtkWidget *location_combo_box;
@@ -1144,24 +1135,95 @@ set_attributes_named (EVCard *vcard, const gchar *attr_name, GList *attr_list)
}
static void
-expand_phone (EContactEditor *editor, gboolean expanded)
+set_arrow_image (EContactEditor *editor,
+ const char *arrow_widget,
+ gboolean expanded)
{
- GtkWidget *phone_ext_table;
- GtkWidget *phone_ext_arrow;
+ GtkWidget *arrow;
- phone_ext_table = e_builder_get_widget (editor->builder, "table-phone-extended");
- phone_ext_arrow = e_builder_get_widget (editor->builder, "arrow-phone-expand");
+ arrow = e_builder_get_widget (editor->builder, arrow_widget);
+ if (expanded)
+ gtk_arrow_set (GTK_ARROW (arrow), GTK_ARROW_DOWN, GTK_SHADOW_NONE);
+ else
+ gtk_arrow_set (GTK_ARROW (arrow), GTK_ARROW_RIGHT, GTK_SHADOW_NONE);
+}
- if (expanded) {
- gtk_arrow_set (GTK_ARROW (phone_ext_arrow), GTK_ARROW_DOWN, GTK_SHADOW_NONE);
- gtk_widget_show (phone_ext_table);
- } else {
- gtk_arrow_set (GTK_ARROW (phone_ext_arrow), GTK_ARROW_RIGHT, GTK_SHADOW_NONE);
- gtk_widget_hide (phone_ext_table);
+static void
+expand_widget_list (EContactEditor *editor,
+ const char **widget_names,
+ gboolean expanded)
+{
+ int i;
+ for (i = 0; widget_names[i]; i++)
+ gtk_widget_set_visible (
+ e_builder_get_widget (editor->builder, widget_names[i]),
+ expanded);
+}
+
+static void
+expand_web (EContactEditor *editor, gboolean expanded)
+{
+ const char *names[] = {
+ "label-videourl", "label-fburl",
+ "entry-videourl", "entry-fburl",
+ NULL
+ };
+ set_arrow_image (editor, "arrow-phone-expand", expanded);
+ expand_widget_list (editor, names, expanded);
+}
+
+static void
+expand_phone (EContactEditor *editor, gboolean expanded)
+{
+ const char *names[] = {
+ "entry-phone-2", "combobox-phone-2",
+ "entry-phone-4", "combobox-phone-4",
+ "table-phone-extended", NULL
+ };
+ set_arrow_image (editor, "arrow-phone-expand", expanded);
+ expand_widget_list (editor, names, expanded);
+}
+
+static void
+expand_mail (EContactEditor *editor, gboolean expanded)
+{
+ GtkTable *table;
+ GtkWidget *check;
+ const char *names[] = {
+ "entry-email-2", "combobox-email-2",
+ "entry-email-3", "combobox-email-3",
+ "entry-email-4", "combobox-email-4",
+ NULL
+ };
+ set_arrow_image (editor, "arrow-mail-expand", expanded);
+ expand_widget_list (editor, names, expanded);
+
+ /* move 'use html mail' into position */
+ check = e_builder_get_widget (editor->builder, "checkbutton-htmlmail");
+ table = GTK_TABLE (e_builder_get_widget (editor->builder, "email-table"));
+ if (check != NULL && table != NULL) {
+ g_object_ref (G_OBJECT (check));
+ gtk_container_remove (GTK_CONTAINER (check->parent), check);
+ if (expanded)
+ gtk_table_attach_defaults (table, check, 0, 4, 2, 3);
+ else
+ gtk_table_attach_defaults (table, check, 2, 4, 0, 1);
+ g_object_unref (G_OBJECT (check));
}
}
static void
+init_email (EContactEditor *editor)
+{
+ gint i;
+
+ for (i = 1; i <= EMAIL_SLOTS; i++)
+ init_email_record_location (editor, i);
+
+ expand_mail (editor, !editor->compress_ui);
+}
+
+static void
fill_in_phone_record (EContactEditor *editor, gint record, const gchar *phone, gint phone_type)
{
GtkWidget *phone_type_combo_box;
@@ -1458,6 +1520,11 @@ init_im_record_service (EContactEditor *editor, gint record)
service_combo_box = e_builder_get_widget (editor->builder, widget_name);
g_free (widget_name);
+ if (editor->compress_ui && record > 2) {
+ gtk_widget_hide (name_entry);
+ gtk_widget_hide (service_combo_box);
+ }
+
init_item_sensitiveable_combo_box (GTK_COMBO_BOX (service_combo_box));
store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (service_combo_box)));
@@ -1739,6 +1806,17 @@ sensitize_im (EContactEditor *editor)
}
static void
+init_personal (EContactEditor *editor)
+{
+ gtk_expander_set_expanded (
+ GTK_EXPANDER (e_builder_get_widget (editor->builder,
+ "expander-personal-misc")),
+ !editor->compress_ui);
+
+ expand_web (editor, !editor->compress_ui);
+}
+
+static void
init_address_textview (EContactEditor *editor, gint record)
{
gchar *textview_name;
@@ -1785,6 +1863,11 @@ init_address (EContactEditor *editor)
for (i = 0; i < ADDRESS_SLOTS; i++)
init_address_record (editor, i);
+
+ gtk_expander_set_expanded (
+ GTK_EXPANDER (e_builder_get_widget (editor->builder,
+ "expander-address-other")),
+ !editor->compress_ui);
}
static void
@@ -2586,11 +2669,22 @@ sensitize_all (EContactEditor *editor)
static void
init_all (EContactEditor *editor)
{
- init_simple (editor);
- init_email (editor);
- init_phone (editor);
- init_im (editor);
- init_address (editor);
+ GtkRequisition tab_req;
+
+ init_simple (editor);
+ init_email (editor);
+ init_phone (editor);
+ init_im (editor);
+ init_personal (editor);
+ init_address (editor);
+
+ /* with so many scrolled windows, we need to
+ do some manual sizing */
+ gtk_widget_size_request (
+ e_builder_get_widget (editor->builder, "vbox-size-leader"), &tab_req);
+ gtk_widget_set_size_request (
+ e_builder_get_widget (editor->builder, "scrolledwindow-size-leader"),
+ tab_req.width, tab_req.height + 8);
}
static void
@@ -3372,15 +3466,41 @@ setup_tab_order(GtkBuilder *builder)
}
static void
+expand_web_toggle (EContactEditor *ce)
+{
+ GtkWidget *widget;
+
+ widget = e_builder_get_widget (ce->builder, "label-videourl");
+#if GTK_CHECK_VERSION(2,19,7)
+ expand_web (ce, !gtk_widget_get_visible (widget));
+#else
+ expand_web (ce, !GTK_WIDGET_VISIBLE (widget));
+#endif
+}
+
+static void
expand_phone_toggle (EContactEditor *ce)
{
GtkWidget *phone_ext_table;
phone_ext_table = e_builder_get_widget (ce->builder, "table-phone-extended");
#if GTK_CHECK_VERSION(2,19,7)
- expand_phone (ce, gtk_widget_get_visible (phone_ext_table) ? FALSE : TRUE);
+ expand_phone (ce, !gtk_widget_get_visible (phone_ext_table));
+#else
+ expand_phone (ce, !GTK_WIDGET_VISIBLE (phone_ext_table));
+#endif
+}
+
+static void
+expand_mail_toggle (EContactEditor *ce)
+{
+ GtkWidget *mail;
+
+ mail = e_builder_get_widget (ce->builder, "entry-email-4");
+#if GTK_CHECK_VERSION(2,19,7)
+ expand_mail (ce, !gtk_widget_get_visible (mail));
#else
- expand_phone (ce, GTK_WIDGET_VISIBLE (phone_ext_table) ? FALSE : TRUE);
+ expand_mail (ce, !GTK_WIDGET_VISIBLE (mail));
#endif
}
@@ -3402,6 +3522,7 @@ e_contact_editor_init (EContactEditor *e_contact_editor)
e_contact_editor->target_editable = TRUE;
e_contact_editor->fullname_dialog = NULL;
e_contact_editor->categories_dialog = NULL;
+ e_contact_editor->compress_ui = e_shell_get_express_mode (e_shell_get_default ());
e_contact_editor->load_source_id = 0;
e_contact_editor->load_book = NULL;
@@ -3441,8 +3562,12 @@ e_contact_editor_init (EContactEditor *e_contact_editor)
g_signal_connect (widget, "clicked", G_CALLBACK (file_cancel_cb), e_contact_editor);
widget = e_builder_get_widget (e_contact_editor->builder, "button-help");
g_signal_connect (widget, "clicked", G_CALLBACK (show_help_cb), e_contact_editor);
+ widget = e_builder_get_widget (e_contact_editor->builder, "button-web-expand");
+ g_signal_connect_swapped (widget, "clicked", G_CALLBACK (expand_web_toggle), e_contact_editor);
widget = e_builder_get_widget (e_contact_editor->builder, "button-phone-expand");
g_signal_connect_swapped (widget, "clicked", G_CALLBACK (expand_phone_toggle), e_contact_editor);
+ widget = e_builder_get_widget (e_contact_editor->builder, "button-mail-expand");
+ g_signal_connect_swapped (widget, "clicked", G_CALLBACK (expand_mail_toggle), e_contact_editor);
widget = e_builder_get_widget (e_contact_editor->builder, "entry-fullname");
if (widget)
diff --git a/addressbook/gui/contact-editor/e-contact-editor.h b/addressbook/gui/contact-editor/e-contact-editor.h
index 5079f1a0ee..b41324c270 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.h
+++ b/addressbook/gui/contact-editor/e-contact-editor.h
@@ -84,6 +84,9 @@ struct _EContactEditor
/* Whether an image is changed */
guint image_changed : 1;
+ /* Whether to try to reduce space used */
+ guint compress_ui : 1;
+
EList *writable_fields;
EList *required_fields;
diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c
index 9662c6231e..ae6eb3e172 100644
--- a/calendar/gui/alarm-notify/alarm-queue.c
+++ b/calendar/gui/alarm-notify/alarm-queue.c
@@ -183,6 +183,25 @@ message_push (Message *msg)
msg->func (msg);
}
+/*
+ * use a static ring-buffer so we can call this twice
+ * in a printf without getting nonsense results.
+ */
+static const char *
+e_ctime (const time_t *timep)
+{
+ static char *buffer[4] = { 0, };
+ static int next = 0;
+ const char *ret;
+
+ g_free (buffer[next]);
+ ret = buffer[next++] = g_strdup (ctime (timep));
+ if (next >= G_N_ELEMENTS (buffer))
+ next = 0;
+
+ return ret;
+}
+
/* Queues an alarm trigger for midnight so that we can load the next day's worth
* of alarms.
*/
@@ -199,7 +218,7 @@ queue_midnight_refresh (void)
zone = config_data_get_timezone ();
midnight = time_day_end_with_zone (time (NULL), zone);
- d(printf("%s:%d (queue_midnight_refresh) - Refresh at %s \n",__FILE__, __LINE__, ctime(&midnight)));
+ d(printf("%s:%d (queue_midnight_refresh) - Refresh at %s \n",__FILE__, __LINE__, e_ctime(&midnight)));
midnight_refresh_id = alarm_add (midnight, midnight_refresh_cb, NULL, NULL);
if (!midnight_refresh_id) {
@@ -471,7 +490,7 @@ add_component_alarms (ClientAlarms *ca, ECalComponentAlarms *alarms)
alarm_id = alarm_add (instance->trigger, alarm_trigger_cb, cqa, NULL);
if (!alarm_id) {
- d(printf("%s:%d (add_component_alarms) - Could not schedule a trigger for %s. Discarding \n",__FILE__, __LINE__, ctime(&(instance->trigger))));
+ d(printf("%s:%d (add_component_alarms) - Could not schedule a trigger for %s. Discarding \n",__FILE__, __LINE__, e_ctime(&(instance->trigger))));
continue;
}
@@ -482,7 +501,7 @@ add_component_alarms (ClientAlarms *ca, ECalComponentAlarms *alarms)
qa->snooze = FALSE;
cqa->queued_alarms = g_slist_prepend (cqa->queued_alarms, qa);
- d(printf("%s:%d (add_component_alarms) - Adding alarm %p %p at %s %s\n",__FILE__, __LINE__, qa, alarm_id, ctime (&(instance->trigger)), ctime(&tnow)));
+ d(printf("%s:%d (add_component_alarms) - Adding alarm %p %p at %s %s\n",__FILE__, __LINE__, qa, alarm_id, ctime (&(instance->trigger)), e_ctime(&tnow)));
}
id = e_cal_component_get_id (alarms->comp);
@@ -571,7 +590,8 @@ load_alarms_for_today (ClientAlarms *ca)
from = MAX (config_data_get_last_notification_time (ca->client) + 1, day_start);
day_end = time_day_end_with_zone (now, zone);
- d(printf("%s:%d (load_alarms_for_today) - From %s to %s\n",__FILE__, __LINE__, ctime (&from), ctime(&day_end)));
+ d(printf("%s:%d (load_alarms_for_today) - From %s to %s\n",__FILE__, __LINE__,
+ g_strdup (ctime (&from)), g_strdup (e_ctime(&day_end))));
load_alarms (ca, from, day_end);
}
@@ -707,7 +727,7 @@ query_objects_changed_async (struct _query_msg *msg)
day_end = time_day_end_with_zone (time (NULL), zone);
- d(printf("%s:%d (query_objects_changed_async) - Querying for object between %s to %s\n",__FILE__, __LINE__, ctime(&from), ctime(&day_end)));
+ d(printf("%s:%d (query_objects_changed_async) - Querying for object between %s to %s\n",__FILE__, __LINE__, e_ctime(&from), e_ctime(&day_end)));
for (l = objects; l != NULL; l = l->next) {
ECalComponentId *id;
@@ -771,7 +791,7 @@ query_objects_changed_async (struct _query_msg *msg)
alarm_id = alarm_add (instance->trigger, alarm_trigger_cb, cqa, NULL);
if (!alarm_id) {
- d(printf("%s:%d (query_objects_changed_async) -Unable to schedule trigger for %s \n",__FILE__, __LINE__, ctime(&(instance->trigger))));
+ d(printf("%s:%d (query_objects_changed_async) -Unable to schedule trigger for %s \n",__FILE__, __LINE__, e_ctime(&(instance->trigger))));
continue;
}
@@ -869,14 +889,14 @@ create_snooze (CompQueuedAlarms *cqa, gpointer alarm_id, gint snooze_mins)
new_id = alarm_add (t, alarm_trigger_cb, cqa, NULL);
if (!new_id) {
- d(printf("%s:%d (create_snooze) -Unable to schedule trigger for %s \n",__FILE__, __LINE__, ctime(&t)));
+ d(printf("%s:%d (create_snooze) -Unable to schedule trigger for %s \n",__FILE__, __LINE__, e_ctime(&t)));
return;
}
orig_qa->instance->trigger = t;
orig_qa->alarm_id = new_id;
orig_qa->snooze = TRUE;
- d(printf("%s:%d (create_snooze) - Adding a alarm at %s\n",__FILE__, __LINE__, ctime(&t)));
+ d(printf("%s:%d (create_snooze) - Adding a alarm at %s\n",__FILE__, __LINE__, e_ctime(&t)));
}
/* Launches a component editor for a component */
@@ -1189,7 +1209,7 @@ notify_dialog_cb (AlarmNotifyResult result, gint snooze_mins, gpointer data)
GtkTreeIter iter;
GtkTreeModel *model = NULL;
- /* We can` also use tray_data->iter */
+ /* We can also use tray_data->iter */
if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
if (!gtk_tree_model_get_iter_first (model, &iter)) {
@@ -1833,7 +1853,7 @@ alarm_queue_init (gpointer data)
if (config_data_get_last_notification_time (NULL) == -1) {
time_t tmval = time (NULL);
- d(printf("%s:%d (alarm_queue_init) - Setting last notification time to %s\n",__FILE__, __LINE__, ctime(&tmval)));
+ d(printf("%s:%d (alarm_queue_init) - Setting last notification time to %s\n",__FILE__, __LINE__, e_ctime(&tmval)));
config_data_set_last_notification_time (NULL, tmval);
}
@@ -2139,7 +2159,7 @@ update_cqa (CompQueuedAlarms *cqa, ECalComponent *newcomp)
from = time_day_begin_with_zone (time (NULL), zone);
to = time_day_end_with_zone (time (NULL), zone);
- d(printf("%s:%d (update_cqa) - Generating alarms between %s and %s\n",__FILE__, __LINE__, ctime(&from), ctime(&to)));
+ d(printf("%s:%d (update_cqa) - Generating alarms between %s and %s\n",__FILE__, __LINE__, e_ctime(&from), e_ctime(&to)));
alarms = e_cal_util_generate_alarms_for_comp (newcomp, from, to, omit,
e_cal_resolve_tzid_cb, cqa->parent_client->client, zone);
diff --git a/calendar/gui/alarm-notify/alarm.c b/calendar/gui/alarm-notify/alarm.c
index 14f66a68fb..a4be16bd69 100644
--- a/calendar/gui/alarm-notify/alarm.c
+++ b/calendar/gui/alarm-notify/alarm.c
@@ -152,7 +152,8 @@ setup_timeout (void)
now = time (NULL);
/* Add the time out */
- d(g_message ("Setting timeout for %d %lu %lu", diff, ar->trigger, now));
+ d(g_message ("Setting timeout for %d.%2d (from now) %lu %lu",
+ diff / 60, diff % 60, ar->trigger, now));
d(g_message (" %s", ctime (&ar->trigger)));
d(g_message (" %s", ctime (&now)));
timeout_id = g_timeout_add_seconds (diff, alarm_ready_cb, NULL);
diff --git a/calendar/gui/apps_evolution_calendar.schemas.in b/calendar/gui/apps_evolution_calendar.schemas.in
index 38d5525b24..ea33ddc1ca 100644
--- a/calendar/gui/apps_evolution_calendar.schemas.in
+++ b/calendar/gui/apps_evolution_calendar.schemas.in
@@ -284,7 +284,7 @@
<applyto>/apps/evolution/calendar/display/date_navigator_pane_position</applyto>
<owner>evolution-calendar</owner>
<type>int</type>
- <default>150</default>
+ <default>200</default>
<locale name="C">
<short>Month view vertical pane position </short>
<long>Position of the vertical pane, between the calendar lists and the date navigator calendar.</long>
@@ -666,14 +666,14 @@
</schema>
<schema>
- <key>/schemas/apps/evolution/calendar/display/day_view_show_week_number</key>
- <applyto>/apps/evolution/calendar/display/day_view_show_week_number</applyto>
+ <key>/schemas/apps/evolution/calendar/display/show_week_numbers</key>
+ <applyto>/apps/evolution/calendar/display/show_week_numbers</applyto>
<owner>evolution-calendar</owner>
<type>bool</type>
<default>false</default>
<locale name="C">
- <short>Show week number in Day and Work Week View</short>
- <long>Whether to show week number in the Day and Work Week View.</long>
+ <short>Show week numbers in Day View, Work Week View, and Date Navigator</short>
+ <long>Whether to show week numbers in various places in the Calendar.</long>
</locale>
</schema>
@@ -682,27 +682,13 @@
<applyto>/apps/evolution/calendar/display/month_scroll_by_week</applyto>
<owner>evolution-calendar</owner>
<type>bool</type>
- <default>false</default>
+ <default>true</default>
<locale name="C">
<short>Scroll Month View by a week</short>
<long>Whether to scroll a Month View by a week, not by a month.</long>
</locale>
</schema>
- <!-- Date navigator -->
-
- <schema>
- <key>/schemas/apps/evolution/calendar/date_navigator/show_week_numbers</key>
- <applyto>/apps/evolution/calendar/date_navigator/show_week_numbers</applyto>
- <owner>evolution-calendar</owner>
- <type>bool</type>
- <default>false</default>
- <locale name="C">
- <short>Show week numbers in date navigator</short>
- <long>Whether to show week numbers in the date navigator.</long>
- </locale>
- </schema>
-
<!-- Alarm notification -->
<schema>
diff --git a/calendar/gui/calendar-config-keys.h b/calendar/gui/calendar-config-keys.h
index 9afa8dc7e4..568e211acf 100644
--- a/calendar/gui/calendar-config-keys.h
+++ b/calendar/gui/calendar-config-keys.h
@@ -53,14 +53,11 @@ G_BEGIN_DECLS
#define CALENDAR_CONFIG_COMPRESS_WEEKEND CALENDAR_CONFIG_PREFIX "/display/compress_weekend"
#define CALENDAR_CONFIG_SHOW_EVENT_END CALENDAR_CONFIG_PREFIX "/display/show_event_end"
#define CALENDAR_CONFIG_WORKING_DAYS CALENDAR_CONFIG_PREFIX "/display/working_days"
-#define CALENDAR_CONFIG_DV_WEEK_NUMBER CALENDAR_CONFIG_PREFIX "/display/day_view_show_week_number"
+#define CALENDAR_CONFIG_SHOW_WEEK_NUMBERS CALENDAR_CONFIG_PREFIX "/display/show_week_numbers"
#define CALENDAR_CONFIG_DAY_SECOND_ZONE CALENDAR_CONFIG_PREFIX "/display/day_second_zone"
#define CALENDAR_CONFIG_DAY_SECOND_ZONES_LIST CALENDAR_CONFIG_PREFIX "/display/day_second_zones"
#define CALENDAR_CONFIG_DAY_SECOND_ZONES_MAX CALENDAR_CONFIG_PREFIX "/display/day_second_zones_max"
-/* Date navigator settings */
-#define CALENDAR_CONFIG_DN_SHOW_WEEK_NUMBERS CALENDAR_CONFIG_PREFIX "/date_navigator/show_week_numbers"
-
/* Task display settings */
#define CALENDAR_CONFIG_TASKS_SELECTED_TASKS CALENDAR_CONFIG_PREFIX "/tasks/selected_tasks"
#define CALENDAR_CONFIG_PRIMARY_TASKS CALENDAR_CONFIG_PREFIX "/tasks/primary_tasks"
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c
index 35b946137f..e925838e58 100644
--- a/calendar/gui/dialogs/cal-prefs-dialog.c
+++ b/calendar/gui/dialogs/cal-prefs-dialog.c
@@ -36,6 +36,7 @@
#include "e-util/e-datetime-format.h"
#include "e-util/e-dialog-widgets.h"
#include "e-util/e-util-private.h"
+#include "shell/e-shell-utils.h"
#include <glib/gi18n.h>
#include <string.h>
@@ -739,16 +740,11 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
shell_settings, "cal-compress-weekend",
widget, "active");
- widget = e_builder_get_widget (prefs->builder, "dnav_show_week_no");
+ widget = e_builder_get_widget (prefs->builder, "show_week_numbers");
e_mutual_binding_new (
shell_settings, "cal-show-week-numbers",
widget, "active");
- widget = e_builder_get_widget (prefs->builder, "dview_show_week_no");
- e_mutual_binding_new (
- shell_settings, "cal-day-view-show-week-numbers",
- widget, "active");
-
prefs->month_scroll_by_week = e_builder_get_widget (prefs->builder, "month_scroll_by_week");
widget = e_builder_get_widget (prefs->builder, "tasks_due_today_color");
@@ -780,16 +776,42 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
e_mutual_binding_new (
shell_settings, "cal-free-busy-template",
widget, "text");
- target = e_cal_config_target_new_prefs (ec, prefs->gconf);
- e_config_set_target ((EConfig *)ec, (EConfigTarget *) target);
- toplevel = e_config_create_widget ((EConfig *)ec);
- gtk_container_add (GTK_CONTAINER (prefs), toplevel);
/* date/time format */
table = e_builder_get_widget (prefs->builder, "datetime_format_table");
e_datetime_format_add_setup_widget (table, 0, "calendar", "table", DTFormatKindDateTime, _("Time and date:"));
e_datetime_format_add_setup_widget (table, 1, "calendar", "table", DTFormatKindDate, _("Date only:"));
+ /* Hide senseless preferences when running in Express mode */
+ e_shell_hide_widgets_for_express_mode (shell, prefs->builder,
+ "label_second_zone",
+ "hbox_second_zone",
+ "timezone",
+ "timezone_label",
+ "hbox_use_system_timezone",
+ "hbox_time_divisions",
+ "show_end_times",
+ "month_scroll_by_week",
+ NULL);
+
+ /* HACK: GTK+ 2.18 and 2.20 has a GtkTable which includes row/column spacing even for empty rows/columns.
+ * When Evo runs in Express mode, we hide all the rows in the Time section of the calendar's General
+ * preferences page. However, due to that behavior in GTK+, we get a lot of extra spacing in that
+ * section. Since we know that in Express mode we only leave a single row visible, we'll make the
+ * table's row spacing equal to 0 in that case.
+ */
+ if (e_shell_get_express_mode (shell)) {
+ widget = e_builder_get_widget (prefs->builder, "time");
+ gtk_table_set_row_spacings (GTK_TABLE (widget), 0);
+ }
+
+ /* Hook up and add the toplevel widget */
+
+ target = e_cal_config_target_new_prefs (ec, prefs->gconf);
+ e_config_set_target ((EConfig *)ec, (EConfigTarget *) target);
+ toplevel = e_config_create_widget ((EConfig *)ec);
+ gtk_container_add (GTK_CONTAINER (prefs), toplevel);
+
show_config (prefs);
/* FIXME: weakref? */
setup_changes (prefs);
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.h b/calendar/gui/dialogs/cal-prefs-dialog.h
index 14011d8403..1ae585a0e8 100644
--- a/calendar/gui/dialogs/cal-prefs-dialog.h
+++ b/calendar/gui/dialogs/cal-prefs-dialog.h
@@ -79,8 +79,6 @@ struct _CalendarPrefsDialog {
GtkWidget *time_divisions;
GtkWidget *show_end_times;
GtkWidget *compress_weekend;
- GtkWidget *dnav_show_week_no;
- GtkWidget *dview_show_week_no;
GtkWidget *month_scroll_by_week;
GtkWidget *tasks_hide_completed;
GtkWidget *tasks_hide_completed_interval;
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.ui b/calendar/gui/dialogs/cal-prefs-dialog.ui
index d3478a2590..b94803fc43 100644
--- a/calendar/gui/dialogs/cal-prefs-dialog.ui
+++ b/calendar/gui/dialogs/cal-prefs-dialog.ui
@@ -1,31 +1,27 @@
<?xml version="1.0"?>
<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-requires evolution 0.0 -->
+ <!-- interface-naming-policy toplevel-contextual -->
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">9999</property>
- <property name="lower">0</property>
- <property name="page_increment">10</property>
<property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
+ <property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment2">
<property name="upper">9999</property>
- <property name="lower">0</property>
- <property name="page_increment">10</property>
<property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
+ <property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment3">
+ <property name="value">1</property>
<property name="upper">9999</property>
- <property name="lower">0</property>
- <property name="page_increment">10</property>
<property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">1</property>
+ <property name="page_increment">10</property>
</object>
<object class="GtkListStore" id="model1">
<columns>
+ <!-- column-name gchararray -->
<column type="gchararray"/>
</columns>
<data>
@@ -54,6 +50,7 @@
</object>
<object class="GtkListStore" id="model2">
<columns>
+ <!-- column-name gchararray -->
<column type="gchararray"/>
</columns>
<data>
@@ -70,6 +67,7 @@
</object>
<object class="GtkListStore" id="model3">
<columns>
+ <!-- column-name gchararray -->
<column type="gchararray"/>
</columns>
<data>
@@ -86,6 +84,7 @@
</object>
<object class="GtkListStore" id="model4">
<columns>
+ <!-- column-name gchararray -->
<column type="gchararray"/>
</columns>
<data>
@@ -108,6 +107,7 @@
</object>
<object class="GtkListStore" id="model5">
<columns>
+ <!-- column-name gchararray -->
<column type="gchararray"/>
</columns>
<data>
@@ -122,8 +122,6 @@
</row>
</data>
</object>
- <!-- interface-requires gtk+ 2.16 -->
- <!-- interface-naming-policy toplevel-contextual -->
<object class="GtkNotebook" id="toplevel-notebook">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -164,12 +162,12 @@
<child>
<object class="GtkTable" id="time">
<property name="visible">True</property>
- <property name="n_rows">5</property>
+ <property name="n_rows">4</property>
<property name="n_columns">2</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
- <object class="GtkLabel" id="label63">
+ <object class="GtkLabel" id="label_second_zone">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Se_cond zone:</property>
@@ -177,14 +175,14 @@
<property name="mnemonic_widget">day_second_zone</property>
</object>
<packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <object class="GtkHBox" id="hbox25">
+ <object class="GtkHBox" id="hbox_second_zone">
<property name="visible">True</property>
<child>
<object class="GtkButton" id="day_second_zone">
@@ -214,32 +212,48 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label11">
+ <object class="ETimezoneEntry" id="timezone">
+ <property name="visible">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="timezone_label"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="timezone_label">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Time format:</property>
+ <property name="label" translatable="yes">Time _zone:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">timezone</property>
</object>
<packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <object class="GtkHBox" id="hbox4">
+ <object class="GtkHBox" id="hbox_use_system_timezone">
<property name="visible">True</property>
- <property name="spacing">6</property>
<child>
- <object class="GtkRadioButton" id="use_12_hour">
- <property name="label" translatable="yes">_12 hour (AM/PM)</property>
+ <object class="GtkCheckButton" id="use-system-tz-check">
+ <property name="label" translatable="yes">Use s_ystem time zone</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
@@ -248,19 +262,14 @@
</object>
<packing>
<property name="expand">False</property>
- <property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="use_24_hour">
- <property name="label" translatable="yes">_24 hour</property>
+ <object class="GtkLabel" id="system-tz-label">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">use_12_hour</property>
+ <property name="xpad">5</property>
+ <property name="label">(system/tz)</property>
</object>
<packing>
<property name="expand">False</property>
@@ -272,62 +281,51 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="ETimezoneEntry" id="timezone">
- <property name="visible">True</property>
- <accessibility>
- <relation target="timezone_label" type="labelled-by"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="timezone_label">
+ <object class="GtkLabel" id="label_time_format">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Time _zone:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">timezone</property>
+ <property name="label" translatable="yes">Time format:</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <object class="GtkHBox" id="hbox26">
+ <object class="GtkHBox" id="hbox_time_format">
<property name="visible">True</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkCheckButton" id="use-system-tz-check">
- <property name="label" translatable="yes">Use s_ystem time zone</property>
+ <object class="GtkRadioButton" id="use_12_hour">
+ <property name="label" translatable="yes">_12 hour (AM/PM)</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
+ <property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="system-tz-label">
+ <object class="GtkRadioButton" id="use_24_hour">
+ <property name="label" translatable="yes">_24 hour</property>
<property name="visible">True</property>
- <property name="xpad">5</property>
- <property name="label">(system/tz)</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">use_12_hour</property>
</object>
<packing>
<property name="expand">False</property>
@@ -340,14 +338,12 @@
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<placeholder/>
</child>
- <child>
- <placeholder/>
- </child>
</object>
<packing>
<property name="position">1</property>
@@ -391,7 +387,7 @@
<child>
<object class="GtkTable" id="workWeek">
<property name="visible">True</property>
- <property name="n_rows">4</property>
+ <property name="n_rows">3</property>
<property name="n_columns">2</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
@@ -399,13 +395,13 @@
<object class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property comments="A weekday like &quot;Monday&quot; follows" name="label" translatable="yes">Wee_k starts on:</property>
+ <property name="label" translatable="yes" comments="A weekday like &quot;Monday&quot; follows">Wee_k starts on:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">week_start_day</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="y_options"></property>
</packing>
</child>
<child>
@@ -418,64 +414,21 @@
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label14">
+ <object class="GtkLabel" id="day_start_label">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Day begins:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">start_of_day</property>
</object>
<packing>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label15">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Day _ends:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">end_of_day</property>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="EDateEdit" id="start_of_day">
- <property name="show-date">False</property>
- <property name="visible">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="EDateEdit" id="end_of_day">
- <property name="show-date">False</property>
- <property name="visible">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
@@ -484,17 +437,14 @@
<property name="spacing">6</property>
<child>
<object class="GtkCheckButton" id="mon_button">
- <property comments="Monday" name="label" translatable="yes">_Mon</property>
+ <property name="label" translatable="yes" comments="Monday">_Mon</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <accessibility>
-
- </accessibility>
<child internal-child="accessible">
- <object class="AtkObject" id="a11y-mon_button1">
+ <object class="AtkObject" id="mon_button-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Monday</property>
</object>
</child>
@@ -507,17 +457,14 @@
</child>
<child>
<object class="GtkCheckButton" id="tue_button">
- <property comments="Tuesday" name="label" translatable="yes">_Tue</property>
+ <property name="label" translatable="yes" comments="Tuesday">_Tue</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <accessibility>
-
- </accessibility>
<child internal-child="accessible">
- <object class="AtkObject" id="a11y-tue_button1">
+ <object class="AtkObject" id="tue_button-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Tuesday</property>
</object>
</child>
@@ -530,17 +477,14 @@
</child>
<child>
<object class="GtkCheckButton" id="wed_button">
- <property comments="Wednesday" name="label" translatable="yes">_Wed</property>
+ <property name="label" translatable="yes" comments="Wednesday">_Wed</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <accessibility>
-
- </accessibility>
<child internal-child="accessible">
- <object class="AtkObject" id="a11y-wed_button1">
+ <object class="AtkObject" id="wed_button-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Wednesday</property>
</object>
</child>
@@ -553,17 +497,14 @@
</child>
<child>
<object class="GtkCheckButton" id="thu_button">
- <property comments="Thursday" name="label" translatable="yes">T_hu</property>
+ <property name="label" translatable="yes" comments="Thursday">T_hu</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <accessibility>
-
- </accessibility>
<child internal-child="accessible">
- <object class="AtkObject" id="a11y-thu_button1">
+ <object class="AtkObject" id="thu_button-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Thursday</property>
</object>
</child>
@@ -576,17 +517,14 @@
</child>
<child>
<object class="GtkCheckButton" id="fri_button">
- <property comments="Friday" name="label" translatable="yes">_Fri</property>
+ <property name="label" translatable="yes" comments="Friday">_Fri</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <accessibility>
-
- </accessibility>
<child internal-child="accessible">
- <object class="AtkObject" id="a11y-fri_button1">
+ <object class="AtkObject" id="fri_button-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Friday</property>
</object>
</child>
@@ -599,17 +537,14 @@
</child>
<child>
<object class="GtkCheckButton" id="sat_button">
- <property comments="Saturday" name="label" translatable="yes">_Sat</property>
+ <property name="label" translatable="yes" comments="Saturday">_Sat</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <accessibility>
-
- </accessibility>
<child internal-child="accessible">
- <object class="AtkObject" id="a11y-sat_button1">
+ <object class="AtkObject" id="sat_button-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Saturday</property>
</object>
</child>
@@ -622,17 +557,14 @@
</child>
<child>
<object class="GtkCheckButton" id="sun_button">
- <property comments="Sunday" name="label" translatable="yes">S_un</property>
+ <property name="label" translatable="yes" comments="Sunday">S_un</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <accessibility>
-
- </accessibility>
<child internal-child="accessible">
- <object class="AtkObject" id="a11y-sun_button1">
+ <object class="AtkObject" id="sun_button-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Sunday</property>
</object>
</child>
@@ -671,6 +603,57 @@
<property name="y_options">GTK_FILL</property>
</packing>
</child>
+ <child>
+ <object class="GtkHBox" id="hbox13">
+ <property name="visible">True</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="EDateEdit" id="start_of_day">
+ <property name="visible">True</property>
+ <property name="show_date">False</property>
+ <property name="show_week_numbers">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="day_end_label">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Day _ends:</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="EDateEdit" id="end_of_day">
+ <property name="visible">True</property>
+ <property name="show_date">False</property>
+ <property name="show_week_numbers">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="position">1</property>
@@ -736,7 +719,7 @@
<property name="spacing">4</property>
<child>
<object class="GtkCheckButton" id="default_reminder">
- <property comments="This is the first half of a user preference. &quot;Show a reminder [time-period] before every appointment&quot;" name="label" translatable="yes">Sh_ow a reminder</property>
+ <property name="label" translatable="yes" comments="This is the first half of a user preference. &quot;Show a reminder [time-period] before every appointment&quot;">Sh_ow a reminder</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
@@ -778,7 +761,7 @@
<child>
<object class="GtkLabel" id="label16">
<property name="visible">True</property>
- <property comments="This is the last half of a user preference. &quot;Show a reminder [time-period] before every appointment&quot;" name="label" translatable="yes">before every appointment</property>
+ <property name="label" translatable="yes" comments="This is the last half of a user preference. &quot;Show a reminder [time-period] before every appointment&quot;">before every appointment</property>
</object>
<packing>
<property name="expand">False</property>
@@ -797,7 +780,7 @@
<property name="spacing">4</property>
<child>
<object class="GtkCheckButton" id="ba_reminder">
- <property comments="This is the first half of a user preference. &quot;Show a reminder [time-period] before every anniversary/birthday&quot;" name="label" translatable="yes">Show a _reminder</property>
+ <property name="label" translatable="yes" comments="This is the first half of a user preference. &quot;Show a reminder [time-period] before every anniversary/birthday&quot;">Show a _reminder</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
@@ -839,7 +822,7 @@
<child>
<object class="GtkLabel" id="ba_reminder_label">
<property name="visible">True</property>
- <property comments="This is the last half of a user preference. &quot;Show a reminder [time-period] before every anniversary/birthday&quot;" name="label" translatable="yes">before every anniversary/birthday</property>
+ <property name="label" translatable="yes" comments="This is the last half of a user preference. &quot;Show a reminder [time-period] before every anniversary/birthday&quot;">before every anniversary/birthday</property>
</object>
<packing>
<property name="expand">False</property>
@@ -913,7 +896,7 @@
<property name="visible">True</property>
<property name="spacing">6</property>
<child>
- <object class="GtkHBox" id="hbox10">
+ <object class="GtkHBox" id="hbox_time_divisions">
<property name="visible">True</property>
<property name="spacing">6</property>
<child>
@@ -980,8 +963,8 @@
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="dnav_show_week_no">
- <property name="label" translatable="yes">Show week _numbers in date navigator</property>
+ <object class="GtkCheckButton" id="show_week_numbers">
+ <property name="label" translatable="yes">Show week _numbers</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
@@ -995,21 +978,6 @@
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="dview_show_week_no">
- <property name="label" translatable="yes">Show week n_umber in Day and Work Week View</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
<object class="GtkCheckButton" id="month_scroll_by_week">
<property name="label" translatable="yes">Sc_roll Month View by a week</property>
<property name="visible">True</property>
@@ -1021,7 +989,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">5</property>
+ <property name="position">4</property>
</packing>
</child>
</object>
@@ -1069,12 +1037,9 @@
<property name="visible">True</property>
<property name="spacing">6</property>
<child>
- <object class="GtkTable" id="table2">
+ <object class="GtkHBox" id="hbox14">
<property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">6</property>
- <property name="row_spacing">6</property>
+ <property name="spacing">12</property>
<child>
<object class="GtkLabel" id="label21">
<property name="visible">True</property>
@@ -1084,57 +1049,59 @@
<property name="mnemonic_widget">tasks_due_today_color</property>
</object>
<packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label22">
+ <object class="GtkColorButton" id="tasks_due_today_color">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">_Overdue tasks:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">tasks_overdue_color</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="title" translatable="yes">Pick a color</property>
+ <property name="color">#000000000000</property>
</object>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
- <object class="GtkColorButton" id="tasks_due_today_color">
+ <object class="GtkLabel" id="label22">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="title" translatable="yes">Pick a color</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Overdue tasks:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">tasks_overdue_color</property>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options"/>
- <property name="y_options"/>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="tasks_overdue_color">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="receives_default">True</property>
<property name="title" translatable="yes">Pick a color</property>
+ <property name="color">#000000000000</property>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"/>
- <property name="y_options"/>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">2</property>
</packing>
</child>
</object>
<packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
@@ -1202,81 +1169,59 @@
<child>
<object class="GtkLabel" id="label65">
<property name="visible">True</property>
- <property name="label" translatable="yes">Date/Time Format</property>
- <property name="use_underline">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
+ <property name="label" translatable="yes">Date/Time Format</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox27">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">12</property>
<child>
<object class="GtkLabel" id="label66">
<property name="visible">True</property>
- <property name="label" translatable="yes"/>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkTable" id="datetime_format_table">
<property name="visible">True</property>
- <property name="n_rows">1</property>
<property name="n_columns">3</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">0</property>
- <property name="column_spacing">0</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">5</property>
</packing>
</child>
</object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label2">
@@ -1296,101 +1241,69 @@
<child>
<object class="GtkLabel" id="label67">
<property name="visible">True</property>
- <property name="label" translatable="yes">Alarms</property>
- <property name="use_underline">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
+ <property name="label" translatable="yes">Alarms</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xscale">1</property>
- <property name="yscale">1</property>
- <property name="top_padding">0</property>
- <property name="bottom_padding">0</property>
<property name="left_padding">10</property>
- <property name="right_padding">0</property>
<child>
<object class="GtkCheckButton" id="notify_with_tray">
+ <property name="label" translatable="yes">Display alarms in _notification area only</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Display alarms in _notification area only</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</object>
</child>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label62">
<property name="visible">True</property>
- <property name="label" translatable="yes">Select the calendars for alarm notification</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
+ <property name="label" translatable="yes">Select the calendars for alarm notification</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="calendar-source-scrolled-window">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
-
- <child><placeholder/></child>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <placeholder/>
+ </child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">3</property>
</packing>
</child>
</object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
</child>
<child type="tab">
<object class="GtkLabel" id="alarm-label">
@@ -1496,6 +1409,9 @@
</packing>
</child>
</object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label3">
@@ -1508,4 +1424,10 @@
</packing>
</child>
</object>
+ <object class="GtkSizeGroup" id="day_begins_ends_sizegroup">
+ <widgets>
+ <widget name="day_start_label"/>
+ <widget name="day_end_label"/>
+ </widgets>
+ </object>
</interface>
diff --git a/calendar/gui/dialogs/comp-editor-util.c b/calendar/gui/dialogs/comp-editor-util.c
index 271ac5a8cc..cd16b46974 100644
--- a/calendar/gui/dialogs/comp-editor-util.c
+++ b/calendar/gui/dialogs/comp-editor-util.c
@@ -209,7 +209,6 @@ comp_editor_date_label (CompEditorPageDates *dates, GtkWidget *label)
/**
* comp_editor_new_date_edit:
- * @shell_settings: an #EShellSettings
* @show_date: Whether to show a date picker in the widget.
* @show_time: Whether to show a time picker in the widget.
* @make_time_insensitive: Whether the time field is made insensitive rather
@@ -221,15 +220,12 @@ comp_editor_date_label (CompEditorPageDates *dates, GtkWidget *label)
* Return value: A newly-created #EDateEdit widget.
**/
GtkWidget *
-comp_editor_new_date_edit (EShellSettings *shell_settings,
- gboolean show_date,
+comp_editor_new_date_edit (gboolean show_date,
gboolean show_time,
gboolean make_time_insensitive)
{
EDateEdit *dedit;
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
dedit = E_DATE_EDIT (e_date_edit_new ());
e_date_edit_set_show_date (dedit, show_date);
@@ -240,29 +236,9 @@ comp_editor_new_date_edit (EShellSettings *shell_settings,
e_date_edit_set_make_time_insensitive (dedit, FALSE);
#endif
- comp_editor_bind_date_edit_settings (GTK_WIDGET (dedit), shell_settings);
-
return GTK_WIDGET (dedit);
}
-void
-comp_editor_bind_date_edit_settings (GtkWidget *dateedit, EShellSettings *shell_settings)
-{
- g_return_if_fail (dateedit != NULL);
- g_return_if_fail (E_IS_DATE_EDIT (dateedit));
-
- if (!shell_settings)
- shell_settings = e_shell_get_shell_settings (e_shell_get_default ());
-
- e_binding_new (
- shell_settings, "cal-show-week-numbers",
- dateedit, "show-week-numbers");
-
- e_binding_new (
- shell_settings, "cal-week-start-day",
- dateedit, "week-start-day");
-}
-
/* Returns the current time, for EDateEdit widgets and ECalendar items in the
dialogs.
FIXME: Should probably use the timezone from somewhere in the component
diff --git a/calendar/gui/dialogs/comp-editor-util.h b/calendar/gui/dialogs/comp-editor-util.h
index 78a8bab33f..6eeb8c5410 100644
--- a/calendar/gui/dialogs/comp-editor-util.h
+++ b/calendar/gui/dialogs/comp-editor-util.h
@@ -26,7 +26,6 @@
#define _COMP_EDITOR_UTIL_H_
#include <gtk/gtk.h>
-#include <shell/e-shell-settings.h>
#include "comp-editor-page.h"
#include "../e-meeting-attendee.h"
@@ -35,13 +34,10 @@ void comp_editor_free_dates (CompEditorPageDates *dates);
void comp_editor_date_label (CompEditorPageDates *dates, GtkWidget *label);
-GtkWidget * comp_editor_new_date_edit (EShellSettings *shell_settings,
- gboolean show_date,
+GtkWidget * comp_editor_new_date_edit (gboolean show_date,
gboolean show_time,
gboolean make_time_insensitive);
-void comp_editor_bind_date_edit_settings (GtkWidget *dateedit, EShellSettings *shell_settings);
-
struct tm comp_editor_get_current_time (GtkObject *object, gpointer data);
gchar *comp_editor_strip_categories (const gchar *categories);
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c
index 0b1701de6f..91d9f1e202 100644
--- a/calendar/gui/dialogs/comp-editor.c
+++ b/calendar/gui/dialogs/comp-editor.c
@@ -75,8 +75,6 @@
#define d(x)
-static gboolean comp_lite = FALSE;
-
/* Private part of the CompEditor structure */
struct _CompEditorPrivate {
@@ -173,10 +171,16 @@ static const gchar *ui =
" </menu>"
" </menubar>"
" <toolbar name='main-toolbar'>"
-" <toolitem action='save'/>"
-" <toolitem action='print'/>"
-" <toolitem action='close'/>"
+" <toolitem action='save'/>\n"
+"#if !EXPRESS\n"
+" <toolitem action='print'/>\n"
+"#endif\n"
" <separator/>"
+" <placeholder name='content'/>\n"
+"#if EXPRESS\n"
+" <separator expand='true'/>\n"
+" <toolitem action='close'/>\n"
+"#endif\n"
" </toolbar>"
"</ui>";
@@ -421,7 +425,7 @@ save_comp (CompEditor *editor)
clone = e_cal_component_clone (priv->comp);
comp_editor_copy_new_attendees (clone, priv->comp);
for (l = priv->pages; l != NULL; l = l->next) {
- if (!comp_editor_page_fill_component (l->data, clone)) {
+ if (IS_COMP_EDITOR_PAGE(l->data) && !comp_editor_page_fill_component (l->data, clone)) {
g_object_unref (clone);
g_hash_table_destroy (timezones);
comp_editor_show_page (editor, COMP_EDITOR_PAGE (l->data));
@@ -429,7 +433,8 @@ save_comp (CompEditor *editor)
}
/* retrieve all timezones */
- comp_editor_page_fill_timezones (l->data, timezones);
+ if (IS_COMP_EDITOR_PAGE(l->data))
+ comp_editor_page_fill_timezones (l->data, timezones);
}
/* If we are not the organizer, we don't update the sequence number */
@@ -1598,6 +1603,9 @@ comp_editor_init (CompEditor *editor)
gint n_targets;
GError *error = NULL;
+ /* FIXME Shell should be passed in. */
+ shell = e_shell_get_default ();
+
editor->priv = priv = COMP_EDITOR_GET_PRIVATE (editor);
g_object_weak_ref (
@@ -1621,9 +1629,9 @@ comp_editor_init (CompEditor *editor)
priv->is_group_item = FALSE;
priv->ui_manager = e_ui_manager_new ();
+ e_ui_manager_set_express_mode (E_UI_MANAGER (priv->ui_manager),
+ e_shell_get_express_mode (shell));
- if (comp_lite)
- gtk_window_set_default_size ((GtkWindow *) editor, 800, 450);
gtk_window_add_accel_group (
GTK_WINDOW (editor),
gtk_ui_manager_get_accel_group (priv->ui_manager));
@@ -1705,7 +1713,7 @@ comp_editor_init (CompEditor *editor)
action = comp_editor_get_action (editor, "save");
gtk_action_set_sensitive (action, FALSE);
- gtk_ui_manager_add_ui_from_string (priv->ui_manager, ui, -1, &error);
+ e_ui_manager_add_ui_from_string (E_UI_MANAGER (priv->ui_manager), ui, &error);
if (error != NULL) {
g_warning ("%s: %s", G_STRFUNC, error->message);
g_error_free (error);
@@ -1721,24 +1729,25 @@ comp_editor_init (CompEditor *editor)
container = widget;
- widget = comp_editor_get_managed_widget (editor, "/main-menu");
- gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
- gtk_widget_show (widget);
-
- if (!comp_lite) {
- widget = comp_editor_get_managed_widget (editor, "/main-toolbar");
+ if (!e_shell_get_express_mode (shell)) {
+ widget = comp_editor_get_managed_widget (editor, "/main-menu");
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
- gtk_widget_show (widget);
+ gtk_widget_set_visible (widget, !e_shell_get_meego_mode (shell));
}
+ widget = comp_editor_get_managed_widget (editor, "/main-toolbar");
+ gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
+ gtk_widget_show (widget);
+
widget = e_attachment_paned_new ();
gtk_container_set_border_width (GTK_CONTAINER (widget), 6);
gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0);
priv->attachment_view = g_object_ref (widget);
gtk_widget_show (widget);
- if (comp_lite) {
- GtkWidget *tmp, *tmp1, *tmp_box, *cont;
+ if (e_shell_get_express_mode (shell)) {
+ /*GtkWidget *tmp, *tmp1, *tmp_box, */
+ GtkWidget *cont;
GtkWidget *combo;
e_attachment_paned_set_expanded (E_ATTACHMENT_PANED (widget), TRUE);
@@ -1749,7 +1758,7 @@ comp_editor_init (CompEditor *editor)
gtk_widget_hide (combo);
cont = e_attachment_paned_get_controls_container (
E_ATTACHMENT_PANED (widget));
-
+ /*
tmp_box = gtk_hbox_new (FALSE, 0);
tmp = gtk_hbox_new (FALSE, 0);
tmp1 = gtk_image_new_from_stock (GTK_STOCK_SAVE, GTK_ICON_SIZE_BUTTON);
@@ -1769,12 +1778,12 @@ comp_editor_init (CompEditor *editor)
gtk_widget_show(tmp_box);
gtk_box_pack_end (GTK_BOX (cont), tmp_box, FALSE, FALSE, 4);
-
+ */
}
container = e_attachment_paned_get_content_area (
E_ATTACHMENT_PANED (priv->attachment_view));
- if (comp_lite) {
+ if (e_shell_get_express_mode (shell)) {
scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy ((GtkScrolledWindow *)scroll, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_widget_show(scroll);
@@ -1782,14 +1791,14 @@ comp_editor_init (CompEditor *editor)
}
widget = gtk_notebook_new ();
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (widget), FALSE);
- if (!comp_lite)
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (widget), e_shell_get_express_mode (shell));
+ if (!e_shell_get_express_mode (shell))
gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0);
else
gtk_scrolled_window_add_with_viewport ((GtkScrolledWindow *) scroll, widget);
priv->notebook = GTK_NOTEBOOK (widget);
gtk_widget_show (widget);
- if (comp_lite)
+ if (e_shell_get_express_mode (shell))
gtk_widget_set_size_request (scroll, 300, -1);
comp_editor_setup_recent_menu (editor);
@@ -1831,9 +1840,8 @@ comp_editor_init (CompEditor *editor)
comp_editor_bind_gconf (editor);
- /* FIXME Shell should be passed in. */
- shell = e_shell_get_default ();
e_shell_watch_window (shell, GTK_WINDOW (editor));
+ e_shell_adapt_window_size (shell, GTK_WINDOW (editor));
}
static gboolean
@@ -2273,6 +2281,51 @@ page_unmapped_cb (GtkWidget *page_widget,
}
/**
+ * comp_editor_append_widget:
+ * @editor: A component editor
+ * @page: A component editor page
+ * @label: Label of the page. Should be NULL if add is FALSE.
+ * @add: Add's the page into the notebook if TRUE
+ *
+ * Appends a page to the notebook if add is TRUE else
+ * just adds it to the list of pages.
+ **/
+void
+comp_editor_append_widget (CompEditor *editor,
+ GtkWidget *page,
+ const gchar *label,
+ gboolean add)
+{
+ CompEditorPrivate *priv;
+ GtkWidget *label_widget = NULL;
+
+ g_return_if_fail (IS_COMP_EDITOR (editor));
+
+ priv = editor->priv;
+
+ g_object_ref (page);
+
+ if (label)
+ label_widget = gtk_label_new_with_mnemonic (label);
+
+ priv->pages = g_list_append (priv->pages, page);
+
+ if (add)
+ gtk_notebook_append_page (priv->notebook, page, label_widget);
+
+ /* Listen for when the page is mapped/unmapped so we can
+ install/uninstall the appropriate GtkAccelGroup.
+ g_signal_connect (
+ page, "map",
+ G_CALLBACK (page_mapped_cb), page);
+ g_signal_connect(
+ page, "unmap",
+ G_CALLBACK (page_unmapped_cb), page);
+ */
+
+}
+
+/**
* comp_editor_append_page:
* @editor: A component editor
* @page: A component editor page
@@ -2563,8 +2616,10 @@ fill_widgets (CompEditor *editor)
g_signal_handlers_block_by_func (
action, G_CALLBACK (action_classification_cb), editor);
- for (iter = priv->pages; iter != NULL; iter = iter->next)
- comp_editor_page_fill_widgets (iter->data, priv->comp);
+ for (iter = priv->pages; iter != NULL; iter = iter->next) {
+ if (IS_COMP_EDITOR_PAGE(iter->data))
+ comp_editor_page_fill_widgets (iter->data, priv->comp);
+ }
g_signal_handlers_unblock_by_func (
action, G_CALLBACK (action_classification_cb), editor);
@@ -2807,8 +2862,10 @@ comp_editor_get_current_comp (CompEditor *editor, gboolean *correct)
comp = e_cal_component_clone (priv->comp);
comp_editor_copy_new_attendees (comp, priv->comp);
if (priv->changed) {
- for (l = priv->pages; l != NULL; l = l->next)
- all_ok = comp_editor_page_fill_component (l->data, comp) && all_ok;
+ for (l = priv->pages; l != NULL; l = l->next) {
+ if (IS_COMP_EDITOR_PAGE(l->data))
+ all_ok = comp_editor_page_fill_component (l->data, comp) && all_ok;
+ }
}
if (correct)
@@ -2973,7 +3030,7 @@ page_dates_changed_cb (CompEditor *editor,
GList *l;
for (l = priv->pages; l != NULL; l = l->next)
- if (page != (CompEditorPage *) l->data)
+ if (page != (CompEditorPage *) l->data && IS_COMP_EDITOR_PAGE(l->data))
comp_editor_page_set_dates (l->data, dates);
if (!priv->warned && priv->existing_org && !priv->user_org && !(editor->priv->flags & COMP_EDITOR_NEW_ITEM)) {
@@ -3030,14 +3087,3 @@ obj_removed_cb (ECal *client,
close_dialog (editor);
}
-gboolean
-comp_editor_get_lite ()
-{
- return comp_lite;
-}
-
-void
-comp_editor_set_lite (gboolean status)
-{
- comp_lite = status;
-}
diff --git a/calendar/gui/dialogs/comp-editor.h b/calendar/gui/dialogs/comp-editor.h
index 4871beae8f..bd26ce8b66 100644
--- a/calendar/gui/dialogs/comp-editor.h
+++ b/calendar/gui/dialogs/comp-editor.h
@@ -127,6 +127,11 @@ void comp_editor_append_page (CompEditor *editor,
CompEditorPage *page,
const gchar *label,
gboolean add);
+void comp_editor_append_widget (CompEditor *editor,
+ GtkWidget *page,
+ const gchar *label,
+ gboolean add);
+
void comp_editor_remove_page (CompEditor *editor,
CompEditorPage *page);
void comp_editor_show_page (CompEditor *editor,
@@ -165,9 +170,6 @@ GtkWidget * comp_editor_get_managed_widget (CompEditor *editor,
const gchar *widget_path);
CompEditor * comp_editor_find_instance (const gchar *uid);
-void comp_editor_set_lite (gboolean status);
-gboolean comp_editor_get_lite (void);
-
G_END_DECLS
#endif
diff --git a/calendar/gui/dialogs/copy-source-dialog.c b/calendar/gui/dialogs/copy-source-dialog.c
index 9b8c8c4fed..f1c568849b 100644
--- a/calendar/gui/dialogs/copy-source-dialog.c
+++ b/calendar/gui/dialogs/copy-source-dialog.c
@@ -32,18 +32,19 @@
#include "common/authentication.h"
typedef struct {
+ GtkWindow *parent;
ESource *orig_source;
ECalSourceType obj_type;
ESource *selected_source;
} CopySourceDialogData;
static void
-show_error (GtkWindow *parent, const gchar *msg)
+show_error (CopySourceDialogData *csdd, const gchar *msg)
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (
- parent, 0, GTK_MESSAGE_ERROR,
+ csdd->parent, 0, GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE, "%s", msg);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
@@ -88,7 +89,7 @@ copy_source (CopySourceDialogData *csdd)
/* open the source */
source_client = e_auth_new_cal_from_source (csdd->orig_source, csdd->obj_type);
if (!e_cal_open (source_client, TRUE, NULL)) {
- show_error (NULL, _("Could not open source"));
+ show_error (csdd, _("Could not open source"));
g_object_unref (source_client);
return FALSE;
}
@@ -96,7 +97,7 @@ copy_source (CopySourceDialogData *csdd)
/* open the destination */
dest_client = e_auth_new_cal_from_source (csdd->selected_source, csdd->obj_type);
if (!e_cal_open (dest_client, FALSE, NULL)) {
- show_error (NULL, _("Could not open destination"));
+ show_error (csdd, _("Could not open destination"));
g_object_unref (dest_client);
g_object_unref (source_client);
return FALSE;
@@ -105,7 +106,7 @@ copy_source (CopySourceDialogData *csdd)
/* check if the destination is read only */
e_cal_is_read_only (dest_client, &read_only, NULL);
if (read_only) {
- show_error (NULL, _("Destination is read only"));
+ show_error (csdd, _("Destination is read only"));
} else {
if (e_cal_get_object_list (source_client, "#t", &obj_list, NULL)) {
GList *l;
@@ -135,7 +136,7 @@ copy_source (CopySourceDialogData *csdd)
g_free (uid);
} else {
if (error) {
- show_error (NULL, error->message);
+ show_error (csdd, error->message);
g_error_free (error);
}
break;
@@ -168,6 +169,7 @@ copy_source_dialog (GtkWindow *parent, ESource *source, ECalSourceType obj_type)
g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
+ csdd.parent = parent;
csdd.orig_source = source;
csdd.selected_source = NULL;
csdd.obj_type = obj_type;
diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c
index c40f2b05d0..1ae9595c02 100644
--- a/calendar/gui/dialogs/event-editor.c
+++ b/calendar/gui/dialogs/event-editor.c
@@ -36,6 +36,7 @@
#include <e-util/e-binding.h>
#include <e-util/e-plugin-ui.h>
#include <e-util/e-util-private.h>
+#include <e-util/e-ui-manager.h>
#include "event-page.h"
#include "recurrence-page.h"
@@ -89,11 +90,19 @@ static const gchar *ui =
" </menu>"
" </menubar>"
" <toolbar name='main-toolbar'>"
-" <toolitem action='alarms'/>"
-" <toolitem action='show-time-busy'/>"
-" <toolitem action='recurrence'/>"
-" <toolitem action='all-day-event'/>"
-" <toolitem action='free-busy'/>"
+" <placeholder name='content'>\n"
+"#if !EXPRESS\n"
+" <toolitem action='alarms'/>\n"
+"#endif\n"
+" <toolitem action='show-time-busy'/>\n"
+"#if !EXPRESS\n"
+" <toolitem action='recurrence'/>\n"
+"#endif\n"
+" <toolitem action='all-day-event'/>\n"
+"#if !EXPRESS\n"
+" <toolitem action='free-busy'/>\n"
+"#endif\n"
+" </placeholder>"
" </toolbar>"
"</ui>";
@@ -275,6 +284,8 @@ event_editor_constructor (GType type,
GtkActionGroup *action_group;
ECal *client;
gboolean is_meeting;
+ GtkWidget *alarm_page;
+ GtkWidget *attendee_page;
/* Chain up to parent's constructor() method. */
object = G_OBJECT_CLASS (event_editor_parent_class)->constructor (
@@ -308,11 +319,34 @@ event_editor_constructor (GType type,
priv->recur_page = recurrence_page_new (editor);
page = COMP_EDITOR_PAGE (priv->recur_page);
- gtk_container_add (
- GTK_CONTAINER ((GTK_DIALOG (priv->recur_window)->vbox)),
- comp_editor_page_get_widget (page));
- gtk_widget_show_all (gtk_bin_get_child (GTK_BIN (priv->recur_window)));
- comp_editor_append_page (editor, page, NULL, FALSE);
+ if (!e_shell_get_express_mode(e_shell_get_default())) {
+ gtk_container_add (
+ GTK_CONTAINER ((GTK_DIALOG (priv->recur_window)->vbox)),
+ comp_editor_page_get_widget (page));
+ gtk_widget_show_all (gtk_bin_get_child (GTK_BIN (priv->recur_window)));
+ comp_editor_append_page (editor, page, NULL, FALSE);
+ } else {
+ comp_editor_append_page (editor, page, _("_Recurrence"), TRUE);
+ }
+
+ if (e_shell_get_express_mode(e_shell_get_default())) {
+ ENameSelector *name_selector;
+
+ priv->sched_page = schedule_page_new (priv->model, editor);
+ page = COMP_EDITOR_PAGE (priv->sched_page);
+
+ name_selector = event_page_get_name_selector (priv->event_page);
+ schedule_page_set_name_selector (priv->sched_page, name_selector);
+
+ comp_editor_append_page (editor, page, _("_Free/Busy"), TRUE);
+ schedule_page_update_free_busy (priv->sched_page);
+
+ /* Alarm page */
+ alarm_page = event_page_get_alarm_page (priv->event_page);
+ comp_editor_append_widget (editor, alarm_page, _("_Alarm"), TRUE);
+ g_object_unref(alarm_page);
+
+ }
if (is_meeting) {
@@ -329,6 +363,12 @@ event_editor_constructor (GType type,
event_page_set_meeting (priv->event_page, TRUE);
priv->meeting_shown=TRUE;
+
+ if (e_shell_get_express_mode(e_shell_get_default())) {
+ attendee_page = event_page_get_attendee_page (priv->event_page);
+ comp_editor_append_widget (editor, attendee_page, _("Attendee_s"), TRUE);
+ g_object_unref(attendee_page);
+ }
}
return object;
@@ -369,25 +409,12 @@ static void
event_editor_constructed (GObject *object)
{
EventEditorPrivate *priv;
- EShellSettings *shell_settings;
- EShell *shell;
priv = EVENT_EDITOR_GET_PRIVATE (object);
- shell = comp_editor_get_shell (COMP_EDITOR (object));
- shell_settings = e_shell_get_shell_settings (shell);
-
e_binding_new (
object, "client",
priv->model, "client");
-
- e_binding_new (
- shell_settings, "cal-free-busy-template",
- priv->model, "free-busy-template");
-
- e_binding_new (
- shell_settings, "cal-timezone",
- priv->model, "timezone");
}
static void
@@ -518,7 +545,7 @@ event_editor_init (EventEditor *ee)
G_N_ELEMENTS (meeting_entries), ee);
ui_manager = comp_editor_get_ui_manager (editor);
- gtk_ui_manager_add_ui_from_string (ui_manager, ui, -1, &error);
+ e_ui_manager_add_ui_from_string (E_UI_MANAGER (ui_manager), ui, &error);
id = "org.gnome.evolution.event-editor";
e_plugin_ui_register_manager (ui_manager, id, ee);
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
index 6308cda647..74d6af4c4b 100644
--- a/calendar/gui/dialogs/event-page.c
+++ b/calendar/gui/dialogs/event-page.c
@@ -828,7 +828,8 @@ sensitize_widgets (EventPage *epage)
} else {
gtk_widget_show (priv->calendar_label);
gtk_widget_show (priv->list_box);
- gtk_widget_show (priv->attendee_box);
+ if (!e_shell_get_express_mode(e_shell_get_default()))
+ gtk_widget_show (priv->attendee_box);
gtk_widget_show (priv->organizer);
gtk_label_set_text_with_mnemonic ((GtkLabel *) priv->org_cal_label, _("Or_ganizer:"));
}
@@ -2197,7 +2198,7 @@ get_widgets (EventPage *epage)
priv->invite = GW ("invite");
priv->invite_label = GW ("invite-label");
- if (comp_editor_get_lite ())
+ if (e_shell_get_express_mode (e_shell_get_default ()))
gtk_widget_hide (priv->invite);
else
gtk_widget_hide (priv->invite_label);
@@ -2222,7 +2223,6 @@ get_widgets (EventPage *epage)
/* Glade's visibility flag doesn't seem to work for custom widgets */
priv->start_time = GW ("start-time");
- comp_editor_bind_date_edit_settings (priv->start_time, NULL);
gtk_widget_show (priv->start_time);
priv->time_hour = GW ("time-hour");
@@ -2231,7 +2231,6 @@ get_widgets (EventPage *epage)
priv->end_time_combo = GW ("end-time-combobox");
priv->end_time = GW ("end-time");
- comp_editor_bind_date_edit_settings (priv->end_time, NULL);
gtk_widget_show_all (priv->time_hour);
gtk_widget_hide (priv->end_time);
@@ -2239,7 +2238,6 @@ get_widgets (EventPage *epage)
priv->source_selector = GW ("source");
-#undef GW
e_util_set_source_combo_box_list (priv->source_selector, "/apps/evolution/calendar/sources");
@@ -3259,3 +3257,44 @@ event_page_remove_all_attendees (EventPage *epage)
e_meeting_list_view_remove_all_attendees_from_name_selector (E_MEETING_LIST_VIEW (priv->list_view));
}
+
+GtkWidget *
+event_page_get_alarm_page (EventPage *epage)
+{
+ EventPagePrivate *priv;
+ GtkWidget *alarm_page, *tmp;
+
+ g_return_val_if_fail (epage != NULL, NULL);
+ g_return_val_if_fail (IS_EVENT_PAGE (epage), NULL);
+
+ priv = epage->priv;
+
+ tmp = GW("dialog-vbox1");
+ alarm_page = GW("vbox2");
+ g_object_ref(alarm_page);
+ gtk_container_remove ((GtkContainer *)tmp, alarm_page);
+
+ return alarm_page;
+}
+
+GtkWidget *
+event_page_get_attendee_page (EventPage *epage)
+{
+ EventPagePrivate *priv;
+ GtkWidget *apage;
+
+ g_return_val_if_fail (epage != NULL, NULL);
+ g_return_val_if_fail (IS_EVENT_PAGE (epage), NULL);
+
+ priv = epage->priv;
+
+ apage = priv->list_box;
+ g_object_ref(apage);
+ gtk_container_remove ((GtkContainer *)gtk_widget_get_parent(apage), apage);
+ gtk_widget_hide (priv->attendee_box);
+
+ return apage;
+}
+
+
+#undef GW
diff --git a/calendar/gui/dialogs/event-page.h b/calendar/gui/dialogs/event-page.h
index ab43c0f7ba..a4513e4c68 100644
--- a/calendar/gui/dialogs/event-page.h
+++ b/calendar/gui/dialogs/event-page.h
@@ -109,6 +109,8 @@ ENameSelector * event_page_get_name_selector (EventPage *epage);
void event_page_add_attendee (EventPage *epage,
EMeetingAttendee *attendee);
void event_page_remove_all_attendees (EventPage *epage);
+GtkWidget * event_page_get_alarm_page (EventPage *epage);
+GtkWidget * event_page_get_attendee_page (EventPage *epage);
G_END_DECLS
diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c
index f1b3a71d03..adb10dc9fa 100644
--- a/calendar/gui/dialogs/memo-page.c
+++ b/calendar/gui/dialogs/memo-page.c
@@ -816,7 +816,6 @@ get_widgets (MemoPage *mpage)
#undef GW
e_util_set_source_combo_box_list (priv->source_selector, "/apps/evolution/memos/sources");
- comp_editor_bind_date_edit_settings (priv->start_date, NULL);
completion = e_category_completion_new ();
gtk_entry_set_completion (GTK_ENTRY (priv->categories), completion);
diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c
index 4d3e0af1f0..578f98929c 100644
--- a/calendar/gui/dialogs/recurrence-page.c
+++ b/calendar/gui/dialogs/recurrence-page.c
@@ -1340,8 +1340,6 @@ static void
make_ending_until_special (RecurrencePage *rpage)
{
RecurrencePagePrivate *priv = rpage->priv;
- EShell *shell;
- EShellSettings *shell_settings;
CompEditor *editor;
CompEditorFlags flags;
EDateEdit *de;
@@ -1353,13 +1351,9 @@ make_ending_until_special (RecurrencePage *rpage)
editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (rpage));
flags = comp_editor_get_flags (editor);
- shell = comp_editor_get_shell (editor);
- shell_settings = e_shell_get_shell_settings (shell);
-
/* Create the widget */
- priv->ending_date_edit = comp_editor_new_date_edit (
- shell_settings, TRUE, FALSE, FALSE);
+ priv->ending_date_edit = comp_editor_new_date_edit (TRUE, FALSE, FALSE);
de = E_DATE_EDIT (priv->ending_date_edit);
gtk_container_add (GTK_CONTAINER (priv->ending_special),
@@ -2088,14 +2082,10 @@ create_exception_dialog (RecurrencePage *rpage, const gchar *title, GtkWidget **
RecurrencePagePrivate *priv;
GtkWidget *dialog, *toplevel;
CompEditor *editor;
- EShell *shell;
- EShellSettings *shell_settings;
priv = rpage->priv;
editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (rpage));
- shell = comp_editor_get_shell (editor);
- shell_settings = e_shell_get_shell_settings (shell);
toplevel = gtk_widget_get_toplevel (priv->main);
dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (toplevel),
@@ -2104,7 +2094,7 @@ create_exception_dialog (RecurrencePage *rpage, const gchar *title, GtkWidget **
GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
NULL);
- *date_edit = comp_editor_new_date_edit (shell_settings, TRUE, FALSE, TRUE);
+ *date_edit = comp_editor_new_date_edit (TRUE, FALSE, TRUE);
gtk_widget_show (*date_edit);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), *date_edit, FALSE, TRUE, 6);
@@ -2260,8 +2250,6 @@ static void
init_widgets (RecurrencePage *rpage)
{
RecurrencePagePrivate *priv;
- EShell *shell;
- EShellSettings *shell_settings;
CompEditor *editor;
ECalendar *ecal;
GtkAdjustment *adj;
@@ -2271,22 +2259,12 @@ init_widgets (RecurrencePage *rpage)
priv = rpage->priv;
editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (rpage));
- shell = comp_editor_get_shell (editor);
- shell_settings = e_shell_get_shell_settings (shell);
/* Recurrence preview */
priv->preview_calendar = e_calendar_new ();
ecal = E_CALENDAR (priv->preview_calendar);
- e_binding_new (
- shell_settings, "cal-show-week-numbers",
- ecal->calitem, "show-week-numbers");
-
- e_binding_new (
- shell_settings, "cal-week-start-day",
- ecal->calitem, "week-start-day");
-
g_signal_connect((ecal->calitem), "date_range_changed",
G_CALLBACK (preview_date_range_changed_cb),
rpage);
@@ -2423,12 +2401,6 @@ GtkWidget *make_exdate_date_edit (void);
GtkWidget *
make_exdate_date_edit (void)
{
- EShell *shell;
- EShellSettings *shell_settings;
-
- shell = e_shell_get_default ();
- shell_settings = e_shell_get_shell_settings (shell);
-
- return comp_editor_new_date_edit (shell_settings, TRUE, TRUE, FALSE);
+ return comp_editor_new_date_edit (TRUE, TRUE, FALSE);
}
diff --git a/calendar/gui/dialogs/schedule-page.c b/calendar/gui/dialogs/schedule-page.c
index 32b6dffab8..2e13cba1b9 100644
--- a/calendar/gui/dialogs/schedule-page.c
+++ b/calendar/gui/dialogs/schedule-page.c
@@ -380,13 +380,9 @@ SchedulePage *
schedule_page_construct (SchedulePage *spage, EMeetingStore *ems)
{
SchedulePagePrivate *priv = spage->priv;
- EShellSettings *shell_settings;
- EShell *shell;
CompEditor *editor;
editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (spage));
- shell = comp_editor_get_shell (editor);
- shell_settings = e_shell_get_shell_settings (shell);
priv->builder = gtk_builder_new ();
e_load_ui_builder_definition (priv->builder, "schedule-page.ui");
@@ -412,18 +408,6 @@ schedule_page_construct (SchedulePage *spage, EMeetingStore *ems)
gtk_widget_show (GTK_WIDGET (priv->sel));
gtk_box_pack_start (GTK_BOX (priv->main), GTK_WIDGET (priv->sel), TRUE, TRUE, 6);
- e_binding_new (
- shell_settings, "cal-show-week-numbers",
- priv->sel, "show-week-numbers");
-
- e_binding_new (
- shell_settings, "cal-use-24-hour-format",
- priv->sel, "use-24-hour-format");
-
- e_binding_new (
- shell_settings, "cal-week-start-day",
- priv->sel, "week-start-day");
-
if (!init_widgets (spage)) {
g_message ("schedule_page_construct(): "
"Could not initialize the widgets!");
diff --git a/calendar/gui/dialogs/task-details-page.c b/calendar/gui/dialogs/task-details-page.c
index 4a5b5b094e..c549633eb5 100644
--- a/calendar/gui/dialogs/task-details-page.c
+++ b/calendar/gui/dialogs/task-details-page.c
@@ -474,7 +474,6 @@ get_widgets (TaskDetailsPage *tdpage)
priv->date_completed_label = GW ("date_completed_label");
priv->completed_date = GW ("completed-date");
- comp_editor_bind_date_edit_settings (priv->completed_date, NULL);
gtk_widget_show (priv->completed_date);
priv->url_label = GW ("url_label");
diff --git a/calendar/gui/dialogs/task-editor.c b/calendar/gui/dialogs/task-editor.c
index a3d4baec46..7e35cbe070 100644
--- a/calendar/gui/dialogs/task-editor.c
+++ b/calendar/gui/dialogs/task-editor.c
@@ -81,8 +81,10 @@ static const gchar *ui =
" </menu>"
" </menubar>"
" <toolbar name='main-toolbar'>"
-" <toolitem action='view-time-zone'/>"
-" <toolitem action='option-status'/>"
+" <placeholder name='content'>"
+" <toolitem action='view-time-zone'/>"
+" <toolitem action='option-status'/>"
+" </placeholder>"
" </toolbar>"
"</ui>";
@@ -202,25 +204,12 @@ static void
task_editor_constructed (GObject *object)
{
TaskEditorPrivate *priv;
- EShellSettings *shell_settings;
- EShell *shell;
priv = TASK_EDITOR_GET_PRIVATE (object);
- shell = comp_editor_get_shell (COMP_EDITOR (object));
- shell_settings = e_shell_get_shell_settings (shell);
-
e_binding_new (
object, "client",
priv->model, "client");
-
- e_binding_new (
- shell_settings, "cal-free-busy-template",
- priv->model, "free-busy-template");
-
- e_binding_new (
- shell_settings, "cal-timezone",
- priv->model, "timezone");
}
static void
diff --git a/calendar/gui/dialogs/task-page.c b/calendar/gui/dialogs/task-page.c
index 9a10f403d7..fb6338005f 100644
--- a/calendar/gui/dialogs/task-page.c
+++ b/calendar/gui/dialogs/task-page.c
@@ -1363,10 +1363,8 @@ get_widgets (TaskPage *tpage)
/* Glade's visibility flag doesn't seem to work for custom widgets */
priv->due_date = e_builder_get_widget (priv->builder, "due-date");
- comp_editor_bind_date_edit_settings (priv->due_date, NULL);
gtk_widget_show (priv->due_date);
priv->start_date = e_builder_get_widget (priv->builder, "start-date");
- comp_editor_bind_date_edit_settings (priv->start_date, NULL);
gtk_widget_show (priv->start_date);
priv->timezone = e_builder_get_widget (priv->builder, "timezone");
diff --git a/calendar/gui/e-cal-model-calendar.c b/calendar/gui/e-cal-model-calendar.c
index 6df5588dae..778b72de21 100644
--- a/calendar/gui/e-cal-model-calendar.c
+++ b/calendar/gui/e-cal-model-calendar.c
@@ -525,11 +525,7 @@ ecmc_fill_component_from_model (ECalModel *model, ECalModelComponent *comp_data,
* e_cal_model_calendar_new
*/
ECalModel *
-e_cal_model_calendar_new (EShellSettings *shell_settings)
+e_cal_model_calendar_new (void)
{
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
- return g_object_new (
- E_TYPE_CAL_MODEL_CALENDAR,
- "shell-settings", shell_settings, NULL);
+ return g_object_new (E_TYPE_CAL_MODEL_CALENDAR, NULL);
}
diff --git a/calendar/gui/e-cal-model-calendar.h b/calendar/gui/e-cal-model-calendar.h
index f1027032cb..6e3b3fe617 100644
--- a/calendar/gui/e-cal-model-calendar.h
+++ b/calendar/gui/e-cal-model-calendar.h
@@ -71,8 +71,8 @@ struct _ECalModelCalendarClass {
ECalModelClass parent_class;
};
-GType e_cal_model_calendar_get_type (void);
-ECalModel * e_cal_model_calendar_new (EShellSettings *shell_settings);
+GType e_cal_model_calendar_get_type (void);
+ECalModel * e_cal_model_calendar_new (void);
G_END_DECLS
diff --git a/calendar/gui/e-cal-model-memos.c b/calendar/gui/e-cal-model-memos.c
index 41f63700c8..38e55ef71a 100644
--- a/calendar/gui/e-cal-model-memos.c
+++ b/calendar/gui/e-cal-model-memos.c
@@ -261,11 +261,7 @@ ecmm_fill_component_from_model (ECalModel *model, ECalModelComponent *comp_data,
* e_cal_model_memos_new
*/
ECalModel *
-e_cal_model_memos_new (EShellSettings *shell_settings)
+e_cal_model_memos_new (void)
{
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
- return g_object_new (
- E_TYPE_CAL_MODEL_MEMOS,
- "shell-settings", shell_settings, NULL);
+ return g_object_new (E_TYPE_CAL_MODEL_MEMOS, NULL);
}
diff --git a/calendar/gui/e-cal-model-memos.h b/calendar/gui/e-cal-model-memos.h
index b58faa539b..3977bbe0cb 100644
--- a/calendar/gui/e-cal-model-memos.h
+++ b/calendar/gui/e-cal-model-memos.h
@@ -71,7 +71,7 @@ struct _ECalModelMemosClass {
};
GType e_cal_model_memos_get_type (void);
-ECalModel * e_cal_model_memos_new (EShellSettings *shell_settings);
+ECalModel * e_cal_model_memos_new (void);
G_END_DECLS
diff --git a/calendar/gui/e-cal-model-tasks.c b/calendar/gui/e-cal-model-tasks.c
index e6fd01e9c9..c69e7452b9 100644
--- a/calendar/gui/e-cal-model-tasks.c
+++ b/calendar/gui/e-cal-model-tasks.c
@@ -133,27 +133,6 @@ cal_model_tasks_finalize (GObject *object)
}
static void
-cal_model_tasks_constructed (GObject *object)
-{
- ECalModel *model;
- EShellSettings *shell_settings;
-
- model = E_CAL_MODEL (object);
- shell_settings = e_cal_model_get_shell_settings (model);
-
- e_binding_new (
- shell_settings, "cal-tasks-color-due-today",
- model, "color-due-today");
-
- e_binding_new (
- shell_settings, "cal-tasks-color-overdue",
- model, "color-overdue");
-
- /* Chain up to parent's constructed() method. */
- G_OBJECT_CLASS (e_cal_model_tasks_parent_class)->constructed (object);
-}
-
-static void
e_cal_model_tasks_class_init (ECalModelTasksClass *class)
{
GObjectClass *object_class;
@@ -166,7 +145,6 @@ e_cal_model_tasks_class_init (ECalModelTasksClass *class)
object_class->set_property = cal_model_tasks_set_property;
object_class->get_property = cal_model_tasks_get_property;
object_class->finalize = cal_model_tasks_finalize;
- object_class->constructed = cal_model_tasks_constructed;
table_model_class = E_TABLE_MODEL_CLASS (class);
table_model_class->column_count = ecmt_column_count;
@@ -1157,13 +1135,9 @@ ecmt_fill_component_from_model (ECalModel *model, ECalModelComponent *comp_data,
}
ECalModel *
-e_cal_model_tasks_new (EShellSettings *shell_settings)
+e_cal_model_tasks_new (void)
{
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
- return g_object_new (
- E_TYPE_CAL_MODEL_TASKS,
- "shell-settings", shell_settings, NULL);
+ return g_object_new (E_TYPE_CAL_MODEL_TASKS, NULL);
}
const gchar *
diff --git a/calendar/gui/e-cal-model-tasks.h b/calendar/gui/e-cal-model-tasks.h
index 056325547d..c0ceaaa2c5 100644
--- a/calendar/gui/e-cal-model-tasks.h
+++ b/calendar/gui/e-cal-model-tasks.h
@@ -79,7 +79,7 @@ struct _ECalModelTasksClass {
};
GType e_cal_model_tasks_get_type (void);
-ECalModel * e_cal_model_tasks_new (EShellSettings *shell_settings);
+ECalModel * e_cal_model_tasks_new (void);
const gchar * e_cal_model_tasks_get_color_due_today
(ECalModelTasks *model);
void e_cal_model_tasks_set_color_due_today
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c
index cb1966fb17..e48b95999d 100644
--- a/calendar/gui/e-cal-model.c
+++ b/calendar/gui/e-cal-model.c
@@ -35,7 +35,7 @@
#include "e-cal-model.h"
#include "itip-utils.h"
#include "misc.h"
-#include "e-util/e-binding.h"
+#include "e-util/e-extensible.h"
#include "e-util/e-util.h"
#define E_CAL_MODEL_GET_PRIVATE(obj) \
@@ -54,8 +54,6 @@ typedef struct {
} ECalModelClient;
struct _ECalModelPrivate {
- EShellSettings *shell_settings;
-
/* The list of clients we are managing. Each element is of type ECalModelClient */
GList *clients;
@@ -128,7 +126,6 @@ static void remove_client (ECalModel *model, ECalModelClient *client_data);
enum {
PROP_0,
PROP_DEFAULT_CLIENT,
- PROP_SHELL_SETTINGS,
PROP_TIMEZONE,
PROP_USE_24_HOUR_FORMAT,
PROP_WEEK_START_DAY
@@ -148,17 +145,9 @@ enum {
static gpointer parent_class;
static guint signals[LAST_SIGNAL];
-G_DEFINE_TYPE (ECalModel, e_cal_model, E_TABLE_MODEL_TYPE)
-
-static void
-cal_model_set_shell_settings (ECalModel *cal_model,
- EShellSettings *shell_settings)
-{
- g_return_if_fail (E_IS_SHELL_SETTINGS (shell_settings));
- g_return_if_fail (cal_model->priv->shell_settings == NULL);
-
- cal_model->priv->shell_settings = g_object_ref (shell_settings);
-}
+G_DEFINE_TYPE_WITH_CODE (
+ ECalModel, e_cal_model, E_TABLE_MODEL_TYPE,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
static void
cal_model_set_property (GObject *object,
@@ -173,12 +162,6 @@ cal_model_set_property (GObject *object,
g_value_get_object (value));
return;
- case PROP_SHELL_SETTINGS:
- cal_model_set_shell_settings (
- E_CAL_MODEL (object),
- g_value_get_object (value));
- return;
-
case PROP_TIMEZONE:
e_cal_model_set_timezone (
E_CAL_MODEL (object),
@@ -215,13 +198,6 @@ cal_model_get_property (GObject *object,
E_CAL_MODEL (object)));
return;
- case PROP_SHELL_SETTINGS:
- g_value_set_object (
- value,
- e_cal_model_get_shell_settings (
- E_CAL_MODEL (object)));
- return;
-
case PROP_TIMEZONE:
g_value_set_pointer (
value,
@@ -254,11 +230,6 @@ cal_model_dispose (GObject *object)
priv = E_CAL_MODEL_GET_PRIVATE (object);
- if (priv->shell_settings != NULL) {
- g_object_unref (priv->shell_settings);
- priv->shell_settings = NULL;
- }
-
if (priv->clients) {
while (priv->clients != NULL) {
ECalModelClient *client_data = (ECalModelClient *) priv->clients->data;
@@ -317,28 +288,6 @@ cal_model_finalize (GObject *object)
}
static void
-cal_model_constructed (GObject *object)
-{
- ECalModel *model;
- EShellSettings *shell_settings;
-
- model = E_CAL_MODEL (object);
- shell_settings = e_cal_model_get_shell_settings (model);
-
- e_binding_new (
- shell_settings, "cal-timezone",
- model, "timezone");
-
- e_binding_new (
- shell_settings, "cal-use-24-hour-format",
- model, "use-24-hour-format");
-
- e_binding_new (
- shell_settings, "cal-week-start-day",
- model, "week-start-day");
-}
-
-static void
e_cal_model_class_init (ECalModelClass *class)
{
GObjectClass *object_class;
@@ -352,7 +301,6 @@ e_cal_model_class_init (ECalModelClass *class)
object_class->get_property = cal_model_get_property;
object_class->dispose = cal_model_dispose;
object_class->finalize = cal_model_finalize;
- object_class->constructed = cal_model_constructed;
etm_class = E_TABLE_MODEL_CLASS (class);
etm_class->column_count = ecm_column_count;
@@ -382,17 +330,6 @@ e_cal_model_class_init (ECalModelClass *class)
g_object_class_install_property (
object_class,
- PROP_SHELL_SETTINGS,
- g_param_spec_object (
- "shell-settings",
- _("Shell Settings"),
- _("Application-wide settings"),
- E_TYPE_SHELL_SETTINGS,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (
- object_class,
PROP_TIMEZONE,
g_param_spec_pointer (
"timezone",
@@ -513,6 +450,8 @@ e_cal_model_init (ECalModel *model)
model->priv->notify_modified = NULL;
model->priv->notify_removed = NULL;
model->priv->notify_lock = g_mutex_new ();
+
+ e_extensible_load_extensions (E_EXTENSIBLE (model));
}
/* ETableModel methods */
@@ -1387,14 +1326,6 @@ ecm_get_color_for_component (ECalModel *model, ECalModelComponent *comp_data)
return assigned_colors[first_empty].color;
}
-EShellSettings *
-e_cal_model_get_shell_settings (ECalModel *model)
-{
- g_return_val_if_fail (E_IS_CAL_MODEL (model), NULL);
-
- return model->priv->shell_settings;
-}
-
icalcomponent_kind
e_cal_model_get_component_kind (ECalModel *model)
{
diff --git a/calendar/gui/e-cal-model.h b/calendar/gui/e-cal-model.h
index 0b31ca34ec..29c3335310 100644
--- a/calendar/gui/e-cal-model.h
+++ b/calendar/gui/e-cal-model.h
@@ -29,7 +29,6 @@
#include <table/e-table-model.h>
#include <libecal/e-cal.h>
#include "e-cell-date-edit-text.h"
-#include <shell/e-shell-settings.h>
/* Standard GObject macros */
#define E_TYPE_CAL_MODEL \
@@ -176,7 +175,6 @@ typedef time_t (*ECalModelDefaultTimeFunc) (ECalModel *model, gpointer user_data
GType e_cal_model_get_type (void);
GType e_cal_model_component_get_type (void);
-EShellSettings *e_cal_model_get_shell_settings (ECalModel *model);
icalcomponent_kind
e_cal_model_get_component_kind (ECalModel *model);
void e_cal_model_set_component_kind (ECalModel *model,
diff --git a/calendar/gui/e-calendar-view.c b/calendar/gui/e-calendar-view.c
index 42e4c1cd7a..d41ef007a4 100644
--- a/calendar/gui/e-calendar-view.c
+++ b/calendar/gui/e-calendar-view.c
@@ -33,6 +33,7 @@
#include <libedataserver/e-time-utils.h>
#include <e-util/e-util.h>
#include <e-util/e-alert-dialog.h>
+#include <e-util/e-extensible.h>
#include <e-util/e-selection.h>
#include <e-util/e-datetime-format.h>
#include <e-util/e-dialog-utils.h>
@@ -104,7 +105,9 @@ static guint signals[LAST_SIGNAL];
static void calendar_view_selectable_init (ESelectableInterface *interface);
-G_DEFINE_ABSTRACT_TYPE_WITH_CODE (ECalendarView, e_calendar_view, GTK_TYPE_TABLE,
+G_DEFINE_ABSTRACT_TYPE_WITH_CODE (
+ ECalendarView, e_calendar_view, GTK_TYPE_TABLE,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL)
G_IMPLEMENT_INTERFACE (E_TYPE_SELECTABLE, calendar_view_selectable_init));
static void
@@ -873,6 +876,8 @@ e_calendar_view_init (ECalendarView *calendar_view)
target_list = gtk_target_list_new (NULL, 0);
e_target_list_add_calendar_targets (target_list, 0);
calendar_view->priv->paste_target_list = target_list;
+
+ e_extensible_load_extensions (E_EXTENSIBLE (calendar_view));
}
static void
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index 9fb0a78ee4..cc8581fb00 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -590,56 +590,12 @@ static void
day_view_constructed (GObject *object)
{
ECalModel *model;
- EDayView *day_view;
- EShellSettings *shell_settings;
-
- day_view = E_DAY_VIEW (object);
- model = e_calendar_view_get_model (E_CALENDAR_VIEW (day_view));
- shell_settings = e_cal_model_get_shell_settings (model);
-
- e_binding_new (
- shell_settings, "cal-day-view-show-week-numbers",
- day_view->week_number_label, "visible");
-
- e_binding_new (
- shell_settings, "cal-marcus-bains-show-line",
- day_view, "marcus-bains-show-line");
-
- e_binding_new (
- shell_settings, "cal-marcus-bains-day-view-color",
- day_view, "marcus-bains-day-view-color");
-
- e_binding_new (
- shell_settings, "cal-marcus-bains-time-bar-color",
- day_view, "marcus-bains-time-bar-color");
-
- e_binding_new (
- shell_settings, "cal-time-divisions",
- day_view, "mins-per-row");
-
- e_binding_new (
- shell_settings, "cal-work-day-end-hour",
- day_view, "work-day-end-hour");
-
- e_binding_new (
- shell_settings, "cal-work-day-end-minute",
- day_view, "work-day-end-minute");
-
- e_binding_new (
- shell_settings, "cal-work-day-start-hour",
- day_view, "work-day-start-hour");
-
- e_binding_new (
- shell_settings, "cal-work-day-start-minute",
- day_view, "work-day-start-minute");
- e_binding_new (
- shell_settings, "cal-working-days-bitset",
- day_view, "working-days");
+ model = e_calendar_view_get_model (E_CALENDAR_VIEW (object));
g_signal_connect_swapped (
model, "notify::week-start-day",
- G_CALLBACK (day_view_notify_week_start_day_cb), day_view);
+ G_CALLBACK (day_view_notify_week_start_day_cb), object);
}
static void
diff --git a/calendar/gui/e-meeting-store.c b/calendar/gui/e-meeting-store.c
index 35bd87f3e2..6cfaecabfa 100644
--- a/calendar/gui/e-meeting-store.c
+++ b/calendar/gui/e-meeting-store.c
@@ -31,6 +31,7 @@
#include <libecal/e-cal-util.h>
#include <libecal/e-cal-time-util.h>
#include <libedataserver/e-data-server-util.h>
+#include <e-util/e-extensible.h>
#include "itip-utils.h"
#include "e-meeting-utils.h"
#include "e-meeting-attendee.h"
@@ -87,7 +88,13 @@ enum {
PROP_TIMEZONE
};
-static gpointer parent_class;
+/* Forward Declarations */
+static void ems_tree_model_init (GtkTreeModelIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (
+ EMeetingStore, e_meeting_store, GTK_TYPE_LIST_STORE,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, ems_tree_model_init))
static icalparameter_cutype
text_to_type (const gchar *type)
@@ -624,15 +631,14 @@ meeting_store_finalize (GObject *object)
g_mutex_free (priv->mutex);
/* Chain up to parent's finalize() method. */
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (e_meeting_store_parent_class)->finalize (object);
}
static void
-meeting_store_class_init (GObjectClass *class)
+e_meeting_store_class_init (EMeetingStoreClass *class)
{
GObjectClass *object_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EMeetingStorePrivate));
object_class = G_OBJECT_CLASS (class);
@@ -671,7 +677,7 @@ meeting_store_class_init (GObjectClass *class)
}
static void
-meeting_store_init (EMeetingStore *store)
+e_meeting_store_init (EMeetingStore *store)
{
store->priv = E_MEETING_STORE_GET_PRIVATE (store);
@@ -682,41 +688,8 @@ meeting_store_init (EMeetingStore *store)
store->priv->mutex = g_mutex_new ();
store->priv->num_queries = 0;
-}
-
-GType
-e_meeting_store_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EMeetingStoreClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) meeting_store_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EMeetingStore),
- 0, /* n_preallocs */
- (GInstanceInitFunc) meeting_store_init,
- NULL /* value_table */
- };
-
- static const GInterfaceInfo tree_model_info = {
- (GInterfaceInitFunc) ems_tree_model_init,
- NULL,
- NULL
- };
-
- type = g_type_register_static (
- GTK_TYPE_LIST_STORE, "EMeetingStore", &type_info, 0);
-
- g_type_add_interface_static (
- type, GTK_TYPE_TREE_MODEL, &tree_model_info);
- }
- return type;
+ e_extensible_load_extensions (E_EXTENSIBLE (store));
}
GObject *
diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c
index 19a572d6d8..dd3f49df75 100644
--- a/calendar/gui/e-meeting-time-sel.c
+++ b/calendar/gui/e-meeting-time-sel.c
@@ -40,6 +40,7 @@
#include "misc/e-dateedit.h"
#include "e-util/e-binding.h"
+#include "e-util/e-extensible.h"
#include "e-util/e-util.h"
#include "e-meeting-utils.h"
@@ -203,7 +204,9 @@ static void row_deleted_cb (GtkTreeModel *model, GtkTreePath *path, gpointer dat
static void free_busy_template_changed_cb (EMeetingTimeSelector *mts);
-G_DEFINE_TYPE (EMeetingTimeSelector, e_meeting_time_selector, GTK_TYPE_TABLE)
+G_DEFINE_TYPE_WITH_CODE (
+ EMeetingTimeSelector, e_meeting_time_selector, GTK_TYPE_TABLE,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
static void
meeting_time_selector_set_property (GObject *object,
@@ -391,6 +394,8 @@ e_meeting_time_selector_init (EMeetingTimeSelector * mts)
mts->fb_refresh_not = 0;
mts->style_change_idle_id = 0;
+
+ e_extensible_load_extensions (E_EXTENSIBLE (mts));
}
void
@@ -1415,6 +1420,10 @@ e_meeting_time_selector_refresh_free_busy (EMeetingTimeSelector *mts, gint row,
GdkCursor *cursor;
GdkWindow *window;
+ /* nothing to refresh, lets not leak a busy cursor */
+ if (e_meeting_store_count_actual_attendees (mts->model) <= 0)
+ return;
+
start = mts->meeting_start_time;
g_date_subtract_days (&start.date, E_MEETING_TIME_SELECTOR_FB_DAYS_BEFORE);
start.hour = 0;
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index b96ec7e093..696113987b 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -523,19 +523,9 @@ week_view_constructed (GObject *object)
{
ECalModel *model;
ECalendarView *calendar_view;
- EShellSettings *shell_settings;
calendar_view = E_CALENDAR_VIEW (object);
model = e_calendar_view_get_model (calendar_view);
- shell_settings = e_cal_model_get_shell_settings (model);
-
- e_binding_new (
- shell_settings, "cal-compress-weekend",
- object, "compress-weekend");
-
- e_binding_new (
- shell_settings, "cal-show-event-end-times",
- object, "show-event-end-times");
g_signal_connect_swapped (
model, "notify::week-start-day",
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 670512bb43..aa64c74564 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -76,8 +76,6 @@ static GHashTable *non_intrusive_error_table = NULL;
/* Private part of the GnomeCalendar structure */
struct _GnomeCalendarPrivate {
- EShellSettings *shell_settings;
-
ECalModel *model;
/*
@@ -329,16 +327,6 @@ gnome_calendar_update_time_range (GnomeCalendar *gcal)
}
static void
-gnome_calendar_set_shell_settings (GnomeCalendar *gcal,
- EShellSettings *shell_settings)
-{
- g_return_if_fail (E_IS_SHELL_SETTINGS (shell_settings));
- g_return_if_fail (gcal->priv->shell_settings == NULL);
-
- gcal->priv->shell_settings = g_object_ref (shell_settings);
-}
-
-static void
gnome_calendar_set_property (GObject *object,
guint property_id,
const GValue *value,
@@ -351,12 +339,6 @@ gnome_calendar_set_property (GObject *object,
g_value_get_object (value));
return;
- case PROP_SHELL_SETTINGS:
- gnome_calendar_set_shell_settings (
- GNOME_CALENDAR (object),
- g_value_get_object (value));
- return;
-
case PROP_VIEW:
gnome_calendar_set_view (
GNOME_CALENDAR (object),
@@ -392,12 +374,6 @@ gnome_calendar_get_property (GObject *object,
GNOME_CALENDAR (object)));
return;
- case PROP_SHELL_SETTINGS:
- g_value_set_object (
- value, gnome_calendar_get_shell_settings (
- GNOME_CALENDAR (object)));
- return;
-
case PROP_VIEW:
g_value_set_int (
value, gnome_calendar_get_view (
@@ -424,15 +400,12 @@ static void
gnome_calendar_constructed (GObject *object)
{
GnomeCalendar *gcal = GNOME_CALENDAR (object);
- EShellSettings *shell_settings;
ECalendarView *calendar_view;
ECalModel *model;
GtkAdjustment *adjustment;
- shell_settings = gnome_calendar_get_shell_settings (gcal);
-
/* Create the model for the views. */
- model = e_cal_model_calendar_new (shell_settings);
+ model = e_cal_model_calendar_new ();
e_cal_model_set_flags (model, E_CAL_MODEL_FLAGS_EXPAND_RECURRENCES);
gcal->priv->model = model;
@@ -545,17 +518,6 @@ gnome_calendar_class_init (GnomeCalendarClass *class)
g_object_class_install_property (
object_class,
- PROP_SHELL_SETTINGS,
- g_param_spec_object (
- "shell-settings",
- _("Shell Settings"),
- _("Application-wide settings"),
- E_TYPE_SHELL_SETTINGS,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (
- object_class,
PROP_VIEW,
g_param_spec_int (
"view",
@@ -1462,7 +1424,7 @@ gnome_calendar_init (GnomeCalendar *gcal)
priv->todo_update_lock = g_mutex_new ();
priv->dn_query_lock = g_mutex_new ();
- priv->current_view_type = GNOME_CAL_DAY_VIEW;
+ priv->current_view_type = GNOME_CAL_WORK_WEEK_VIEW;
priv->range_selected = FALSE;
priv->lview_select_daten_range = TRUE;
@@ -1492,11 +1454,6 @@ gnome_calendar_do_dispose (GObject *object)
priv = gcal->priv;
- if (priv->shell_settings != NULL) {
- g_object_unref (priv->shell_settings);
- priv->shell_settings = NULL;
- }
-
if (priv->model != NULL) {
g_signal_handlers_disconnect_by_func (
priv->model, view_progress_cb, gcal);
@@ -1906,21 +1863,9 @@ non_intrusive_error_remove(GtkWidget *w, gpointer data)
}
GtkWidget *
-gnome_calendar_new (EShellSettings *shell_settings)
+gnome_calendar_new (void)
{
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
- return g_object_new (
- GNOME_TYPE_CALENDAR,
- "shell-settings", shell_settings, NULL);
-}
-
-EShellSettings *
-gnome_calendar_get_shell_settings (GnomeCalendar *gcal)
-{
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), NULL);
-
- return gcal->priv->shell_settings;
+ return g_object_new (GNOME_TYPE_CALENDAR, NULL);
}
ECalendar *
diff --git a/calendar/gui/gnome-cal.h b/calendar/gui/gnome-cal.h
index 4fa36b1446..52047a0e19 100644
--- a/calendar/gui/gnome-cal.h
+++ b/calendar/gui/gnome-cal.h
@@ -31,7 +31,6 @@
#include <gtk/gtk.h>
#include <misc/e-calendar.h>
#include <libecal/e-cal.h>
-#include <shell/e-shell-settings.h>
#include "e-cal-model.h"
@@ -113,10 +112,8 @@ struct _GnomeCalendarClass {
};
GType gnome_calendar_get_type (void);
-GtkWidget * gnome_calendar_new (EShellSettings *shell_settings);
+GtkWidget * gnome_calendar_new (void);
void gnome_calendar_dispose (GnomeCalendar *gcal);
-EShellSettings *gnome_calendar_get_shell_settings
- (GnomeCalendar *gcal);
ECalendar * gnome_calendar_get_date_navigator
(GnomeCalendar *gcal);
void gnome_calendar_set_date_navigator
diff --git a/capplet/settings/Makefile.am b/capplet/settings/Makefile.am
index dde24ee7ec..61b74c888b 100644
--- a/capplet/settings/Makefile.am
+++ b/capplet/settings/Makefile.am
@@ -1,3 +1,4 @@
+SUBDIRS = mail-autoconfig
privsolib_LTLIBRARIES = libevolution-mail-settings.la
diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c
index e97abdc6dc..a6751b9a1b 100644
--- a/capplet/settings/mail-account-view.c
+++ b/capplet/settings/mail-account-view.c
@@ -26,14 +26,31 @@
#include <glib/gi18n.h>
#include "mail-account-view.h"
+#include <libedataserverui/e-passwords.h>
+#include <libedataserver/e-source-group.h>
+#include <libedataserver/e-source-list.h>
#include <libedataserver/e-account-list.h>
#include "mail-view.h"
#include "e-util/e-config.h"
#include "mail/mail-config.h"
+#include "mail/mail-session.h"
#include "mail-guess-servers.h"
struct _MailAccountViewPrivate {
GtkWidget *tab_str;
+
+ GtkWidget *calendar;
+ GtkWidget *gcontacts;
+ GtkWidget *gmail_info_label;
+
+ gboolean is_gmail;
+ gboolean is_yahoo;
+ gboolean do_gcontacts;
+ gboolean do_calendar;
+
+ char *username;
+
+ GtkWidget *yahoo_cal_entry;
};
G_DEFINE_TYPE (MailAccountView, mail_account_view, GTK_TYPE_VBOX)
@@ -47,6 +64,7 @@ enum {
ERROR_NO_FULLNAME = 1,
ERROR_NO_EMAIL = 2,
ERROR_INVALID_EMAIL = 3,
+ ERROR_NO_PASSWORD = 4,
};
struct _dialog_errors {
@@ -56,6 +74,7 @@ struct _dialog_errors {
{ ERROR_NO_FULLNAME, N_("Please enter your full name.") },
{ ERROR_NO_EMAIL, N_("Please enter your email address.") },
{ ERROR_INVALID_EMAIL, N_("The email address you have entered is invalid.") },
+ { ERROR_NO_PASSWORD, N_("Please enter your password.") }
};
static guint signals[LAST_SIGNAL] = { 0 };
@@ -64,12 +83,17 @@ mail_account_view_init (MailAccountView *shell)
{
shell->priv = g_new0(MailAccountViewPrivate, 1);
+ shell->priv->is_gmail = FALSE;
+ shell->priv->is_yahoo = FALSE;
+ shell->priv->username = NULL;
}
static void
mail_account_view_finalize (GObject *object)
{
- /*MailAccountView *shell = (MailAccountView *)object;*/
+ MailAccountView *shell = (MailAccountView *)object;
+
+ g_free(shell->priv->username);
G_OBJECT_CLASS (mail_account_view_parent_class)->finalize (object);
}
@@ -136,11 +160,17 @@ validate_identity (MailAccountView *view)
gchar *user = (gchar *)e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_ID_NAME);
gchar *email = (gchar *)e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_ID_ADDRESS);
gchar *tmp;
+ const gchar *pwd = gtk_entry_get_text ((GtkEntry *)view->password);
if (!user || !*user)
return ERROR_NO_FULLNAME;
if (!email || !*email)
return ERROR_NO_EMAIL;
+ if (view->original) /* We don't query/store pwd on edit. */
+ return 0;
+ if (!pwd || !*pwd)
+ return ERROR_NO_PASSWORD;
+
tmp = strchr(email, '@');
if (!tmp || tmp[1] == 0)
return ERROR_INVALID_EMAIL;
@@ -162,6 +192,260 @@ save_account (MailAccountView *view)
#define PACK_BOX(w) box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start((GtkBox *)box, w, FALSE, FALSE, 12); gtk_widget_show(box);
#define PACK_BOXF(w) box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start((GtkBox *)box, w, FALSE, FALSE, 0); gtk_widget_show(box);
+#define CALENDAR_CALDAV_URI "caldav://%s@www.google.com/calendar/dav/%s/events"
+#define GMAIL_CALENDAR_LOCATION "://www.google.com/calendar/feeds/"
+#define CALENDAR_DEFAULT_PATH "/private/full"
+#define SELECTED_CALENDARS "/apps/evolution/calendar/display/selected_calendars"
+#define YAHOO_CALENDAR_LOCATION "%s@caldav.calendar.yahoo.com/dav/%s/Calendar/%s"
+static gboolean
+is_email (const gchar *address)
+{
+ /* This is supposed to check if the address's domain could be
+ an FQDN but alas, it's not worth the pain and suffering. */
+ const gchar *at;
+
+ at = strchr (address, '@');
+ /* make sure we have an '@' and that it's not the first or last gchar */
+ if (!at || at == address || *(at + 1) == '\0')
+ return FALSE;
+
+ return TRUE;
+}
+
+static gchar *
+sanitize_user_mail (const gchar *user)
+{
+ if (!user)
+ return NULL;
+
+ if (strstr (user, "%40") != NULL) {
+ return g_strdup (user);
+ } else if (!is_email (user)) {
+ return g_strconcat (user, "%40gmail.com", NULL);
+ } else {
+ gchar *tmp = g_malloc0 (sizeof (gchar) * (1 + strlen (user) + 2));
+ gchar *at = strchr (user, '@');
+
+ strncpy (tmp, user, at - user);
+ strcat (tmp, "%40");
+ strcat (tmp, at + 1);
+
+ return tmp;
+ }
+}
+
+static void
+setup_yahoo_account (MailAccountView *mav)
+{
+ GConfClient *gconf = gconf_client_get_default ();
+
+ mav->priv->do_gcontacts = gtk_toggle_button_get_active((GtkToggleButton *)mav->priv->gcontacts);
+ mav->priv->do_calendar = gtk_toggle_button_get_active((GtkToggleButton *)mav->priv->calendar);
+
+ if (mav->priv->do_calendar) {
+ ESourceList *slist;
+ ESourceGroup *sgrp;
+ ESource *calendar;
+ char *sanitize_uname, *abs_uri, *rel_uri;
+ GSList *ids, *temp;
+ const char *email = e_account_get_string(em_account_editor_get_modified_account(mav->edit), E_ACCOUNT_ID_ADDRESS);
+
+ slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/calendar/sources");
+ sgrp = e_source_list_peek_group_by_base_uri (slist, "caldav://");
+ if (!sgrp) {
+ sgrp = e_source_list_ensure_group (slist, _("CalDAV"), "caldav://", TRUE);
+ }
+
+ printf("Setting up Yahoo Calendar: list:%p CalDAVGrp: %p\n", slist, sgrp);
+
+ /* FIXME: Not sure if we should localize 'Calendar' */
+ calendar = e_source_new ("Yahoo", "");
+ e_source_set_property (calendar, "ssl", "1");
+ e_source_set_property (calendar, "refresh", "30");
+ e_source_set_property (calendar, "refresh-type", "0");
+ e_source_set_property (calendar, "auth", "1");
+ e_source_set_property (calendar, "offline_sync", "1");
+ e_source_set_property (calendar, "username", email);
+ e_source_set_property (calendar, "default", "true");
+ e_source_set_property (calendar, "alarm", "true");
+
+ e_source_set_readonly (calendar, FALSE);
+
+ sanitize_uname = sanitize_user_mail (email);
+
+ abs_uri = g_strdup_printf ("caldav://%s@caldav.calendar.yahoo.com/dav/%s/Calendar/%s/", sanitize_uname, email, gtk_entry_get_text((GtkEntry *)mav->priv->yahoo_cal_entry));
+ e_passwords_add_password (abs_uri, gtk_entry_get_text((GtkEntry *)mav->password));
+ e_passwords_remember_password ("Calendar", abs_uri);
+
+ rel_uri = g_strdup_printf (YAHOO_CALENDAR_LOCATION, sanitize_uname, email, gtk_entry_get_text((GtkEntry *)mav->priv->yahoo_cal_entry));
+ e_source_set_relative_uri (calendar, rel_uri);
+
+ e_source_group_add_source (sgrp, calendar, -1);
+ e_source_list_sync (slist, NULL);
+
+ ids = gconf_client_get_list (gconf, SELECTED_CALENDARS, GCONF_VALUE_STRING, NULL);
+ ids = g_slist_append (ids, g_strdup (e_source_peek_uid (calendar)));
+ gconf_client_set_list (gconf, SELECTED_CALENDARS, GCONF_VALUE_STRING, ids, NULL);
+ temp = ids;
+
+ for (; temp != NULL; temp = g_slist_next (temp))
+ g_free (temp->data);
+ g_slist_free (ids);
+
+ g_free(abs_uri);
+ g_free(rel_uri);
+ g_free(sanitize_uname);
+ g_object_unref(slist);
+ g_object_unref(sgrp);
+ g_object_unref(calendar);
+ } else
+ printf("Not setting up Yahoo Calendar\n");
+
+ if (mav->priv->do_gcontacts) {
+ ESourceList *slist;
+ ESourceGroup *sgrp;
+ ESource *abook;
+ char *rel_uri;;
+
+ slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/addressbook/sources" );
+
+ sgrp = e_source_list_peek_group_by_base_uri (slist, "google://");
+
+ /* FIXME: Not sure if we should localize 'Contacts' */
+ abook = e_source_new ("Contacts", "");
+ e_source_set_property (abook, "default", "true");
+ e_source_set_property (abook, "offline_sync", "1");
+ e_source_set_property (abook, "auth", "plain/password");
+ e_source_set_property (abook, "use-ssl", "true");
+ e_source_set_property (abook, "remember_password", "true");
+ e_source_set_property (abook, "refresh-interval", "86400");
+ e_source_set_property (abook, "completion", "true");
+ e_source_set_property (abook, "username", mav->priv->username);
+ e_source_set_relative_uri (abook, mav->priv->username);
+
+ rel_uri = g_strdup_printf("google://%s/", mav->priv->username);
+ e_passwords_add_password (rel_uri, gtk_entry_get_text((GtkEntry *)mav->password));
+ e_passwords_remember_password ("Addressbook", rel_uri);
+ e_source_group_add_source (sgrp, abook, -1);
+ e_source_list_sync (slist, NULL);
+
+ g_free(rel_uri);
+ g_object_unref(slist);
+ g_object_unref(sgrp);
+ g_object_unref(abook);
+
+
+ }
+
+ g_object_unref (gconf);
+}
+
+static void
+setup_google_accounts (MailAccountView *mav)
+{
+ GConfClient *gconf = gconf_client_get_default ();
+
+ mav->priv->do_gcontacts = gtk_toggle_button_get_active((GtkToggleButton *)mav->priv->gcontacts);
+ mav->priv->do_calendar = gtk_toggle_button_get_active((GtkToggleButton *)mav->priv->calendar);
+
+ if (mav->priv->do_calendar) {
+ ESourceList *slist;
+ ESourceGroup *sgrp;
+ ESource *calendar;
+ char *sanitize_uname, *abs_uri, *rel_uri;
+ GSList *ids, *temp;
+
+ slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/calendar/sources");
+ sgrp = e_source_list_peek_group_by_base_uri (slist, "google://");
+ if (!sgrp) {
+ sgrp = e_source_list_ensure_group (slist, _("Google"), "google://", TRUE);
+ }
+
+ printf("Setting up Google Calendar: list:%p GoogleGrp: %p\n", slist, sgrp);
+
+ /* FIXME: Not sure if we should localize 'Calendar' */
+ calendar = e_source_new ("Calendar", "");
+ e_source_set_property (calendar, "ssl", "1");
+ e_source_set_property (calendar, "refresh", "30");
+ e_source_set_property (calendar, "auth", "1");
+ e_source_set_property (calendar, "offline_sync", "1");
+ e_source_set_property (calendar, "username", mav->priv->username);
+ e_source_set_property (calendar, "setup-username", mav->priv->username);
+ e_source_set_property (calendar, "default", "true");
+ e_source_set_readonly (calendar, FALSE);
+
+ sanitize_uname = sanitize_user_mail (mav->priv->username);
+
+ abs_uri = g_strdup_printf (CALENDAR_CALDAV_URI, sanitize_uname, mav->priv->username);
+ e_source_set_absolute_uri (calendar, abs_uri);
+
+ e_passwords_add_password (abs_uri, gtk_entry_get_text((GtkEntry *)mav->password));
+ e_passwords_remember_password ("Calendar", abs_uri);
+ rel_uri = g_strconcat ("https", GMAIL_CALENDAR_LOCATION, sanitize_uname, CALENDAR_DEFAULT_PATH, NULL);
+ e_source_set_relative_uri (calendar, rel_uri);
+
+ e_source_group_add_source (sgrp, calendar, -1);
+ e_source_list_sync (slist, NULL);
+
+ ids = gconf_client_get_list (gconf, SELECTED_CALENDARS, GCONF_VALUE_STRING, NULL);
+ ids = g_slist_append (ids, g_strdup (e_source_peek_uid (calendar)));
+ gconf_client_set_list (gconf, SELECTED_CALENDARS, GCONF_VALUE_STRING, ids, NULL);
+ temp = ids;
+
+ for (; temp != NULL; temp = g_slist_next (temp))
+ g_free (temp->data);
+ g_slist_free (ids);
+
+ g_free(abs_uri);
+ g_free(rel_uri);
+ g_free(sanitize_uname);
+ g_object_unref(slist);
+ g_object_unref(sgrp);
+ g_object_unref(calendar);
+ } else
+ printf("Not setting up Google Calendar\n");
+
+ if (mav->priv->do_gcontacts) {
+ ESourceList *slist;
+ ESourceGroup *sgrp;
+ ESource *abook;
+ char *rel_uri;;
+
+ slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/addressbook/sources" );
+
+ sgrp = e_source_list_peek_group_by_base_uri (slist, "google://");
+
+ /* FIXME: Not sure if we should localize 'Contacts' */
+ abook = e_source_new ("Contacts", "");
+ e_source_set_property (abook, "default", "true");
+ e_source_set_property (abook, "offline_sync", "1");
+ e_source_set_property (abook, "auth", "plain/password");
+ e_source_set_property (abook, "use-ssl", "true");
+ e_source_set_property (abook, "remember_password", "true");
+ e_source_set_property (abook, "refresh-interval", "86400");
+ e_source_set_property (abook, "completion", "true");
+ e_source_set_property (abook, "username", mav->priv->username);
+ e_source_set_relative_uri (abook, mav->priv->username);
+
+ rel_uri = g_strdup_printf("google://%s/", mav->priv->username);
+ e_passwords_add_password (rel_uri, gtk_entry_get_text((GtkEntry *)mav->password));
+ e_passwords_remember_password ("Addressbook", rel_uri);
+ e_source_group_add_source (sgrp, abook, -1);
+ e_source_list_sync (slist, NULL);
+
+ g_free(rel_uri);
+ g_object_unref(slist);
+ g_object_unref(sgrp);
+ g_object_unref(abook);
+
+
+ }
+
+ g_object_unref (gconf);
+}
+
+#define INDENTATION 10
+
static GtkWidget *
create_review (MailAccountView *view)
{
@@ -181,124 +465,115 @@ create_review (MailAccountView *view)
gtk_label_set_markup ((GtkLabel *)label, _("<span size=\"large\" weight=\"bold\">Personal details:</span>"));
gtk_widget_show (label);
PACK_BOXF(label)
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 0, 1, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 0, 1, 0, 1, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
label = gtk_label_new (_("Name:"));
gtk_widget_show (label);
PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 1, 2, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 0, 1, 1, 2, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
entry = gtk_label_new(e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_ID_NAME));
gtk_widget_show(entry);
PACK_BOX(entry)
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 1, 2, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 1, 2, 1, 2, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
label = gtk_label_new (_("Email address:"));
gtk_widget_show (label);
PACK_BOX(label)
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 2, 3, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 0, 1, 2, 3, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
entry = gtk_label_new (e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_ID_ADDRESS));
gtk_widget_show(entry);
PACK_BOX(entry)
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 2, 3, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 1, 2, 2, 3, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup ((GtkLabel *)label, _("<span size=\"large\" weight=\"bold\">Details:</span>"));
+ gtk_widget_show (label);
+ PACK_BOXF(label);
+ gtk_table_attach ((GtkTable *)table, box, 0, 1, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
label = gtk_label_new (NULL);
- gtk_label_set_markup ((GtkLabel *)label, _("<span size=\"large\" weight=\"bold\">Receiving details:</span>"));
+ gtk_label_set_markup ((GtkLabel *)label, _("<span size=\"large\" weight=\"bold\">Receiving</span>"));
gtk_widget_show (label);
PACK_BOXF(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 1, 2, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
label = gtk_label_new (_("Server type:"));
gtk_widget_show (label);
PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 4, 5, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 0, 1, 4, 5, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
entry = gtk_label_new (url->protocol);
gtk_widget_show(entry);
PACK_BOX(entry)
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 4, 5, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 1, 2, 4, 5, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
label = gtk_label_new (_("Server address:"));
gtk_widget_show (label);
PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 5, 6, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 0, 1, 5, 6, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
entry = gtk_label_new (url->host);
gtk_widget_show(entry);
PACK_BOX(entry);
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 5, 6, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 1, 2, 5, 6, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
label = gtk_label_new (_("Username:"));
gtk_widget_show (label);
PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 6, 7, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 0, 1, 6, 7, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
entry = gtk_label_new (url->user);
gtk_widget_show(entry);
PACK_BOX(entry);
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 6, 7, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 1, 2, 6, 7, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
label = gtk_label_new (_("Use encryption:"));
gtk_widget_show (label);
PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 7, 8, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 0, 1, 7, 8, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
enc = (gchar *)camel_url_get_param(url, "use_ssl");
entry = gtk_label_new (enc ? enc : _("never"));
gtk_widget_show(entry);
PACK_BOX(entry);
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 7, 8, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 1, 2, 7, 8, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
+ view->priv->username = g_strdup(url->user);
camel_url_free(url);
uri =(gchar *) e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_TRANSPORT_URL);
if (!uri || (url = camel_url_new(uri, NULL)) == NULL)
return NULL;
label = gtk_label_new (NULL);
- gtk_label_set_markup ((GtkLabel *)label, _("<span size=\"large\" weight=\"bold\">Sending details:</span>"));
+ gtk_label_set_markup ((GtkLabel *)label, _("<span size=\"large\" weight=\"bold\">Sending</span>"));
gtk_widget_show (label);
PACK_BOXF(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 8, 9, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 2, 3, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
- label = gtk_label_new (_("Server type:"));
- gtk_widget_show (label);
- PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 9, 10, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
entry = gtk_label_new (url->protocol);
gtk_widget_show(entry);
PACK_BOX(entry)
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 9, 10, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 2, 3, 4, 5, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
- label = gtk_label_new (_("Server address:"));
- gtk_widget_show (label);
- PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 10, 11, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
entry = gtk_label_new (url->host);
gtk_widget_show(entry);
PACK_BOX(entry);
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 10, 11, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 2, 3, 5, 6, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
- label = gtk_label_new (_("Username:"));
- gtk_widget_show (label);
- PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 11, 12, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
entry = gtk_label_new (url->user);
gtk_widget_show(entry);
PACK_BOX(entry);
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 11, 12, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 2, 3, 6, 7, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
- label = gtk_label_new (_("Use encryption:"));
- gtk_widget_show (label);
- PACK_BOX(label);
- gtk_table_attach ((GtkTable *)table, box, 0, 1, 12, 13, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
enc = (gchar *)camel_url_get_param(url, "use_ssl");
entry = gtk_label_new (enc ? enc : _("never"));
gtk_widget_show(entry);
PACK_BOX(entry);
- gtk_table_attach ((GtkTable *)table, box, 1, 2, 12, 13, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach ((GtkTable *)table, box, 2, 3, 7, 8, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
/*
label = gtk_label_new (_("Organization:"));
gtk_widget_show (label);
entry = gtk_entry_new ();
gtk_widget_show(entry);
- gtk_table_attach (table, label, 0, 1, 3, 4, GTK_SHRINK, GTK_SHRINK, 10, 3);
- gtk_table_attach (table, entry, 1, 2, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3);
+ gtk_table_attach (table, label, 0, 1, 3, 4, GTK_SHRINK, GTK_SHRINK, INDENTATION, 0);
+ gtk_table_attach (table, entry, 1, 2, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0);
*/
gtk_widget_show(table);
@@ -378,6 +653,25 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav)
g_free(uri);
camel_url_free(url);
}
+
+ if (!mav->original) {
+ EAccount *account = em_account_editor_get_modified_account(mav->edit);
+ CamelURL *aurl;
+ char *surl;
+ /* Save the password ahead of time */
+ aurl = camel_url_new (account->source->url, NULL);
+ surl = camel_url_to_string(aurl, CAMEL_URL_HIDE_ALL);
+ e_passwords_add_password (surl, gtk_entry_get_text((GtkEntry *)mav->password));
+ e_passwords_remember_password ("Mail", surl);
+ camel_url_free(aurl);
+ g_free(surl);
+ }
+
+ if (mav->priv->is_gmail && !mav->original)
+ setup_google_accounts (mav);
+ else if (mav->priv->is_yahoo && !mav->original)
+ setup_yahoo_account (mav);
+
em_account_editor_commit (mav->edit);
g_signal_emit (mav, signals[VIEW_CLOSE], 0);
return;
@@ -393,7 +687,8 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav)
if (mav->current_page == MAV_LAST - 1) {
MAVPage *page = mav->pages[mav->current_page];
GtkWidget *tmp;
-
+ EAccount *account = em_account_editor_get_modified_account(mav->edit);
+
if (page->main)
gtk_widget_destroy (page->main);
@@ -403,6 +698,96 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav)
gtk_box_pack_start((GtkBox *)page->main, tmp, FALSE, FALSE, 0);
gtk_widget_show(tmp);
gtk_box_pack_start((GtkBox *)page->box, page->main, FALSE, FALSE, 3);
+
+ if (mav->priv->is_gmail) {
+ gtk_widget_destroy (mav->priv->gcontacts);
+ gtk_widget_destroy (mav->priv->calendar);
+ gtk_widget_destroy (mav->priv->gmail_info_label);
+ } else if (mav->priv->is_yahoo) {
+ gtk_widget_destroy (mav->priv->calendar);
+ gtk_widget_destroy (mav->priv->gmail_info_label);
+ gtk_widget_destroy (mav->priv->yahoo_cal_entry);
+ }
+
+ if (mav->original == NULL && (g_strrstr(account->source->url, "gmail") ||
+ g_strrstr(account->source->url, "googlemail"))) {
+ /* Google accounts*/
+ GtkWidget *tmp;
+ mav->priv->is_gmail = TRUE;
+
+ mav->priv->gcontacts = gtk_check_button_new_with_label (_("Setup Google contacts with Evolution"));
+ mav->priv->calendar = gtk_check_button_new_with_label (_("Setup Google calendar with Evolution"));
+
+ gtk_toggle_button_set_active ((GtkToggleButton *)mav->priv->gcontacts, TRUE);
+ gtk_toggle_button_set_active ((GtkToggleButton *)mav->priv->calendar, TRUE);
+
+ mav->priv->gmail_info_label = gtk_label_new (_("You may need to enable IMAP access."));
+ gtk_label_set_selectable ((GtkLabel *)mav->priv->gmail_info_label, TRUE);
+
+ gtk_widget_show (mav->priv->gcontacts);
+ gtk_widget_show (mav->priv->calendar);
+ gtk_widget_show (mav->priv->gmail_info_label);
+
+ tmp = gtk_label_new (NULL);
+ gtk_label_set_markup ((GtkLabel *)tmp, _("<span size=\"large\" weight=\"bold\">Google account settings:</span>"));
+ gtk_widget_show(tmp);
+
+#define PACK_IN_BOX(wid,child,num) { GtkWidget *tbox; tbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *)tbox, child, FALSE, FALSE, num); gtk_widget_show (tbox); gtk_box_pack_start ((GtkBox *)wid, tbox, FALSE, FALSE, 0); }
+
+ PACK_IN_BOX(page->box,tmp,12);
+ PACK_IN_BOX(page->box,mav->priv->gcontacts,24);
+ PACK_IN_BOX(page->box,mav->priv->calendar,24);
+#undef PACK_IN_BOX
+#define PACK_IN_BOX(wid,child1,child2,num1,num2) { GtkWidget *tbox; tbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *)tbox, child1, FALSE, FALSE, num1); gtk_box_pack_start ((GtkBox *)tbox, child2, FALSE, FALSE, num2); gtk_widget_show_all (tbox); gtk_box_pack_start ((GtkBox *)wid, tbox, FALSE, FALSE, 0); }
+
+ PACK_IN_BOX(page->box,mav->priv->gmail_info_label,gtk_link_button_new("https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"), 24, 0);
+#undef PACK_IN_BOX
+ } else if (mav->original == NULL &&
+ (g_strrstr(account->source->url, "yahoo.") ||
+ g_strrstr(account->source->url, "ymail.") ||
+ g_strrstr(account->source->url, "rocketmail."))) {
+ /* Yahoo accounts*/
+ GtkWidget *tmp;
+ char *cal_name;
+ GtkWidget *tmpbox;
+
+ mav->priv->is_yahoo = TRUE;
+ printf("Google account: %s\n", account->source->url);
+ mav->priv->calendar = gtk_check_button_new_with_label (_("Setup Yahoo calendar with Evolution"));
+
+ gtk_toggle_button_set_active ((GtkToggleButton *)mav->priv->calendar, TRUE);
+
+ mav->priv->gmail_info_label = gtk_label_new (_("Yahoo calendars are named as firstname_lastname. We have tried to form the calendar name. So please confirm and re-enter the calendar name if it is not correct."));
+ gtk_label_set_selectable ((GtkLabel *)mav->priv->gmail_info_label, TRUE);
+
+ gtk_widget_show (mav->priv->calendar);
+ gtk_widget_show (mav->priv->gmail_info_label);
+
+ tmp = gtk_label_new (NULL);
+ gtk_label_set_markup ((GtkLabel *)tmp, _("<span size=\"large\" weight=\"bold\">Yahoo account settings:</span>"));
+ gtk_widget_show(tmp);
+
+#define PACK_IN_BOX(wid,child,num) { GtkWidget *tbox; tbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *)tbox, child, FALSE, FALSE, num); gtk_widget_show (tbox); gtk_box_pack_start ((GtkBox *)wid, tbox, FALSE, FALSE, 0); }
+#define PACK_IN_BOX_AND_TEXT(txt, child,num) { GtkWidget *txtlbl = gtk_label_new (txt); tmpbox = gtk_hbox_new (FALSE, 12); gtk_box_pack_start ((GtkBox *)tmpbox, txtlbl, FALSE, FALSE, num); gtk_box_pack_start ((GtkBox *)tmpbox, child, FALSE, FALSE, num); gtk_widget_show_all (tmpbox);}
+
+ PACK_IN_BOX(page->box,tmp,12);
+ PACK_IN_BOX(page->box,mav->priv->calendar,24);
+
+ mav->priv->yahoo_cal_entry = gtk_entry_new ();
+ gtk_widget_show (mav->priv->yahoo_cal_entry);
+ PACK_IN_BOX(page->box,mav->priv->gmail_info_label, 24);
+ PACK_IN_BOX_AND_TEXT(_("Yahoo Calendar name:"), mav->priv->yahoo_cal_entry, 0);
+ PACK_IN_BOX(page->box, tmpbox, 24);
+ cal_name = g_strdup(e_account_get_string(em_account_editor_get_modified_account(mav->edit), E_ACCOUNT_ID_NAME));
+ cal_name = g_strdelimit(cal_name, " ", '_');
+ gtk_entry_set_text ((GtkEntry *)mav->priv->yahoo_cal_entry, cal_name);
+ g_free (cal_name);
+#undef PACK_IN_BOX
+ } else {
+ mav->priv->is_gmail = FALSE;
+ mav->priv->is_yahoo = FALSE;
+ }
+
}
gtk_widget_show (mav->pages[mav->current_page]->box);
@@ -509,6 +894,9 @@ mav_construct_page(MailAccountView *view, MAVPageType type)
gtk_box_pack_start((GtkBox *)box, tmp, FALSE, FALSE, 0);
}
page->next = gtk_button_new ();
+ gtk_widget_set_can_default (page->next, TRUE);
+ g_signal_connect (page->next, "hierarchy-changed",
+ G_CALLBACK (gtk_widget_grab_default), NULL);
gtk_container_add ((GtkContainer *)page->next, box);
gtk_widget_show_all(page->next);
g_signal_connect(page->next, "clicked", G_CALLBACK(mav_next_pressed), view);
@@ -586,9 +974,16 @@ emae_check_servers (const gchar *email)
}
static void
+next_page (GtkWidget *entry, MailAccountView *mav)
+{
+ mav_next_pressed (NULL, mav);
+}
+
+static void
mail_account_view_construct (MailAccountView *view)
{
gint i;
+ EShell *shell;
view->scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy ((GtkScrolledWindow *)view->scroll, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
@@ -616,8 +1011,29 @@ mail_account_view_construct (MailAccountView *view)
em_account_editor_check (view->edit, mail_account_pages[0].path);
view->pages[0]->done = TRUE;
- if (e_shell_get_express_mode (e_shell_get_default ()))
+ shell = e_shell_get_default ();
+ if (!shell || e_shell_get_express_mode (shell)) {
+ GtkWidget *table = em_account_editor_get_widget (view->edit, "identity_required_table");
+ GtkWidget *label, *pwd;
gtk_widget_hide (em_account_editor_get_widget (view->edit, "identity_optional_frame"));
+
+ if (!view->original) {
+ label = gtk_label_new (_("Password:"));
+ pwd = gtk_entry_new ();
+ gtk_entry_set_visibility ((GtkEntry *)pwd, FALSE);
+/* gtk_entry_set_activates_default ((GtkEntry *)pwd, TRUE); */
+ g_signal_connect (pwd, "activate", G_CALLBACK (next_page), view);
+ gtk_widget_show(label);
+ gtk_widget_show(pwd);
+ gtk_table_attach ((GtkTable *)table, label, 0, 1, 2, 3, GTK_FILL, 0, 0, 0);
+ gtk_table_attach ((GtkTable *)table, pwd, 1, 2, 2, 3, GTK_FILL|GTK_EXPAND, 0, 0, 0);
+
+ view->password = pwd;
+ }
+ }
+
+ /* assume the full name is known from the system */
+ gtk_widget_grab_focus (em_account_editor_get_widget (view->edit, "identity_address"));
}
MailAccountView *
diff --git a/capplet/settings/mail-account-view.h b/capplet/settings/mail-account-view.h
index 618dce5361..7d5153172b 100644
--- a/capplet/settings/mail-account-view.h
+++ b/capplet/settings/mail-account-view.h
@@ -75,6 +75,7 @@ typedef struct _MailAccountView {
GtkWidget *wpages[6];
gint current_page;
struct _EMAccountEditor *edit;
+ GtkWidget *password;
MailAccountViewPrivate *priv;
} MailAccountView;
diff --git a/capplet/settings/mail-autoconfig/Makefile.am b/capplet/settings/mail-autoconfig/Makefile.am
new file mode 100644
index 0000000000..451101d364
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/Makefile.am
@@ -0,0 +1,186 @@
+autoconfig_DATA = \
+ abc.plala.or.jp \
+ agate.plala.or.jp \
+ amail.plala.or.jp \
+ amber.plala.or.jp \
+ a.memail.jp \
+ amethyst.broba.cc \
+ aol.com \
+ apost.plala.or.jp \
+ aqua.plala.or.jp \
+ arcor.de \
+ ballade.plala.or.jp \
+ bay.gunmanet.ne.jp \
+ bb-niigata.jp \
+ bc.iij4u.or.jp \
+ beige.plala.or.jp \
+ blue.plala.or.jp \
+ bmail.plala.or.jp \
+ bolero.plala.or.jp \
+ bpost.plala.or.jp \
+ brown.plala.or.jp \
+ camel.plala.or.jp \
+ cameo.plala.or.jp \
+ cc9.ne.jp \
+ cek.ne.jp \
+ clio.ne.jp \
+ cmail.plala.or.jp \
+ co1.wind.jp \
+ co2.wind.jp \
+ co3.wind.jp \
+ cocoa.plala.or.jp \
+ coda.plala.or.jp \
+ comcast.net \
+ concerto.plala.or.jp \
+ coral.plala.or.jp \
+ courante.plala.or.jp \
+ cpost.plala.or.jp \
+ cream.plala.or.jp \
+ dance.plala.or.jp \
+ dan.gunmanet.ne.jp \
+ dmail.plala.or.jp \
+ e23.jp \
+ earthlink.net \
+ ebony.plala.or.jp \
+ email.plala.or.jp \
+ fantasy.plala.or.jp \
+ flamenco.plala.or.jp \
+ fmail.plala.or.jp \
+ free.fr \
+ freenet.de \
+ fuga.plala.or.jp \
+ gmail.com \
+ gmail.plala.or.jp \
+ gmx.com \
+ gmx.net \
+ googlemail.com \
+ goo.jp \
+ go.tvm.ne.jp \
+ grape.plala.or.jp \
+ gray.plala.or.jp \
+ hal.ne.jp \
+ hana.or.jp \
+ hotmail.co.jp \
+ hotmail.com \
+ hotmail.co.uk \
+ hotmail.de \
+ hotmail.fr \
+ hotmail.it \
+ ic-net.or.jp \
+ iiyama-catv.ne.jp \
+ imail.plala.or.jp \
+ inbox.lt \
+ inbox.lv \
+ indigo.plala.or.jp \
+ inet-shibata.or.jp \
+ ivory.plala.or.jp \
+ iwafune.ne.jp \
+ jade.plala.or.jp \
+ janis.or.jp \
+ jet.ne.jp \
+ ji.jet.ne.jp \
+ jmail.plala.or.jp \
+ k1.wind.jp \
+ khaki.plala.or.jp \
+ kmail.plala.or.jp \
+ kokuyou.ne.jp \
+ lapis.plala.or.jp \
+ laposte.net \
+ lemon.plala.or.jp \
+ lilac.plala.or.jp \
+ lime.plala.or.jp \
+ live.co.jp \
+ live.com \
+ live.co.uk \
+ live.de \
+ live.fr \
+ live.it \
+ ma100.tiki.ne.jp \
+ mac.com \
+ mahoroba.ne.jp \
+ mail.gunmanet.jp \
+ mail.iwafune.ne.jp \
+ maroon.plala.or.jp \
+ me.com \
+ minuet.plala.or.jp \
+ ml.murakami.ne.jp \
+ ml.shibata.ne.jp \
+ mnet.ne.jp \
+ mopera.net \
+ msn.com \
+ navy.plala.or.jp \
+ nifty.com \
+ nsat.jp \
+ olive.plala.or.jp \
+ online.de \
+ opal.plala.or.jp \
+ orange.fr \
+ orange.plala.or.jp \
+ orchid.plala.or.jp \
+ palette.plala.or.jp \
+ pal.kijimadaira.jp \
+ parabox.or.jp \
+ peach.plala.or.jp \
+ peoplepc.com \
+ plum.plala.or.jp \
+ po.dcn.ne.jp \
+ polka.plala.or.jp \
+ pop.shibata.ne.jp \
+ po.wind.jp \
+ purple.plala.or.jp \
+ rainbow.plala.or.jp \
+ red.plala.or.jp \
+ rmail.plala.or.jp \
+ rondo.plala.or.jp \
+ rose.plala.or.jp \
+ rouge.plala.or.jp \
+ ruby.plala.or.jp \
+ sakunet.ne.jp \
+ sea.plala.or.jp \
+ sepia.plala.or.jp \
+ serenade.plala.or.jp \
+ silk.plala.or.jp \
+ silver.plala.or.jp \
+ sky.plala.or.jp \
+ smail.plala.or.jp \
+ snow.plala.or.jp \
+ sonata.plala.or.jp \
+ so.wind.ne.jp \
+ suite.plala.or.jp \
+ symphony.plala.or.jp \
+ taupe.plala.or.jp \
+ tiki.ne.jp \
+ tmail.plala.or.jp \
+ toccata.plala.or.jp \
+ t-online.de \
+ topaz.plala.or.jp \
+ trio.plala.or.jp \
+ umail.plala.or.jp \
+ verizon.net \
+ violet.plala.or.jp \
+ vm.aikis.or.jp \
+ vmail.plala.or.jp \
+ vp.tiki.ne.jp \
+ waltz.plala.or.jp \
+ wanadoo.fr \
+ wave.plala.or.jp \
+ web.de \
+ white.plala.or.jp \
+ wine.plala.or.jp \
+ wmail.plala.or.jp \
+ xmail.plala.or.jp \
+ xpost.plala.or.jp \
+ xp.wind.jp \
+ xs4all.nl \
+ yahoo.com \
+ ybb.ne.jp \
+ yellow.plala.or.jp \
+ ymail.plala.or.jp \
+ ypost.plala.or.jp \
+ zmail.plala.or.jp
+
+autoconfigdir = $(privdatadir)/mail-autoconfig
+
+EXTRA_DIST = \
+ $(autoconfig_DATA) \
+ README
diff --git a/capplet/settings/mail-autoconfig/README b/capplet/settings/mail-autoconfig/README
new file mode 100644
index 0000000000..f9fc70ccc6
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/README
@@ -0,0 +1,12 @@
+The files in this directory are used by Evolution's control center
+capplet to automatically configure email accounts. This so that you
+can tell it, "My mail is example@gmail.com" and it will automatically
+figure out that it must use imap.googlemail.com and smtp.googlemail.com.
+
+These files are copied from
+http://live.mozillamessaging.com/autoconfig/
+
+We should update these files periodically, maybe.
+
+ Federico Mena Quintero
+ March 2010
diff --git a/capplet/settings/mail-autoconfig/a.memail.jp b/capplet/settings/mail-autoconfig/a.memail.jp
new file mode 100644
index 0000000000..61eb90d86d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/a.memail.jp
@@ -0,0 +1,1423 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="biglobe.ne.jp">
+ <domain>007.biglobe.ne.jp</domain>
+ <domain>2001.biglobe.ne.jp</domain>
+ <domain>4649.biglobe.ne.jp</domain>
+ <domain>777.biglobe.ne.jp</domain>
+ <domain>a.biglobe.ne.jp</domain>
+ <domain>a.memail.jp</domain>
+ <domain>ab.biglobe.ne.jp</domain>
+ <domain>ab.memail.jp</domain>
+ <domain>abashiri.eeyo.jp</domain>
+ <domain>abukuma.eeyo.jp</domain>
+ <domain>ace.biglobe.ne.jp</domain>
+ <domain>ace.memail.jp</domain>
+ <domain>achoo.biglobe.ne.jp</domain>
+ <domain>achoo.memail.jp</domain>
+ <domain>adachi.eeyo.jp</domain>
+ <domain>aizu.eeyo.jp</domain>
+ <domain>akan.eeyo.jp</domain>
+ <domain>aki.eeyo.jp</domain>
+ <domain>akita.eeyo.jp</domain>
+ <domain>alien.biglobe.ne.jp</domain>
+ <domain>alien.memail.jp</domain>
+ <domain>aloha.biglobe.ne.jp</domain>
+ <domain>aloha.memail.jp</domain>
+ <domain>amakusa.eeyo.jp</domain>
+ <domain>amami.eeyo.jp</domain>
+ <domain>amethyst.biglobe.ne.jp</domain>
+ <domain>amethyst.memail.jp</domain>
+ <domain>amigo.biglobe.ne.jp</domain>
+ <domain>amigo.memail.jp</domain>
+ <domain>angel.biglobe.ne.jp</domain>
+ <domain>angel.memail.jp</domain>
+ <domain>angler.biglobe.ne.jp</domain>
+ <domain>angler.memail.jp</domain>
+ <domain>aomori.eeyo.jp</domain>
+ <domain>appi.eeyo.jp</domain>
+ <domain>apricot.biglobe.ne.jp</domain>
+ <domain>apricot.memail.jp</domain>
+ <domain>aqua.biglobe.ne.jp</domain>
+ <domain>aqua.memail.jp</domain>
+ <domain>aquamarine.biglobe.ne.jp</domain>
+ <domain>aquamarine.memail.jp</domain>
+ <domain>aquarius.biglobe.ne.jp</domain>
+ <domain>aquarius.memail.jp</domain>
+ <domain>arashiyama.eeyo.jp</domain>
+ <domain>aries.biglobe.ne.jp</domain>
+ <domain>aries.memail.jp</domain>
+ <domain>arima.eeyo.jp</domain>
+ <domain>asahikawa.eeyo.jp</domain>
+ <domain>asakusa.eeyo.jp</domain>
+ <domain>asama.eeyo.jp</domain>
+ <domain>ashizuri.eeyo.jp</domain>
+ <domain>aso.eeyo.jp</domain>
+ <domain>asuka.eeyo.jp</domain>
+ <domain>atami.eeyo.jp</domain>
+ <domain>atsumi.eeyo.jp</domain>
+ <domain>autumn.biglobe.ne.jp</domain>
+ <domain>autumn.memail.jp</domain>
+ <domain>awa.eeyo.jp</domain>
+ <domain>awaji.eeyo.jp</domain>
+ <domain>ayu.biglobe.ne.jp</domain>
+ <domain>ayu.memail.jp</domain>
+ <domain>azumino.eeyo.jp</domain>
+ <domain>b.biglobe.ne.jp</domain>
+ <domain>b.memail.jp</domain>
+ <domain>bamboo.biglobe.ne.jp</domain>
+ <domain>bamboo.memail.jp</domain>
+ <domain>banana.biglobe.ne.jp</domain>
+ <domain>banana.memail.jp</domain>
+ <domain>bandai.eeyo.jp</domain>
+ <domain>baseball.biglobe.ne.jp</domain>
+ <domain>baseball.memail.jp</domain>
+ <domain>basil.biglobe.ne.jp</domain>
+ <domain>basil.memail.jp</domain>
+ <domain>basketball.biglobe.ne.jp</domain>
+ <domain>basketball.memail.jp</domain>
+ <domain>bass.biglobe.ne.jp</domain>
+ <domain>bass.memail.jp</domain>
+ <domain>bat.biglobe.ne.jp</domain>
+ <domain>bat.memail.jp</domain>
+ <domain>bazar.de.gozarre.jp</domain>
+ <domain>bcs.biglobe.ne.jp</domain>
+ <domain>bear.biglobe.ne.jp</domain>
+ <domain>bear.memail.jp</domain>
+ <domain>beat.biglobe.ne.jp</domain>
+ <domain>beat.memail.jp</domain>
+ <domain>beautiful.biglobe.ne.jp</domain>
+ <domain>beautiful.memail.jp</domain>
+ <domain>beer.biglobe.ne.jp</domain>
+ <domain>beer.memail.jp</domain>
+ <domain>believe.biglobe.ne.jp</domain>
+ <domain>believe.memail.jp</domain>
+ <domain>bell.biglobe.ne.jp</domain>
+ <domain>bell.memail.jp</domain>
+ <domain>beppu.eeyo.jp</domain>
+ <domain>bike.biglobe.ne.jp</domain>
+ <domain>bike.memail.jp</domain>
+ <domain>bingo.eeyo.jp</domain>
+ <domain>bird.biglobe.ne.jp</domain>
+ <domain>bird.memail.jp</domain>
+ <domain>bitchu.eeyo.jp</domain>
+ <domain>biwako.eeyo.jp</domain>
+ <domain>bizen.eeyo.jp</domain>
+ <domain>black.biglobe.ne.jp</domain>
+ <domain>black.memail.jp</domain>
+ <domain>blue.biglobe.ne.jp</domain>
+ <domain>blue.memail.jp</domain>
+ <domain>blues.biglobe.ne.jp</domain>
+ <domain>blues.memail.jp</domain>
+ <domain>bluesky.biglobe.ne.jp</domain>
+ <domain>bluesky.memail.jp</domain>
+ <domain>bma.biglobe.ne.jp</domain>
+ <domain>boar.biglobe.ne.jp</domain>
+ <domain>boar.memail.jp</domain>
+ <domain>bohemian.biglobe.ne.jp</domain>
+ <domain>bohemian.memail.jp</domain>
+ <domain>boso.eeyo.jp</domain>
+ <domain>bowwow.biglobe.ne.jp</domain>
+ <domain>bowwow.memail.jp</domain>
+ <domain>bqd.biglobe.ne.jp</domain>
+ <domain>bravo.biglobe.ne.jp</domain>
+ <domain>bravo.memail.jp</domain>
+ <domain>breeze.biglobe.ne.jp</domain>
+ <domain>breeze.memail.jp</domain>
+ <domain>bridge.biglobe.ne.jp</domain>
+ <domain>bridge.memail.jp</domain>
+ <domain>bro.biglobe.ne.jp</domain>
+ <domain>bro.memail.jp</domain>
+ <domain>bungo.eeyo.jp</domain>
+ <domain>butterfly.biglobe.ne.jp</domain>
+ <domain>butterfly.memail.jp</domain>
+ <domain>buzen.eeyo.jp</domain>
+ <domain>c.biglobe.ne.jp</domain>
+ <domain>c.memail.jp</domain>
+ <domain>cafe.biglobe.ne.jp</domain>
+ <domain>cafe.memail.jp</domain>
+ <domain>cake.biglobe.ne.jp</domain>
+ <domain>cake.memail.jp</domain>
+ <domain>cancer.biglobe.ne.jp</domain>
+ <domain>cancer.memail.jp</domain>
+ <domain>candy.biglobe.ne.jp</domain>
+ <domain>candy.memail.jp</domain>
+ <domain>capricorn.biglobe.ne.jp</domain>
+ <domain>capricorn.memail.jp</domain>
+ <domain>cat.biglobe.ne.jp</domain>
+ <domain>cat.memail.jp</domain>
+ <domain>catch.biglobe.ne.jp</domain>
+ <domain>catch.memail.jp</domain>
+ <domain>center.biglobe.ne.jp</domain>
+ <domain>center.memail.jp</domain>
+ <domain>chameleon.biglobe.ne.jp</domain>
+ <domain>chameleon.memail.jp</domain>
+ <domain>cheers.biglobe.ne.jp</domain>
+ <domain>cheers.memail.jp</domain>
+ <domain>cheetah.biglobe.ne.jp</domain>
+ <domain>cheetah.memail.jp</domain>
+ <domain>cherry.biglobe.ne.jp</domain>
+ <domain>cherry.memail.jp</domain>
+ <domain>chiba.eeyo.jp</domain>
+ <domain>chichibu.eeyo.jp</domain>
+ <domain>chikugo.eeyo.jp</domain>
+ <domain>chikuho.eeyo.jp</domain>
+ <domain>chikushi.eeyo.jp</domain>
+ <domain>chikuzen.eeyo.jp</domain>
+ <domain>chita.eeyo.jp</domain>
+ <domain>chocolate.biglobe.ne.jp</domain>
+ <domain>chocolate.memail.jp</domain>
+ <domain>chokaisan.eeyo.jp</domain>
+ <domain>chu.biglobe.ne.jp</domain>
+ <domain>chu.memail.jp</domain>
+ <domain>chubu.eeyo.jp</domain>
+ <domain>chugoku.eeyo.jp</domain>
+ <domain>ciao.biglobe.ne.jp</domain>
+ <domain>ciao.memail.jp</domain>
+ <domain>classical.biglobe.ne.jp</domain>
+ <domain>classical.memail.jp</domain>
+ <domain>clever.biglobe.ne.jp</domain>
+ <domain>clever.memail.jp</domain>
+ <domain>club.biglobe.ne.jp</domain>
+ <domain>club.memail.jp</domain>
+ <domain>cobra.biglobe.ne.jp</domain>
+ <domain>cobra.memail.jp</domain>
+ <domain>comet.biglobe.ne.jp</domain>
+ <domain>comet.memail.jp</domain>
+ <domain>condor.biglobe.ne.jp</domain>
+ <domain>condor.memail.jp</domain>
+ <domain>cool.biglobe.ne.jp</domain>
+ <domain>cool.memail.jp</domain>
+ <domain>coral.biglobe.ne.jp</domain>
+ <domain>coral.memail.jp</domain>
+ <domain>cow.biglobe.ne.jp</domain>
+ <domain>cow.memail.jp</domain>
+ <domain>crow.biglobe.ne.jp</domain>
+ <domain>crow.memail.jp</domain>
+ <domain>cute.biglobe.ne.jp</domain>
+ <domain>cute.memail.jp</domain>
+ <domain>d.biglobe.ne.jp</domain>
+ <domain>d.memail.jp</domain>
+ <domain>dad.biglobe.ne.jp</domain>
+ <domain>dad.memail.jp</domain>
+ <domain>daisen.eeyo.jp</domain>
+ <domain>daisuki.biglobe.ne.jp</domain>
+ <domain>daisuki.memail.jp</domain>
+ <domain>dance.biglobe.ne.jp</domain>
+ <domain>dance.memail.jp</domain>
+ <domain>darling.biglobe.ne.jp</domain>
+ <domain>darling.memail.jp</domain>
+ <domain>dazaifu.eeyo.jp</domain>
+ <domain>de.gozarre.jp</domain>
+ <domain>dear.biglobe.ne.jp</domain>
+ <domain>dear.memail.jp</domain>
+ <domain>denbe.biglobe.ne.jp</domain>
+ <domain>denbe.memail.jp</domain>
+ <domain>dewa.eeyo.jp</domain>
+ <domain>diamond.biglobe.ne.jp</domain>
+ <domain>diamond.memail.jp</domain>
+ <domain>dog.biglobe.ne.jp</domain>
+ <domain>dog.memail.jp</domain>
+ <domain>dogo.eeyo.jp</domain>
+ <domain>dokidoki.biglobe.ne.jp</domain>
+ <domain>dokidoki.memail.jp</domain>
+ <domain>doll.biglobe.ne.jp</domain>
+ <domain>doll.memail.jp</domain>
+ <domain>dolphin.biglobe.ne.jp</domain>
+ <domain>dolphin.memail.jp</domain>
+ <domain>dotonbori.eeyo.jp</domain>
+ <domain>dr.biglobe.ne.jp</domain>
+ <domain>dr.memail.jp</domain>
+ <domain>dragon.biglobe.ne.jp</domain>
+ <domain>dragon.memail.jp</domain>
+ <domain>dreamer.biglobe.ne.jp</domain>
+ <domain>dreamer.memail.jp</domain>
+ <domain>drum.biglobe.ne.jp</domain>
+ <domain>drum.memail.jp</domain>
+ <domain>duck.biglobe.ne.jp</domain>
+ <domain>duck.memail.jp</domain>
+ <domain>dunk.biglobe.ne.jp</domain>
+ <domain>dunk.memail.jp</domain>
+ <domain>e.biglobe.ne.jp</domain>
+ <domain>e.memail.jp</domain>
+ <domain>eagle.biglobe.ne.jp</domain>
+ <domain>eagle.memail.jp</domain>
+ <domain>earth.biglobe.ne.jp</domain>
+ <domain>earth.memail.jp</domain>
+ <domain>east.biglobe.ne.jp</domain>
+ <domain>east.memail.jp</domain>
+ <domain>echigo.eeyo.jp</domain>
+ <domain>echizen.eeyo.jp</domain>
+ <domain>edo.eeyo.jp</domain>
+ <domain>ehime.eeyo.jp</domain>
+ <domain>eight.biglobe.ne.jp</domain>
+ <domain>eight.memail.jp</domain>
+ <domain>elephant.biglobe.ne.jp</domain>
+ <domain>elephant.memail.jp</domain>
+ <domain>eleven.biglobe.ne.jp</domain>
+ <domain>eleven.memail.jp</domain>
+ <domain>emerald.biglobe.ne.jp</domain>
+ <domain>emerald.memail.jp</domain>
+ <domain>energy.biglobe.ne.jp</domain>
+ <domain>energy.memail.jp</domain>
+ <domain>enjoy.biglobe.ne.jp</domain>
+ <domain>enjoy.memail.jp</domain>
+ <domain>erimo.eeyo.jp</domain>
+ <domain>etchu.eeyo.jp</domain>
+ <domain>f.biglobe.ne.jp</domain>
+ <domain>f.memail.jp</domain>
+ <domain>fairy.biglobe.ne.jp</domain>
+ <domain>fairy.memail.jp</domain>
+ <domain>falcon.biglobe.ne.jp</domain>
+ <domain>falcon.memail.jp</domain>
+ <domain>fan.biglobe.ne.jp</domain>
+ <domain>fan.memail.jp</domain>
+ <domain>fantasy.biglobe.ne.jp</domain>
+ <domain>fantasy.memail.jp</domain>
+ <domain>fawn.biglobe.ne.jp</domain>
+ <domain>fawn.memail.jp</domain>
+ <domain>ferret.biglobe.ne.jp</domain>
+ <domain>ferret.memail.jp</domain>
+ <domain>fever.biglobe.ne.jp</domain>
+ <domain>fever.memail.jp</domain>
+ <domain>fight.biglobe.ne.jp</domain>
+ <domain>fight.memail.jp</domain>
+ <domain>fine.biglobe.ne.jp</domain>
+ <domain>fine.memail.jp</domain>
+ <domain>fire.biglobe.ne.jp</domain>
+ <domain>fire.memail.jp</domain>
+ <domain>first.biglobe.ne.jp</domain>
+ <domain>first.memail.jp</domain>
+ <domain>fish.biglobe.ne.jp</domain>
+ <domain>fish.memail.jp</domain>
+ <domain>fist.biglobe.ne.jp</domain>
+ <domain>fist.memail.jp</domain>
+ <domain>five.biglobe.ne.jp</domain>
+ <domain>five.memail.jp</domain>
+ <domain>folk.biglobe.ne.jp</domain>
+ <domain>folk.memail.jp</domain>
+ <domain>force.biglobe.ne.jp</domain>
+ <domain>force.memail.jp</domain>
+ <domain>forest.biglobe.ne.jp</domain>
+ <domain>forest.memail.jp</domain>
+ <domain>four.biglobe.ne.jp</domain>
+ <domain>four.memail.jp</domain>
+ <domain>fox.biglobe.ne.jp</domain>
+ <domain>fox.memail.jp</domain>
+ <domain>fresh.biglobe.ne.jp</domain>
+ <domain>fresh.memail.jp</domain>
+ <domain>fruit.biglobe.ne.jp</domain>
+ <domain>fruit.memail.jp</domain>
+ <domain>fuji.eeyo.jp</domain>
+ <domain>fukui.eeyo.jp</domain>
+ <domain>fukuoka.eeyo.jp</domain>
+ <domain>fukushima.eeyo.jp</domain>
+ <domain>fukuyama.eeyo.jp</domain>
+ <domain>funky.biglobe.ne.jp</domain>
+ <domain>funky.memail.jp</domain>
+ <domain>furano.eeyo.jp</domain>
+ <domain>future.biglobe.ne.jp</domain>
+ <domain>future.memail.jp</domain>
+ <domain>g.biglobe.ne.jp</domain>
+ <domain>g.memail.jp</domain>
+ <domain>gaia.biglobe.ne.jp</domain>
+ <domain>gaia.memail.jp</domain>
+ <domain>galaxy.biglobe.ne.jp</domain>
+ <domain>galaxy.memail.jp</domain>
+ <domain>gambler.biglobe.ne.jp</domain>
+ <domain>gambler.memail.jp</domain>
+ <domain>gamer.biglobe.ne.jp</domain>
+ <domain>gamer.memail.jp</domain>
+ <domain>garnet.biglobe.ne.jp</domain>
+ <domain>garnet.memail.jp</domain>
+ <domain>gassan.eeyo.jp</domain>
+ <domain>gem.biglobe.ne.jp</domain>
+ <domain>gem.memail.jp</domain>
+ <domain>gemini.biglobe.ne.jp</domain>
+ <domain>gemini.memail.jp</domain>
+ <domain>genius.biglobe.ne.jp</domain>
+ <domain>genius.memail.jp</domain>
+ <domain>genki.biglobe.ne.jp</domain>
+ <domain>genki.memail.jp</domain>
+ <domain>george.biglobe.ne.jp</domain>
+ <domain>gifu.eeyo.jp</domain>
+ <domain>ginga.biglobe.ne.jp</domain>
+ <domain>ginga.memail.jp</domain>
+ <domain>giraffe.biglobe.ne.jp</domain>
+ <domain>giraffe.memail.jp</domain>
+ <domain>glasses.biglobe.ne.jp</domain>
+ <domain>glasses.memail.jp</domain>
+ <domain>globe.biglobe.ne.jp</domain>
+ <domain>globe.memail.jp</domain>
+ <domain>gold.biglobe.ne.jp</domain>
+ <domain>gold.memail.jp</domain>
+ <domain>golden.biglobe.ne.jp</domain>
+ <domain>golden.memail.jp</domain>
+ <domain>golf.biglobe.ne.jp</domain>
+ <domain>golf.memail.jp</domain>
+ <domain>good.biglobe.ne.jp</domain>
+ <domain>good.memail.jp</domain>
+ <domain>grace.biglobe.ne.jp</domain>
+ <domain>grace.memail.jp</domain>
+ <domain>grandma.biglobe.ne.jp</domain>
+ <domain>grandma.memail.jp</domain>
+ <domain>grandpa.biglobe.ne.jp</domain>
+ <domain>grandpa.memail.jp</domain>
+ <domain>grazie.biglobe.ne.jp</domain>
+ <domain>grazie.memail.jp</domain>
+ <domain>great.biglobe.ne.jp</domain>
+ <domain>great.memail.jp</domain>
+ <domain>green.biglobe.ne.jp</domain>
+ <domain>green.memail.jp</domain>
+ <domain>groove.biglobe.ne.jp</domain>
+ <domain>groove.memail.jp</domain>
+ <domain>guitar.biglobe.ne.jp</domain>
+ <domain>guitar.memail.jp</domain>
+ <domain>gunma.eeyo.jp</domain>
+ <domain>guts.biglobe.ne.jp</domain>
+ <domain>guts.memail.jp</domain>
+ <domain>guy.biglobe.ne.jp</domain>
+ <domain>guy.memail.jp</domain>
+ <domain>h.biglobe.ne.jp</domain>
+ <domain>h.memail.jp</domain>
+ <domain>hachijo.eeyo.jp</domain>
+ <domain>hachinohe.eeyo.jp</domain>
+ <domain>hachioji.eeyo.jp</domain>
+ <domain>hagi.eeyo.jp</domain>
+ <domain>hakata.eeyo.jp</domain>
+ <domain>hakkoda.eeyo.jp</domain>
+ <domain>hakodate.eeyo.jp</domain>
+ <domain>hakone.eeyo.jp</domain>
+ <domain>hakuba.eeyo.jp</domain>
+ <domain>hakusan.eeyo.jp</domain>
+ <domain>hamamatsu.eeyo.jp</domain>
+ <domain>hamster.biglobe.ne.jp</domain>
+ <domain>hamster.memail.jp</domain>
+ <domain>hanabi.biglobe.ne.jp</domain>
+ <domain>hanabi.memail.jp</domain>
+ <domain>handsome.biglobe.ne.jp</domain>
+ <domain>handsome.memail.jp</domain>
+ <domain>happo.eeyo.jp</domain>
+ <domain>happy.biglobe.ne.jp</domain>
+ <domain>happy.memail.jp</domain>
+ <domain>harajuku.eeyo.jp</domain>
+ <domain>harima.eeyo.jp</domain>
+ <domain>harmony.biglobe.ne.jp</domain>
+ <domain>harmony.memail.jp</domain>
+ <domain>hawk.biglobe.ne.jp</domain>
+ <domain>hawk.memail.jp</domain>
+ <domain>heart.biglobe.ne.jp</domain>
+ <domain>heart.memail.jp</domain>
+ <domain>hello.biglobe.ne.jp</domain>
+ <domain>hello.memail.jp</domain>
+ <domain>hey.biglobe.ne.jp</domain>
+ <domain>hey.memail.jp</domain>
+ <domain>hi.biglobe.ne.jp</domain>
+ <domain>hi.memail.jp</domain>
+ <domain>hida.eeyo.jp</domain>
+ <domain>hidaka.eeyo.jp</domain>
+ <domain>hiei.eeyo.jp</domain>
+ <domain>higo.eeyo.jp</domain>
+ <domain>himeji.eeyo.jp</domain>
+ <domain>hiphop.biglobe.ne.jp</domain>
+ <domain>hiphop.memail.jp</domain>
+ <domain>hippo.biglobe.ne.jp</domain>
+ <domain>hippo.memail.jp</domain>
+ <domain>hirosaki.eeyo.jp</domain>
+ <domain>hiroshima.eeyo.jp</domain>
+ <domain>hit.biglobe.ne.jp</domain>
+ <domain>hit.memail.jp</domain>
+ <domain>hita.eeyo.jp</domain>
+ <domain>hitachi.eeyo.jp</domain>
+ <domain>hizen.eeyo.jp</domain>
+ <domain>hobby.biglobe.ne.jp</domain>
+ <domain>hobby.memail.jp</domain>
+ <domain>hockey.biglobe.ne.jp</domain>
+ <domain>hockey.memail.jp</domain>
+ <domain>hodaka.eeyo.jp</domain>
+ <domain>hokkaido.eeyo.jp</domain>
+ <domain>hokuriku.eeyo.jp</domain>
+ <domain>honey.biglobe.ne.jp</domain>
+ <domain>honey.memail.jp</domain>
+ <domain>hoop.biglobe.ne.jp</domain>
+ <domain>hoop.memail.jp</domain>
+ <domain>horse.biglobe.ne.jp</domain>
+ <domain>horse.memail.jp</domain>
+ <domain>hot.biglobe.ne.jp</domain>
+ <domain>hot.memail.jp</domain>
+ <domain>houki.eeyo.jp</domain>
+ <domain>hyoryugai.biglobe.ne.jp</domain>
+ <domain>hyuga.eeyo.jp</domain>
+ <domain>i.biglobe.ne.jp</domain>
+ <domain>i.memail.jp</domain>
+ <domain>ibusuki.eeyo.jp</domain>
+ <domain>ice.biglobe.ne.jp</domain>
+ <domain>ice.memail.jp</domain>
+ <domain>ichigo.biglobe.ne.jp</domain>
+ <domain>ichigo.memail.jp</domain>
+ <domain>ichihara.eeyo.jp</domain>
+ <domain>iga.eeyo.jp</domain>
+ <domain>ikaho.eeyo.jp</domain>
+ <domain>ikaruga.eeyo.jp</domain>
+ <domain>ikebukuro.eeyo.jp</domain>
+ <domain>iki.eeyo.jp</domain>
+ <domain>imari.eeyo.jp</domain>
+ <domain>inaba.eeyo.jp</domain>
+ <domain>iriomote.eeyo.jp</domain>
+ <domain>iron.biglobe.ne.jp</domain>
+ <domain>iron.memail.jp</domain>
+ <domain>ise.eeyo.jp</domain>
+ <domain>ishigaki.eeyo.jp</domain>
+ <domain>ishikari.eeyo.jp</domain>
+ <domain>ishikawa.eeyo.jp</domain>
+ <domain>ishizuchi.eeyo.jp</domain>
+ <domain>ivory.biglobe.ne.jp</domain>
+ <domain>ivory.memail.jp</domain>
+ <domain>ivy.biglobe.ne.jp</domain>
+ <domain>ivy.memail.jp</domain>
+ <domain>iwaki.eeyo.jp</domain>
+ <domain>iwami.eeyo.jp</domain>
+ <domain>iwashiro.eeyo.jp</domain>
+ <domain>iwata.eeyo.jp</domain>
+ <domain>iwate.eeyo.jp</domain>
+ <domain>iyo.eeyo.jp</domain>
+ <domain>izu.eeyo.jp</domain>
+ <domain>izuhara.eeyo.jp</domain>
+ <domain>izumi.eeyo.jp</domain>
+ <domain>izumo.eeyo.jp</domain>
+ <domain>j.biglobe.ne.jp</domain>
+ <domain>j.memail.jp</domain>
+ <domain>jambo.biglobe.ne.jp</domain>
+ <domain>jambo.memail.jp</domain>
+ <domain>jazz.biglobe.ne.jp</domain>
+ <domain>jazz.memail.jp</domain>
+ <domain>jewel.biglobe.ne.jp</domain>
+ <domain>jewel.memail.jp</domain>
+ <domain>joetsu.eeyo.jp</domain>
+ <domain>joke.biglobe.ne.jp</domain>
+ <domain>joke.memail.jp</domain>
+ <domain>joy.biglobe.ne.jp</domain>
+ <domain>joy.memail.jp</domain>
+ <domain>jr.biglobe.ne.jp</domain>
+ <domain>jr.memail.jp</domain>
+ <domain>jumbo.biglobe.ne.jp</domain>
+ <domain>jumbo.memail.jp</domain>
+ <domain>jump.biglobe.ne.jp</domain>
+ <domain>jump.memail.jp</domain>
+ <domain>jungle.biglobe.ne.jp</domain>
+ <domain>jungle.memail.jp</domain>
+ <domain>jupiter.biglobe.ne.jp</domain>
+ <domain>jupiter.memail.jp</domain>
+ <domain>k.biglobe.ne.jp</domain>
+ <domain>k.memail.jp</domain>
+ <domain>kaga.eeyo.jp</domain>
+ <domain>kagawa.eeyo.jp</domain>
+ <domain>kagoshima.eeyo.jp</domain>
+ <domain>kai.eeyo.jp</domain>
+ <domain>kamakura.eeyo.jp</domain>
+ <domain>kamikochi.eeyo.jp</domain>
+ <domain>kanazawa.eeyo.jp</domain>
+ <domain>kanto.eeyo.jp</domain>
+ <domain>karatsu.eeyo.jp</domain>
+ <domain>karuizawa.eeyo.jp</domain>
+ <domain>kashima.eeyo.jp</domain>
+ <domain>kashiwa.eeyo.jp</domain>
+ <domain>kasukabe.eeyo.jp</domain>
+ <domain>katsuyama.eeyo.jp</domain>
+ <domain>kawachi.eeyo.jp</domain>
+ <domain>kawasaki.eeyo.jp</domain>
+ <domain>kazusa.eeyo.jp</domain>
+ <domain>kba.biglobe.ne.jp</domain>
+ <domain>kbd.biglobe.ne.jp</domain>
+ <domain>kbe.biglobe.ne.jp</domain>
+ <domain>kbf.biglobe.ne.jp</domain>
+ <domain>kbh.biglobe.ne.jp</domain>
+ <domain>kca.biglobe.ne.jp</domain>
+ <domain>kcd.biglobe.ne.jp</domain>
+ <domain>kce.biglobe.ne.jp</domain>
+ <domain>kcf.biglobe.ne.jp</domain>
+ <domain>kch.biglobe.ne.jp</domain>
+ <domain>kde.biglobe.ne.jp</domain>
+ <domain>kdn.biglobe.ne.jp</domain>
+ <domain>kdp.biglobe.ne.jp</domain>
+ <domain>kdr.biglobe.ne.jp</domain>
+ <domain>kdt.biglobe.ne.jp</domain>
+ <domain>keb.biglobe.ne.jp</domain>
+ <domain>ked.biglobe.ne.jp</domain>
+ <domain>keh.biglobe.ne.jp</domain>
+ <domain>kej.biglobe.ne.jp</domain>
+ <domain>kem.biglobe.ne.jp</domain>
+ <domain>kfa.biglobe.ne.jp</domain>
+ <domain>kfd.biglobe.ne.jp</domain>
+ <domain>kfx.biglobe.ne.jp</domain>
+ <domain>kfy.biglobe.ne.jp</domain>
+ <domain>kfz.biglobe.ne.jp</domain>
+ <domain>kha.biglobe.ne.jp</domain>
+ <domain>khc.biglobe.ne.jp</domain>
+ <domain>khe.biglobe.ne.jp</domain>
+ <domain>khf.biglobe.ne.jp</domain>
+ <domain>khh.biglobe.ne.jp</domain>
+ <domain>kib.biglobe.ne.jp</domain>
+ <domain>kichijoji.eeyo.jp</domain>
+ <domain>kif.biglobe.ne.jp</domain>
+ <domain>kih.biglobe.ne.jp</domain>
+ <domain>kii.eeyo.jp</domain>
+ <domain>king.biglobe.ne.jp</domain>
+ <domain>king.memail.jp</domain>
+ <domain>kinki.eeyo.jp</domain>
+ <domain>kinugawa.eeyo.jp</domain>
+ <domain>kir.biglobe.ne.jp</domain>
+ <domain>kirigamine.eeyo.jp</domain>
+ <domain>kirishima.eeyo.jp</domain>
+ <domain>kiso.eeyo.jp</domain>
+ <domain>kiss.biglobe.ne.jp</domain>
+ <domain>kiss.memail.jp</domain>
+ <domain>kitakata.eeyo.jp</domain>
+ <domain>kitakyushu.eeyo.jp</domain>
+ <domain>kitami.eeyo.jp</domain>
+ <domain>kiu.biglobe.ne.jp</domain>
+ <domain>kiyosato.eeyo.jp</domain>
+ <domain>kjb.biglobe.ne.jp</domain>
+ <domain>kjc.biglobe.ne.jp</domain>
+ <domain>kjd.biglobe.ne.jp</domain>
+ <domain>kje.biglobe.ne.jp</domain>
+ <domain>kjf.biglobe.ne.jp</domain>
+ <domain>kkd.biglobe.ne.jp</domain>
+ <domain>kke.biglobe.ne.jp</domain>
+ <domain>kkf.biglobe.ne.jp</domain>
+ <domain>kkh.biglobe.ne.jp</domain>
+ <domain>kki.biglobe.ne.jp</domain>
+ <domain>kmd.biglobe.ne.jp</domain>
+ <domain>kme.biglobe.ne.jp</domain>
+ <domain>kmf.biglobe.ne.jp</domain>
+ <domain>kmh.biglobe.ne.jp</domain>
+ <domain>kmj.biglobe.ne.jp</domain>
+ <domain>kna.biglobe.ne.jp</domain>
+ <domain>knd.biglobe.ne.jp</domain>
+ <domain>kne.biglobe.ne.jp</domain>
+ <domain>knh.biglobe.ne.jp</domain>
+ <domain>kni.biglobe.ne.jp</domain>
+ <domain>knight.biglobe.ne.jp</domain>
+ <domain>knight.memail.jp</domain>
+ <domain>koala.biglobe.ne.jp</domain>
+ <domain>koala.memail.jp</domain>
+ <domain>kobe.eeyo.jp</domain>
+ <domain>kochi.eeyo.jp</domain>
+ <domain>kofu.eeyo.jp</domain>
+ <domain>koga.eeyo.jp</domain>
+ <domain>koiwai.eeyo.jp</domain>
+ <domain>konpira.eeyo.jp</domain>
+ <domain>kotohira.eeyo.jp</domain>
+ <domain>kozuke.eeyo.jp</domain>
+ <domain>kpa.biglobe.ne.jp</domain>
+ <domain>kpb.biglobe.ne.jp</domain>
+ <domain>kpd.biglobe.ne.jp</domain>
+ <domain>kpe.biglobe.ne.jp</domain>
+ <domain>kph.biglobe.ne.jp</domain>
+ <domain>kra.biglobe.ne.jp</domain>
+ <domain>krb.biglobe.ne.jp</domain>
+ <domain>krc.biglobe.ne.jp</domain>
+ <domain>krd.biglobe.ne.jp</domain>
+ <domain>krf.biglobe.ne.jp</domain>
+ <domain>ksf.biglobe.ne.jp</domain>
+ <domain>ksh.biglobe.ne.jp</domain>
+ <domain>ksj.biglobe.ne.jp</domain>
+ <domain>ksn.biglobe.ne.jp</domain>
+ <domain>kss.biglobe.ne.jp</domain>
+ <domain>kta.biglobe.ne.jp</domain>
+ <domain>ktb.biglobe.ne.jp</domain>
+ <domain>ktd.biglobe.ne.jp</domain>
+ <domain>ktf.biglobe.ne.jp</domain>
+ <domain>ktj.biglobe.ne.jp</domain>
+ <domain>kub.biglobe.ne.jp</domain>
+ <domain>kuc.biglobe.ne.jp</domain>
+ <domain>kud.biglobe.ne.jp</domain>
+ <domain>kuf.biglobe.ne.jp</domain>
+ <domain>kuh.biglobe.ne.jp</domain>
+ <domain>kuju.eeyo.jp</domain>
+ <domain>kumagaya.eeyo.jp</domain>
+ <domain>kumamoto.eeyo.jp</domain>
+ <domain>kumano.eeyo.jp</domain>
+ <domain>kunisaki.eeyo.jp</domain>
+ <domain>kurama.eeyo.jp</domain>
+ <domain>kurashiki.eeyo.jp</domain>
+ <domain>kurobe.eeyo.jp</domain>
+ <domain>kurume.eeyo.jp</domain>
+ <domain>kusatsu.eeyo.jp</domain>
+ <domain>kushiro.eeyo.jp</domain>
+ <domain>kvd.biglobe.ne.jp</domain>
+ <domain>kve.biglobe.ne.jp</domain>
+ <domain>kvf.biglobe.ne.jp</domain>
+ <domain>kvj.biglobe.ne.jp</domain>
+ <domain>kvp.biglobe.ne.jp</domain>
+ <domain>kxa.biglobe.ne.jp</domain>
+ <domain>kxb.biglobe.ne.jp</domain>
+ <domain>kxd.biglobe.ne.jp</domain>
+ <domain>kxe.biglobe.ne.jp</domain>
+ <domain>kxf.biglobe.ne.jp</domain>
+ <domain>kyf.biglobe.ne.jp</domain>
+ <domain>kyi.biglobe.ne.jp</domain>
+ <domain>kyj.biglobe.ne.jp</domain>
+ <domain>kym.biglobe.ne.jp</domain>
+ <domain>kyoto.eeyo.jp</domain>
+ <domain>kyp.biglobe.ne.jp</domain>
+ <domain>kyushu.eeyo.jp</domain>
+ <domain>kza.biglobe.ne.jp</domain>
+ <domain>kzc.biglobe.ne.jp</domain>
+ <domain>kzd.biglobe.ne.jp</domain>
+ <domain>kzf.biglobe.ne.jp</domain>
+ <domain>kzh.biglobe.ne.jp</domain>
+ <domain>l.biglobe.ne.jp</domain>
+ <domain>l.memail.jp</domain>
+ <domain>lady.biglobe.ne.jp</domain>
+ <domain>lady.memail.jp</domain>
+ <domain>lake.biglobe.ne.jp</domain>
+ <domain>lake.memail.jp</domain>
+ <domain>latin.biglobe.ne.jp</domain>
+ <domain>latin.memail.jp</domain>
+ <domain>lavender.biglobe.ne.jp</domain>
+ <domain>lavender.memail.jp</domain>
+ <domain>lavie.biglobe.ne.jp</domain>
+ <domain>lavie.memail.jp</domain>
+ <domain>leaf.biglobe.ne.jp</domain>
+ <domain>leaf.memail.jp</domain>
+ <domain>left.biglobe.ne.jp</domain>
+ <domain>left.memail.jp</domain>
+ <domain>lefty.biglobe.ne.jp</domain>
+ <domain>lefty.memail.jp</domain>
+ <domain>lemon.biglobe.ne.jp</domain>
+ <domain>lemon.memail.jp</domain>
+ <domain>leo.biglobe.ne.jp</domain>
+ <domain>leo.memail.jp</domain>
+ <domain>libra.biglobe.ne.jp</domain>
+ <domain>libra.memail.jp</domain>
+ <domain>lily.biglobe.ne.jp</domain>
+ <domain>lily.memail.jp</domain>
+ <domain>lime.biglobe.ne.jp</domain>
+ <domain>lime.memail.jp</domain>
+ <domain>lion.biglobe.ne.jp</domain>
+ <domain>lion.memail.jp</domain>
+ <domain>lonely.biglobe.ne.jp</domain>
+ <domain>lonely.memail.jp</domain>
+ <domain>long.biglobe.ne.jp</domain>
+ <domain>long.memail.jp</domain>
+ <domain>love.biglobe.ne.jp</domain>
+ <domain>love.memail.jp</domain>
+ <domain>lovelove.biglobe.ne.jp</domain>
+ <domain>lovelove.memail.jp</domain>
+ <domain>lovely.biglobe.ne.jp</domain>
+ <domain>lovely.memail.jp</domain>
+ <domain>lucky.biglobe.ne.jp</domain>
+ <domain>lucky.memail.jp</domain>
+ <domain>luna.biglobe.ne.jp</domain>
+ <domain>luna.memail.jp</domain>
+ <domain>m.biglobe.ne.jp</domain>
+ <domain>m.memail.jp</domain>
+ <domain>macho.biglobe.ne.jp</domain>
+ <domain>macho.memail.jp</domain>
+ <domain>magic.biglobe.ne.jp</domain>
+ <domain>magic.memail.jp</domain>
+ <domain>mama.biglobe.ne.jp</domain>
+ <domain>mama.memail.jp</domain>
+ <domain>mambo.biglobe.ne.jp</domain>
+ <domain>mambo.memail.jp</domain>
+ <domain>marine.biglobe.ne.jp</domain>
+ <domain>marine.memail.jp</domain>
+ <domain>maroon.biglobe.ne.jp</domain>
+ <domain>maroon.memail.jp</domain>
+ <domain>mars.biglobe.ne.jp</domain>
+ <domain>mars.memail.jp</domain>
+ <domain>matsue.eeyo.jp</domain>
+ <domain>matsumoto.eeyo.jp</domain>
+ <domain>matsusaka.eeyo.jp</domain>
+ <domain>matsushima.eeyo.jp</domain>
+ <domain>melody.biglobe.ne.jp</domain>
+ <domain>melody.memail.jp</domain>
+ <domain>melon.biglobe.ne.jp</domain>
+ <domain>melon.memail.jp</domain>
+ <domain>memoad.jp</domain>
+ <domain>meow.biglobe.ne.jp</domain>
+ <domain>meow.memail.jp</domain>
+ <domain>mercury.biglobe.ne.jp</domain>
+ <domain>mercury.memail.jp</domain>
+ <domain>mermaid.biglobe.ne.jp</domain>
+ <domain>mermaid.memail.jp</domain>
+ <domain>mie.eeyo.jp</domain>
+ <domain>mikawa.eeyo.jp</domain>
+ <domain>milk.biglobe.ne.jp</domain>
+ <domain>milk.memail.jp</domain>
+ <domain>mimasaka.eeyo.jp</domain>
+ <domain>minakami.eeyo.jp</domain>
+ <domain>mino.eeyo.jp</domain>
+ <domain>mint.biglobe.ne.jp</domain>
+ <domain>mint.memail.jp</domain>
+ <domain>miracle.biglobe.ne.jp</domain>
+ <domain>miracle.memail.jp</domain>
+ <domain>mito.eeyo.jp</domain>
+ <domain>miura.eeyo.jp</domain>
+ <domain>miyagi.eeyo.jp</domain>
+ <domain>miyajima.eeyo.jp</domain>
+ <domain>miyako.eeyo.jp</domain>
+ <domain>miyazaki.eeyo.jp</domain>
+ <domain>mocha.biglobe.ne.jp</domain>
+ <domain>mocha.memail.jp</domain>
+ <domain>mogami.eeyo.jp</domain>
+ <domain>momo.biglobe.ne.jp</domain>
+ <domain>momo.memail.jp</domain>
+ <domain>monkey.biglobe.ne.jp</domain>
+ <domain>monkey.memail.jp</domain>
+ <domain>moon.biglobe.ne.jp</domain>
+ <domain>moon.memail.jp</domain>
+ <domain>moonstone.biglobe.ne.jp</domain>
+ <domain>moonstone.memail.jp</domain>
+ <domain>motor.biglobe.ne.jp</domain>
+ <domain>motor.memail.jp</domain>
+ <domain>motto.biglobe.ne.jp</domain>
+ <domain>motto.memail.jp</domain>
+ <domain>mount.biglobe.ne.jp</domain>
+ <domain>mount.memail.jp</domain>
+ <domain>mouse.biglobe.ne.jp</domain>
+ <domain>mouse.memail.jp</domain>
+ <domain>mpd.biglobe.ne.jp</domain>
+ <domain>mqb.biglobe.ne.jp</domain>
+ <domain>mqc.biglobe.ne.jp</domain>
+ <domain>mqd.biglobe.ne.jp</domain>
+ <domain>mqe.biglobe.ne.jp</domain>
+ <domain>mqf.biglobe.ne.jp</domain>
+ <domain>mqg.biglobe.ne.jp</domain>
+ <domain>mqh.biglobe.ne.jp</domain>
+ <domain>mqi.biglobe.ne.jp</domain>
+ <domain>mqj.biglobe.ne.jp</domain>
+ <domain>mra.biglobe.ne.jp</domain>
+ <domain>mrb.biglobe.ne.jp</domain>
+ <domain>mrc.biglobe.ne.jp</domain>
+ <domain>mrd.biglobe.ne.jp</domain>
+ <domain>mre.biglobe.ne.jp</domain>
+ <domain>mrf.biglobe.ne.jp</domain>
+ <domain>mrg.biglobe.ne.jp</domain>
+ <domain>mrh.biglobe.ne.jp</domain>
+ <domain>mri.biglobe.ne.jp</domain>
+ <domain>mrj.biglobe.ne.jp</domain>
+ <domain>msa.biglobe.ne.jp</domain>
+ <domain>msb.biglobe.ne.jp</domain>
+ <domain>msc.biglobe.ne.jp</domain>
+ <domain>msd.biglobe.ne.jp</domain>
+ <domain>mse.biglobe.ne.jp</domain>
+ <domain>msf.biglobe.ne.jp</domain>
+ <domain>msg.biglobe.ne.jp</domain>
+ <domain>msh.biglobe.ne.jp</domain>
+ <domain>msi.biglobe.ne.jp</domain>
+ <domain>msj.biglobe.ne.jp</domain>
+ <domain>mta.biglobe.ne.jp</domain>
+ <domain>mtb.biglobe.ne.jp</domain>
+ <domain>mtc.biglobe.ne.jp</domain>
+ <domain>mtd.biglobe.ne.jp</domain>
+ <domain>mte.biglobe.ne.jp</domain>
+ <domain>mtf.biglobe.ne.jp</domain>
+ <domain>mtg.biglobe.ne.jp</domain>
+ <domain>mth.biglobe.ne.jp</domain>
+ <domain>mti.biglobe.ne.jp</domain>
+ <domain>mtj.biglobe.ne.jp</domain>
+ <domain>mua.biglobe.ne.jp</domain>
+ <domain>mub.biglobe.ne.jp</domain>
+ <domain>muc.biglobe.ne.jp</domain>
+ <domain>mud.biglobe.ne.jp</domain>
+ <domain>mue.biglobe.ne.jp</domain>
+ <domain>muf.biglobe.ne.jp</domain>
+ <domain>mug.biglobe.ne.jp</domain>
+ <domain>muh.biglobe.ne.jp</domain>
+ <domain>mui.biglobe.ne.jp</domain>
+ <domain>muj.biglobe.ne.jp</domain>
+ <domain>muroran.eeyo.jp</domain>
+ <domain>muroto.eeyo.jp</domain>
+ <domain>musashi.eeyo.jp</domain>
+ <domain>muscle.biglobe.ne.jp</domain>
+ <domain>muscle.memail.jp</domain>
+ <domain>mutsu.eeyo.jp</domain>
+ <domain>mva.biglobe.ne.jp</domain>
+ <domain>mvb.biglobe.ne.jp</domain>
+ <domain>mvc.biglobe.ne.jp</domain>
+ <domain>mvd.biglobe.ne.jp</domain>
+ <domain>mve.biglobe.ne.jp</domain>
+ <domain>mvf.biglobe.ne.jp</domain>
+ <domain>mvg.biglobe.ne.jp</domain>
+ <domain>mvh.biglobe.ne.jp</domain>
+ <domain>mvi.biglobe.ne.jp</domain>
+ <domain>mvj.biglobe.ne.jp</domain>
+ <domain>mwa.biglobe.ne.jp</domain>
+ <domain>mwb.biglobe.ne.jp</domain>
+ <domain>mwc.biglobe.ne.jp</domain>
+ <domain>mwd.biglobe.ne.jp</domain>
+ <domain>mwe.biglobe.ne.jp</domain>
+ <domain>myad.jp</domain>
+ <domain>myoko.eeyo.jp</domain>
+ <domain>n.biglobe.ne.jp</domain>
+ <domain>n.memail.jp</domain>
+ <domain>nada.eeyo.jp</domain>
+ <domain>naeba.eeyo.jp</domain>
+ <domain>nagano.eeyo.jp</domain>
+ <domain>nagaoka.eeyo.jp</domain>
+ <domain>nagara.eeyo.jp</domain>
+ <domain>nagasaki.eeyo.jp</domain>
+ <domain>nagato.eeyo.jp</domain>
+ <domain>nagoya.eeyo.jp</domain>
+ <domain>naniwa.eeyo.jp</domain>
+ <domain>nara.eeyo.jp</domain>
+ <domain>narashino.eeyo.jp</domain>
+ <domain>naruto.eeyo.jp</domain>
+ <domain>nasu.eeyo.jp</domain>
+ <domain>neko.biglobe.ne.jp</domain>
+ <domain>neko.memail.jp</domain>
+ <domain>nemuro.eeyo.jp</domain>
+ <domain>neptune.biglobe.ne.jp</domain>
+ <domain>neptune.memail.jp</domain>
+ <domain>nerima.eeyo.jp</domain>
+ <domain>nice.biglobe.ne.jp</domain>
+ <domain>nice.memail.jp</domain>
+ <domain>nigata.eeyo.jp</domain>
+ <domain>nikko.eeyo.jp</domain>
+ <domain>nine.biglobe.ne.jp</domain>
+ <domain>nine.memail.jp</domain>
+ <domain>no1.biglobe.ne.jp</domain>
+ <domain>no1.memail.jp</domain>
+ <domain>noboribetsu.eeyo.jp</domain>
+ <domain>noda.eeyo.jp</domain>
+ <domain>noodle.biglobe.ne.jp</domain>
+ <domain>noodle.memail.jp</domain>
+ <domain>north.biglobe.ne.jp</domain>
+ <domain>north.memail.jp</domain>
+ <domain>note.biglobe.ne.jp</domain>
+ <domain>note.memail.jp</domain>
+ <domain>noto.eeyo.jp</domain>
+ <domain>nozawa.eeyo.jp</domain>
+ <domain>numazu.eeyo.jp</domain>
+ <domain>o.biglobe.ne.jp</domain>
+ <domain>o.memail.jp</domain>
+ <domain>obihiro.eeyo.jp</domain>
+ <domain>octopus.biglobe.ne.jp</domain>
+ <domain>octopus.memail.jp</domain>
+ <domain>oga.eeyo.jp</domain>
+ <domain>ogasawara.eeyo.jp</domain>
+ <domain>ohara.eeyo.jp</domain>
+ <domain>ohu.eeyo.jp</domain>
+ <domain>oita.eeyo.jp</domain>
+ <domain>ok.biglobe.ne.jp</domain>
+ <domain>ok.memail.jp</domain>
+ <domain>okayama.eeyo.jp</domain>
+ <domain>oki.eeyo.jp</domain>
+ <domain>okinawa.eeyo.jp</domain>
+ <domain>ole.biglobe.ne.jp</domain>
+ <domain>ole.memail.jp</domain>
+ <domain>omi.eeyo.jp</domain>
+ <domain>omiya.eeyo.jp</domain>
+ <domain>one.biglobe.ne.jp</domain>
+ <domain>one.memail.jp</domain>
+ <domain>onomichi.eeyo.jp</domain>
+ <domain>opal.biglobe.ne.jp</domain>
+ <domain>opal.memail.jp</domain>
+ <domain>opera.biglobe.ne.jp</domain>
+ <domain>opera.memail.jp</domain>
+ <domain>orange.biglobe.ne.jp</domain>
+ <domain>orange.memail.jp</domain>
+ <domain>osaka.eeyo.jp</domain>
+ <domain>osumi.eeyo.jp</domain>
+ <domain>otaru.eeyo.jp</domain>
+ <domain>owari.eeyo.jp</domain>
+ <domain>owl.biglobe.ne.jp</domain>
+ <domain>owl.memail.jp</domain>
+ <domain>oyaji.biglobe.ne.jp</domain>
+ <domain>oyaji.memail.jp</domain>
+ <domain>oze.eeyo.jp</domain>
+ <domain>p.biglobe.ne.jp</domain>
+ <domain>p.memail.jp</domain>
+ <domain>pan.biglobe.ne.jp</domain>
+ <domain>pan.memail.jp</domain>
+ <domain>panda.biglobe.ne.jp</domain>
+ <domain>panda.memail.jp</domain>
+ <domain>pansy.biglobe.ne.jp</domain>
+ <domain>pansy.memail.jp</domain>
+ <domain>panther.biglobe.ne.jp</domain>
+ <domain>panther.memail.jp</domain>
+ <domain>papa.biglobe.ne.jp</domain>
+ <domain>papa.memail.jp</domain>
+ <domain>parapara.biglobe.ne.jp</domain>
+ <domain>parapara.memail.jp</domain>
+ <domain>passion.biglobe.ne.jp</domain>
+ <domain>passion.memail.jp</domain>
+ <domain>peace.biglobe.ne.jp</domain>
+ <domain>peace.memail.jp</domain>
+ <domain>peach.biglobe.ne.jp</domain>
+ <domain>peach.memail.jp</domain>
+ <domain>pearl.biglobe.ne.jp</domain>
+ <domain>pearl.memail.jp</domain>
+ <domain>pegasus.biglobe.ne.jp</domain>
+ <domain>pegasus.memail.jp</domain>
+ <domain>penguin.biglobe.ne.jp</domain>
+ <domain>penguin.memail.jp</domain>
+ <domain>peridot.biglobe.ne.jp</domain>
+ <domain>peridot.memail.jp</domain>
+ <domain>piano.biglobe.ne.jp</domain>
+ <domain>piano.memail.jp</domain>
+ <domain>pig.biglobe.ne.jp</domain>
+ <domain>pig.memail.jp</domain>
+ <domain>pine.biglobe.ne.jp</domain>
+ <domain>pine.memail.jp</domain>
+ <domain>pink.biglobe.ne.jp</domain>
+ <domain>pink.memail.jp</domain>
+ <domain>pisces.biglobe.ne.jp</domain>
+ <domain>pisces.memail.jp</domain>
+ <domain>piyo.biglobe.ne.jp</domain>
+ <domain>piyo.memail.jp</domain>
+ <domain>plum.biglobe.ne.jp</domain>
+ <domain>plum.memail.jp</domain>
+ <domain>pony.biglobe.ne.jp</domain>
+ <domain>pony.memail.jp</domain>
+ <domain>pops.biglobe.ne.jp</domain>
+ <domain>pops.memail.jp</domain>
+ <domain>potato.biglobe.ne.jp</domain>
+ <domain>potato.memail.jp</domain>
+ <domain>power.biglobe.ne.jp</domain>
+ <domain>power.memail.jp</domain>
+ <domain>pretty.biglobe.ne.jp</domain>
+ <domain>pretty.memail.jp</domain>
+ <domain>pride.biglobe.ne.jp</domain>
+ <domain>pride.memail.jp</domain>
+ <domain>private.biglobe.ne.jp</domain>
+ <domain>private.memail.jp</domain>
+ <domain>punk.biglobe.ne.jp</domain>
+ <domain>punk.memail.jp</domain>
+ <domain>puppy.biglobe.ne.jp</domain>
+ <domain>puppy.memail.jp</domain>
+ <domain>pure.biglobe.ne.jp</domain>
+ <domain>pure.memail.jp</domain>
+ <domain>purin.biglobe.ne.jp</domain>
+ <domain>purin.memail.jp</domain>
+ <domain>puripuri.biglobe.ne.jp</domain>
+ <domain>puripuri.memail.jp</domain>
+ <domain>q.biglobe.ne.jp</domain>
+ <domain>q.memail.jp</domain>
+ <domain>queen.biglobe.ne.jp</domain>
+ <domain>queen.memail.jp</domain>
+ <domain>r.biglobe.ne.jp</domain>
+ <domain>r.memail.jp</domain>
+ <domain>rabbit.biglobe.ne.jp</domain>
+ <domain>rabbit.memail.jp</domain>
+ <domain>raccoondog.biglobe.ne.jp</domain>
+ <domain>raccoondog.memail.jp</domain>
+ <domain>racer.biglobe.ne.jp</domain>
+ <domain>racer.memail.jp</domain>
+ <domain>rain.biglobe.ne.jp</domain>
+ <domain>rain.memail.jp</domain>
+ <domain>rainbow.biglobe.ne.jp</domain>
+ <domain>rainbow.memail.jp</domain>
+ <domain>rap.biglobe.ne.jp</domain>
+ <domain>rap.memail.jp</domain>
+ <domain>red.biglobe.ne.jp</domain>
+ <domain>red.memail.jp</domain>
+ <domain>rhythm.biglobe.ne.jp</domain>
+ <domain>rhythm.memail.jp</domain>
+ <domain>rice.biglobe.ne.jp</domain>
+ <domain>rice.memail.jp</domain>
+ <domain>rider.biglobe.ne.jp</domain>
+ <domain>rider.memail.jp</domain>
+ <domain>right.biglobe.ne.jp</domain>
+ <domain>right.memail.jp</domain>
+ <domain>rikuchu.eeyo.jp</domain>
+ <domain>rikuzen.eeyo.jp</domain>
+ <domain>river.biglobe.ne.jp</domain>
+ <domain>river.memail.jp</domain>
+ <domain>robin.biglobe.ne.jp</domain>
+ <domain>robin.memail.jp</domain>
+ <domain>rock.biglobe.ne.jp</domain>
+ <domain>rock.memail.jp</domain>
+ <domain>rokko.eeyo.jp</domain>
+ <domain>rookie.biglobe.ne.jp</domain>
+ <domain>rookie.memail.jp</domain>
+ <domain>rose.biglobe.ne.jp</domain>
+ <domain>rose.memail.jp</domain>
+ <domain>ruby.biglobe.ne.jp</domain>
+ <domain>ruby.memail.jp</domain>
+ <domain>runrun.biglobe.ne.jp</domain>
+ <domain>runrun.memail.jp</domain>
+ <domain>ryukyu.eeyo.jp</domain>
+ <domain>s.biglobe.ne.jp</domain>
+ <domain>s.memail.jp</domain>
+ <domain>sado.eeyo.jp</domain>
+ <domain>safari.biglobe.ne.jp</domain>
+ <domain>safari.memail.jp</domain>
+ <domain>saga.eeyo.jp</domain>
+ <domain>sagami.eeyo.jp</domain>
+ <domain>sagittarius.biglobe.ne.jp</domain>
+ <domain>sagittarius.memail.jp</domain>
+ <domain>saitama.eeyo.jp</domain>
+ <domain>sakai.eeyo.jp</domain>
+ <domain>sakura.biglobe.ne.jp</domain>
+ <domain>sakura.memail.jp</domain>
+ <domain>salt.biglobe.ne.jp</domain>
+ <domain>salt.memail.jp</domain>
+ <domain>samba.biglobe.ne.jp</domain>
+ <domain>samba.memail.jp</domain>
+ <domain>sanin.eeyo.jp</domain>
+ <domain>sanriku.eeyo.jp</domain>
+ <domain>sanuki.eeyo.jp</domain>
+ <domain>sanyo.eeyo.jp</domain>
+ <domain>sapphire.biglobe.ne.jp</domain>
+ <domain>sapphire.memail.jp</domain>
+ <domain>sapporo.eeyo.jp</domain>
+ <domain>sasebo.eeyo.jp</domain>
+ <domain>sata.eeyo.jp</domain>
+ <domain>satsuma.eeyo.jp</domain>
+ <domain>saturn.biglobe.ne.jp</domain>
+ <domain>saturn.memail.jp</domain>
+ <domain>scorpio.biglobe.ne.jp</domain>
+ <domain>scorpio.memail.jp</domain>
+ <domain>sea.biglobe.ne.jp</domain>
+ <domain>sea.memail.jp</domain>
+ <domain>seabass.biglobe.ne.jp</domain>
+ <domain>seabass.memail.jp</domain>
+ <domain>second.biglobe.ne.jp</domain>
+ <domain>second.memail.jp</domain>
+ <domain>seeya.biglobe.ne.jp</domain>
+ <domain>seeya.memail.jp</domain>
+ <domain>sendai.eeyo.jp</domain>
+ <domain>sepia.biglobe.ne.jp</domain>
+ <domain>sepia.memail.jp</domain>
+ <domain>setagaya.eeyo.jp</domain>
+ <domain>setouchi.eeyo.jp</domain>
+ <domain>settu.eeyo.jp</domain>
+ <domain>seven.biglobe.ne.jp</domain>
+ <domain>seven.memail.jp</domain>
+ <domain>sf.biglobe.ne.jp</domain>
+ <domain>sf.memail.jp</domain>
+ <domain>shake.biglobe.ne.jp</domain>
+ <domain>shake.memail.jp</domain>
+ <domain>shakotan.eeyo.jp</domain>
+ <domain>sheep.biglobe.ne.jp</domain>
+ <domain>sheep.memail.jp</domain>
+ <domain>shibuya.eeyo.jp</domain>
+ <domain>shiga.eeyo.jp</domain>
+ <domain>shikoku.eeyo.jp</domain>
+ <domain>shikotsu.eeyo.jp</domain>
+ <domain>shima.eeyo.jp</domain>
+ <domain>shimane.eeyo.jp</domain>
+ <domain>shimanto.eeyo.jp</domain>
+ <domain>shimizu.eeyo.jp</domain>
+ <domain>shimokita.eeyo.jp</domain>
+ <domain>shimotsuke.eeyo.jp</domain>
+ <domain>shimousa.eeyo.jp</domain>
+ <domain>shinagawa.eeyo.jp</domain>
+ <domain>shinano.eeyo.jp</domain>
+ <domain>shine.biglobe.ne.jp</domain>
+ <domain>shine.memail.jp</domain>
+ <domain>shinjuku.eeyo.jp</domain>
+ <domain>shiobara.eeyo.jp</domain>
+ <domain>shirahama.eeyo.jp</domain>
+ <domain>shirakami.eeyo.jp</domain>
+ <domain>shiretoko.eeyo.jp</domain>
+ <domain>shizuoka.eeyo.jp</domain>
+ <domain>shonai.eeyo.jp</domain>
+ <domain>shonan.eeyo.jp</domain>
+ <domain>shoot.biglobe.ne.jp</domain>
+ <domain>shoot.memail.jp</domain>
+ <domain>short.biglobe.ne.jp</domain>
+ <domain>short.memail.jp</domain>
+ <domain>shout.biglobe.ne.jp</domain>
+ <domain>shout.memail.jp</domain>
+ <domain>shrimp.biglobe.ne.jp</domain>
+ <domain>shrimp.memail.jp</domain>
+ <domain>silver.biglobe.ne.jp</domain>
+ <domain>silver.memail.jp</domain>
+ <domain>simplem.biglobe.ne.jp</domain>
+ <domain>simplem.memail.jp</domain>
+ <domain>six.biglobe.ne.jp</domain>
+ <domain>six.memail.jp</domain>
+ <domain>ski.biglobe.ne.jp</domain>
+ <domain>ski.memail.jp</domain>
+ <domain>sky.biglobe.ne.jp</domain>
+ <domain>sky.memail.jp</domain>
+ <domain>smart.biglobe.ne.jp</domain>
+ <domain>smart.memail.jp</domain>
+ <domain>smash.biglobe.ne.jp</domain>
+ <domain>smash.memail.jp</domain>
+ <domain>smile.biglobe.ne.jp</domain>
+ <domain>smile.memail.jp</domain>
+ <domain>snake.biglobe.ne.jp</domain>
+ <domain>snake.memail.jp</domain>
+ <domain>snowboard.biglobe.ne.jp</domain>
+ <domain>snowboard.memail.jp</domain>
+ <domain>snowy.biglobe.ne.jp</domain>
+ <domain>snowy.memail.jp</domain>
+ <domain>soccer.biglobe.ne.jp</domain>
+ <domain>soccer.memail.jp</domain>
+ <domain>sodegaura.eeyo.jp</domain>
+ <domain>soul.biglobe.ne.jp</domain>
+ <domain>soul.memail.jp</domain>
+ <domain>south.biglobe.ne.jp</domain>
+ <domain>south.memail.jp</domain>
+ <domain>soya.eeyo.jp</domain>
+ <domain>space.biglobe.ne.jp</domain>
+ <domain>space.memail.jp</domain>
+ <domain>spice.biglobe.ne.jp</domain>
+ <domain>spice.memail.jp</domain>
+ <domain>spider.biglobe.ne.jp</domain>
+ <domain>spider.memail.jp</domain>
+ <domain>spring.biglobe.ne.jp</domain>
+ <domain>spring.memail.jp</domain>
+ <domain>star.biglobe.ne.jp</domain>
+ <domain>star.memail.jp</domain>
+ <domain>step.biglobe.ne.jp</domain>
+ <domain>step.memail.jp</domain>
+ <domain>stone.biglobe.ne.jp</domain>
+ <domain>stone.memail.jp</domain>
+ <domain>storm.biglobe.ne.jp</domain>
+ <domain>storm.memail.jp</domain>
+ <domain>strawberry.biglobe.ne.jp</domain>
+ <domain>strawberry.memail.jp</domain>
+ <domain>string.biglobe.ne.jp</domain>
+ <domain>string.memail.jp</domain>
+ <domain>sugar.biglobe.ne.jp</domain>
+ <domain>sugar.memail.jp</domain>
+ <domain>summer.biglobe.ne.jp</domain>
+ <domain>summer.memail.jp</domain>
+ <domain>sunflower.biglobe.ne.jp</domain>
+ <domain>sunflower.memail.jp</domain>
+ <domain>sunshine.biglobe.ne.jp</domain>
+ <domain>sunshine.memail.jp</domain>
+ <domain>suo.eeyo.jp</domain>
+ <domain>super.biglobe.ne.jp</domain>
+ <domain>super.memail.jp</domain>
+ <domain>surfing.biglobe.ne.jp</domain>
+ <domain>surfing.memail.jp</domain>
+ <domain>suruga.eeyo.jp</domain>
+ <domain>suzuka.eeyo.jp</domain>
+ <domain>swallow.biglobe.ne.jp</domain>
+ <domain>swallow.memail.jp</domain>
+ <domain>swan.biglobe.ne.jp</domain>
+ <domain>swan.memail.jp</domain>
+ <domain>sweet.biglobe.ne.jp</domain>
+ <domain>sweet.memail.jp</domain>
+ <domain>swing.biglobe.ne.jp</domain>
+ <domain>swing.memail.jp</domain>
+ <domain>symphony.biglobe.ne.jp</domain>
+ <domain>symphony.memail.jp</domain>
+ <domain>t.biglobe.ne.jp</domain>
+ <domain>t.memail.jp</domain>
+ <domain>tai.biglobe.ne.jp</domain>
+ <domain>tai.memail.jp</domain>
+ <domain>tajima.eeyo.jp</domain>
+ <domain>takachiho.eeyo.jp</domain>
+ <domain>takamatsu.eeyo.jp</domain>
+ <domain>takayama.eeyo.jp</domain>
+ <domain>tama.eeyo.jp</domain>
+ <domain>tanba.eeyo.jp</domain>
+ <domain>tango.biglobe.ne.jp</domain>
+ <domain>tango.eeyo.jp</domain>
+ <domain>tango.memail.jp</domain>
+ <domain>tanzawa.eeyo.jp</domain>
+ <domain>tateshina.eeyo.jp</domain>
+ <domain>tateyama.eeyo.jp</domain>
+ <domain>taurus.biglobe.ne.jp</domain>
+ <domain>taurus.memail.jp</domain>
+ <domain>tazawako.eeyo.jp</domain>
+ <domain>tea.biglobe.ne.jp</domain>
+ <domain>tea.memail.jp</domain>
+ <domain>techno.biglobe.ne.jp</domain>
+ <domain>techno.memail.jp</domain>
+ <domain>ten.biglobe.ne.jp</domain>
+ <domain>ten.memail.jp</domain>
+ <domain>tender.biglobe.ne.jp</domain>
+ <domain>tender.memail.jp</domain>
+ <domain>tennis.biglobe.ne.jp</domain>
+ <domain>tennis.memail.jp</domain>
+ <domain>terra.biglobe.ne.jp</domain>
+ <domain>terra.memail.jp</domain>
+ <domain>test.test.biglobe.ne.jp</domain>
+ <domain>thanks.biglobe.ne.jp</domain>
+ <domain>thanks.memail.jp</domain>
+ <domain>third.biglobe.ne.jp</domain>
+ <domain>third.memail.jp</domain>
+ <domain>three.biglobe.ne.jp</domain>
+ <domain>three.memail.jp</domain>
+ <domain>thunder.biglobe.ne.jp</domain>
+ <domain>thunder.memail.jp</domain>
+ <domain>tiger.biglobe.ne.jp</domain>
+ <domain>tiger.memail.jp</domain>
+ <domain>tiny.biglobe.ne.jp</domain>
+ <domain>tiny.memail.jp</domain>
+ <domain>tochigi.eeyo.jp</domain>
+ <domain>togakushi.eeyo.jp</domain>
+ <domain>tohoku.eeyo.jp</domain>
+ <domain>toi.eeyo.jp</domain>
+ <domain>tokachi.eeyo.jp</domain>
+ <domain>tokai.eeyo.jp</domain>
+ <domain>tokoro.biglobe.ne.jp</domain>
+ <domain>tokorozawa.eeyo.jp</domain>
+ <domain>tokushima.eeyo.jp</domain>
+ <domain>tokyo.eeyo.jp</domain>
+ <domain>tone.eeyo.jp</domain>
+ <domain>tono.eeyo.jp</domain>
+ <domain>topaz.biglobe.ne.jp</domain>
+ <domain>topaz.memail.jp</domain>
+ <domain>tornado.biglobe.ne.jp</domain>
+ <domain>tornado.memail.jp</domain>
+ <domain>tosa.eeyo.jp</domain>
+ <domain>tosu.eeyo.jp</domain>
+ <domain>totoumi.eeyo.jp</domain>
+ <domain>tottori.eeyo.jp</domain>
+ <domain>tough.biglobe.ne.jp</domain>
+ <domain>tough.memail.jp</domain>
+ <domain>tourmaline.biglobe.ne.jp</domain>
+ <domain>tourmaline.memail.jp</domain>
+ <domain>towada.eeyo.jp</domain>
+ <domain>toya.eeyo.jp</domain>
+ <domain>toyama.eeyo.jp</domain>
+ <domain>toyohashi.eeyo.jp</domain>
+ <domain>traveler.biglobe.ne.jp</domain>
+ <domain>traveler.memail.jp</domain>
+ <domain>tree.biglobe.ne.jp</domain>
+ <domain>tree.memail.jp</domain>
+ <domain>tropical.biglobe.ne.jp</domain>
+ <domain>tropical.memail.jp</domain>
+ <domain>tsuchiura.eeyo.jp</domain>
+ <domain>tsugaike.eeyo.jp</domain>
+ <domain>tsugaru.eeyo.jp</domain>
+ <domain>tsukuba.eeyo.jp</domain>
+ <domain>tsumagoi.eeyo.jp</domain>
+ <domain>tsushima.eeyo.jp</domain>
+ <domain>tsuwano.eeyo.jp</domain>
+ <domain>tsuyama.eeyo.jp</domain>
+ <domain>tulip.biglobe.ne.jp</domain>
+ <domain>tulip.memail.jp</domain>
+ <domain>turbo.biglobe.ne.jp</domain>
+ <domain>turbo.memail.jp</domain>
+ <domain>turquoise.biglobe.ne.jp</domain>
+ <domain>turquoise.memail.jp</domain>
+ <domain>twelve.biglobe.ne.jp</domain>
+ <domain>twelve.memail.jp</domain>
+ <domain>twist.biglobe.ne.jp</domain>
+ <domain>twist.memail.jp</domain>
+ <domain>two.biglobe.ne.jp</domain>
+ <domain>two.memail.jp</domain>
+ <domain>typhoon.biglobe.ne.jp</domain>
+ <domain>typhoon.memail.jp</domain>
+ <domain>u.biglobe.ne.jp</domain>
+ <domain>u.memail.jp</domain>
+ <domain>ueno.eeyo.jp</domain>
+ <domain>ugo.eeyo.jp</domain>
+ <domain>uji.eeyo.jp</domain>
+ <domain>ultra.biglobe.ne.jp</domain>
+ <domain>ultra.memail.jp</domain>
+ <domain>ume.biglobe.ne.jp</domain>
+ <domain>ume.memail.jp</domain>
+ <domain>umeda.eeyo.jp</domain>
+ <domain>unicorn.biglobe.ne.jp</domain>
+ <domain>unicorn.memail.jp</domain>
+ <domain>unzen.eeyo.jp</domain>
+ <domain>uonuma.eeyo.jp</domain>
+ <domain>urawa.eeyo.jp</domain>
+ <domain>uwa.eeyo.jp</domain>
+ <domain>uzen.eeyo.jp</domain>
+ <domain>v.biglobe.ne.jp</domain>
+ <domain>v.memail.jp</domain>
+ <domain>valuestar.biglobe.ne.jp</domain>
+ <domain>valuestar.memail.jp</domain>
+ <domain>venus.biglobe.ne.jp</domain>
+ <domain>venus.memail.jp</domain>
+ <domain>violet.biglobe.ne.jp</domain>
+ <domain>violet.memail.jp</domain>
+ <domain>virgo.biglobe.ne.jp</domain>
+ <domain>virgo.memail.jp</domain>
+ <domain>viva.biglobe.ne.jp</domain>
+ <domain>viva.memail.jp</domain>
+ <domain>volleyball.biglobe.ne.jp</domain>
+ <domain>volleyball.memail.jp</domain>
+ <domain>w.biglobe.ne.jp</domain>
+ <domain>w.memail.jp</domain>
+ <domain>wakasa.eeyo.jp</domain>
+ <domain>wakayama.eeyo.jp</domain>
+ <domain>wakkanai.eeyo.jp</domain>
+ <domain>west.biglobe.ne.jp</domain>
+ <domain>west.memail.jp</domain>
+ <domain>whale.biglobe.ne.jp</domain>
+ <domain>whale.memail.jp</domain>
+ <domain>white.biglobe.ne.jp</domain>
+ <domain>white.memail.jp</domain>
+ <domain>wild.biglobe.ne.jp</domain>
+ <domain>wild.memail.jp</domain>
+ <domain>winter.biglobe.ne.jp</domain>
+ <domain>winter.memail.jp</domain>
+ <domain>with.biglobe.ne.jp</domain>
+ <domain>with.memail.jp</domain>
+ <domain>wolf.biglobe.ne.jp</domain>
+ <domain>wolf.memail.jp</domain>
+ <domain>wonder.biglobe.ne.jp</domain>
+ <domain>wonder.memail.jp</domain>
+ <domain>wood.biglobe.ne.jp</domain>
+ <domain>wood.memail.jp</domain>
+ <domain>x.biglobe.ne.jp</domain>
+ <domain>x.memail.jp</domain>
+ <domain>xqb.biglobe.ne.jp</domain>
+ <domain>xqd.biglobe.ne.jp</domain>
+ <domain>xqe.biglobe.ne.jp</domain>
+ <domain>xqg.biglobe.ne.jp</domain>
+ <domain>xqh.biglobe.ne.jp</domain>
+ <domain>xqj.biglobe.ne.jp</domain>
+ <domain>xrh.biglobe.ne.jp</domain>
+ <domain>xrj.biglobe.ne.jp</domain>
+ <domain>xsj.biglobe.ne.jp</domain>
+ <domain>xug.biglobe.ne.jp</domain>
+ <domain>xui.biglobe.ne.jp</domain>
+ <domain>xvb.biglobe.ne.jp</domain>
+ <domain>xvf.biglobe.ne.jp</domain>
+ <domain>xvg.biglobe.ne.jp</domain>
+ <domain>xvh.biglobe.ne.jp</domain>
+ <domain>y.biglobe.ne.jp</domain>
+ <domain>y.memail.jp</domain>
+ <domain>yaeyama.eeyo.jp</domain>
+ <domain>yakushima.eeyo.jp</domain>
+ <domain>yamagata.eeyo.jp</domain>
+ <domain>yamaguchi.eeyo.jp</domain>
+ <domain>yamame.biglobe.ne.jp</domain>
+ <domain>yamame.memail.jp</domain>
+ <domain>yamanashi.eeyo.jp</domain>
+ <domain>yamashiro.eeyo.jp</domain>
+ <domain>yamato.eeyo.jp</domain>
+ <domain>yeah.biglobe.ne.jp</domain>
+ <domain>yeah.memail.jp</domain>
+ <domain>yes.biglobe.ne.jp</domain>
+ <domain>yes.memail.jp</domain>
+ <domain>yodogawa.eeyo.jp</domain>
+ <domain>yokohama.eeyo.jp</domain>
+ <domain>yoron.eeyo.jp</domain>
+ <domain>yoshino.eeyo.jp</domain>
+ <domain>yours.biglobe.ne.jp</domain>
+ <domain>yours.memail.jp</domain>
+ <domain>yufuin.eeyo.jp</domain>
+ <domain>yuzawa.eeyo.jp</domain>
+ <domain>z.biglobe.ne.jp</domain>
+ <domain>z.memail.jp</domain>
+ <domain>zao.eeyo.jp</domain>
+ <domain>zoo.biglobe.ne.jp</domain>
+ <domain>zoo.memail.jp</domain>
+ <domain>zzz.biglobe.ne.jp</domain>
+ <domain>zzz.memail.jp</domain>
+ <displayName>BIGLOBE</displayName>
+ <displayShortName>BIGLOBE</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.biglobe.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.biglobe.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/abc.plala.or.jp b/capplet/settings/mail-autoconfig/abc.plala.or.jp
new file mode 100644
index 0000000000..549bed6cb3
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/abc.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="abc.plala.or.jp">
+ <domain>abc.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>abc.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>abc.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/agate.plala.or.jp b/capplet/settings/mail-autoconfig/agate.plala.or.jp
new file mode 100644
index 0000000000..6195f58519
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/agate.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="agate.plala.or.jp">
+ <domain>agate.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>agate.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>agate.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/amail.plala.or.jp b/capplet/settings/mail-autoconfig/amail.plala.or.jp
new file mode 100644
index 0000000000..b4bd8af5fc
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/amail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="amail.plala.or.jp">
+ <domain>amail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>amail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>amail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/amber.plala.or.jp b/capplet/settings/mail-autoconfig/amber.plala.or.jp
new file mode 100644
index 0000000000..ae682933ee
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/amber.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="amber.plala.or.jp">
+ <domain>amber.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>amber.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>amber.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/amethyst.broba.cc b/capplet/settings/mail-autoconfig/amethyst.broba.cc
new file mode 100644
index 0000000000..86276cc517
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/amethyst.broba.cc
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="broba.cc">
+ <domain>garnet.broba.cc</domain>
+ <domain>amethyst.broba.cc</domain>
+ <domain>coral.broba.ccv</domain>
+ <domain>diamond.broba.cc</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.broba.cc</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.broba.cc</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/aol.com b/capplet/settings/mail-autoconfig/aol.com
new file mode 100644
index 0000000000..7e16ab5335
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/aol.com
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="aol.com">
+ <domain>aol.com</domain>
+ <domain>aim.com</domain>
+
+ <displayName>AOL</displayName>
+ <displayShortName>AOL</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.aol.com</hostname>
+ <port>143</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.aol.com</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/apost.plala.or.jp b/capplet/settings/mail-autoconfig/apost.plala.or.jp
new file mode 100644
index 0000000000..c4f936a7c1
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/apost.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="apost.plala.or.jp">
+ <domain>apost.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>apost.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>apost.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/aqua.plala.or.jp b/capplet/settings/mail-autoconfig/aqua.plala.or.jp
new file mode 100644
index 0000000000..0c78abc615
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/aqua.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="aqua.plala.or.jp">
+ <domain>aqua.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>aqua.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>aqua.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/arcor.de b/capplet/settings/mail-autoconfig/arcor.de
new file mode 100644
index 0000000000..953f669fd8
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/arcor.de
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="arcor.de">
+ <domain>arcor.de</domain>
+
+ <displayName>Arcor</displayName>
+ <displayShortName>Arcor</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.arcor.de</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <!-- also works: <port>143</port> <socketType>STARTTLS</socketType> -->
+ <authentication>plain</authentication>
+ <username>%EMAILLOCALPART%</username>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>mail.arcor.de</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <!-- also works: <port>587</port> <socketType>STARTTLS</socketType> -->
+ <authentication>plain</authentication>
+ <username>%EMAILLOCALPART%</username>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ <!--
+ http://www.arcor.de/hilfe/neu/index.php?aktion=anzeigen&rubrik=040006001&id=181
+ http://www.arcor.de/hilfe/neu/index.php?aktion=anzeigen&rubrik=006001003&id=1241
+ Sent Folder: SentMail
+ Draft Folder: Drafts
+
+ IMAP-Server is a Courier.
+ -->
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ballade.plala.or.jp b/capplet/settings/mail-autoconfig/ballade.plala.or.jp
new file mode 100644
index 0000000000..913390f9ee
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ballade.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ballade.plala.or.jp">
+ <domain>ballade.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>ballade.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>ballade.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/bay.gunmanet.ne.jp b/capplet/settings/mail-autoconfig/bay.gunmanet.ne.jp
new file mode 100644
index 0000000000..930cf3ab09
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/bay.gunmanet.ne.jp
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="bay.wind.ne.jp">
+ <domain>bay.wind.ne.jp</domain>
+ <domain>bay.wind.jp</domain>
+ <domain>bay.wind.co.jp</domain>
+ <domain>bay.gunmanet.or.jp</domain>
+ <domain>bay.gunmanet.ne.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>bay.wind.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>bay.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/bb-niigata.jp b/capplet/settings/mail-autoconfig/bb-niigata.jp
new file mode 100644
index 0000000000..174f5cbc74
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/bb-niigata.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="bb-niigata.jp">
+ <domain>bb-niigata.jp</domain>
+ <displayName>BBにいがた</displayName>
+ <displayShortName>BB-NIIGATA</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>pop.bb-niigata.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>pop.bb-niigata.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/bc.iij4u.or.jp b/capplet/settings/mail-autoconfig/bc.iij4u.or.jp
new file mode 100644
index 0000000000..baa1d0e7a0
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/bc.iij4u.or.jp
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="dd.iij4u.or.jp">
+ <domain>dd.iij4u.or.jp</domain>
+ <domain>ff.iij4u.or.jp</domain>
+ <domain>hh.iij4u.or.jp</domain>
+ <domain>kk.iij4u.or.jp</domain>
+ <domain>nn.iij4u.or.jp</domain>
+ <domain>pp.iij4u.or.jp</domain>
+ <domain>rr.iij4u.or.jp</domain>
+ <domain>ss.iij4u.or.jp</domain>
+ <domain>bc.iij4u.or.jp</domain>
+ <domain>bk.iij4u.or.jp</domain>
+ <domain>bp.iij4u.or.jp</domain>
+ <domain>bu.iij4u.or.jp</domain>
+ <displayName>IIJ4U</displayName>
+ <displayShortName>IIJ4U</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mbox.iij4u.or.jp</hostname>
+ <port>110</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%.%EMAILDOMAIN%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mbox.iij4u.or.jp</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%.%EMAILDOMAIN%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/beige.plala.or.jp b/capplet/settings/mail-autoconfig/beige.plala.or.jp
new file mode 100644
index 0000000000..1da18eb675
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/beige.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="beige.plala.or.jp">
+ <domain>beige.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>beige.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>beige.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/blue.plala.or.jp b/capplet/settings/mail-autoconfig/blue.plala.or.jp
new file mode 100644
index 0000000000..510042ee9e
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/blue.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="blue.plala.or.jp">
+ <domain>blue.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>blue.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>blue.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/bmail.plala.or.jp b/capplet/settings/mail-autoconfig/bmail.plala.or.jp
new file mode 100644
index 0000000000..f849e6e4b6
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/bmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="bmail.plala.or.jp">
+ <domain>bmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>bmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>bmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/bolero.plala.or.jp b/capplet/settings/mail-autoconfig/bolero.plala.or.jp
new file mode 100644
index 0000000000..171776a28b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/bolero.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="bolero.plala.or.jp">
+ <domain>bolero.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>bolero.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>bolero.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/bpost.plala.or.jp b/capplet/settings/mail-autoconfig/bpost.plala.or.jp
new file mode 100644
index 0000000000..24c8ebd843
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/bpost.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="bpost.plala.or.jp">
+ <domain>bpost.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>bpost.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>bpost.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/brown.plala.or.jp b/capplet/settings/mail-autoconfig/brown.plala.or.jp
new file mode 100644
index 0000000000..3bd4be2168
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/brown.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="brown.plala.or.jp">
+ <domain>brown.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>brown.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>brown.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/camel.plala.or.jp b/capplet/settings/mail-autoconfig/camel.plala.or.jp
new file mode 100644
index 0000000000..c55faa8270
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/camel.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="camel.plala.or.jp">
+ <domain>camel.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>camel.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>camel.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/cameo.plala.or.jp b/capplet/settings/mail-autoconfig/cameo.plala.or.jp
new file mode 100644
index 0000000000..7376c1fffe
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/cameo.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="cameo.plala.or.jp">
+ <domain>cameo.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>cameo.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>cameo.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/cc9.ne.jp b/capplet/settings/mail-autoconfig/cc9.ne.jp
new file mode 100644
index 0000000000..28bad2cd01
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/cc9.ne.jp
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="cc9.ne.jp">
+ <domain>cc9.ne.jp</domain>
+ <displayName>CC9インターネットサービス</displayName>
+ <displayShortName>CC9</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>pop.cc9.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.cc9.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <authentication>none</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/cek.ne.jp b/capplet/settings/mail-autoconfig/cek.ne.jp
new file mode 100644
index 0000000000..0af49bd435
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/cek.ne.jp
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="cek.ne.jp">
+ <domain>cek.ne.jp</domain>
+ <displayName>エコーシティー・駒ケ岳</displayName>
+ <displayShortName>CEK-Net</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.cek.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.cek.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <authentication>none</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/clio.ne.jp b/capplet/settings/mail-autoconfig/clio.ne.jp
new file mode 100644
index 0000000000..90f1a41ba3
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/clio.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="clio.ne.jp">
+ <domain>clio.ne.jp</domain>
+ <displayName>CLIO-Net移管サービス</displayName>
+ <displayShortName>CLIO-Net</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.clio.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.clio.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/cmail.plala.or.jp b/capplet/settings/mail-autoconfig/cmail.plala.or.jp
new file mode 100644
index 0000000000..eb2558272b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/cmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="cmail.plala.or.jp">
+ <domain>cmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>cmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>cmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/co1.wind.jp b/capplet/settings/mail-autoconfig/co1.wind.jp
new file mode 100644
index 0000000000..e086cd7785
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/co1.wind.jp
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="co1.wind.ne.jp">
+ <domain>co1.wind.ne.jp</domain>
+ <domain>co1.wind.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>co1.wind.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>co1.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/co2.wind.jp b/capplet/settings/mail-autoconfig/co2.wind.jp
new file mode 100644
index 0000000000..010477274d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/co2.wind.jp
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="co2.wind.ne.jp">
+ <domain>co2.wind.ne.jp</domain>
+ <domain>co2.wind.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>co2.wind.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>co2.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/co3.wind.jp b/capplet/settings/mail-autoconfig/co3.wind.jp
new file mode 100644
index 0000000000..498384cb09
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/co3.wind.jp
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="co3.wind.ne.jp">
+ <domain>co3.wind.ne.jp</domain>
+ <domain>co3.wind.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>co3.wind.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>co3.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/cocoa.plala.or.jp b/capplet/settings/mail-autoconfig/cocoa.plala.or.jp
new file mode 100644
index 0000000000..5387cd368d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/cocoa.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="cocoa.plala.or.jp">
+ <domain>cocoa.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>cocoa.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>cocoa.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/coda.plala.or.jp b/capplet/settings/mail-autoconfig/coda.plala.or.jp
new file mode 100644
index 0000000000..f668775d84
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/coda.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="coda.plala.or.jp">
+ <domain>coda.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>coda.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>coda.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/comcast.net b/capplet/settings/mail-autoconfig/comcast.net
new file mode 100644
index 0000000000..56b1fa92bf
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/comcast.net
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="comcast.net">
+ <domain>comcast.net</domain>
+
+ <displayName>Comcast</displayName>
+ <displayShortName>Comcast</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>mail.comcast.net</hostname>
+ <port>110</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.comcast.net</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/concerto.plala.or.jp b/capplet/settings/mail-autoconfig/concerto.plala.or.jp
new file mode 100644
index 0000000000..1c190b5d70
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/concerto.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="concerto.plala.or.jp">
+ <domain>concerto.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>concerto.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>concerto.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/coral.plala.or.jp b/capplet/settings/mail-autoconfig/coral.plala.or.jp
new file mode 100644
index 0000000000..1c52fcee37
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/coral.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="coral.plala.or.jp">
+ <domain>coral.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>coral.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>coral.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/courante.plala.or.jp b/capplet/settings/mail-autoconfig/courante.plala.or.jp
new file mode 100644
index 0000000000..05976ef0b3
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/courante.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="courante.plala.or.jp">
+ <domain>courante.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>courante.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>courante.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/cpost.plala.or.jp b/capplet/settings/mail-autoconfig/cpost.plala.or.jp
new file mode 100644
index 0000000000..613d3774b9
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/cpost.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="cpost.plala.or.jp">
+ <domain>cpost.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>cpost.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>cpost.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/cream.plala.or.jp b/capplet/settings/mail-autoconfig/cream.plala.or.jp
new file mode 100644
index 0000000000..16e232591b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/cream.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="cream.plala.or.jp">
+ <domain>cream.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>cream.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>cream.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/dan.gunmanet.ne.jp b/capplet/settings/mail-autoconfig/dan.gunmanet.ne.jp
new file mode 100644
index 0000000000..b027d98d04
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/dan.gunmanet.ne.jp
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="dan.wind.ne.jp">
+ <domain>dan.wind.ne.jp</domain>
+ <domain>dan.wind.jp</domain>
+ <domain>dan.wind.co.jp</domain>
+ <domain>dan.gunmanet.or.jp</domain>
+ <domain>dan.gunmanet.ne.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>dan.wind.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>dan.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/dance.plala.or.jp b/capplet/settings/mail-autoconfig/dance.plala.or.jp
new file mode 100644
index 0000000000..74f90c8fbc
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/dance.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="dance.plala.or.jp">
+ <domain>dance.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>dance.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>dance.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/dmail.plala.or.jp b/capplet/settings/mail-autoconfig/dmail.plala.or.jp
new file mode 100644
index 0000000000..f742605b4f
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/dmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="dmail.plala.or.jp">
+ <domain>dmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>dmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>dmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/e23.jp b/capplet/settings/mail-autoconfig/e23.jp
new file mode 100644
index 0000000000..f1f08b908a
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/e23.jp
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="iijmio-mail.jp">
+ <domain>iijmio-mail.jp</domain>
+ <domain>miomio.jp</domain>
+ <domain>miobox.jp</domain>
+ <domain>e23.jp</domain>
+ <domain>x-il.jp</domain>
+ <displayName>IIJmio セーフティメール</displayName>
+ <displayShortName>IIJmio</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mbox.iijmio-mail.jp</hostname>
+ <port>110</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%.%EMAILDOMAIN%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mbox.iijmio-mail.jp</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%.%EMAILDOMAIN%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/earthlink.net b/capplet/settings/mail-autoconfig/earthlink.net
new file mode 100644
index 0000000000..0f204b2bbd
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/earthlink.net
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="earthlink.net">
+ <domain>earthlink.net</domain>
+
+ <displayName>EarthLink</displayName>
+ <displayShortName>EarthLink</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.earthlink.net</hostname>
+ <port>143</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtpauth.earthlink.net</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ebony.plala.or.jp b/capplet/settings/mail-autoconfig/ebony.plala.or.jp
new file mode 100644
index 0000000000..11a275e990
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ebony.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ebony.plala.or.jp">
+ <domain>ebony.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>ebony.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>ebony.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/email.plala.or.jp b/capplet/settings/mail-autoconfig/email.plala.or.jp
new file mode 100644
index 0000000000..45a8e0d500
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/email.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="email.plala.or.jp">
+ <domain>email.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>email.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>email.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/fantasy.plala.or.jp b/capplet/settings/mail-autoconfig/fantasy.plala.or.jp
new file mode 100644
index 0000000000..5774cc239a
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/fantasy.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="fantasy.plala.or.jp">
+ <domain>fantasy.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>fantasy.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>fantasy.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/flamenco.plala.or.jp b/capplet/settings/mail-autoconfig/flamenco.plala.or.jp
new file mode 100644
index 0000000000..3a8ade7488
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/flamenco.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="flamenco.plala.or.jp">
+ <domain>flamenco.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>flamenco.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>flamenco.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/fmail.plala.or.jp b/capplet/settings/mail-autoconfig/fmail.plala.or.jp
new file mode 100644
index 0000000000..c4a4dbc14b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/fmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="fmail.plala.or.jp">
+ <domain>fmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>fmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>fmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/free.fr b/capplet/settings/mail-autoconfig/free.fr
new file mode 100644
index 0000000000..f97fe38504
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/free.fr
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="free.fr">
+ <domain>free.fr</domain>
+
+ <displayName>Free Telecom</displayName>
+ <displayShortName>free.fr</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.free.fr</hostname>
+ <port>143</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.free.fr</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <!-- IP-based auth: smtp server only allows connection from ISP network :-( -->
+ <useGlobalPreferredServer>true</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/freenet.de b/capplet/settings/mail-autoconfig/freenet.de
new file mode 100644
index 0000000000..1144a80c6d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/freenet.de
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="freenet.de">
+ <domain>freenet.de</domain>
+
+ <displayName>Freenet Mail</displayName>
+ <displayShortName>Freenet</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>mx.freenet.de</hostname>
+ <!-- 143 STARTTLS also works -->
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <authentication>secure</authentication>
+ <username>%EMAILADDRESS%</username>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>mx.freenet.de</hostname>
+ <!-- 587 STARTTLS also works -->
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <authentication>secure</authentication>
+ <username>%EMAILADDRESS%</username>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <!-- config pages:
+ http://kundenservice.freenet.de/hilfe/email/programme/config/index.html
+ http://kundenservice.freenet.de/hilfe/email/programme/config/thunderbird/imap-thunderbird/imap/index.html
+
+ STARTTLS and normal SSL on SSL ports both work fine (not mentioned on config pages).
+ CRAM-MD5 works even with SSL, very cool and exemplary, we'll do that.
+ -->
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/fuga.plala.or.jp b/capplet/settings/mail-autoconfig/fuga.plala.or.jp
new file mode 100644
index 0000000000..f41116addd
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/fuga.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="fuga.plala.or.jp">
+ <domain>fuga.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>fuga.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>fuga.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/gmail.com b/capplet/settings/mail-autoconfig/gmail.com
new file mode 100644
index 0000000000..f73f7e0c7f
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/gmail.com
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="googlemail.com">
+ <domain>gmail.com</domain>
+ <domain>googlemail.com</domain>
+
+ <displayName>Google Mail</displayName>
+ <displayShortName>GMail</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.googlemail.com</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.googlemail.com</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <enableURL url="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop">You need to enable IMAP access</enableURL>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/gmail.com imap b/capplet/settings/mail-autoconfig/gmail.com imap
new file mode 100644
index 0000000000..f73f7e0c7f
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/gmail.com imap
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="googlemail.com">
+ <domain>gmail.com</domain>
+ <domain>googlemail.com</domain>
+
+ <displayName>Google Mail</displayName>
+ <displayShortName>GMail</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.googlemail.com</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.googlemail.com</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <enableURL url="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop">You need to enable IMAP access</enableURL>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/gmail.com pop b/capplet/settings/mail-autoconfig/gmail.com pop
new file mode 100644
index 0000000000..4b1a577561
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/gmail.com pop
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="googlemail.com">
+ <domain>gmail.com</domain>
+ <domain>googlemail.com</domain>
+
+ <displayName>Google Mail</displayName>
+ <displayShortName>GMail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop.googlemail.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <pop3>
+ <leaveMessagesOnServer>true</leaveMessagesOnServer>
+ </pop3>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.googlemail.com</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <enableURL url="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop">You need to enable POP access</enableURL>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/gmail.plala.or.jp b/capplet/settings/mail-autoconfig/gmail.plala.or.jp
new file mode 100644
index 0000000000..d369859a43
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/gmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="gmail.plala.or.jp">
+ <domain>gmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>gmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>gmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/gmx.com b/capplet/settings/mail-autoconfig/gmx.com
new file mode 100644
index 0000000000..06782b48cc
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/gmx.com
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="gmx.com">
+ <domain>gmx.com</domain>
+ <displayName>GMX Freemail</displayName>
+ <displayShortName>GMX</displayShortName>
+ <incomingServer type="imap">
+ <hostname>imap.gmx.com</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.gmx.com</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/gmx.net b/capplet/settings/mail-autoconfig/gmx.net
new file mode 100644
index 0000000000..3a93fb9839
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/gmx.net
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="gmx.de">
+ <domain>gmx.de</domain>
+ <domain>gmx.net</domain>
+ <domain>gmx.ch</domain>
+ <domain>gmx.at</domain>
+ <domain>gmx.li</domain>
+ <domain>gmx.fr</domain>
+ <domain>gmx.it</domain>
+ <domain>gmx.co.uk</domain>
+ <!-- siehe auch unten -->
+
+ <displayName>GMX Freemail</displayName>
+ <displayShortName>GMX</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop.gmx.net</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username> <!-- Kundennummer und Email-Adresse sollten beide funktionieren -->
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>mail.gmx.net</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username> <!-- s.o. -->
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
+
+ <!-- Noch ne ganze Menge Vanity-Domains, die wir hier nicht hinzufügen werden: bist-eine-haelfte-von-mir.de, bleib-bei-mir.de, es-ist-liebe.de, fahr-zur-hoelle.org, ich-bin-verrueckt-nach-dir.de, ist-allein.info, ist-es-liebe.de, ist-ganz-allein.de, ist-willig.de, lass-es-geschehen.de, liebt-dich.info, loveyouforever.de, moechte-mit-dir-aufwachen.de, schmusemail.de, schreib-doch-mal-wieder.de, teilt-mit-dir-alle-geheimnisse.de, verlass-mich-nicht.de, vorsicht-scharf.de, weinenvorglueck.de, alphafrau.de, feinripptraeger.de, fettabernett.de, ist-einmalig.de, kaffeeschluerfer.com, liebt-den-mann-ihrer-chefin.de, liebt-die-frau-seines-chefs.de, maennerversteherin.com, partybombe.de, partyheld.de, polizisten-duzer.de, raubtierbaendiger.de, saeuferleber.de, tortenboxer.de, turboprinz.de, turboprinzessin.de, vorsicht-bissig.de, alpenjodel.de, das-spiel-hat-90-minuten.de, der-ball-ist-rund.net, die-genossen.de, die-optimisten.net, email-ausdrucker.de, fantasymail.de, freudenkinder.de, gentlemansclub.de, gmx-ist-cool.de, herr-der-mails.de, ich-habe-fertig.com, meine-wahrheit-deine-wahrheit.de, muskelshirt.de, quantentunnel.de, sags-per-mail.de, sonnenkinder.org, turnbeutel-vergesser.com, vollbio.de, volloeko.de, vorabend-einchecker.de, weibsvolk.org, wenns-um-email-geht.de, wir-sind-cool.org, wolke7.net, abwesend.de, baldmama.de, baldpapa.de, betriebsdirektor.de, buerotiger.de, habmalnefrage.de, hab-verschlafen.de, ich-will-net.de, kommespaeter.de, mailueberfall.de, netterchef.de, nurfuerspam.de, streber24.de, terminverpennt.de, unterderbruecke.de, will-hier-weg.de, wir-haben-nachwuchs.de, women-at-work.org, bin-wieder-da.de, coole-files.de, die-besten-bilder.de, digi-dia-freakshow.de, digital-filestore.de, digitalfoto-model-award.de, download-privat.de, gmx-topmail.de, meine-dateien.info, meine-diashow.de, meine-fotos.info, meine-urlaubsfotos.de, neue-dateien.de, office-dateien.de, peinliche-fotos.de, public-files.de, shared-files.de, topmail-files.de, war-im-urlaub.de -->
diff --git a/capplet/settings/mail-autoconfig/go.tvm.ne.jp b/capplet/settings/mail-autoconfig/go.tvm.ne.jp
new file mode 100644
index 0000000000..ccbb238eae
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/go.tvm.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="go.tvm.ne.jp">
+ <domain>go.tvm.ne.jp</domain>
+ <displayName>テレビ松本ケーブルインターネットサービス</displayName>
+ <displayShortName>TVM-Net</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>go.tvm.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>go.tvm.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/goo.jp b/capplet/settings/mail-autoconfig/goo.jp
new file mode 100644
index 0000000000..6ddc1eadd4
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/goo.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="goo.jp">
+ <domain>goo.jp</domain>
+ <displayName>goo メールアドバンス</displayName>
+ <displayShortName>goo</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>pop.mail.goo.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.mail.goo.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/googlemail.com b/capplet/settings/mail-autoconfig/googlemail.com
new file mode 100644
index 0000000000..f73f7e0c7f
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/googlemail.com
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="googlemail.com">
+ <domain>gmail.com</domain>
+ <domain>googlemail.com</domain>
+
+ <displayName>Google Mail</displayName>
+ <displayShortName>GMail</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.googlemail.com</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.googlemail.com</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <enableURL url="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop">You need to enable IMAP access</enableURL>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/grape.plala.or.jp b/capplet/settings/mail-autoconfig/grape.plala.or.jp
new file mode 100644
index 0000000000..09fb378504
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/grape.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="grape.plala.or.jp">
+ <domain>grape.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>grape.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>grape.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/gray.plala.or.jp b/capplet/settings/mail-autoconfig/gray.plala.or.jp
new file mode 100644
index 0000000000..efeb3547f0
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/gray.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="gray.plala.or.jp">
+ <domain>gray.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>gray.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>gray.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/hal.ne.jp b/capplet/settings/mail-autoconfig/hal.ne.jp
new file mode 100644
index 0000000000..ad8e336c03
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/hal.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="hal.ne.jp">
+ <domain>hal.ne.jp</domain>
+ <displayName>ハルインターネット</displayName>
+ <displayShortName>HAL</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.hal.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.hal.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/hana.or.jp b/capplet/settings/mail-autoconfig/hana.or.jp
new file mode 100644
index 0000000000..b2dc624348
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/hana.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="hana.or.jp">
+ <domain>hana.or.jp</domain>
+ <displayName>きたうら花ねっと</displayName>
+ <displayShortName>花ねっと</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.hana.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.hana.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/hotmail.co.jp b/capplet/settings/mail-autoconfig/hotmail.co.jp
new file mode 100644
index 0000000000..35beb3fe57
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/hotmail.co.jp
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/hotmail.co.uk b/capplet/settings/mail-autoconfig/hotmail.co.uk
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/hotmail.co.uk
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/hotmail.com b/capplet/settings/mail-autoconfig/hotmail.com
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/hotmail.com
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/hotmail.de b/capplet/settings/mail-autoconfig/hotmail.de
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/hotmail.de
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/hotmail.fr b/capplet/settings/mail-autoconfig/hotmail.fr
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/hotmail.fr
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/hotmail.it b/capplet/settings/mail-autoconfig/hotmail.it
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/hotmail.it
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ic-net.or.jp b/capplet/settings/mail-autoconfig/ic-net.or.jp
new file mode 100644
index 0000000000..8a89a3ec01
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ic-net.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ic-net.or.jp">
+ <domain>ic-net.or.jp</domain>
+ <displayName>IC-NET</displayName>
+ <displayShortName>IC-NET</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.ic-net.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.ic-net.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/iiyama-catv.ne.jp b/capplet/settings/mail-autoconfig/iiyama-catv.ne.jp
new file mode 100644
index 0000000000..85f1a2725d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/iiyama-catv.ne.jp
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="iiyama-catv.ne.jp">
+ <domain>iiyama-catv.ne.jp</domain>
+ <displayName>ケーブルテレビiネット飯山</displayName>
+ <displayShortName>iネット飯山</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.iiyama-catv.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.iiyama-catv.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <authentication>none</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/imail.plala.or.jp b/capplet/settings/mail-autoconfig/imail.plala.or.jp
new file mode 100644
index 0000000000..d4c8897d22
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/imail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="imail.plala.or.jp">
+ <domain>imail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>imail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>imail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/inbox.lt b/capplet/settings/mail-autoconfig/inbox.lt
new file mode 100644
index 0000000000..c5f07659d0
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/inbox.lt
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="inbox.lt">
+ <domain>inbox.lt</domain>
+ <displayName>Inbox.lt</displayName>
+ <displayShortName>Inbox.lt</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.inbox.lt</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <pop3>
+ <leaveMessagesOnServer>true</leaveMessagesOnServer>
+ <daysToLeaveMessagesOnServer>999</daysToLeaveMessagesOnServer>
+ </pop3>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.inbox.lt</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/inbox.lv b/capplet/settings/mail-autoconfig/inbox.lv
new file mode 100644
index 0000000000..ac3b317315
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/inbox.lv
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="inbox.lv">
+ <domain>inbox.lv</domain>
+ <displayName>Inbox.lv</displayName>
+ <displayShortName>Inbox.lv</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.inbox.lv</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <pop3>
+ <leaveMessagesOnServer>true</leaveMessagesOnServer>
+ <daysToLeaveMessagesOnServer>999</daysToLeaveMessagesOnServer>
+ </pop3>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.inbox.lv</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/indigo.plala.or.jp b/capplet/settings/mail-autoconfig/indigo.plala.or.jp
new file mode 100644
index 0000000000..2d21e2d69e
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/indigo.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="indigo.plala.or.jp">
+ <domain>indigo.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>indigo.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>indigo.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/inet-shibata.or.jp b/capplet/settings/mail-autoconfig/inet-shibata.or.jp
new file mode 100644
index 0000000000..8e09a319c0
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/inet-shibata.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="inet-shibata.or.jp">
+ <domain>inet-shibata.or.jp</domain>
+ <displayName>インターネット新発田</displayName>
+ <displayShortName>INET-SHIBATA</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>po.inet-shibata.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>po.inet-shibata.or.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ivory.plala.or.jp b/capplet/settings/mail-autoconfig/ivory.plala.or.jp
new file mode 100644
index 0000000000..a3a0b40c79
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ivory.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ivory.plala.or.jp">
+ <domain>ivory.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>ivory.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>ivory.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/iwafune.ne.jp b/capplet/settings/mail-autoconfig/iwafune.ne.jp
new file mode 100644
index 0000000000..d45552f08b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/iwafune.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="iwafune.ne.jp">
+ <domain>iwafune.ne.jp</domain>
+ <displayName>インターネットいわふね</displayName>
+ <displayShortName>IWAFUNE</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>po.iwafune.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>po.iwafune.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/jade.plala.or.jp b/capplet/settings/mail-autoconfig/jade.plala.or.jp
new file mode 100644
index 0000000000..998ff0ce43
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/jade.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="jade.plala.or.jp">
+ <domain>jade.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>jade.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>jade.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/janis.or.jp b/capplet/settings/mail-autoconfig/janis.or.jp
new file mode 100644
index 0000000000..2092e32aaf
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/janis.or.jp
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="janis.or.jp">
+ <domain>janis.or.jp</domain>
+ <domain>azm.janis.or.jp</domain>
+ <domain>ckm.janis.or.jp</domain>
+ <domain>dhk.janis.or.jp</domain>
+ <domain>dia.janis.or.jp</domain>
+ <domain>grn.janis.or.jp</domain>
+ <domain>ina.janis.or.jp</domain>
+ <domain>kis.janis.or.jp</domain>
+ <domain>mhl.janis.or.jp</domain>
+ <domain>mid.janis.or.jp</domain>
+ <domain>mis.janis.or.jp</domain>
+ <domain>miy.janis.or.jp</domain>
+ <domain>ngn.janis.or.jp</domain>
+ <domain>nkn.janis.or.jp</domain>
+ <domain>osk.janis.or.jp</domain>
+ <domain>sas.janis.or.jp</domain>
+ <domain>sko.janis.or.jp</domain>
+ <domain>swk.janis.or.jp</domain>
+ <domain>tgk.janis.or.jp</domain>
+ <domain>tyt.janis.or.jp</domain>
+ <domain>ued.janis.or.jp</domain>
+ <domain>ytg.janis.or.jp</domain>
+ <displayName>JANIS</displayName>
+ <displayShortName>JANIS</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.%EMAILDOMAIN%</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.%EMAILDOMAIN%</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <authentication>none</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/jet.ne.jp b/capplet/settings/mail-autoconfig/jet.ne.jp
new file mode 100644
index 0000000000..dc2c794159
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/jet.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="jet.ne.jp">
+ <domain>jet.ne.jp</domain>
+ <displayName>JETINTERNET</displayName>
+ <displayShortName>JET</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>pop.jet.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.jet.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/jet.ne.jp imap b/capplet/settings/mail-autoconfig/jet.ne.jp imap
new file mode 100644
index 0000000000..2a8bdebbda
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/jet.ne.jp imap
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="jet.ne.jp">
+ <domain>jet.ne.jp</domain>
+ <displayName>JETINTERNET</displayName>
+ <displayShortName>JET</displayShortName>
+ <incomingServer type="imap">
+ <hostname>imap.jet.ne.jp</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.jet.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/jet.ne.jp pop b/capplet/settings/mail-autoconfig/jet.ne.jp pop
new file mode 100644
index 0000000000..dc2c794159
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/jet.ne.jp pop
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="jet.ne.jp">
+ <domain>jet.ne.jp</domain>
+ <displayName>JETINTERNET</displayName>
+ <displayShortName>JET</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>pop.jet.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.jet.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ji.jet.ne.jp b/capplet/settings/mail-autoconfig/ji.jet.ne.jp
new file mode 100644
index 0000000000..7c2dfa5b6a
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ji.jet.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ji.jet.ne.jp">
+ <domain>jet.ne.jp</domain>
+ <displayName>JETINTERNET</displayName>
+ <displayShortName>JET</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>pop02.jet.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp02.jet.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/jmail.plala.or.jp b/capplet/settings/mail-autoconfig/jmail.plala.or.jp
new file mode 100644
index 0000000000..a8c80b2026
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/jmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="jmail.plala.or.jp">
+ <domain>jmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>jmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>jmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/k1.wind.jp b/capplet/settings/mail-autoconfig/k1.wind.jp
new file mode 100644
index 0000000000..80bd91ee82
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/k1.wind.jp
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="kl.wind.ne.jp">
+ <domain>kl.wind.ne.jp</domain>
+ <domain>kl.wind.jp</domain>
+ <domain>kl.wind.co.jp</domain>
+ <domain>kl.gunmanet.or.jp</domain>
+ <domain>kl.gunmanet.ne.jp</domain>
+ <domain>k1.wind.ne.jp</domain>
+ <domain>k1.wind.jp</domain>
+ <domain>k1.gunmanet.or.jp</domain>
+ <domain>k1.gunmanet.ne.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>kl.wind.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>kl.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/khaki.plala.or.jp b/capplet/settings/mail-autoconfig/khaki.plala.or.jp
new file mode 100644
index 0000000000..09b562ce68
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/khaki.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="khaki.plala.or.jp">
+ <domain>khaki.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>khaki.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>khaki.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/kmail.plala.or.jp b/capplet/settings/mail-autoconfig/kmail.plala.or.jp
new file mode 100644
index 0000000000..7e88d5f88d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/kmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="kmail.plala.or.jp">
+ <domain>kmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>kmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>kmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/kokuyou.ne.jp b/capplet/settings/mail-autoconfig/kokuyou.ne.jp
new file mode 100644
index 0000000000..1a3e2a6830
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/kokuyou.ne.jp
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="kokuyou.ne.jp">
+ <domain>kokuyou.ne.jp</domain>
+ <displayName>長和町黒耀の里ゆいねっと</displayName>
+ <displayShortName>ゆいねっと</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.kokuyou.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.kokuyou.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <authentication>none</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/lapis.plala.or.jp b/capplet/settings/mail-autoconfig/lapis.plala.or.jp
new file mode 100644
index 0000000000..eb54651cb0
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/lapis.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="lapis.plala.or.jp">
+ <domain>lapis.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>lapis.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>lapis.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/laposte.net b/capplet/settings/mail-autoconfig/laposte.net
new file mode 100644
index 0000000000..e0b1bd45aa
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/laposte.net
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="laposte.net">
+ <domain>laposte.net</domain>
+
+ <displayName>LaPoste.net</displayName>
+ <displayShortName>LaPoste</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.laposte.net</hostname>
+ <port>143</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.laposte.net</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/lemon.plala.or.jp b/capplet/settings/mail-autoconfig/lemon.plala.or.jp
new file mode 100644
index 0000000000..26846d8f5c
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/lemon.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="lemon.plala.or.jp">
+ <domain>lemon.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>lemon.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>lemon.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/lilac.plala.or.jp b/capplet/settings/mail-autoconfig/lilac.plala.or.jp
new file mode 100644
index 0000000000..1283c0246e
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/lilac.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="lilac.plala.or.jp">
+ <domain>lilac.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>lilac.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>lilac.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/lime.plala.or.jp b/capplet/settings/mail-autoconfig/lime.plala.or.jp
new file mode 100644
index 0000000000..94e092548b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/lime.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="lime.plala.or.jp">
+ <domain>lime.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>lime.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>lime.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/live.co.jp b/capplet/settings/mail-autoconfig/live.co.jp
new file mode 100644
index 0000000000..35beb3fe57
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/live.co.jp
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/live.co.uk b/capplet/settings/mail-autoconfig/live.co.uk
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/live.co.uk
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/live.com b/capplet/settings/mail-autoconfig/live.com
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/live.com
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/live.de b/capplet/settings/mail-autoconfig/live.de
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/live.de
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/live.fr b/capplet/settings/mail-autoconfig/live.fr
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/live.fr
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/live.it b/capplet/settings/mail-autoconfig/live.it
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/live.it
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ma100.tiki.ne.jp b/capplet/settings/mail-autoconfig/ma100.tiki.ne.jp
new file mode 100644
index 0000000000..d87f89eda9
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ma100.tiki.ne.jp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="mx1.tiki.ne.jp">
+ <domain>mx1.tiki.ne.jp</domain>
+ <domain>mx2.et.tiki.ne.jp</domain>
+ <domain>mx2.tiki.ne.jp</domain>
+ <domain>mx2.wt.tiki.ne.jp</domain>
+ <domain>mx3.et.tiki.ne.jp</domain>
+ <domain>mx3.tiki.ne.jp</domain>
+ <domain>mx4.et.tiki.ne.jp</domain>
+ <domain>mx4.tiki.ne.jp</domain>
+ <domain>mx5.et.tiki.ne.jp</domain>
+ <domain>mx5.tiki.ne.jp</domain>
+ <domain>mx6.et.tiki.ne.jp</domain>
+ <domain>mx6.tiki.ne.jp</domain>
+ <domain>mx7.tiki.ne.jp</domain>
+ <domain>mx8.tiki.ne.jp</domain>
+ <domain>mx9.tiki.ne.jp</domain>
+ <domain>mx21.tiki.ne.jp</domain>
+ <domain>mx22.tiki.ne.jp</domain>
+ <domain>mx31.tiki.ne.jp</domain>
+ <domain>mx32.tiki.ne.jp</domain>
+ <domain>mx35.tiki.ne.jp</domain>
+ <domain>mx36.tiki.ne.jp</domain>
+ <domain>mx41.tiki.ne.jp</domain>
+ <domain>mx51.et.tiki.ne.jp</domain>
+ <domain>mx51.tiki.ne.jp</domain>
+ <domain>mx52.tiki.ne.jp</domain>
+ <domain>mx61.tiki.ne.jp</domain>
+ <domain>mx71.tiki.ne.jp</domain>
+ <domain>mx81.tiki.ne.jp</domain>
+ <domain>mx82.tiki.ne.jp</domain>
+ <domain>mx91.tiki.ne.jp</domain>
+ <domain>ma100.tiki.ne.jp</domain>
+ <displayName>TikiTikiインターネット</displayName>
+ <displayShortName>TikiTiki</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>%EMAILDOMAIN%</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp-auth.tiki.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/mac.com b/capplet/settings/mail-autoconfig/mac.com
new file mode 100644
index 0000000000..094425578b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/mac.com
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="me.com">
+ <domain>mac.com</domain>
+ <domain>me.com</domain>
+
+ <displayName>Apple MobileMe</displayName>
+ <displayShortName>Apple</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>mail.me.com</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.me.com</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/mahoroba.ne.jp b/capplet/settings/mail-autoconfig/mahoroba.ne.jp
new file mode 100644
index 0000000000..43679c1446
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/mahoroba.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="mahoroba.ne.jp">
+ <domain>mahoroba.ne.jp</domain>
+ <displayName>インターネットまほろば</displayName>
+ <displayShortName>まほろば</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.mahoroba.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.mahoroba.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/mail.gunmanet.jp b/capplet/settings/mail-autoconfig/mail.gunmanet.jp
new file mode 100644
index 0000000000..90bdf8ecf8
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/mail.gunmanet.jp
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="mail.wind.ne.jp">
+ <domain>mail.wind.ne.jp</domain>
+ <domain>mail.wind.jp</domain>
+ <domain>mail.wind.co.jp</domain>
+ <domain>mail.gunmanet.or.jp</domain>
+ <domain>mail.gunmanet.ne.jp</domain>
+ <domain>mail.gunmanet.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.wind.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/mail.iwafune.ne.jp b/capplet/settings/mail-autoconfig/mail.iwafune.ne.jp
new file mode 100644
index 0000000000..c6340450b9
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/mail.iwafune.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="mail.iwafune.ne.jp">
+ <domain>mail.iwafune.ne.jp</domain>
+ <displayName>インターネットいわふね</displayName>
+ <displayShortName>IWAFUNE</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.iwafune.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.iwafune.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/maroon.plala.or.jp b/capplet/settings/mail-autoconfig/maroon.plala.or.jp
new file mode 100644
index 0000000000..d2e00e2d0d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/maroon.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="maroon.plala.or.jp">
+ <domain>maroon.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>maroon.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>maroon.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/me.com b/capplet/settings/mail-autoconfig/me.com
new file mode 100644
index 0000000000..094425578b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/me.com
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="me.com">
+ <domain>mac.com</domain>
+ <domain>me.com</domain>
+
+ <displayName>Apple MobileMe</displayName>
+ <displayShortName>Apple</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>mail.me.com</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.me.com</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/minuet.plala.or.jp b/capplet/settings/mail-autoconfig/minuet.plala.or.jp
new file mode 100644
index 0000000000..af72bf2644
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/minuet.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="minuet.plala.or.jp">
+ <domain>minuet.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>minuet.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>minuet.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ml.murakami.ne.jp b/capplet/settings/mail-autoconfig/ml.murakami.ne.jp
new file mode 100644
index 0000000000..54d20ae5f9
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ml.murakami.ne.jp
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="ml.murakami.ne.jp">
+ <domain>ml.murakami.ne.jp</domain>
+
+ <displayName>インターネットいわふね</displayName>
+ <displayShortName>IWAFUNE</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>ml.murakami.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>ml.murakami.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ml.shibata.ne.jp b/capplet/settings/mail-autoconfig/ml.shibata.ne.jp
new file mode 100644
index 0000000000..a78346145b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ml.shibata.ne.jp
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="pop.shibata.ne.jp">
+ <domain>pop.shibata.ne.jp</domain>
+ <domain>ml.shibata.ne.jp</domain>
+ <displayName>インターネット新発田</displayName>
+ <displayShortName>INET-SHIBATA</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>%EMAILDOMAIN%</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>%EMAILDOMAIN%</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/mnet.ne.jp b/capplet/settings/mail-autoconfig/mnet.ne.jp
new file mode 100644
index 0000000000..24a19b4795
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/mnet.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="mnet.ne.jp">
+ <domain>mnet.ne.jp</domain>
+ <displayName>Mnet メール サービス</displayName>
+ <displayShortName>Mnetメール</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.mnet.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.mnet.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/mopera.net b/capplet/settings/mail-autoconfig/mopera.net
new file mode 100644
index 0000000000..9f416f21d9
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/mopera.net
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="mopera.net">
+ <domain>mopera.net</domain>
+ <displayName>mopera U</displayName>
+ <displayShortName>mopera U</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.mopera.net</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.mopera.net</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/msn.com b/capplet/settings/mail-autoconfig/msn.com
new file mode 100644
index 0000000000..b0007493df
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/msn.com
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="hotmail.com">
+ <domain>hotmail.com</domain>
+ <domain>hotmail.co.uk</domain>
+ <domain>hotmail.co.jp</domain>
+ <domain>hotmail.de</domain>
+ <domain>hotmail.fr</domain>
+ <domain>hotmail.it</domain>
+ <domain>live.com</domain>
+ <domain>live.co.uk</domain>
+ <domain>live.co.jp</domain>
+ <domain>live.de</domain>
+ <domain>live.fr</domain>
+ <domain>live.it</domain>
+ <domain>msn.com</domain>
+
+ <displayName>Microsoft Live Hotmail</displayName>
+ <displayShortName>Hotmail</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop3.live.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.live.com</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/navy.plala.or.jp b/capplet/settings/mail-autoconfig/navy.plala.or.jp
new file mode 100644
index 0000000000..3935216659
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/navy.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="navy.plala.or.jp">
+ <domain>navy.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>navy.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>navy.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/nifty.com b/capplet/settings/mail-autoconfig/nifty.com
new file mode 100644
index 0000000000..5b38d6240e
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/nifty.com
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="nifty.com">
+ <domain>nifty.com</domain>
+ <displayName>@nifty</displayName>
+ <displayShortName>@nifty</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>pop.nifty.com</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.nifty.com</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/nsat.jp b/capplet/settings/mail-autoconfig/nsat.jp
new file mode 100644
index 0000000000..32583b86d2
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/nsat.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="nsat.jp">
+ <domain>nsat.jp</domain>
+ <displayName>BBにいがた</displayName>
+ <displayShortName>NSAT</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.nsat.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.nsat.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/olive.plala.or.jp b/capplet/settings/mail-autoconfig/olive.plala.or.jp
new file mode 100644
index 0000000000..f85b0232ea
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/olive.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="olive.plala.or.jp">
+ <domain>olive.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>olive.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>olive.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/online.de b/capplet/settings/mail-autoconfig/online.de
new file mode 100644
index 0000000000..12c4b1e722
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/online.de
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="1und1.de">
+ <domain>online.de</domain>
+ <domain>onlinehome.de</domain>
+ <domain>sofortstart.de</domain>
+ <domain>sofort-start.de</domain>
+ <domain>sofortsurf.de</domain>
+ <domain>sofort-surf.de</domain>
+ <domain>go4more.de</domain>
+
+ <displayName>1&amp;1</displayName>
+ <displayShortName>1&amp;1</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.1und1.de</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <!-- also works: <port>143</port> <socketType>STARTTLS</socketType> -->
+ <authentication>plain</authentication>
+ <username>%EMAILADDRESS%</username>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.1und1.de</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <authentication>plain</authentication>
+ <username>%EMAILADDRESS%</username>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ <!--
+ http://hilfe-center.1und1.de/access/search/go.php?t=e698123
+ Kundenservice: +49-721-9600
+ Presse: +49-2602-961276 <presse@1und1.de>
+
+ Failed: SMTP server doesn't answer me, apparently works only within the ISP network
+ -->
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/opal.plala.or.jp b/capplet/settings/mail-autoconfig/opal.plala.or.jp
new file mode 100644
index 0000000000..168f59fd01
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/opal.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="opal.plala.or.jp">
+ <domain>opal.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>opal.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>opal.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/orange.fr b/capplet/settings/mail-autoconfig/orange.fr
new file mode 100644
index 0000000000..c40c39e1ce
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/orange.fr
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="francetelecom.fr">
+ <domain>wanadoo.fr</domain>
+ <domain>orange.fr</domain>
+
+ <displayName>France Telecom / Orange</displayName>
+ <displayShortName>Orange</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop.orange.fr</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.orange.fr</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/orange.plala.or.jp b/capplet/settings/mail-autoconfig/orange.plala.or.jp
new file mode 100644
index 0000000000..7baa803144
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/orange.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="orange.plala.or.jp">
+ <domain>orange.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>orange.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>orange.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/orchid.plala.or.jp b/capplet/settings/mail-autoconfig/orchid.plala.or.jp
new file mode 100644
index 0000000000..b5c8bc2130
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/orchid.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="orchid.plala.or.jp">
+ <domain>orchid.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>orchid.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>orchid.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/pal.kijimadaira.jp b/capplet/settings/mail-autoconfig/pal.kijimadaira.jp
new file mode 100644
index 0000000000..1b91b71189
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/pal.kijimadaira.jp
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="pal.kijimadaira.jp">
+ <domain>pal.kijimadaira.jp</domain>
+ <displayName>木島平村FTTH</displayName>
+ <displayShortName>木島平村FTTH</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.pal.kijimadaira.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.pal.kijimadaira.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <authentication>none</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/palette.plala.or.jp b/capplet/settings/mail-autoconfig/palette.plala.or.jp
new file mode 100644
index 0000000000..1a64ad6643
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/palette.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="palette.plala.or.jp">
+ <domain>palette.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>palette.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>palette.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/parabox.or.jp b/capplet/settings/mail-autoconfig/parabox.or.jp
new file mode 100644
index 0000000000..0c99974741
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/parabox.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="parabox.or.jp">
+ <domain>parabox.or.jp</domain>
+ <displayName>パラボックス</displayName>
+ <displayShortName>PARABOX</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>pop3.parabox.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.parabox.or.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/peach.plala.or.jp b/capplet/settings/mail-autoconfig/peach.plala.or.jp
new file mode 100644
index 0000000000..34c7a3df41
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/peach.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="peach.plala.or.jp">
+ <domain>peach.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>peach.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>peach.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/peoplepc.com b/capplet/settings/mail-autoconfig/peoplepc.com
new file mode 100644
index 0000000000..b9ec01d797
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/peoplepc.com
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="peoplepc.com">
+ <domain>peoplepc.com</domain>
+
+ <displayName>PeoplePC</displayName>
+ <displayShortName>PeoplePC</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.peoplepc.com</hostname>
+ <port>143</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtpauth.peoplepc.com</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/plum.plala.or.jp b/capplet/settings/mail-autoconfig/plum.plala.or.jp
new file mode 100644
index 0000000000..5696afd5ba
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/plum.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="plum.plala.or.jp">
+ <domain>plum.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>plum.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>plum.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/po.dcn.ne.jp b/capplet/settings/mail-autoconfig/po.dcn.ne.jp
new file mode 100644
index 0000000000..e91d2affc7
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/po.dcn.ne.jp
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="po.dcn.ne.jp">
+ <domain>po.dcn.ne.jp</domain>
+ <displayName>DCNインターネットサービス</displayName>
+ <displayShortName>DCN</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>po.dcn.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>po.dcn.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <authentication>none</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/po.wind.jp b/capplet/settings/mail-autoconfig/po.wind.jp
new file mode 100644
index 0000000000..96b2d0f81b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/po.wind.jp
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="po.wind.ne.jp">
+ <domain>po.wind.ne.jp</domain>
+ <domain>po.wind.jp</domain>
+ <domain>po.wind.co.jp</domain>
+ <domain>po.gunmanet.or.jp</domain>
+ <domain>po.gunmanet.ne.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>po.wind.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>po.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/polka.plala.or.jp b/capplet/settings/mail-autoconfig/polka.plala.or.jp
new file mode 100644
index 0000000000..087065eb7f
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/polka.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="polka.plala.or.jp">
+ <domain>polka.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>polka.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>polka.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/pop.shibata.ne.jp b/capplet/settings/mail-autoconfig/pop.shibata.ne.jp
new file mode 100644
index 0000000000..a78346145b
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/pop.shibata.ne.jp
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="pop.shibata.ne.jp">
+ <domain>pop.shibata.ne.jp</domain>
+ <domain>ml.shibata.ne.jp</domain>
+ <displayName>インターネット新発田</displayName>
+ <displayShortName>INET-SHIBATA</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>%EMAILDOMAIN%</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>%EMAILDOMAIN%</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/purple.plala.or.jp b/capplet/settings/mail-autoconfig/purple.plala.or.jp
new file mode 100644
index 0000000000..393d2ac841
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/purple.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="purple.plala.or.jp">
+ <domain>purple.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>purple.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>purple.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/rainbow.plala.or.jp b/capplet/settings/mail-autoconfig/rainbow.plala.or.jp
new file mode 100644
index 0000000000..3718ed4868
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/rainbow.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="rainbow.plala.or.jp">
+ <domain>rainbow.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>rainbow.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>rainbow.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/red.plala.or.jp b/capplet/settings/mail-autoconfig/red.plala.or.jp
new file mode 100644
index 0000000000..a42e8893ff
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/red.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="red.plala.or.jp">
+ <domain>red.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>red.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>red.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/rmail.plala.or.jp b/capplet/settings/mail-autoconfig/rmail.plala.or.jp
new file mode 100644
index 0000000000..7ecc703e01
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/rmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="rmail.plala.or.jp">
+ <domain>rmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>rmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>rmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/rondo.plala.or.jp b/capplet/settings/mail-autoconfig/rondo.plala.or.jp
new file mode 100644
index 0000000000..13616d3e41
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/rondo.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="rondo.plala.or.jp">
+ <domain>rondo.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>rondo.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>rondo.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/rose.plala.or.jp b/capplet/settings/mail-autoconfig/rose.plala.or.jp
new file mode 100644
index 0000000000..034f32cab4
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/rose.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="rose.plala.or.jp">
+ <domain>rose.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>rose.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>rose.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/rouge.plala.or.jp b/capplet/settings/mail-autoconfig/rouge.plala.or.jp
new file mode 100644
index 0000000000..cbbb43ce4d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/rouge.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="rouge.plala.or.jp">
+ <domain>rouge.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>rouge.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>rouge.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ruby.plala.or.jp b/capplet/settings/mail-autoconfig/ruby.plala.or.jp
new file mode 100644
index 0000000000..427be4b3cf
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ruby.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ruby.plala.or.jp">
+ <domain>ruby.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>ruby.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>ruby.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/sakunet.ne.jp b/capplet/settings/mail-autoconfig/sakunet.ne.jp
new file mode 100644
index 0000000000..695b7c70c2
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/sakunet.ne.jp
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="sakunet.ne.jp">
+ <domain>sakunet.ne.jp</domain>
+ <displayName>佐久ケーブルテレビ</displayName>
+ <displayShortName>Saku-Net</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.sakunet.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp.sakunet.ne.jp</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <authentication>none</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/sea.plala.or.jp b/capplet/settings/mail-autoconfig/sea.plala.or.jp
new file mode 100644
index 0000000000..ddde2c1767
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/sea.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="sea.plala.or.jp">
+ <domain>sea.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>sea.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>sea.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/sepia.plala.or.jp b/capplet/settings/mail-autoconfig/sepia.plala.or.jp
new file mode 100644
index 0000000000..1dce9e1cf4
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/sepia.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="sepia.plala.or.jp">
+ <domain>sepia.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>sepia.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>sepia.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/serenade.plala.or.jp b/capplet/settings/mail-autoconfig/serenade.plala.or.jp
new file mode 100644
index 0000000000..83bf35b7ba
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/serenade.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="serenade.plala.or.jp">
+ <domain>serenade.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>serenade.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>serenade.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/silk.plala.or.jp b/capplet/settings/mail-autoconfig/silk.plala.or.jp
new file mode 100644
index 0000000000..1aa4b81964
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/silk.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="silk.plala.or.jp">
+ <domain>silk.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>silk.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>silk.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/silver.plala.or.jp b/capplet/settings/mail-autoconfig/silver.plala.or.jp
new file mode 100644
index 0000000000..8ff9fd9ec8
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/silver.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="silver.plala.or.jp">
+ <domain>silver.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>silver.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>silver.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/sky.plala.or.jp b/capplet/settings/mail-autoconfig/sky.plala.or.jp
new file mode 100644
index 0000000000..9da6383b8c
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/sky.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="sky.plala.or.jp">
+ <domain>sky.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>sky.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>sky.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/smail.plala.or.jp b/capplet/settings/mail-autoconfig/smail.plala.or.jp
new file mode 100644
index 0000000000..1768bfd9bc
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/smail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="smail.plala.or.jp">
+ <domain>smail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>smail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/snow.plala.or.jp b/capplet/settings/mail-autoconfig/snow.plala.or.jp
new file mode 100644
index 0000000000..44267b99b1
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/snow.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="snow.plala.or.jp">
+ <domain>snow.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>snow.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>snow.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/so.wind.ne.jp b/capplet/settings/mail-autoconfig/so.wind.ne.jp
new file mode 100644
index 0000000000..50fd47ef1c
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/so.wind.ne.jp
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="so.wind.ne.jp">
+ <domain>so.wind.ne.jp</domain>
+ <domain>so.wind.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="imap">
+ <hostname>so.wind.ne.jp</hostname>
+ <port>143</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>so.wind.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/sonata.plala.or.jp b/capplet/settings/mail-autoconfig/sonata.plala.or.jp
new file mode 100644
index 0000000000..3834428fbd
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/sonata.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="sonata.plala.or.jp">
+ <domain>sonata.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>sonata.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>sonata.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/suite.plala.or.jp b/capplet/settings/mail-autoconfig/suite.plala.or.jp
new file mode 100644
index 0000000000..c8beac6b9c
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/suite.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="suite.plala.or.jp">
+ <domain>suite.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>suite.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>suite.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/symphony.plala.or.jp b/capplet/settings/mail-autoconfig/symphony.plala.or.jp
new file mode 100644
index 0000000000..311aa184ac
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/symphony.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="symphony.plala.or.jp">
+ <domain>symphony.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>symphony.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>symphony.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/t-online.de b/capplet/settings/mail-autoconfig/t-online.de
new file mode 100644
index 0000000000..a80ac4c316
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/t-online.de
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="t-online.de">
+ <domain>t-online.de</domain>
+
+ <displayName>T-Online email Paket</displayName>
+ <displayShortName>T-Online</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>popmail.t-online.de</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtpmail.t-online.de</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <!--<enableURL url="http://service.t-online.de/c/12/72/65/02/12726502.html">You need to enable POP access</enableURL>-->
+ <!--<enableURL url="http://hilfe.telekom.de/hsp/cms/content/HSP/de/3378/theme-45858870/theme-45858718/theme-45858716/theme-45858715/faq-45855229">Richten Sie Ihre Email-Adresse ein</enableURL>-->
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/t-online.de free b/capplet/settings/mail-autoconfig/t-online.de free
new file mode 100644
index 0000000000..a80ac4c316
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/t-online.de free
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="t-online.de">
+ <domain>t-online.de</domain>
+
+ <displayName>T-Online email Paket</displayName>
+ <displayShortName>T-Online</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>popmail.t-online.de</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtpmail.t-online.de</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <!--<enableURL url="http://service.t-online.de/c/12/72/65/02/12726502.html">You need to enable POP access</enableURL>-->
+ <!--<enableURL url="http://hilfe.telekom.de/hsp/cms/content/HSP/de/3378/theme-45858870/theme-45858718/theme-45858716/theme-45858715/faq-45855229">Richten Sie Ihre Email-Adresse ein</enableURL>-->
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/t-online.de imap ssl b/capplet/settings/mail-autoconfig/t-online.de imap ssl
new file mode 100644
index 0000000000..e2e5fb1a76
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/t-online.de imap ssl
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="t-online.de">
+ <domain>t-online.de</domain>
+
+ <displayName>T-Online email Paket</displayName>
+ <displayShortName>T-Online</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>secure-imap.t-online.de</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>securesmtp.googlemail.com</hostname>
+ <port>25</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>secure</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <enableURL url="http://service.t-online.de/c/12/72/65/02/12726502.html">You need to enable POP access</enableURL>
+ <!--<enableURL url="http://hilfe.telekom.de/hsp/cms/content/HSP/de/3378/theme-45858870/theme-45858718/theme-45858716/theme-45858715/faq-45855229">Richten Sie Ihre Email-Adresse ein</enableURL>-->
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/t-online.de pop ssl b/capplet/settings/mail-autoconfig/t-online.de pop ssl
new file mode 100644
index 0000000000..264ad0582c
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/t-online.de pop ssl
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="t-online.de">
+ <domain>t-online.de</domain>
+
+ <displayName>T-Online email Paket</displayName>
+ <displayShortName>T-Online</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>securepop.t-online.de</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>securesmtp.t-online.de</hostname>
+ <port>25</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ <!--<enableURL url="http://service.t-online.de/c/12/72/65/02/12726502.html">You need to enable POP access</enableURL>-->
+ <!--<enableURL url="http://hilfe.telekom.de/hsp/cms/content/HSP/de/3378/theme-45858870/theme-45858718/theme-45858716/theme-45858715/faq-45855229">Richten Sie Ihre Email-Adresse ein</enableURL>-->
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/taupe.plala.or.jp b/capplet/settings/mail-autoconfig/taupe.plala.or.jp
new file mode 100644
index 0000000000..cec35b2df5
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/taupe.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="taupe.plala.or.jp">
+ <domain>taupe.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>taupe.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>taupe.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/tiki.ne.jp b/capplet/settings/mail-autoconfig/tiki.ne.jp
new file mode 100644
index 0000000000..9e54488ead
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/tiki.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="tiki.ne.jp">
+ <domain>tiki.ne.jp</domain>
+ <displayName>TikiTikiインターネット</displayName>
+ <displayShortName>TikiTiki</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mx.tiki.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>smtp-auth.tiki.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/tmail.plala.or.jp b/capplet/settings/mail-autoconfig/tmail.plala.or.jp
new file mode 100644
index 0000000000..d138304dc9
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/tmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="tmail.plala.or.jp">
+ <domain>tmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>tmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>tmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/toccata.plala.or.jp b/capplet/settings/mail-autoconfig/toccata.plala.or.jp
new file mode 100644
index 0000000000..41281a7d6c
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/toccata.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="toccata.plala.or.jp">
+ <domain>toccata.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>toccata.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>toccata.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/topaz.plala.or.jp b/capplet/settings/mail-autoconfig/topaz.plala.or.jp
new file mode 100644
index 0000000000..185f1796de
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/topaz.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="topaz.plala.or.jp">
+ <domain>topaz.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>topaz.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>topaz.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/trio.plala.or.jp b/capplet/settings/mail-autoconfig/trio.plala.or.jp
new file mode 100644
index 0000000000..6d15fc17b4
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/trio.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="trio.plala.or.jp">
+ <domain>trio.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>trio.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>trio.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/umail.plala.or.jp b/capplet/settings/mail-autoconfig/umail.plala.or.jp
new file mode 100644
index 0000000000..2b4a0694a0
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/umail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="umail.plala.or.jp">
+ <domain>umail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>umail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>umail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/verizon.net b/capplet/settings/mail-autoconfig/verizon.net
new file mode 100644
index 0000000000..0c41d38243
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/verizon.net
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="verizon.net">
+ <domain>verizon.net</domain>
+
+ <displayName>Verizon Online</displayName>
+ <displayShortName>Verizon</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>incoming.verizon.com</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>outgoing.verizon.net</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/violet.plala.or.jp b/capplet/settings/mail-autoconfig/violet.plala.or.jp
new file mode 100644
index 0000000000..a1ce58b326
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/violet.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="violet.plala.or.jp">
+ <domain>violet.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>violet.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>violet.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/vm.aikis.or.jp b/capplet/settings/mail-autoconfig/vm.aikis.or.jp
new file mode 100644
index 0000000000..9c3caa70ec
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/vm.aikis.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="vm.aikis.or.jp">
+ <domain>vm.aikis.or.jp</domain>
+ <displayName>aikis</displayName>
+ <displayShortName>aikis</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>mail.aikis.or.jp</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>mail.aikis.or.jp</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/vmail.plala.or.jp b/capplet/settings/mail-autoconfig/vmail.plala.or.jp
new file mode 100644
index 0000000000..66358ef6a8
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/vmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="vmail.plala.or.jp">
+ <domain>vmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>vmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>vmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/vp.tiki.ne.jp b/capplet/settings/mail-autoconfig/vp.tiki.ne.jp
new file mode 100644
index 0000000000..378a9d3b24
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/vp.tiki.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="vp.tiki.ne.jp">
+ <domain>vp.tiki.ne.jp</domain>
+ <displayName>TikiTikiインターネット</displayName>
+ <displayShortName>TikiTiki</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>vp.tiki.ne.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>vs.tiki.ne.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILADDRESS%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/waltz.plala.or.jp b/capplet/settings/mail-autoconfig/waltz.plala.or.jp
new file mode 100644
index 0000000000..e7814cd235
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/waltz.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="waltz.plala.or.jp">
+ <domain>waltz.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>waltz.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>waltz.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/wanadoo.fr b/capplet/settings/mail-autoconfig/wanadoo.fr
new file mode 100644
index 0000000000..c40c39e1ce
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/wanadoo.fr
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="francetelecom.fr">
+ <domain>wanadoo.fr</domain>
+ <domain>orange.fr</domain>
+
+ <displayName>France Telecom / Orange</displayName>
+ <displayShortName>Orange</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop.orange.fr</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.orange.fr</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/wanadoo.fr imap b/capplet/settings/mail-autoconfig/wanadoo.fr imap
new file mode 100644
index 0000000000..5b138e48ce
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/wanadoo.fr imap
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="francetelecom.fr">
+ <domain>wanadoo.fr</domain>
+ <domain>orange.fr</domain>
+
+ <displayName>France Telecom / Orange</displayName>
+ <displayShortName>Orange</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.orange.fr</hostname>
+ <port>143</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.orange.fr</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/wanadoo.fr pop b/capplet/settings/mail-autoconfig/wanadoo.fr pop
new file mode 100644
index 0000000000..c40c39e1ce
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/wanadoo.fr pop
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="francetelecom.fr">
+ <domain>wanadoo.fr</domain>
+ <domain>orange.fr</domain>
+
+ <displayName>France Telecom / Orange</displayName>
+ <displayShortName>Orange</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop.orange.fr</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.orange.fr</hostname>
+ <port>25</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/wave.plala.or.jp b/capplet/settings/mail-autoconfig/wave.plala.or.jp
new file mode 100644
index 0000000000..611ab2a6b8
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/wave.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="wave.plala.or.jp">
+ <domain>wave.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>wave.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>wave.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/web.de b/capplet/settings/mail-autoconfig/web.de
new file mode 100644
index 0000000000..d3b357f16d
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/web.de
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="web.de">
+ <domain>web.de</domain>
+
+ <displayName>WEB.DE Freemail</displayName>
+ <displayShortName>Web.de</displayShortName>
+
+ <incomingServer type="imap">
+ <hostname>imap.web.de</hostname>
+ <port>993</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.web.de</hostname>
+ <port>587</port>
+ <socketType>STARTTLS</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/white.plala.or.jp b/capplet/settings/mail-autoconfig/white.plala.or.jp
new file mode 100644
index 0000000000..34f9a8af3f
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/white.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="white.plala.or.jp">
+ <domain>white.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>white.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>white.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/wine.plala.or.jp b/capplet/settings/mail-autoconfig/wine.plala.or.jp
new file mode 100644
index 0000000000..62f66db872
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/wine.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="wine.plala.or.jp">
+ <domain>wine.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>wine.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>wine.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/wmail.plala.or.jp b/capplet/settings/mail-autoconfig/wmail.plala.or.jp
new file mode 100644
index 0000000000..375c3010eb
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/wmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="wmail.plala.or.jp">
+ <domain>wmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>wmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>wmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/xmail.plala.or.jp b/capplet/settings/mail-autoconfig/xmail.plala.or.jp
new file mode 100644
index 0000000000..b8d7187ff5
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/xmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="xmail.plala.or.jp">
+ <domain>xmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>xmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>xmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/xp.wind.jp b/capplet/settings/mail-autoconfig/xp.wind.jp
new file mode 100644
index 0000000000..bed7569308
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/xp.wind.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="xp.wind.jp">
+ <domain>xp.wind.jp</domain>
+ <displayName>群馬インターネット</displayName>
+ <displayShortName>wind</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>xp.wind.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>xp.wind.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/xpost.plala.or.jp b/capplet/settings/mail-autoconfig/xpost.plala.or.jp
new file mode 100644
index 0000000000..7d175fd750
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/xpost.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="xpost.plala.or.jp">
+ <domain>xpost.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>xpost.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>xpost.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/xs4all.nl b/capplet/settings/mail-autoconfig/xs4all.nl
new file mode 100644
index 0000000000..b5c4289322
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/xs4all.nl
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="xs4all.nl">
+ <domain>xs4all.nl</domain>
+
+ <displayName>XS4All</displayName>
+ <displayShortName>XS4All</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pops.xs4all.nl</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtps.xs4all.nl</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/yahoo.com b/capplet/settings/mail-autoconfig/yahoo.com
new file mode 100644
index 0000000000..92e6d7a70a
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/yahoo.com
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<clientConfig>
+ <emailProvider id="yahoo.com">
+ <domain>yahoo.com</domain>
+ <domain>yahoo.de</domain>
+ <domain>yahoo.it</domain>
+ <domain>yahoo.fr</domain>
+ <domain>yahoo.co.uk</domain>
+ <domain>yahoo.com.br</domain>
+ <domain>ymail.com</domain>
+ <domain>rocketmail.com</domain>
+
+ <displayName>Yahoo! Mail</displayName>
+ <displayShortName>Yahoo</displayShortName>
+
+ <incomingServer type="pop3">
+ <hostname>pop.mail.yahoo.com</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+
+ <outgoingServer type="smtp">
+ <hostname>smtp.mail.yahoo.com</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ybb.ne.jp b/capplet/settings/mail-autoconfig/ybb.ne.jp
new file mode 100644
index 0000000000..935a59ba95
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ybb.ne.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ybb.ne.jp">
+ <domain>ybb.ne.jp</domain>
+ <displayName>Yahoo! BB</displayName>
+ <displayShortName>Yahoo! BB</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>ybbpop.mail.yahoo.co.jp</hostname>
+ <port>995</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>ybbsmtp.mail.yahoo.co.jp</hostname>
+ <port>465</port>
+ <socketType>SSL</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/yellow.plala.or.jp b/capplet/settings/mail-autoconfig/yellow.plala.or.jp
new file mode 100644
index 0000000000..4b71b37f72
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/yellow.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="yellow.plala.or.jp">
+ <domain>yellow.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>yellow.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>yellow.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ymail.plala.or.jp b/capplet/settings/mail-autoconfig/ymail.plala.or.jp
new file mode 100644
index 0000000000..0f367d6b4e
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ymail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ymail.plala.or.jp">
+ <domain>ymail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>ymail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>ymail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/ypost.plala.or.jp b/capplet/settings/mail-autoconfig/ypost.plala.or.jp
new file mode 100644
index 0000000000..9149c8d496
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/ypost.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="ypost.plala.or.jp">
+ <domain>ypost.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>ypost.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>ypost.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-autoconfig/zmail.plala.or.jp b/capplet/settings/mail-autoconfig/zmail.plala.or.jp
new file mode 100644
index 0000000000..02e73a9842
--- /dev/null
+++ b/capplet/settings/mail-autoconfig/zmail.plala.or.jp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<clientConfig>
+ <emailProvider id="zmail.plala.or.jp">
+ <domain>zmail.plala.or.jp</domain>
+ <displayName>ぷらら</displayName>
+ <displayShortName>ぷらら</displayShortName>
+ <incomingServer type="pop3">
+ <hostname>zmail.mail.plala.or.jp</hostname>
+ <port>110</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ </incomingServer>
+ <outgoingServer type="smtp">
+ <hostname>zmail.mail.plala.or.jp</hostname>
+ <port>587</port>
+ <socketType>plain</socketType>
+ <username>%EMAILLOCALPART%</username>
+ <authentication>plain</authentication>
+ <addThisServer>true</addThisServer>
+ <useGlobalPreferredServer>false</useGlobalPreferredServer>
+ </outgoingServer>
+ </emailProvider>
+</clientConfig>
diff --git a/capplet/settings/mail-guess-servers.c b/capplet/settings/mail-guess-servers.c
index 388f894e72..f94fbb90e6 100644
--- a/capplet/settings/mail-guess-servers.c
+++ b/capplet/settings/mail-guess-servers.c
@@ -42,6 +42,10 @@
#include <libxml/tree.h>
#include <libxml/xmlmemory.h>
+#include <libedataserver/e-proxy.h>
+
+#include <shell/e-shell.h>
+
#include "mail-guess-servers.h"
static gchar *
@@ -158,13 +162,13 @@ handle_outgoing (xmlNodePtr head, EmailProvider *provider)
}
}
-static void
-parse_msg (SoupMessage *msg, EmailProvider *provider)
+static gboolean
+parse_message (const gchar *msg, gint length, EmailProvider *provider)
{
xmlDocPtr doc;
xmlNodePtr node, top;
- doc = xmlReadMemory (msg->response_body->data, msg->response_body->length, "file.xml", NULL, 0);
+ doc = xmlReadMemory (msg, length, "file.xml", NULL, 0);
node = doc->children;
while (node) {
@@ -176,7 +180,7 @@ parse_msg (SoupMessage *msg, EmailProvider *provider)
if (!node) {
g_warning ("Incorrect data: ClientConfig not found ... Quitting\n");
- return;
+ return FALSE;
}
node = node->children;
@@ -189,7 +193,7 @@ parse_msg (SoupMessage *msg, EmailProvider *provider)
if (!node) {
g_warning ("Incorrect data: ClientConfig not found ... Quitting\n");
- return;
+ return FALSE;
}
top = node;
@@ -207,39 +211,70 @@ parse_msg (SoupMessage *msg, EmailProvider *provider)
}
xmlFreeDoc(doc);
+
+ return TRUE;
}
-gboolean
-mail_guess_servers(EmailProvider *provider)
+static gboolean
+parse_soup_message (SoupMessage *msg, EmailProvider *provider)
+{
+ return parse_message (msg->response_body->data, msg->response_body->length, provider);
+}
+
+static gboolean
+is_online (void)
+{
+ EShell *shell;
+
+ shell = e_shell_get_default ();
+ if (!shell) {
+ /* FIXME: do we always have a shell? What do we do if one
+ * hasn't been created yet? e_shell_get_default() won't create
+ * a shell; it will just return one that has been created
+ * before.
+ */
+ return FALSE;
+ }
+
+ return e_shell_get_online (shell);
+}
+
+static gboolean
+guess_when_online (EmailProvider *provider)
{
const gchar *cafile = NULL;
gchar *url;
- SoupURI *proxy = NULL, *parsed;
+ EProxy *proxy;
+ SoupURI *parsed;
SoupMessage *msg;
SoupSession *session;
- url = g_strdup_printf("%s/%s", "https://live.mozillamessaging.com/autoconfig", provider->domain);
+ proxy = e_proxy_new ();
+ e_proxy_setup_proxy (proxy);
+
+ url = g_strdup_printf("%s/%s", "http://api.gnome.org/evolution/autoconfig", provider->domain);
parsed = soup_uri_new (url);
soup_uri_free (parsed);
-
session = soup_session_sync_new_with_options (
SOUP_SESSION_SSL_CA_FILE, cafile,
SOUP_SESSION_USER_AGENT, "get ",
NULL);
- if (proxy) {
- g_object_set (G_OBJECT (session),
- SOUP_SESSION_PROXY_URI, proxy,
- NULL);
+ if (e_proxy_require_proxy_for_uri (proxy, url)) {
+ SoupURI *proxy_uri = e_proxy_peek_uri_for (proxy, url);
+/* fprintf (stderr, "URL '%s' requires a proxy: '%s'\n",
+ url, soup_uri_to_string (proxy_uri, FALSE)); */
+ g_object_set (session, SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
}
msg = get_url (session, url);
if (!msg)
return FALSE;
- parse_msg(msg, provider);
-
+ parse_soup_message (msg, provider);
+
+ g_object_unref (proxy);
g_object_unref (msg);
g_object_unref(session);
g_free(url);
@@ -248,6 +283,47 @@ mail_guess_servers(EmailProvider *provider)
}
+static gchar *
+get_filename_for_offline_autoconfig (const gchar *domain)
+{
+ return g_build_filename (EVOLUTION_PRIVDATADIR, "mail-autoconfig", domain, NULL);
+}
+
+static gboolean
+guess_when_offline (EmailProvider *provider)
+{
+ gchar *filename;
+ gchar *contents;
+ gsize length;
+ gboolean success;
+
+ if (!provider->domain || provider->domain[0] == 0)
+ return FALSE;
+
+ success = FALSE;
+
+ filename = get_filename_for_offline_autoconfig (provider->domain);
+ if (!g_file_get_contents (filename, &contents, &length, NULL)) /* NULL-GError */
+ goto out;
+
+ success = parse_message (contents, (gint) length, provider);
+
+out:
+ g_free (filename);
+ g_free (contents);
+
+ return success;
+}
+
+gboolean
+mail_guess_servers(EmailProvider *provider)
+{
+ if (is_online () && guess_when_online (provider))
+ return TRUE;
+ else
+ return guess_when_offline (provider);
+}
+
#ifdef TEST
gint
main (gint argc, gchar **argv)
diff --git a/composer/e-composer-actions.c b/composer/e-composer-actions.c
index 0c1a28b130..70f7c44ed9 100644
--- a/composer/e-composer-actions.c
+++ b/composer/e-composer-actions.c
@@ -420,14 +420,6 @@ static GtkToggleActionEntry toggle_entries[] = {
NULL, /* Handled by property bindings */
FALSE },
- { "view-from",
- NULL,
- N_("_From Field"),
- NULL,
- N_("Toggles whether the From chooser is displayed"),
- NULL, /* Handled by property bindings */
- FALSE },
-
{ "view-reply-to",
NULL,
N_("_Reply-To Field"),
diff --git a/composer/e-composer-actions.h b/composer/e-composer-actions.h
index 18c75eb3be..80147a8f24 100644
--- a/composer/e-composer-actions.h
+++ b/composer/e-composer-actions.h
@@ -57,8 +57,6 @@
E_COMPOSER_ACTION ((composer), "view-bcc")
#define E_COMPOSER_ACTION_VIEW_CC(composer) \
E_COMPOSER_ACTION ((composer), "view-cc")
-#define E_COMPOSER_ACTION_VIEW_FROM(composer) \
- E_COMPOSER_ACTION ((composer), "view-from")
#define E_COMPOSER_ACTION_VIEW_REPLY_TO(composer) \
E_COMPOSER_ACTION ((composer), "view-reply-to")
diff --git a/composer/e-composer-from-header.c b/composer/e-composer-from-header.c
index cade5bfed3..4dadfa7ac7 100644
--- a/composer/e-composer-from-header.c
+++ b/composer/e-composer-from-header.c
@@ -110,16 +110,6 @@ e_composer_from_header_new (const gchar *label)
"button", FALSE, NULL);
}
-EComposerHeader *
-e_composer_from_header_new_with_action (const gchar *label,
- const gchar *action)
-{
- return g_object_new (
- E_TYPE_COMPOSER_FROM_HEADER, "label", label,
- "button", FALSE, "addaction_text", action,
- "addaction", action != NULL, NULL);
-}
-
EAccountList *
e_composer_from_header_get_account_list (EComposerFromHeader *header)
{
diff --git a/composer/e-composer-from-header.h b/composer/e-composer-from-header.h
index 9f9a0e0f82..d2603bd664 100644
--- a/composer/e-composer-from-header.h
+++ b/composer/e-composer-from-header.h
@@ -63,9 +63,6 @@ struct _EComposerFromHeaderClass {
GType e_composer_from_header_get_type (void);
EComposerHeader * e_composer_from_header_new (const gchar *label);
-EComposerHeader * e_composer_from_header_new_with_action
- (const gchar *label,
- const gchar *action);
EAccountList * e_composer_from_header_get_account_list
(EComposerFromHeader *header);
void e_composer_from_header_set_account_list
diff --git a/composer/e-composer-header-table.c b/composer/e-composer-header-table.c
index f62dc376fd..b7f2e8e437 100644
--- a/composer/e-composer-header-table.c
+++ b/composer/e-composer-header-table.c
@@ -26,14 +26,13 @@
#include "e-util/gconf-bridge.h"
#include "widgets/misc/e-signature-combo-box.h"
+#include "e-msg-composer.h"
#include "e-composer-private.h"
#include "e-composer-from-header.h"
#include "e-composer-name-header.h"
#include "e-composer-post-header.h"
#include "e-composer-text-header.h"
-extern gboolean composer_lite;
-
#define E_COMPOSER_HEADER_TABLE_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), E_TYPE_COMPOSER_HEADER_TABLE, EComposerHeaderTablePrivate))
@@ -69,7 +68,6 @@ struct _EComposerHeaderTablePrivate {
GtkWidget *signature_label;
GtkWidget *signature_combo_box;
ENameSelector *name_selector;
- GtkHBox *actions_container;
};
static gpointer parent_class;
@@ -159,11 +157,7 @@ composer_header_table_notify_header (EComposerHeader *header,
{
GtkWidget *parent;
- if (composer_lite && strcmp (property_name, "destinations-to") == 0)
- parent = g_object_get_data (
- G_OBJECT (header->input_widget), "parent");
- else
- parent = gtk_widget_get_parent (header->input_widget);
+ parent = gtk_widget_get_parent (header->input_widget);
g_return_if_fail (E_IS_COMPOSER_HEADER_TABLE (parent));
g_object_notify (G_OBJECT (parent), property_name);
}
@@ -174,7 +168,7 @@ composer_header_table_notify_widget (GtkWidget *widget,
{
GtkWidget *parent;
- if (composer_lite) {
+ if (e_msg_composer_get_lite ()) {
parent = gtk_widget_get_parent (widget);
parent = g_object_get_data (G_OBJECT (parent), "pdata");
} else
@@ -282,6 +276,27 @@ skip_custom:
return new_destinations;
}
+static int
+count_from_accounts (EComposerHeaderTable *table)
+{
+ EComposerHeader *header;
+ EAccountComboBox *combo_box;
+
+ header = e_composer_header_table_get_header (table, E_COMPOSER_HEADER_FROM);
+ combo_box = E_ACCOUNT_COMBO_BOX (header->input_widget);
+
+ return e_account_combo_box_count_displayed_accounts (combo_box);
+}
+
+static gboolean
+from_header_should_be_visible (EComposerHeaderTable *table)
+{
+ int num_accounts;
+
+ num_accounts = count_from_accounts (table);
+ return (num_accounts > 1);
+}
+
static void
composer_header_table_setup_mail_headers (EComposerHeaderTable *table)
{
@@ -294,6 +309,8 @@ composer_header_table_setup_mail_headers (EComposerHeaderTable *table)
EComposerHeader *header;
const gchar *key;
guint binding_id;
+ gboolean sensitive;
+ gboolean visible;
binding_id = table->priv->gconf_bindings[ii];
header = e_composer_header_table_get_header (table, ii);
@@ -310,10 +327,6 @@ composer_header_table_setup_mail_headers (EComposerHeaderTable *table)
key = COMPOSER_GCONF_PREFIX "/show_mail_cc";
break;
- case E_COMPOSER_HEADER_FROM:
- key = COMPOSER_GCONF_PREFIX "/show_mail_from";
- break;
-
case E_COMPOSER_HEADER_REPLY_TO:
key = COMPOSER_GCONF_PREFIX "/show_mail_reply_to";
break;
@@ -324,22 +337,29 @@ composer_header_table_setup_mail_headers (EComposerHeaderTable *table)
}
switch (ii) {
+ case E_COMPOSER_HEADER_FROM:
+ sensitive = TRUE;
+ visible = from_header_should_be_visible (table);
+ break;
+
case E_COMPOSER_HEADER_BCC:
case E_COMPOSER_HEADER_CC:
- case E_COMPOSER_HEADER_FROM:
case E_COMPOSER_HEADER_REPLY_TO:
case E_COMPOSER_HEADER_SUBJECT:
case E_COMPOSER_HEADER_TO:
- e_composer_header_set_sensitive (header, TRUE);
- e_composer_header_set_visible (header, TRUE);
+ sensitive = TRUE;
+ visible = TRUE;
break;
default:
- e_composer_header_set_sensitive (header, FALSE);
- e_composer_header_set_visible (header, FALSE);
+ sensitive = FALSE;
+ visible = FALSE;
break;
}
+ e_composer_header_set_sensitive (header, sensitive);
+ e_composer_header_set_visible (header, visible);
+
if (key != NULL)
binding_id = gconf_bridge_bind_property (
bridge, key, G_OBJECT (header), "visible");
@@ -482,6 +502,17 @@ composer_header_table_from_changed_cb (EComposerHeaderTable *table)
composer_header_table_setup_mail_headers (table);
}
+static int
+get_row_padding (void)
+{
+ /* For small screens, make the header-table's rows be packed closely together */
+
+ if (e_msg_composer_get_lite ())
+ return 0;
+ else
+ return 3;
+}
+
static GObject *
composer_header_table_constructor (GType type,
guint n_construct_properties,
@@ -490,6 +521,7 @@ composer_header_table_constructor (GType type,
GObject *object;
EComposerHeaderTablePrivate *priv;
guint rows, ii;
+ int row_padding;
/* Chain up to parent's constructor() method. */
object = G_OBJECT_CLASS (parent_class)->constructor (
@@ -505,45 +537,18 @@ composer_header_table_constructor (GType type,
/* Use "ypadding" instead of "row-spacing" because some rows may
* be invisible and we don't want spacing around them. */
+ row_padding = get_row_padding ();
+
for (ii = 0; ii < rows; ii++) {
gtk_table_attach (
GTK_TABLE (object), priv->headers[ii]->title_widget,
- 0, 1, ii, ii + 1, GTK_FILL, GTK_FILL, 0, 3);
- if (composer_lite && ii == E_COMPOSER_HEADER_TO) {
- GtkWidget *box = gtk_hbox_new (FALSE, 0);
- g_object_set_data (
- G_OBJECT (priv->headers[ii]->input_widget),
- "parent", object);
- gtk_box_pack_start (
- GTK_BOX (box), priv->headers[ii]->input_widget,
- TRUE, TRUE, 3);
- gtk_box_pack_start (
- GTK_BOX (box),
- GTK_WIDGET (priv->actions_container),
- FALSE, FALSE, 0);
- gtk_widget_show (box);
- gtk_table_attach (
- GTK_TABLE (object), box, 1, 4, ii, ii + 1,
- GTK_FILL | GTK_EXPAND, 0, 0, 3);
-
- } else {
- gtk_table_attach (
- GTK_TABLE (object),
- priv->headers[ii]->input_widget, 1, 4,
- ii, ii + 1, GTK_FILL | GTK_EXPAND, 0, 0, 3);
- }
- if (composer_lite && priv->headers[ii]->action_widget) {
- /* Pack the widgets to the end. Helps formatting
- * when hiding the From field. */
- gtk_box_pack_end (
- GTK_BOX (priv->actions_container),
- priv->headers[ii]->action_widget,
- FALSE, FALSE, 6);
- }
+ 0, 1, ii, ii + 1, GTK_FILL, GTK_FILL, 0, row_padding);
+ gtk_table_attach (
+ GTK_TABLE (object),
+ priv->headers[ii]->input_widget, 1, 4,
+ ii, ii + 1, GTK_FILL | GTK_EXPAND, 0, 0, row_padding);
}
- if (composer_lite)
- gtk_widget_show_all ((GtkWidget *)priv->actions_container);
ii = E_COMPOSER_HEADER_FROM;
/* Leave room in the "From" row for signature stuff. */
@@ -561,13 +566,13 @@ composer_header_table_constructor (GType type,
priv->signature_combo_box, "visible");
/* Now add the signature stuff. */
- if (!composer_lite) {
+ if (!e_msg_composer_get_lite ()) {
gtk_table_attach (
GTK_TABLE (object), priv->signature_label,
- 2, 3, ii, ii + 1, 0, 0, 0, 3);
+ 2, 3, ii, ii + 1, 0, 0, 0, row_padding);
gtk_table_attach (
GTK_TABLE (object), priv->signature_combo_box,
- 3, 4, ii, ii + 1, composer_lite ? GTK_FILL: 0, 0, 0, 3);
+ 3, 4, ii, ii + 1, e_msg_composer_get_lite () ? GTK_FILL: 0, 0, 0, row_padding);
} else {
GtkWidget *box = gtk_hbox_new (FALSE, 0);
@@ -580,7 +585,7 @@ composer_header_table_constructor (GType type,
g_object_set_data (G_OBJECT (box), "pdata", object);
gtk_table_attach (
GTK_TABLE (object), box,
- 3, 4, ii, ii + 1, GTK_FILL, 0, 0, 3);
+ 3, 4, ii, ii + 1, GTK_FILL, 0, 0, row_padding);
gtk_widget_hide (box);
}
@@ -954,9 +959,7 @@ composer_header_table_init (EComposerHeaderTable *table)
name_selector = e_name_selector_new ();
table->priv->name_selector = name_selector;
- table->priv->actions_container = (GtkHBox *)gtk_hbox_new (FALSE, 6);
-
- header = e_composer_from_header_new_with_action (_("Fr_om:"), _("From"));
+ header = e_composer_from_header_new (_("Fr_om:"));
composer_header_table_bind_header ("account", "changed", header);
composer_header_table_bind_header ("account-list", "refreshed", header);
composer_header_table_bind_header ("account-name", "changed", header);
@@ -965,24 +968,21 @@ composer_header_table_init (EComposerHeaderTable *table)
composer_header_table_from_changed_cb), table);
table->priv->headers[E_COMPOSER_HEADER_FROM] = header;
- header = e_composer_text_header_new_label (_("_Reply-To:"), "");
+ header = e_composer_text_header_new_label (_("_Reply-To:"));
composer_header_table_bind_header ("reply-to", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_REPLY_TO] = header;
- header = e_composer_name_header_new_with_label (
- _("_To:"), name_selector);
+ header = e_composer_name_header_new (_("_To:"), name_selector);
e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_TO);
composer_header_table_bind_header ("destinations-to", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_TO] = header;
- header = e_composer_name_header_new_with_action (
- _("_Cc:"), _("CC"), name_selector);
+ header = e_composer_name_header_new (_("_Cc:"), name_selector);
e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_CC);
composer_header_table_bind_header ("destinations-cc", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_CC] = header;
- header = e_composer_name_header_new_with_action (
- _("_Bcc:"), _("BCC"), name_selector);
+ header = e_composer_name_header_new (_("_Bcc:"), name_selector);
e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_BCC);
composer_header_table_bind_header ("destinations-bcc", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_BCC] = header;
@@ -991,7 +991,7 @@ composer_header_table_init (EComposerHeaderTable *table)
composer_header_table_bind_header ("post-to", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_POST_TO] = header;
- header = e_composer_text_header_new_label (_("S_ubject:"), NULL);
+ header = e_composer_text_header_new_label (_("S_ubject:"));
composer_header_table_bind_header ("subject", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_SUBJECT] = header;
diff --git a/composer/e-composer-header.c b/composer/e-composer-header.c
index 2a6942acd8..4c968d43d8 100644
--- a/composer/e-composer-header.c
+++ b/composer/e-composer-header.c
@@ -32,8 +32,6 @@ enum {
PROP_0,
PROP_BUTTON,
PROP_LABEL,
- PROP_ADDACTION,
- PROP_ADDACTION_TEXT,
PROP_SENSITIVE,
PROP_VISIBLE
};
@@ -47,8 +45,6 @@ enum {
struct _EComposerHeaderPrivate {
gchar *label;
gboolean button;
- gchar *addaction_text;
- gboolean addaction; /*For Add button.*/
GtkWidget *action_label;
GtkWidget *add_icon;
@@ -71,15 +67,6 @@ composer_header_button_clicked_cb (GtkButton *button,
g_signal_emit (header, signal_ids[CLICKED], 0);
}
-static void
-composer_header_addaction_clicked_cb (GtkButton *button,
- EComposerHeader *header)
-{
- gboolean show = !e_composer_header_get_visible(header);
-
- e_composer_header_set_visible (header, show);
-}
-
static GObject *
composer_header_constructor (GType type,
guint n_construct_properties,
@@ -88,6 +75,7 @@ composer_header_constructor (GType type,
GObject *object;
GtkWidget *widget;
EComposerHeader *header;
+ GtkWidget *label;
/* Chain up to parent's constructor() method. */
object = G_OBJECT_CLASS (parent_class)->constructor (
@@ -102,51 +90,16 @@ composer_header_constructor (GType type,
widget, "clicked",
G_CALLBACK (composer_header_button_clicked_cb),
header);
+ label = gtk_bin_get_child (GTK_BIN (widget));
} else {
widget = gtk_label_new_with_mnemonic (header->priv->label);
- gtk_label_set_mnemonic_widget (
- GTK_LABEL (widget), header->input_widget);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (widget), header->input_widget);
+ label = widget;
}
+ gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
+
header->priv->action_label = NULL;
- if (header->priv->addaction) {
- GtkWidget *box, *tmp;
- gchar *str;
-
- header->priv->action_label = gtk_label_new (NULL);
- header->action_widget = gtk_button_new ();
- box = gtk_hbox_new (FALSE, 0);
- tmp = gtk_image_new_from_stock (
- GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON);
- header->priv->add_icon = tmp;
- gtk_box_pack_start((GtkBox *)box, tmp, FALSE, FALSE, 3);
- tmp = gtk_image_new_from_stock (
- GTK_STOCK_REMOVE, GTK_ICON_SIZE_BUTTON);
- header->priv->remove_icon = tmp;
- gtk_box_pack_start((GtkBox *)box, tmp, FALSE, FALSE, 3);
- tmp = gtk_label_new (NULL);
- str = g_strdup_printf (
- "<span>%s %s</span>", _("Show"),
- header->priv->addaction_text);
- gtk_label_set_markup((GtkLabel *)tmp, str);
- g_free (str);
- header->priv->show_label = tmp;
- gtk_box_pack_start((GtkBox *)box, tmp, FALSE, FALSE, 3);
- tmp = gtk_label_new (NULL);
- str = g_strdup_printf (
- "<span>%s %s</span>", _("Hide"),
- header->priv->addaction_text);
- gtk_label_set_markup((GtkLabel *)tmp, str);
- header->priv->hide_label = tmp;
- gtk_box_pack_start((GtkBox *)box, tmp, FALSE, FALSE, 3);
-
- gtk_container_add((GtkContainer *)header->action_widget, box);
- gtk_widget_show_all(header->action_widget);
- g_signal_connect (
- header->action_widget, "clicked",
- G_CALLBACK (composer_header_addaction_clicked_cb),
- header);
- }
header->title_widget = g_object_ref_sink (widget);
@@ -171,14 +124,6 @@ composer_header_set_property (GObject *object,
priv->button = g_value_get_boolean (value);
return;
- case PROP_ADDACTION: /* construct only */
- priv->addaction = g_value_get_boolean (value);
- return;
-
- case PROP_ADDACTION_TEXT:/* construct only */
- priv->addaction_text = g_value_dup_string (value);
- return;
-
case PROP_LABEL: /* construct only */
priv->label = g_value_dup_string (value);
return;
@@ -199,15 +144,6 @@ composer_header_set_property (GObject *object,
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
-void
-e_composer_header_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- composer_header_set_property (object, property_id, value, pspec);
-}
-
static void
composer_header_get_property (GObject *object,
guint property_id,
@@ -223,15 +159,6 @@ composer_header_get_property (GObject *object,
g_value_set_boolean (value, priv->button);
return;
- case PROP_ADDACTION: /* construct only */
- g_value_set_boolean (value, priv->button);
- return;
-
- case PROP_ADDACTION_TEXT: /* construct only */
- g_value_take_string (
- value, priv->addaction_text);
- return;
-
case PROP_LABEL: /* construct only */
g_value_take_string (
value, e_composer_header_get_label (
@@ -300,28 +227,6 @@ composer_header_class_init (EComposerHeaderClass *class)
g_object_class_install_property (
object_class,
- PROP_ADDACTION,
- g_param_spec_boolean (
- "addaction",
- NULL,
- NULL,
- FALSE,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (
- object_class,
- PROP_ADDACTION_TEXT,
- g_param_spec_string (
- "addaction_text",
- NULL,
- NULL,
- NULL,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (
- object_class,
PROP_LABEL,
g_param_spec_string (
"label",
diff --git a/composer/e-composer-header.h b/composer/e-composer-header.h
index 33600900e9..971b55968c 100644
--- a/composer/e-composer-header.h
+++ b/composer/e-composer-header.h
@@ -49,7 +49,6 @@ struct _EComposerHeader {
GObject parent;
GtkWidget *title_widget;
GtkWidget *input_widget;
- GtkWidget *action_widget;
EComposerHeaderPrivate *priv;
};
@@ -69,8 +68,6 @@ void e_composer_header_set_sensitive (EComposerHeader *header,
gboolean e_composer_header_get_visible (EComposerHeader *header);
void e_composer_header_set_visible (EComposerHeader *header,
gboolean visible);
-void e_composer_header_set_property (GObject *object, guint property_id,
- const GValue *value, GParamSpec *pspec);
void e_composer_header_set_title_tooltip
(EComposerHeader *header,
const gchar *tooltip);
diff --git a/composer/e-composer-name-header.c b/composer/e-composer-name-header.c
index 658e7cc292..39e079a790 100644
--- a/composer/e-composer-name-header.c
+++ b/composer/e-composer-name-header.c
@@ -292,33 +292,11 @@ e_composer_name_header_new (const gchar *label,
{
g_return_val_if_fail (E_IS_NAME_SELECTOR (name_selector), NULL);
- return g_object_new (
- E_TYPE_COMPOSER_NAME_HEADER, "label", label,
- "button", !e_msg_composer_get_lite(), "name-selector", name_selector, NULL);
-}
-
-EComposerHeader *
-e_composer_name_header_new_with_label (const gchar *label,
- ENameSelector *name_selector)
-{
- return g_object_new (
- E_TYPE_COMPOSER_NAME_HEADER, "label", label,
- "button", !e_msg_composer_get_lite(), "name-selector", name_selector,
- "addaction", FALSE, "visible", TRUE, NULL);
-}
-
-EComposerHeader *
-e_composer_name_header_new_with_action (const gchar *label,
- const gchar *action_label,
- ENameSelector *name_selector)
-{
- g_return_val_if_fail (E_IS_NAME_SELECTOR (name_selector), NULL);
-
- return g_object_new (
- E_TYPE_COMPOSER_NAME_HEADER, "label", label,
- "button", !e_msg_composer_get_lite(), "name-selector", name_selector,
- "addaction_text", action_label,
- "addaction", action_label != NULL, NULL);
+ return g_object_new (E_TYPE_COMPOSER_NAME_HEADER,
+ "label", label,
+ "button", TRUE,
+ "name-selector", name_selector,
+ NULL);
}
ENameSelector *
diff --git a/composer/e-composer-name-header.h b/composer/e-composer-name-header.h
index 100d6c8980..785f7d11e8 100644
--- a/composer/e-composer-name-header.h
+++ b/composer/e-composer-name-header.h
@@ -62,14 +62,6 @@ struct _EComposerNameHeaderClass {
GType e_composer_name_header_get_type (void);
EComposerHeader * e_composer_name_header_new (const gchar *label,
ENameSelector *name_selector);
-/*No button. Just a label.*/
-EComposerHeader * e_composer_name_header_new_with_label (const gchar *label,
- ENameSelector *name_selector);
-
-/*No button. Label with a Link button for show/hide.*/
-EComposerHeader * e_composer_name_header_new_with_action (const gchar *label,
- const gchar *action,
- ENameSelector *name_selector);
ENameSelector * e_composer_name_header_get_name_selector
(EComposerNameHeader *header);
diff --git a/composer/e-composer-private.c b/composer/e-composer-private.c
index b48f9b6cdf..5fbf7cdb86 100644
--- a/composer/e-composer-private.c
+++ b/composer/e-composer-private.c
@@ -145,9 +145,18 @@ e_composer_private_constructed (EMsgComposer *composer)
html = gtkhtml_editor_get_html (editor);
ui_manager = gtkhtml_editor_get_ui_manager (editor);
- if (composer->lite) {
+ if (e_msg_composer_get_lite ()) {
+#if 0
+ /* In the lite composer, for small screens, we are not ready yet
+ * to hide the menubar. It still has useful items like the ones
+ * to show/hide the various header fields, plus the security options.
+ *
+ * When we move those options out of the menu and into the composer's
+ * toplevel, we can probably get rid of the menu.
+ */
widget = gtkhtml_editor_get_managed_widget (editor, "/main-menu");
gtk_widget_hide (widget);
+#endif
widget = gtkhtml_editor_get_managed_widget (editor, "/main-toolbar");
gtk_toolbar_set_style (GTK_TOOLBAR (widget), GTK_TOOLBAR_BOTH_HORIZ);
gtk_widget_hide (widget);
@@ -243,8 +252,8 @@ e_composer_private_constructed (EMsgComposer *composer)
widget = e_composer_header_table_new ();
gtk_container_set_border_width (GTK_CONTAINER (widget), 6);
gtk_box_pack_start (GTK_BOX (editor->vbox), widget, FALSE, FALSE, 0);
- if (composer->lite)
- gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 0);
+ if (e_msg_composer_get_lite ())
+ gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 1);
else
gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 2);
@@ -253,7 +262,7 @@ e_composer_private_constructed (EMsgComposer *composer)
/* Construct the attachment paned. */
- if (composer->lite) {
+ if (e_msg_composer_get_lite ()) {
e_attachment_paned_set_default_height (75); /* short attachment bar for Anjal */
e_attachment_icon_view_set_default_icon_size (GTK_ICON_SIZE_BUTTON);
}
@@ -262,7 +271,7 @@ e_composer_private_constructed (EMsgComposer *composer)
priv->attachment_paned = g_object_ref (widget);
gtk_widget_show (widget);
- if (composer->lite) {
+ if (e_msg_composer_get_lite ()) {
GtkWidget *tmp, *tmp1, *tmp_box, *container;
GtkWidget *combo;
@@ -351,10 +360,6 @@ e_composer_private_constructed (EMsgComposer *composer)
action = ACTION (VIEW_CC);
break;
- case E_COMPOSER_HEADER_FROM:
- action = ACTION (VIEW_FROM);
- break;
-
case E_COMPOSER_HEADER_REPLY_TO:
action = ACTION (VIEW_REPLY_TO);
break;
diff --git a/composer/e-composer-text-header.c b/composer/e-composer-text-header.c
index e765237a2d..efbf141cea 100644
--- a/composer/e-composer-text-header.c
+++ b/composer/e-composer-text-header.c
@@ -108,23 +108,21 @@ e_composer_text_header_get_type (void)
}
EComposerHeader *
-e_composer_text_header_new_label (const gchar *label, const gchar *action_label)
+e_composer_text_header_new_label (const gchar *label)
{
- return g_object_new (
- E_TYPE_COMPOSER_TEXT_HEADER, "label", label,
- "button", FALSE, "addaction", action_label && *action_label,
- "addaction_text", action_label,
- "visible", action_label == NULL, NULL);
+ return g_object_new (E_TYPE_COMPOSER_TEXT_HEADER,
+ "label", label,
+ "button", FALSE,
+ NULL);
}
EComposerHeader *
-e_composer_text_header_new_button (const gchar *label, const gchar *action_label)
+e_composer_text_header_new_button (const gchar *label)
{
- return g_object_new (
- E_TYPE_COMPOSER_TEXT_HEADER, "label", label,
- "button", TRUE, "addaction", action_label != NULL,
- "addaction_text", action_label,
- "visible", action_label == NULL, NULL);
+ return g_object_new (E_TYPE_COMPOSER_TEXT_HEADER,
+ "label", label,
+ "button", TRUE,
+ NULL);
}
const gchar *
diff --git a/composer/e-composer-text-header.h b/composer/e-composer-text-header.h
index 74fb86f9b0..278b2b1116 100644
--- a/composer/e-composer-text-header.h
+++ b/composer/e-composer-text-header.h
@@ -59,10 +59,10 @@ struct _EComposerTextHeaderClass {
GType e_composer_text_header_get_type (void);
EComposerHeader *
-e_composer_text_header_new_label (const gchar *label, const gchar *action_label);
+e_composer_text_header_new_label (const gchar *label);
EComposerHeader *
-e_composer_text_header_new_button (const gchar *label, const gchar *action_label);
+e_composer_text_header_new_button (const gchar *label);
const gchar * e_composer_text_header_get_text (EComposerTextHeader *header);
void e_composer_text_header_set_text (EComposerTextHeader *header,
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index cf10578af0..469327214a 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -85,8 +85,6 @@ enum {
LAST_SIGNAL
};
-gboolean composer_lite = FALSE;
-
static gpointer parent_class;
static guint signals[LAST_SIGNAL];
@@ -381,7 +379,7 @@ add_inlined_images (EMsgComposer *composer, CamelMultipart *multipart)
}
/* These functions builds a CamelMimeMessage for the message that the user has
- * composed in `composer'.
+ * composed in 'composer'.
*/
static void
@@ -1657,6 +1655,7 @@ msg_composer_constructed (GObject *object)
g_signal_connect (object, "delete-event",
G_CALLBACK (msg_composer_delete_event_cb), NULL);
+ e_shell_adapt_window_size (shell, GTK_WINDOW (composer));
e_shell_watch_window (shell, GTK_WINDOW (object));
/* Restore Persistent State */
@@ -1677,10 +1676,6 @@ msg_composer_constructed (GObject *object)
/* Honor User Preferences */
- active = e_shell_settings_get_boolean (
- shell_settings, "composer-format-html");
- gtkhtml_editor_set_html_mode (GTKHTML_EDITOR (composer), active);
-
action = GTK_TOGGLE_ACTION (ACTION (REQUEST_READ_RECEIPT));
active = e_shell_settings_get_boolean (
shell_settings, "composer-request-receipt");
@@ -2150,8 +2145,14 @@ msg_composer_class_init (EMsgComposerClass *class)
static void
msg_composer_init (EMsgComposer *composer)
{
- composer->lite = composer_lite;
+ EShell *shell = e_shell_get_default ();
+
composer->priv = E_MSG_COMPOSER_GET_PRIVATE (composer);
+
+ if (e_shell_get_express_mode (shell)) {
+ GtkWindow *window = e_shell_get_active_window(shell);
+ gtk_window_set_transient_for (GTK_WINDOW(composer), window);
+ }
}
GType
@@ -2197,29 +2198,21 @@ e_msg_composer_new (void)
"html", e_web_view_new (), NULL);
}
-void
-e_msg_composer_set_lite (void)
-{
- composer_lite = TRUE;
-}
-
+/**
+ * e_msg_composer_get_lite:
+ *
+ * Used within the composer to see if it should be made suitable for small
+ * screens.
+ *
+ * Return value: whether the surrounding #EShell is in small screen mode.
+ */
gboolean
e_msg_composer_get_lite (void)
{
- return composer_lite;
-}
-
-EMsgComposer *
-e_msg_composer_lite_new (void)
-{
- EMsgComposer *composer;
-
- /* Init lite-composer for ever for the session */
- composer_lite = TRUE;
-
- composer = e_msg_composer_new ();
+ EShell *shell;
- return composer;
+ shell = e_shell_get_default ();
+ return e_shell_get_small_screen_mode (shell);
}
EFocusTracker *
diff --git a/composer/e-msg-composer.h b/composer/e-msg-composer.h
index c55237ce52..884b077862 100644
--- a/composer/e-msg-composer.h
+++ b/composer/e-msg-composer.h
@@ -63,7 +63,6 @@ typedef struct _EMsgComposerPrivate EMsgComposerPrivate;
struct _EMsgComposer {
GtkhtmlEditor parent;
EMsgComposerPrivate *priv;
- gboolean lite;
};
struct _EMsgComposerClass {
@@ -72,9 +71,7 @@ struct _EMsgComposerClass {
GType e_msg_composer_get_type (void);
EMsgComposer * e_msg_composer_new (void);
-void e_msg_composer_set_lite (void);
gboolean e_msg_composer_get_lite (void);
-EMsgComposer * e_msg_composer_lite_new (void);
EMsgComposer * e_msg_composer_new_with_message (CamelMimeMessage *msg);
EMsgComposer * e_msg_composer_new_from_url (const gchar *url);
EMsgComposer * e_msg_composer_new_redirect (CamelMimeMessage *message,
diff --git a/composer/evolution-composer.ui b/composer/evolution-composer.ui
index 3b1fee7a72..f283d35dcb 100644
--- a/composer/evolution-composer.ui
+++ b/composer/evolution-composer.ui
@@ -22,7 +22,6 @@
</placeholder>
<placeholder name='pre-insert-menu'>
<menu action='view-menu'>
- <menuitem action='view-from'/>
<menuitem action='view-reply-to'/>
<menuitem action='view-cc'/>
<menuitem action='view-bcc'/>
diff --git a/composer/mail-composer.error.xml b/composer/mail-composer.error.xml
index b9789c23e0..b9d1a3891d 100644
--- a/composer/mail-composer.error.xml
+++ b/composer/mail-composer.error.xml
@@ -2,13 +2,13 @@
<error-list domain="mail-composer">
<error id="no-attach" type="error" modal="true">
- <_primary>You cannot attach the file `{0}' to this message.</_primary>
+ <_primary>You cannot attach the file n{0}' to this message.</_primary>
<!--For Translators: '{1}' is the exception description,describing why the file could not be attached to the message -->
<secondary>{1}</secondary>
</error>
<error id="attach-notfile" type="warning">
- <_primary>The file `{0}' is not a regular file and cannot be sent in a message.</_primary>
+ <_primary>The file '{0}' is not a regular file and cannot be sent in a message.</_primary>
</error>
<error id="attach-nomessages" type="error">
diff --git a/configure.ac b/configure.ac
index ba30c04103..5aea6ea15c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -69,6 +69,7 @@ AS_COMPILER_FLAGS(WARNING_FLAGS,
-DGDK_PIXBUF_DISABLE_DEPRECATED
-DGDK_DISABLE_DEPRECATED
-DGTK_DISABLE_DEPRECATED
+ -DEDS_DISABLE_DEPRECATED
-DG_DISABLE_SINGLE_INCLUDES
-DGTK_DISABLE_SINGLE_INCLUDES
-Wall -Wextra
@@ -1175,10 +1176,21 @@ if test "$enable_sens" = yes; then
AC_SUBST(HAVE_SENS)
AC_SUBST(SENS_LIBS)
fi
-
AM_CONDITIONAL([ENABLE_WINDOWS_SENS], [test "$enable_sens" = yes])
dnl ******************************
+dnl Enable ConnMan support ?
+dnl ******************************
+AC_ARG_ENABLE([connman],
+ [AS_HELP_STRING([--enable-connman],
+ [enable ConnMan support (default=no)])],
+ [enable_connman=$enableval],[enable_connman=no])
+if test "x$enable_nm$enable_connman" = "xyesyes"; then
+ AC_MSG_ERROR([It is not possible to enable both ConnMan and NetworkManager])
+fi
+AM_CONDITIONAL([ENABLE_CONNMAN], [test "$enable_connman" = yes])
+
+dnl ******************************
dnl Camel Flags
dnl ******************************
EVO_SET_COMPILE_FLAGS(CAMEL, camel-provider-1.2, $MANUAL_NSS_CFLAGS, $MOXILLA_NSS_CFLAGS)
@@ -1732,6 +1744,7 @@ modules/addressbook/Makefile
modules/calendar/Makefile
modules/mail/Makefile
modules/network-manager/Makefile
+modules/connman/Makefile
modules/plugin-lib/Makefile
modules/plugin-mono/Makefile
modules/plugin-python/Makefile
@@ -1783,6 +1796,7 @@ smime/gui/Makefile
sounds/Makefile
capplet/Makefile
capplet/settings/Makefile
+capplet/settings/mail-autoconfig/Makefile
evolution-zip
evolution-calendar.pc
evolution-mail.pc
@@ -1804,6 +1818,7 @@ echo "
LDAP support: $msg_ldap
NetworkManager: $enable_nm
Windows SENS: $enable_sens
+ ConnMan: $enable_connman
Pilot conduits: $msg_pilot
Libnotify: $HAVE_LIBNOTIFY
Kerberos 5: $msg_krb5
diff --git a/data/evolution-alarm-notify.desktop.in.in b/data/evolution-alarm-notify.desktop.in.in
index ba15661d3e..4f382a4a36 100644
--- a/data/evolution-alarm-notify.desktop.in.in
+++ b/data/evolution-alarm-notify.desktop.in.in
@@ -7,7 +7,8 @@ Exec=@PRIVLIBEXECDIR@/evolution-alarm-notify
Terminal=false
Type=Application
Categories=
-OnlyShowIn=GNOME;XFCE;
+OnlyShowIn=GNOME;XFCE;MOBLIN;
+X-Moblin-Priority=Low
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=evolution
X-GNOME-Bugzilla-Component=calendar
diff --git a/doc/reference/shell/eshell-docs.sgml b/doc/reference/shell/eshell-docs.sgml
index 99948f5007..2556a58320 100644
--- a/doc/reference/shell/eshell-docs.sgml
+++ b/doc/reference/shell/eshell-docs.sgml
@@ -37,7 +37,6 @@
<xi:include href="xml/e-html-utils.xml"/>
<xi:include href="xml/e-icon-factory.xml"/>
<xi:include href="xml/e-logger.xml"/>
- <xi:include href="xml/e-module.xml"/>
<xi:include href="xml/e-print.xml"/>
<xi:include href="xml/e-selection.xml"/>
<xi:include href="xml/e-signature.xml"/>
@@ -49,6 +48,13 @@
</chapter>
<chapter>
+ <title>Extending Evolution</title>
+ <xi:include href="xml/e-module.xml"/>
+ <xi:include href="xml/e-extension.xml"/>
+ <xi:include href="xml/e-extensible.xml"/>
+ </chapter>
+
+ <chapter>
<title>Actions</title>
<xi:include href="xml/shell-actions.xml"/>
<xi:include href="xml/action-groups.xml"/>
diff --git a/doc/reference/shell/eshell-sections.txt b/doc/reference/shell/eshell-sections.txt
index be5171cb3d..c176e23ee3 100644
--- a/doc/reference/shell/eshell-sections.txt
+++ b/doc/reference/shell/eshell-sections.txt
@@ -70,12 +70,11 @@ EShellBackendPrivate
<TITLE>EShellContent</TITLE>
EShellContent
e_shell_content_new
-e_shell_content_get_searchbar
+e_shell_content_set_searchbar
e_shell_content_check_state
e_shell_content_get_shell_view
e_shell_content_get_view_id
e_shell_content_set_view_id
-e_shell_content_get_search_name
e_shell_content_run_advanced_search_dialog
e_shell_content_run_edit_searches_dialog
e_shell_content_run_save_search_dialog
@@ -98,11 +97,13 @@ EShellContentPrivate
EShellSearchbar
e_shell_searchbar_new
e_shell_searchbar_get_shell_view
+e_shell_searchbar_get_express_mode
+e_shell_searchbar_set_express_mode
e_shell_searchbar_get_filter_combo_box
e_shell_searchbar_get_filter_visible
e_shell_searchbar_set_filter_visible
-e_shell_searchbar_get_label_visible
-e_shell_searchbar_set_label_visible
+e_shell_searchbar_get_labels_visible
+e_shell_searchbar_set_labels_visible
e_shell_searchbar_get_search_hint
e_shell_searchbar_set_search_hint
e_shell_searchbar_get_search_option
@@ -260,6 +261,8 @@ e_shell_view_set_view_id
e_shell_view_is_active
e_shell_view_get_page_num
e_shell_view_set_page_num
+e_shell_view_get_searchbar
+e_shell_view_get_search_name
e_shell_view_get_search_rule
e_shell_view_set_search_rule
e_shell_view_get_search_query
@@ -441,6 +444,41 @@ e_dialog_combo_box_get
</SECTION>
<SECTION>
+<FILE>e-extensible</FILE>
+<TITLE>EExtensible</TITLE>
+EExtensible
+e_extensible_load_extensions
+e_extensible_list_extensions
+<SUBSECTION Standard>
+E_EXTENSIBLE
+E_IS_EXTENSIBLE
+E_TYPE_EXTENSIBLE
+E_EXTENSIBLE_INTERFACE
+E_IS_EXTENSIBLE_INTERFACE
+E_EXTENSIBLE_GET_INTERFACE
+EExtensibleInterface
+e_extensible_get_type
+</SECTION>
+
+<SECTION>
+<FILE>e-extension</FILE>
+<TITLE>EExtension</TITLE>
+EExtension
+e_extension_get_extensible
+<SUBSECTION Standard>
+E_EXTENSION
+E_IS_EXTENSION
+E_TYPE_EXTENSION
+E_EXTENSION_CLASS
+E_IS_EXTENSION_CLASS
+E_EXTENSION_GET_CLASS
+EExtensionClass
+e_extension_get_type
+<SUBSECTION Private>
+EExtensionPrivate
+</SECTION>
+
+<SECTION>
<FILE>e-html-utils</FILE>
<TITLE>Text to HTML Conversion</TITLE>
E_TEXT_TO_HTML_PRE
@@ -489,7 +527,7 @@ ELoggerPrivate
<SECTION>
<FILE>e-module</FILE>
-<TITLE>Generic Module Loader</TITLE>
+<TITLE>EModule</TITLE>
EModule
e_module_new
e_module_get_filename
@@ -610,6 +648,7 @@ e_run_signature_script
<FILE>e-util</FILE>
<TITLE>Miscellaneous Utilities</TITLE>
e_get_user_data_dir
+e_get_gnome2_user_dir
e_get_accels_filename
e_show_uri
e_display_help
diff --git a/doc/reference/shell/eshell.types b/doc/reference/shell/eshell.types
index ae84ef0905..b5c41aecf6 100644
--- a/doc/reference/shell/eshell.types
+++ b/doc/reference/shell/eshell.types
@@ -1,4 +1,6 @@
e_bit_array_get_type
+e_extensible_get_type
+e_extension_get_type
e_logger_get_type
e_module_get_type
e_signature_get_type
diff --git a/doc/reference/shell/tmpl/Evolution-DataServer.sgml b/doc/reference/shell/tmpl/Evolution-DataServer.sgml
deleted file mode 100644
index 181b45f301..0000000000
--- a/doc/reference/shell/tmpl/Evolution-DataServer.sgml
+++ /dev/null
@@ -1,1139 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-Evolution-DataServer
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### MACRO ORBIT_IDL_SERIAL ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO ORBIT_DECL_GNOME_Evolution_DataServer_Config ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Config__freekids ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### TYPEDEF GNOME_Evolution_DataServer_Config ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### VARIABLE GNOME_Evolution_DataServer_Config__classid ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_0 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_1 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_2 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_3 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_4 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_5 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_6 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_7 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_8 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_9 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_10 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_11 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_12 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_13 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_14 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_15 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_16 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_17 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_18 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_19 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_Config ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO ORBIT_DECL_GNOME_Evolution_DataServer_InterfaceCheck ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck__freekids ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### TYPEDEF GNOME_Evolution_DataServer_InterfaceCheck ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### VARIABLE GNOME_Evolution_DataServer_InterfaceCheck__classid ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_0 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_1 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_2 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_3 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_4 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_5 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_6 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_7 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_8 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_9 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_10 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_11 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_12 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_13 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_14 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_15 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_16 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_17 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_18 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_19 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_InterfaceCheck ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO ORBIT_DECL_GNOME_Evolution_DataServer_Logging ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging__freekids ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### TYPEDEF GNOME_Evolution_DataServer_Logging ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### VARIABLE GNOME_Evolution_DataServer_Logging__classid ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_0 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_1 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_2 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_3 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_4 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_5 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_6 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_7 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_8 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_9 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_10 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_11 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_12 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_13 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_14 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_15 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_16 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_17 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_18 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_19 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_Logging ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### ENUM GNOME_Evolution_DataServer_Logging_Level ##### -->
-<para>
-
-</para>
-
-@GNOME_Evolution_DataServer_Logging_Error:
-@GNOME_Evolution_DataServer_Logging_Critical:
-@GNOME_Evolution_DataServer_Logging_Warning:
-@GNOME_Evolution_DataServer_Logging_Message:
-@GNOME_Evolution_DataServer_Logging_Info:
-@GNOME_Evolution_DataServer_Logging_Debug:
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_0 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_1 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_2 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_3 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_4 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_5 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_6 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_7 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_8 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_9 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_10 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_11 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_12 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_13 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_14 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_15 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_16 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_17 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_18 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_19 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_Logging_Level ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### TYPEDEF GNOME_Evolution_DataServer_Logging_LogEvent ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_0 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_1 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_2 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_3 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_4 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_5 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_6 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_7 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_8 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_9 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_10 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_11 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_12 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_13 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_14 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_15 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_16 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_17 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_18 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_19 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_Logging_LogEvent ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_LogEvent__alloc ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_LogEvent__freekids ##### -->
-<para>
-
-</para>
-
-@m:
-@d:
-
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Config__epv ##### -->
-<para>
-
-</para>
-
-@_private:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Config__vepv ##### -->
-<para>
-
-</para>
-
-@_base_epv:
-@GNOME_Evolution_DataServer_Config_epv:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Config ##### -->
-<para>
-
-</para>
-
-@_private:
-@vepv:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_Config__init ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_Config__fini ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_InterfaceCheck__epv ##### -->
-<para>
-
-</para>
-
-@_private:
-@_get_interfaceVersion:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_InterfaceCheck__vepv ##### -->
-<para>
-
-</para>
-
-@_base_epv:
-@Bonobo_Unknown_epv:
-@GNOME_Evolution_DataServer_InterfaceCheck_epv:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_InterfaceCheck ##### -->
-<para>
-
-</para>
-
-@_private:
-@vepv:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_InterfaceCheck__init ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_InterfaceCheck__fini ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Logging__epv ##### -->
-<para>
-
-</para>
-
-@_private:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Logging__vepv ##### -->
-<para>
-
-</para>
-
-@_base_epv:
-@Bonobo_Unknown_epv:
-@Bonobo_EventSource_epv:
-@GNOME_Evolution_DataServer_Logging_epv:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Logging ##### -->
-<para>
-
-</para>
-
-@_private:
-@vepv:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_Logging__init ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_Logging__fini ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck_ref ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck_unref ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck_queryInterface ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION GNOME_Evolution_DataServer_InterfaceCheck__get_interfaceVersion ##### -->
-<para>
-
-</para>
-
-@_obj:
-@ev:
-@Returns:
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_ref ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_unref ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_queryInterface ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_addListener ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_addListenerWithMask ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_removeListener ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_unImplemented ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_unImplemented2 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Config_IMETHODS_LEN ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Config__imethods ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck_IMETHODS_LEN ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_IMETHODS_LEN ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging__imethods ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### ENUM GNOME_Evolution_DataServer_InterfaceCheck__imethods_index ##### -->
-<para>
-
-</para>
-
-@GNOME_Evolution_DataServer_InterfaceCheck__get_interfaceVersion__imethods_index:
-
-<!-- ##### MACRO ORBIT_IMETHODS_INDEX ##### -->
-<para>
-
-</para>
-
-@m:
-
-
diff --git a/doc/reference/shell/tmpl/e-account-utils.sgml b/doc/reference/shell/tmpl/e-account-utils.sgml
index 2a2a841eb4..c0bdd3aebf 100644
--- a/doc/reference/shell/tmpl/e-account-utils.sgml
+++ b/doc/reference/shell/tmpl/e-account-utils.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-Mail Account Functions
+Mail Accounts
<!-- ##### SECTION Short_Description ##### -->
diff --git a/doc/reference/shell/tmpl/e-activity-handler.sgml b/doc/reference/shell/tmpl/e-activity-handler.sgml
deleted file mode 100644
index 09d417213d..0000000000
--- a/doc/reference/shell/tmpl/e-activity-handler.sgml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-EActivityHandler
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
diff --git a/doc/reference/shell/tmpl/e-categories-config.sgml b/doc/reference/shell/tmpl/e-categories-config.sgml
index 3e08620ee6..29b36220c2 100644
--- a/doc/reference/shell/tmpl/e-categories-config.sgml
+++ b/doc/reference/shell/tmpl/e-categories-config.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-Category Functions
+Categories
<!-- ##### SECTION Short_Description ##### -->
diff --git a/doc/reference/shell/tmpl/e-config-upgrade.sgml b/doc/reference/shell/tmpl/e-config-upgrade.sgml
deleted file mode 100644
index 0ef774b3dd..0000000000
--- a/doc/reference/shell/tmpl/e-config-upgrade.sgml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-e-config-upgrade
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### FUNCTION e_config_upgrade ##### -->
-<para>
-
-</para>
-
-@major:
-@minor:
-@revision:
-@Returns:
-
-
diff --git a/doc/reference/shell/tmpl/e-datetime-format.sgml b/doc/reference/shell/tmpl/e-datetime-format.sgml
index c2f38c48f0..7dee839d75 100644
--- a/doc/reference/shell/tmpl/e-datetime-format.sgml
+++ b/doc/reference/shell/tmpl/e-datetime-format.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-Date and Time Formatting Functions
+Date and Time Formatting
<!-- ##### SECTION Short_Description ##### -->
diff --git a/doc/reference/shell/tmpl/e-dialog-utils.sgml b/doc/reference/shell/tmpl/e-dialog-utils.sgml
index 8ae4004470..69dd22d7bb 100644
--- a/doc/reference/shell/tmpl/e-dialog-utils.sgml
+++ b/doc/reference/shell/tmpl/e-dialog-utils.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-Dialog Window Functions (Legacy)
+Dialog Utilities (Legacy)
<!-- ##### SECTION Short_Description ##### -->
diff --git a/doc/reference/shell/tmpl/e-shell-marshal.sgml b/doc/reference/shell/tmpl/e-extensible.sgml
index 27f0c92196..333d8238fc 100644
--- a/doc/reference/shell/tmpl/e-shell-marshal.sgml
+++ b/doc/reference/shell/tmpl/e-extensible.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-e-shell-marshal
+EExtensible
<!-- ##### SECTION Short_Description ##### -->
@@ -9,33 +9,38 @@ e-shell-marshal
</para>
-
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
-
<!-- ##### SECTION Stability_Level ##### -->
-<!-- ##### FUNCTION e_shell_marshal_BOOLEAN__STRING ##### -->
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT EExtensible ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION e_extensible_load_extensions ##### -->
<para>
</para>
-@closure:
-@return_value:
-@n_param_values:
-@param_values:
-@invocation_hint:
-@marshal_data:
+@extensible:
-<!-- ##### MACRO e_shell_marshal_BOOL__STRING ##### -->
+<!-- ##### FUNCTION e_extensible_list_extensions ##### -->
<para>
</para>
+@extensible:
+@extension_type:
+@Returns:
diff --git a/doc/reference/shell/tmpl/e-test-shell-view.sgml b/doc/reference/shell/tmpl/e-extension.sgml
index 2c9c912c20..49a3a13b70 100644
--- a/doc/reference/shell/tmpl/e-test-shell-view.sgml
+++ b/doc/reference/shell/tmpl/e-extension.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-ETestShellView
+EExtension
<!-- ##### SECTION Short_Description ##### -->
@@ -9,33 +9,34 @@ ETestShellView
</para>
-
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
-
<!-- ##### SECTION Stability_Level ##### -->
-<!-- ##### VARIABLE e_test_shell_view_type ##### -->
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT EExtension ##### -->
<para>
</para>
-<!-- ##### STRUCT ETestShellViewPrivate ##### -->
+<!-- ##### ARG EExtension:extensible ##### -->
<para>
</para>
-
-<!-- ##### STRUCT ETestShellView ##### -->
+<!-- ##### FUNCTION e_extension_get_extensible ##### -->
<para>
</para>
-@parent:
-@priv:
+@extension:
+@Returns:
+
diff --git a/doc/reference/shell/tmpl/e-icon-factory.sgml b/doc/reference/shell/tmpl/e-icon-factory.sgml
index 7591260841..ddd24e66ba 100644
--- a/doc/reference/shell/tmpl/e-icon-factory.sgml
+++ b/doc/reference/shell/tmpl/e-icon-factory.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-Icon Functions (Legacy)
+Icon Utilities (Legacy)
<!-- ##### SECTION Short_Description ##### -->
diff --git a/doc/reference/shell/tmpl/e-module.sgml b/doc/reference/shell/tmpl/e-module.sgml
index 0f67b1c4dd..eedd4e4477 100644
--- a/doc/reference/shell/tmpl/e-module.sgml
+++ b/doc/reference/shell/tmpl/e-module.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-Generic Module Loader
+EModule
<!-- ##### SECTION Short_Description ##### -->
diff --git a/doc/reference/shell/tmpl/e-print.sgml b/doc/reference/shell/tmpl/e-print.sgml
index 3654eaeb80..81a9bb6864 100644
--- a/doc/reference/shell/tmpl/e-print.sgml
+++ b/doc/reference/shell/tmpl/e-print.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-Printing Functions
+Printing
<!-- ##### SECTION Short_Description ##### -->
diff --git a/doc/reference/shell/tmpl/e-shell-backend.sgml b/doc/reference/shell/tmpl/e-shell-backend.sgml
index 8fdd37fb62..20df66ac75 100644
--- a/doc/reference/shell/tmpl/e-shell-backend.sgml
+++ b/doc/reference/shell/tmpl/e-shell-backend.sgml
@@ -34,11 +34,6 @@ EShellBackend
@eshellbackend: the object which received the signal.
@arg1:
-<!-- ##### ARG EShellBackend:shell ##### -->
-<para>
-
-</para>
-
<!-- ##### FUNCTION e_shell_backend_compare ##### -->
<para>
diff --git a/doc/reference/shell/tmpl/e-shell-common.sgml b/doc/reference/shell/tmpl/e-shell-common.sgml
deleted file mode 100644
index 1932480643..0000000000
--- a/doc/reference/shell/tmpl/e-shell-common.sgml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-e-shell-common
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
diff --git a/doc/reference/shell/tmpl/e-shell-constants.sgml b/doc/reference/shell/tmpl/e-shell-constants.sgml
deleted file mode 100644
index 74b95024a8..0000000000
--- a/doc/reference/shell/tmpl/e-shell-constants.sgml
+++ /dev/null
@@ -1,140 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-e-shell-constants
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### MACRO E_SHELL_URI_PREFIX ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SHELL_URI_PREFIX_LEN ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SHELL_DEFAULTURI_PREFIX ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SHELL_DEFAULTURI_PREFIX_LEN ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SHELL_MINI_ICON_SUFFIX ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SHELL_MINI_ICON_SUFFIX_LEN ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SHELL_ICON_SIZE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SHELL_MINI_ICON_SIZE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_PATH_SEPARATOR ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_PATH_SEPARATOR_S ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_LOCAL_STORAGE_NAME ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SUMMARY_STORAGE_NAME ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_SUMMARY_URI ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_LOCAL_INBOX_URI ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_LOCAL_CONTACTS_URI ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_LOCAL_CALENDAR_URI ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO E_LOCAL_TASKS_URI ##### -->
-<para>
-
-</para>
-
-
-
diff --git a/doc/reference/shell/tmpl/e-shell-content.sgml b/doc/reference/shell/tmpl/e-shell-content.sgml
index 0236e7366e..b6e1bde70a 100644
--- a/doc/reference/shell/tmpl/e-shell-content.sgml
+++ b/doc/reference/shell/tmpl/e-shell-content.sgml
@@ -40,13 +40,13 @@ EShellContent
@Returns:
-<!-- ##### FUNCTION e_shell_content_get_searchbar ##### -->
+<!-- ##### FUNCTION e_shell_content_set_searchbar ##### -->
<para>
</para>
@shell_content:
-@Returns:
+@searchbar:
<!-- ##### FUNCTION e_shell_content_check_state ##### -->
@@ -85,15 +85,6 @@ EShellContent
@view_id:
-<!-- ##### FUNCTION e_shell_content_get_search_name ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-
<!-- ##### FUNCTION e_shell_content_run_advanced_search_dialog ##### -->
<para>
diff --git a/doc/reference/shell/tmpl/e-shell-module.sgml b/doc/reference/shell/tmpl/e-shell-module.sgml
deleted file mode 100644
index f74773c9da..0000000000
--- a/doc/reference/shell/tmpl/e-shell-module.sgml
+++ /dev/null
@@ -1,180 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-EShellModule
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT EShellModule ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SIGNAL EShellModule::activity-added ##### -->
-<para>
-
-</para>
-
-@eshellmodule: the object which received the signal.
-@arg1:
-
-<!-- ##### ARG EShellModule:filename ##### -->
-<para>
-
-</para>
-
-<!-- ##### ARG EShellModule:shell ##### -->
-<para>
-
-</para>
-
-<!-- ##### STRUCT EShellModuleInfo ##### -->
-<para>
-
-</para>
-
-@name:
-@aliases:
-@schemes:
-@sort_order:
-@start:
-@is_busy:
-@shutdown:
-@migrate:
-
-<!-- ##### FUNCTION e_shell_module_new ##### -->
-<para>
-
-</para>
-
-@shell:
-@filename:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_compare ##### -->
-<para>
-
-</para>
-
-@shell_module_a:
-@shell_module_b:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_get_config_dir ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_get_data_dir ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_get_filename ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_get_shell ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_get_shell_view_type ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_add_activity ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@activity:
-
-
-<!-- ##### FUNCTION e_shell_module_start ##### -->
-<para>
-
-</para>
-
-@shell_module:
-
-
-<!-- ##### FUNCTION e_shell_module_is_busy ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_shutdown ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_migrate ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@major:
-@minor:
-@micro:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION e_shell_module_set_info ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@info:
-@shell_view_type:
-
-
diff --git a/doc/reference/shell/tmpl/e-shell-searchbar.sgml b/doc/reference/shell/tmpl/e-shell-searchbar.sgml
index 98162ab37a..fd575ae949 100644
--- a/doc/reference/shell/tmpl/e-shell-searchbar.sgml
+++ b/doc/reference/shell/tmpl/e-shell-searchbar.sgml
@@ -26,6 +26,11 @@ EShellSearchbar
</para>
+<!-- ##### ARG EShellSearchbar:express-mode ##### -->
+<para>
+
+</para>
+
<!-- ##### ARG EShellSearchbar:filter-combo-box ##### -->
<para>
@@ -36,7 +41,7 @@ EShellSearchbar
</para>
-<!-- ##### ARG EShellSearchbar:label-visible ##### -->
+<!-- ##### ARG EShellSearchbar:labels-visible ##### -->
<para>
</para>
@@ -99,6 +104,24 @@ EShellSearchbar
@Returns:
+<!-- ##### FUNCTION e_shell_searchbar_get_express_mode ##### -->
+<para>
+
+</para>
+
+@searchbar:
+@Returns:
+
+
+<!-- ##### FUNCTION e_shell_searchbar_set_express_mode ##### -->
+<para>
+
+</para>
+
+@searchbar:
+@express_mode:
+
+
<!-- ##### FUNCTION e_shell_searchbar_get_filter_combo_box ##### -->
<para>
@@ -126,7 +149,7 @@ EShellSearchbar
@filter_visible:
-<!-- ##### FUNCTION e_shell_searchbar_get_label_visible ##### -->
+<!-- ##### FUNCTION e_shell_searchbar_get_labels_visible ##### -->
<para>
</para>
@@ -135,13 +158,13 @@ EShellSearchbar
@Returns:
-<!-- ##### FUNCTION e_shell_searchbar_set_label_visible ##### -->
+<!-- ##### FUNCTION e_shell_searchbar_set_labels_visible ##### -->
<para>
</para>
@searchbar:
-@label_visible:
+@labels_visible:
<!-- ##### FUNCTION e_shell_searchbar_get_search_hint ##### -->
diff --git a/doc/reference/shell/tmpl/e-shell-view.sgml b/doc/reference/shell/tmpl/e-shell-view.sgml
index 003ede945c..fb901aefad 100644
--- a/doc/reference/shell/tmpl/e-shell-view.sgml
+++ b/doc/reference/shell/tmpl/e-shell-view.sgml
@@ -136,6 +136,8 @@ EShellView
@new_shell_content:
@new_shell_sidebar:
@new_shell_taskbar:
+@construct_searchbar:
+@get_search_name:
@toggled:
@clear_search:
@custom_search:
@@ -223,6 +225,24 @@ EShellView
@page_num:
+<!-- ##### FUNCTION e_shell_view_get_searchbar ##### -->
+<para>
+
+</para>
+
+@shell_view:
+@Returns:
+
+
+<!-- ##### FUNCTION e_shell_view_get_search_name ##### -->
+<para>
+
+</para>
+
+@shell_view:
+@Returns:
+
+
<!-- ##### FUNCTION e_shell_view_get_search_rule ##### -->
<para>
diff --git a/doc/reference/shell/tmpl/e-shell-window-actions.sgml b/doc/reference/shell/tmpl/e-shell-window-actions.sgml
deleted file mode 100644
index 48e6f44203..0000000000
--- a/doc/reference/shell/tmpl/e-shell-window-actions.sgml
+++ /dev/null
@@ -1,309 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-Global Actions
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION ##### -->
-<para>
-
-</para>
-
-@window:
-@name:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GROUP ##### -->
-<para>
-
-</para>
-
-@window:
-@name:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_ABOUT ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_CLOSE ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_FAQ ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_FORGET_PASSWORDS ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GAL_CUSTOM_VIEW ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GAL_DEFINE_VIEWS ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GAL_SAVE_CUSTOM_VIEW ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GAL_VIEW_MENU ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_IMPORT ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_NEW_WINDOW ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_PAGE_SETUP ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_PREFERENCES ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_QUICK_REFERENCE ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_QUIT ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SEARCH_ADVANCED ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SEARCH_CLEAR ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SEARCH_EDIT ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SEARCH_EXECUTE ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SEARCH_SAVE ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SEND_RECEIVE ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SHOW_SIDEBAR ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SHOW_STATUSBAR ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SHOW_SWITCHER ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SHOW_TOOLBAR ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SUBMIT_BUG ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SWITCHER_STYLE_ICONS ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SYNC_OPTIONS ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_WORK_OFFLINE ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_WORK_ONLINE ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GROUP_GAL_VIEW ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GROUP_NEW_ITEM ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GROUP_NEW_SOURCE ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GROUP_SHELL ##### -->
-<para>
-
-</para>
-
-@window:
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GROUP_SHELL_VIEW ##### -->
-<para>
-
-</para>
-
-@window:
-
-
diff --git a/doc/reference/shell/tmpl/e-shell-window-private.sgml b/doc/reference/shell/tmpl/e-shell-window-private.sgml
deleted file mode 100644
index 6c1c6d0e72..0000000000
--- a/doc/reference/shell/tmpl/e-shell-window-private.sgml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-e-shell-window-private
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT EShellWindowPrivate ##### -->
-<para>
-
-</para>
-
-
diff --git a/doc/reference/shell/tmpl/e-shell.sgml b/doc/reference/shell/tmpl/e-shell.sgml
index 5210c05c51..2287392fee 100644
--- a/doc/reference/shell/tmpl/e-shell.sgml
+++ b/doc/reference/shell/tmpl/e-shell.sgml
@@ -32,7 +32,7 @@ EShell
</para>
@eshell: the object which received the signal.
-@Param2:
+@arg1:
<!-- ##### SIGNAL EShell::handle-uri ##### -->
<para>
@@ -107,6 +107,11 @@ EShell
</para>
+<!-- ##### ARG EShell:meego-mode ##### -->
+<para>
+
+</para>
+
<!-- ##### ARG EShell:module-directory ##### -->
<para>
@@ -127,6 +132,11 @@ EShell
</para>
+<!-- ##### ARG EShell:small-screen-mode ##### -->
+<para>
+
+</para>
+
<!-- ##### FUNCTION e_shell_get_default ##### -->
<para>
diff --git a/doc/reference/shell/tmpl/e-signature-utils.sgml b/doc/reference/shell/tmpl/e-signature-utils.sgml
index 7f550533d8..b16e2ae30e 100644
--- a/doc/reference/shell/tmpl/e-signature-utils.sgml
+++ b/doc/reference/shell/tmpl/e-signature-utils.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-More Signature Functions
+More Signature Utilities
<!-- ##### SECTION Short_Description ##### -->
diff --git a/doc/reference/shell/tmpl/es-event.sgml b/doc/reference/shell/tmpl/es-event.sgml
deleted file mode 100644
index 8821e92ad5..0000000000
--- a/doc/reference/shell/tmpl/es-event.sgml
+++ /dev/null
@@ -1,147 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-ESEventHook
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### ENUM es_event_target_t ##### -->
-<para>
-
-</para>
-
-@ES_EVENT_TARGET_STATE:
-@ES_EVENT_TARGET_UPGRADE:
-@ES_EVENT_TARGET_SHELL:
-@ES_EVENT_TARGET_COMPONENT:
-
-<!-- ##### STRUCT ESEventTargetState ##### -->
-<para>
-
-</para>
-
-@target:
-@state:
-
-<!-- ##### STRUCT ESEventTargetUpgrade ##### -->
-<para>
-
-</para>
-
-@target:
-@major:
-@minor:
-@revision:
-
-<!-- ##### STRUCT ESEventTargetShell ##### -->
-<para>
-
-</para>
-
-@target:
-
-<!-- ##### STRUCT ESEventTargetComponent ##### -->
-<para>
-
-</para>
-
-@target:
-@id:
-
-<!-- ##### TYPEDEF ESEventItem ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT ESEvent ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION es_event_get_type ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION es_event_peek ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION es_event_target_new ##### -->
-<para>
-
-</para>
-
-@eme:
-@Returns:
-
-
-<!-- ##### FUNCTION es_event_target_new_state ##### -->
-<para>
-
-</para>
-
-@emp:
-@state:
-@Returns:
-
-
-<!-- ##### FUNCTION es_event_target_new_upgrade ##### -->
-<para>
-
-</para>
-
-@emp:
-@major:
-@minor:
-@revision:
-@Returns:
-
-
-<!-- ##### FUNCTION es_event_target_new_component ##### -->
-<para>
-
-</para>
-
-@eme:
-@id:
-@Returns:
-
-
-<!-- ##### STRUCT ESEventHook ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION es_event_hook_get_type ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
diff --git a/doc/reference/shell/tmpl/eshell-unused.sgml b/doc/reference/shell/tmpl/eshell-unused.sgml
index 8769407347..1cb81172df 100644
--- a/doc/reference/shell/tmpl/eshell-unused.sgml
+++ b/doc/reference/shell/tmpl/eshell-unused.sgml
@@ -1,2242 +1,18 @@
-<!-- ##### SECTION ./tmpl/Evolution-DataServer.sgml:Long_Description ##### -->
+<!-- ##### ARG EShellSearchbar:label-visible ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/Evolution-DataServer.sgml:See_Also ##### -->
+<!-- ##### FUNCTION e_get_gnome2_user_dir ##### -->
<para>
</para>
-
-<!-- ##### SECTION ./tmpl/Evolution-DataServer.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/Evolution-DataServer.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/Evolution-DataServer.sgml:Title ##### -->
-Evolution-DataServer
-
-
-<!-- ##### SECTION ./tmpl/e-activity-handler.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-activity-handler.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-activity-handler.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-activity-handler.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-activity-handler.sgml:Title ##### -->
-EActivityHandler
-
-
-<!-- ##### SECTION ./tmpl/e-config-upgrade.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-config-upgrade.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-config-upgrade.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-config-upgrade.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-config-upgrade.sgml:Title ##### -->
-e-config-upgrade
-
-
-<!-- ##### SECTION ./tmpl/e-error.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-error.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-error.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-error.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-error.sgml:Title ##### -->
-Error Dialog Functions
-
-
-<!-- ##### SECTION ./tmpl/e-shell-common.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-common.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-common.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-common.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-common.sgml:Title ##### -->
-e-shell-common
-
-
-<!-- ##### SECTION ./tmpl/e-shell-constants.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-constants.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-constants.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-constants.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-constants.sgml:Title ##### -->
-e-shell-constants
-
-
-<!-- ##### SECTION ./tmpl/e-shell-marshal.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-marshal.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-marshal.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-marshal.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-marshal.sgml:Title ##### -->
-e-shell-marshal
-
-
-<!-- ##### SECTION ./tmpl/e-shell-migrate.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-migrate.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-migrate.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-migrate.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-migrate.sgml:Title ##### -->
-Migration
-
-
-<!-- ##### SECTION ./tmpl/e-shell-module.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-module.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-module.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-module.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-module.sgml:Title ##### -->
-EShellModule
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-actions.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-actions.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-actions.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-actions.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-actions.sgml:Title ##### -->
-Global Actions
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-private.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-private.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-private.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-private.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-shell-window-private.sgml:Title ##### -->
-e-shell-window-private
-
-
-<!-- ##### SECTION ./tmpl/e-test-shell-view.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-test-shell-view.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/e-test-shell-view.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-test-shell-view.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/e-test-shell-view.sgml:Title ##### -->
-ETestShellView
-
-
-<!-- ##### SECTION ./tmpl/es-event.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/es-event.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/es-event.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/es-event.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/es-event.sgml:Title ##### -->
-ESEventHook
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-client.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-client.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-client.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-client.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-client.sgml:Title ##### -->
-EvolutionImporterClient
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-listener.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-listener.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-listener.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-listener.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer-listener.sgml:Title ##### -->
-EvolutionImporterListener
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/evolution-importer.sgml:Title ##### -->
-EvolutionImporter
-
-
-<!-- ##### SECTION ./tmpl/evolution-intelligent-importer.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/evolution-intelligent-importer.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/evolution-intelligent-importer.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/evolution-intelligent-importer.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/evolution-intelligent-importer.sgml:Title ##### -->
-EvolutionIntelligentImporter
-
-
-<!-- ##### SECTION ./tmpl/intelligent.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/intelligent.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/intelligent.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/intelligent.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/intelligent.sgml:Title ##### -->
-intelligent
-
-
-<!-- ##### ENUM ECursorType ##### -->
-<para>
-
-</para>
-
-@E_CURSOR_NORMAL:
-@E_CURSOR_BUSY:
-
-<!-- ##### STRUCT ESEvent ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT ESEventHook ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF ESEventItem ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT ESEventTargetComponent ##### -->
-<para>
-
-</para>
-
-@target:
-@id:
-
-<!-- ##### STRUCT ESEventTargetShell ##### -->
-<para>
-
-</para>
-
-@target:
-
-<!-- ##### STRUCT ESEventTargetState ##### -->
-<para>
-
-</para>
-
-@target:
-@state:
-
-<!-- ##### STRUCT ESEventTargetUpgrade ##### -->
-<para>
-
-</para>
-
-@target:
-@major:
-@minor:
-@revision:
-
-<!-- ##### SIGNAL EShell::prepare-for-shutdown ##### -->
-<para>
-
-</para>
-
-@eshell: the object which received the signal.
-@arg1:
-
-<!-- ##### ARG EShell:online-mode ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShell:settings ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:filter-action ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:filter-value ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:filter-visible ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:scope-action ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:scope-value ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:scope-visible ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:search-context ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:search-hint ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:search-radio-action ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:search-rule ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:search-text ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:search-value ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellContent:search-visible ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ENUM EShellLineStatus ##### -->
-<para>
-
-</para>
-
-@E_SHELL_LINE_STATUS_ONLINE:
-@E_SHELL_LINE_STATUS_GOING_OFFLINE:
-@E_SHELL_LINE_STATUS_OFFLINE:
-@E_SHELL_LINE_STATUS_FORCED_OFFLINE:
-
-<!-- ##### STRUCT EShellModule ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SIGNAL EShellModule::activity-added ##### -->
-<para>
-
-</para>
-
-@eshellmodule: the object which received the signal.
-@arg1:
-
-<!-- ##### ARG EShellModule:filename ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG EShellModule:shell ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT EShellModuleInfo ##### -->
-<para>
-
-</para>
-
-@name:
-@aliases:
-@schemes:
-@sort_order:
-@start:
-@is_busy:
-@shutdown:
-@migrate:
-
-<!-- ##### SIGNAL EShellView::capture-state ##### -->
-<para>
-
-</para>
-
-@eshellview: the object which received the signal.
-@arg1:
-
-<!-- ##### SIGNAL EShellView::restore-state ##### -->
-<para>
-
-</para>
-
-@eshellview: the object which received the signal.
-@arg1:
-
-<!-- ##### ARG EShellView:shell-module ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT EShellWindowPrivate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT ETestShellView ##### -->
-<para>
-
-</para>
-
-@parent:
-@priv:
-
-<!-- ##### STRUCT ETestShellViewPrivate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_ASK_FILE_EXISTS_OVERWRITE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_ERROR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_ERROR_PRIMARY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_INFO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_INFO_PRIMARY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_NO_LOAD_FILE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_NO_SAVE_FILE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_WARNING ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_ERROR_WARNING_PRIMARY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_LOCAL_CALENDAR_URI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_LOCAL_CONTACTS_URI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_LOCAL_INBOX_URI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_LOCAL_STORAGE_NAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_LOCAL_TASKS_URI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_PATH_SEPARATOR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_PATH_SEPARATOR_S ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_DEFAULTURI_PREFIX ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_DEFAULTURI_PREFIX_LEN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_ICON_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_MINI_ICON_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_MINI_ICON_SUFFIX ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_MINI_ICON_SUFFIX_LEN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_UPGRADE_ERROR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_URI_PREFIX ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_URI_PREFIX_LEN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION ##### -->
-<para>
-
-</para>
-
-@window:
-@name:
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GAL_VIEW_MENU ##### -->
-<para>
-
-</para>
-
-@window:
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GROUP ##### -->
-<para>
-
-</para>
-
-@window:
-@name:
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_GROUP_SHELL_VIEW ##### -->
-<para>
-
-</para>
-
-@window:
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SEARCH_EXECUTE ##### -->
-<para>
-
-</para>
-
-@window:
-
-<!-- ##### MACRO E_SHELL_WINDOW_ACTION_SHOW_STATUSBAR ##### -->
-<para>
-
-</para>
-
-@window:
-
-<!-- ##### MACRO E_SUMMARY_STORAGE_NAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO E_SUMMARY_URI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT EvolutionImporter ##### -->
-<para>
-
-</para>
-
-@parent:
-@priv:
-
-<!-- ##### STRUCT EvolutionImporterClient ##### -->
-<para>
-
-</para>
-
-@parent_type:
-@objref:
-
-<!-- ##### USER_FUNCTION EvolutionImporterCreateControlFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@control:
-@closure:
-
-<!-- ##### USER_FUNCTION EvolutionImporterGetErrorFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@closure:
-@Returns:
-
-<!-- ##### STRUCT EvolutionImporterListener ##### -->
-<para>
-
-</para>
-
-@parent:
-@priv:
-
-<!-- ##### USER_FUNCTION EvolutionImporterListenerCallback ##### -->
-<para>
-
-</para>
-
-@listener:
-@result:
-@more_items:
-@closure:
-
-<!-- ##### STRUCT EvolutionImporterListenerPrivate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterLoadFileFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@filename:
-@closure:
+@void:
@Returns:
-<!-- ##### STRUCT EvolutionImporterPrivate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterProcessItemFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@listener:
-@closure:
-@ev:
-
-<!-- ##### ENUM EvolutionImporterResult ##### -->
-<para>
-
-</para>
-
-@EVOLUTION_IMPORTER_OK:
-@EVOLUTION_IMPORTER_UNSUPPORTED_OPERATION:
-@EVOLUTION_IMPORTER_INTERRUPTED:
-@EVOLUTION_IMPORTER_BUSY:
-@EVOLUTION_IMPORTER_NOT_READY:
-@EVOLUTION_IMPORTER_UNKNOWN_DATA:
-@EVOLUTION_IMPORTER_BAD_DATA:
-@EVOLUTION_IMPORTER_BAD_FILE:
-@EVOLUTION_IMPORTER_UNKNOWN_ERROR:
-
-<!-- ##### USER_FUNCTION EvolutionImporterSupportFormatFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@filename:
-@closure:
-@Returns:
-
-<!-- ##### STRUCT EvolutionIntelligentImporter ##### -->
-<para>
-
-</para>
-
-@parent:
-@priv:
-
-<!-- ##### USER_FUNCTION EvolutionIntelligentImporterCanImportFn ##### -->
-<para>
-
-</para>
-
-@ii:
-@closure:
-@Returns:
-
-<!-- ##### USER_FUNCTION EvolutionIntelligentImporterImportDataFn ##### -->
-<para>
-
-</para>
-
-@ii:
-@closure:
-
-<!-- ##### STRUCT EvolutionIntelligentImporterPrivate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF GNOME_Evolution_DataServer_Config ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Config_IMETHODS_LEN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### VARIABLE GNOME_Evolution_DataServer_Config__classid ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Config__freekids ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Config__imethods ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF GNOME_Evolution_DataServer_InterfaceCheck ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck_IMETHODS_LEN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### VARIABLE GNOME_Evolution_DataServer_InterfaceCheck__classid ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck__freekids ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION GNOME_Evolution_DataServer_InterfaceCheck__get_interfaceVersion ##### -->
-<para>
-
-</para>
-
-@_obj:
-@ev:
-@Returns:
-
-<!-- ##### ENUM GNOME_Evolution_DataServer_InterfaceCheck__imethods_index ##### -->
-<para>
-
-</para>
-
-@GNOME_Evolution_DataServer_InterfaceCheck__get_interfaceVersion__imethods_index:
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck_queryInterface ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck_ref ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_InterfaceCheck_unref ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF GNOME_Evolution_DataServer_Logging ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_IMETHODS_LEN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ENUM GNOME_Evolution_DataServer_Logging_Level ##### -->
-<para>
-
-</para>
-
-@GNOME_Evolution_DataServer_Logging_Error:
-@GNOME_Evolution_DataServer_Logging_Critical:
-@GNOME_Evolution_DataServer_Logging_Warning:
-@GNOME_Evolution_DataServer_Logging_Message:
-@GNOME_Evolution_DataServer_Logging_Info:
-@GNOME_Evolution_DataServer_Logging_Debug:
-
-<!-- ##### TYPEDEF GNOME_Evolution_DataServer_Logging_LogEvent ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_LogEvent__alloc ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_LogEvent__freekids ##### -->
-<para>
-
-</para>
-
-@m:
-@d:
-
-<!-- ##### VARIABLE GNOME_Evolution_DataServer_Logging__classid ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging__freekids ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging__imethods ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_addListener ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_addListenerWithMask ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_queryInterface ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_ref ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_removeListener ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_unImplemented ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_unImplemented2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GNOME_Evolution_DataServer_Logging_unref ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ORBIT_DECL_GNOME_Evolution_DataServer_Config ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ORBIT_DECL_GNOME_Evolution_DataServer_InterfaceCheck ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ORBIT_DECL_GNOME_Evolution_DataServer_Logging ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ORBIT_IDL_SERIAL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ORBIT_IMETHODS_INDEX ##### -->
-<para>
-
-</para>
-
-@m:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Config ##### -->
-<para>
-
-</para>
-
-@_private:
-@vepv:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Config__epv ##### -->
-<para>
-
-</para>
-
-@_private:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_Config__fini ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_Config__init ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Config__vepv ##### -->
-<para>
-
-</para>
-
-@_base_epv:
-@GNOME_Evolution_DataServer_Config_epv:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_InterfaceCheck ##### -->
-<para>
-
-</para>
-
-@_private:
-@vepv:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_InterfaceCheck__epv ##### -->
-<para>
-
-</para>
-
-@_private:
-@_get_interfaceVersion:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_InterfaceCheck__fini ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_InterfaceCheck__init ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_InterfaceCheck__vepv ##### -->
-<para>
-
-</para>
-
-@_base_epv:
-@Bonobo_Unknown_epv:
-@GNOME_Evolution_DataServer_InterfaceCheck_epv:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Logging ##### -->
-<para>
-
-</para>
-
-@_private:
-@vepv:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Logging__epv ##### -->
-<para>
-
-</para>
-
-@_private:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_Logging__fini ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-<!-- ##### FUNCTION POA_GNOME_Evolution_DataServer_Logging__init ##### -->
-<para>
-
-</para>
-
-@servant:
-@ev:
-
-<!-- ##### STRUCT POA_GNOME_Evolution_DataServer_Logging__vepv ##### -->
-<para>
-
-</para>
-
-@_base_epv:
-@Bonobo_Unknown_epv:
-@Bonobo_EventSource_epv:
-@GNOME_Evolution_DataServer_Logging_epv:
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_Config ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_InterfaceCheck ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_Logging ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_Logging_Level ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_GNOME_Evolution_DataServer_Logging_LogEvent ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_0 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_10 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_11 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_12 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_13 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_14 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_15 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_17 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_18 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_19 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_3 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_4 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_5 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_6 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_7 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Config_9 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_0 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_10 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_11 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_12 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_13 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_14 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_15 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_17 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_18 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_19 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_3 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_4 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_5 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_6 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_7 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_InterfaceCheck_9 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_0 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_10 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_11 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_12 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_13 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_14 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_15 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_17 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_18 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_19 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_3 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_4 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_5 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_6 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_7 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_9 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_0 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_10 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_11 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_12 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_13 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_14 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_15 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_17 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_18 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_19 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_3 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_4 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_5 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_6 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_7 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_Level_9 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_0 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_10 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_11 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_12 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_13 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_14 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_15 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_17 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_18 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_19 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_3 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_4 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_5 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_6 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_7 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TC_IMPL_TC_GNOME_Evolution_DataServer_Logging_LogEvent_9 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION e_alert_free ##### -->
-<para>
-
-</para>
-
-@alert:
-
-<!-- ##### FUNCTION e_alert_new_dialog ##### -->
-<para>
-
-</para>
-
-@parent:
-@alert:
-@Returns:
-
-<!-- ##### FUNCTION e_alert_new_dialog_for_args ##### -->
-<para>
-
-</para>
-
-@parent:
-@tag:
-@arg0:
-@Varargs:
-@Returns:
-
-<!-- ##### FUNCTION e_alert_newv ##### -->
-<para>
-
-</para>
-
-@tag:
-@arg0:
-@ap:
-@Returns:
-
-<!-- ##### FUNCTION e_config_upgrade ##### -->
-<para>
-
-</para>
-
-@major:
-@minor:
-@revision:
-@Returns:
-
-<!-- ##### FUNCTION e_error_count_buttons ##### -->
-<para>
-
-</para>
-
-@dialog:
-@Returns:
-
-<!-- ##### FUNCTION e_error_new ##### -->
-<para>
-
-</para>
-
-@parent:
-@tag:
-@arg0:
-@Varargs:
-@Returns:
-
-<!-- ##### FUNCTION e_error_newv ##### -->
-<para>
-
-</para>
-
-@parent:
-@tag:
-@arg0:
-@ap:
-@Returns:
-
-<!-- ##### FUNCTION e_error_run ##### -->
-<para>
-
-</para>
-
-@parent:
-@tag:
-@arg0:
-@Varargs:
-@Returns:
-
-<!-- ##### FUNCTION e_error_runv ##### -->
-<para>
-
-</para>
-
-@parent:
-@tag:
-@arg0:
-@ap:
-@Returns:
-
-<!-- ##### FUNCTION e_icon_factory_init ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION e_icon_factory_shutdown ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION e_shell_backend_get_filename ##### -->
-<para>
-
-</para>
-
-@shell_backend:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_backend_is_busy ##### -->
-<para>
-
-</para>
-
-@shell_backend:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_backend_shutdown ##### -->
-<para>
-
-</para>
-
-@shell_backend:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_add_filter_separator_after ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@action_value:
-
-<!-- ##### FUNCTION e_shell_content_add_filter_separator_before ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@action_value:
-
-<!-- ##### FUNCTION e_shell_content_get_context ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_filter_action ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_filter_value ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_filter_visible ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_scope_action ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_scope_value ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_scope_visible ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_search_context ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_search_hint ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_search_rule ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_get_search_text ##### -->
+<!-- ##### FUNCTION e_shell_content_get_search_name ##### -->
<para>
</para>
@@ -2244,7 +20,7 @@ intelligent
@shell_content:
@Returns:
-<!-- ##### FUNCTION e_shell_content_get_search_value ##### -->
+<!-- ##### FUNCTION e_shell_content_get_searchbar ##### -->
<para>
</para>
@@ -2252,658 +28,19 @@ intelligent
@shell_content:
@Returns:
-<!-- ##### FUNCTION e_shell_content_get_search_visible ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_content_restore_state ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@group_name:
-
-<!-- ##### FUNCTION e_shell_content_set_context ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@context:
-
-<!-- ##### FUNCTION e_shell_content_set_filter_action ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@filter_action:
-
-<!-- ##### FUNCTION e_shell_content_set_filter_value ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@filter_value:
-
-<!-- ##### FUNCTION e_shell_content_set_filter_visible ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@filter_visible:
-
-<!-- ##### FUNCTION e_shell_content_set_scope_action ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@scope_action:
-
-<!-- ##### FUNCTION e_shell_content_set_scope_value ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@scope_value:
-
-<!-- ##### FUNCTION e_shell_content_set_scope_visible ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@scope_visible:
-
-<!-- ##### FUNCTION e_shell_content_set_search_hint ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@search_hint:
-
-<!-- ##### FUNCTION e_shell_content_set_search_rule ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@search_rule:
-
-<!-- ##### FUNCTION e_shell_content_set_search_text ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@search_text:
-
-<!-- ##### FUNCTION e_shell_content_set_search_value ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@search_value:
-
-<!-- ##### FUNCTION e_shell_content_set_search_visible ##### -->
-<para>
-
-</para>
-
-@shell_content:
-@search_visible:
-
-<!-- ##### FUNCTION e_shell_create_window ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_do_quit ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_get_focused_window ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_get_line_status ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_get_module_by_name ##### -->
-<para>
-
-</para>
-
-@shell:
-@name:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_get_module_by_scheme ##### -->
-<para>
-
-</para>
-
-@shell:
-@scheme:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_get_online_mode ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_get_settings ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_get_shell_modules ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_get_shell_windows ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_handle_uri ##### -->
-<para>
-
-</para>
-
-@shell:
-@uri:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_importer_start_import ##### -->
-<para>
-
-</para>
-
-@shell_window:
-
-<!-- ##### FUNCTION e_shell_is_busy ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_list_modules ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_list_shell_modules ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_list_shell_windows ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_marshal_BOOLEAN__STRING ##### -->
-<para>
-
-</para>
-
-@closure:
-@return_value:
-@n_param_values:
-@param_values:
-@invocation_hint:
-@marshal_data:
-
-<!-- ##### MACRO e_shell_marshal_BOOL__STRING ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION e_shell_migrate_error_quark ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_add_activity ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@activity:
-
-<!-- ##### FUNCTION e_shell_module_compare ##### -->
-<para>
-
-</para>
-
-@shell_module_a:
-@shell_module_b:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_get_config_dir ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_get_data_dir ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_get_filename ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_get_shell ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_get_shell_view_type ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_is_busy ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_migrate ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@major:
-@minor:
-@micro:
-@error:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_new ##### -->
-<para>
-
-</para>
-
-@shell:
-@filename:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_set_info ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@info:
-@shell_view_type:
-
-<!-- ##### FUNCTION e_shell_module_shutdown ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_module_start ##### -->
-<para>
-
-</para>
-
-@shell_module:
-
-<!-- ##### FUNCTION e_shell_module_upgrade ##### -->
-<para>
-
-</para>
-
-@shell_module:
-@major:
-@minor:
-@micro:
-@error:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_new ##### -->
-<para>
-
-</para>
-
-@online:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_searchbar_restore_state ##### -->
+<!-- ##### FUNCTION e_shell_searchbar_get_label_visible ##### -->
<para>
</para>
@searchbar:
-@group_name:
-
-<!-- ##### FUNCTION e_shell_set_line_status ##### -->
-<para>
-
-</para>
-
-@shell:
-@status:
-
-<!-- ##### FUNCTION e_shell_set_online_mode ##### -->
-<para>
-
-</para>
-
-@shell:
-@online_mode:
-
-<!-- ##### FUNCTION e_shell_settings_bind_to_gconf ##### -->
-<para>
-
-</para>
-
-@shell_settings:
-@property_name:
-@gconf_key:
-
-<!-- ##### FUNCTION e_shell_upgrade_attempt ##### -->
-<para>
-
-</para>
-
-@shell:
-@Returns:
-
-<!-- ##### FUNCTION e_shell_view_get_shell_module ##### -->
-<para>
-
-</para>
-
-@shell_view:
@Returns:
-<!-- ##### VARIABLE e_test_shell_view_type ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION e_util_filename_to_uri ##### -->
-<para>
-
-</para>
-
-@filename:
-@Returns:
-
-<!-- ##### FUNCTION e_util_read_file ##### -->
-<para>
-
-</para>
-
-@filename:
-@filename_is_uri:
-@buffer:
-@read:
-@error:
-@Returns:
-
-<!-- ##### FUNCTION e_util_uri_to_filename ##### -->
-<para>
-
-</para>
-
-@uri:
-@Returns:
-
-<!-- ##### FUNCTION e_write_file_uri ##### -->
-<para>
-
-</para>
-
-@filename:
-@data:
-@Returns:
-
-<!-- ##### FUNCTION es_event_get_type ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION es_event_hook_get_type ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION es_event_peek ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION es_event_target_new ##### -->
-<para>
-
-</para>
-
-@eme:
-@Returns:
-
-<!-- ##### FUNCTION es_event_target_new_component ##### -->
-<para>
-
-</para>
-
-@eme:
-@id:
-@Returns:
-
-<!-- ##### FUNCTION es_event_target_new_state ##### -->
-<para>
-
-</para>
-
-@emp:
-@state:
-@Returns:
-
-<!-- ##### FUNCTION es_event_target_new_upgrade ##### -->
-<para>
-
-</para>
-
-@emp:
-@major:
-@minor:
-@revision:
-@Returns:
-
-<!-- ##### ENUM es_event_target_t ##### -->
-<para>
-
-</para>
-
-@ES_EVENT_TARGET_STATE:
-@ES_EVENT_TARGET_UPGRADE:
-@ES_EVENT_TARGET_SHELL:
-@ES_EVENT_TARGET_COMPONENT:
-
-<!-- ##### FUNCTION evolution_importer_client_create_control ##### -->
-<para>
-
-</para>
-
-@client:
-@Returns:
-
-<!-- ##### FUNCTION evolution_importer_client_get_error ##### -->
-<para>
-
-</para>
-
-@client:
-@Returns:
-
-<!-- ##### FUNCTION evolution_importer_client_load_file ##### -->
-<para>
-
-</para>
-
-@client:
-@filename:
-@Returns:
-
-<!-- ##### FUNCTION evolution_importer_client_new ##### -->
-<para>
-
-</para>
-
-@objref:
-@Returns:
-
-<!-- ##### FUNCTION evolution_importer_client_new_from_id ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-<!-- ##### FUNCTION evolution_importer_client_process_item ##### -->
-<para>
-
-</para>
-
-@client:
-@listener:
-
-<!-- ##### FUNCTION evolution_importer_client_support_format ##### -->
-<para>
-
-</para>
-
-@client:
-@filename:
-@Returns:
-
-<!-- ##### FUNCTION evolution_importer_listener_new ##### -->
-<para>
-
-</para>
-
-@callback:
-@closure:
-@Returns:
-
-<!-- ##### FUNCTION evolution_importer_new ##### -->
-<para>
-
-</para>
-
-@create_control_fn:
-@support_format_fn:
-@load_file_fn:
-@process_item_fn:
-@get_error_fn:
-@closure:
-@Returns:
-
-<!-- ##### FUNCTION evolution_intelligent_importer_new ##### -->
-<para>
-
-</para>
-
-@can_import_fn:
-@import_data_fn:
-@importername:
-@message:
-@closure:
-@Returns:
-
-<!-- ##### FUNCTION intelligent_importer_init ##### -->
+<!-- ##### FUNCTION e_shell_searchbar_set_label_visible ##### -->
<para>
</para>
+@searchbar:
+@label_visible:
diff --git a/doc/reference/shell/tmpl/evolution-importer-client.sgml b/doc/reference/shell/tmpl/evolution-importer-client.sgml
deleted file mode 100644
index db2acb621a..0000000000
--- a/doc/reference/shell/tmpl/evolution-importer-client.sgml
+++ /dev/null
@@ -1,94 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-EvolutionImporterClient
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT EvolutionImporterClient ##### -->
-<para>
-
-</para>
-
-@parent_type:
-@objref:
-
-<!-- ##### FUNCTION evolution_importer_client_new ##### -->
-<para>
-
-</para>
-
-@objref:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_new_from_id ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_create_control ##### -->
-<para>
-
-</para>
-
-@client:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_support_format ##### -->
-<para>
-
-</para>
-
-@client:
-@filename:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_load_file ##### -->
-<para>
-
-</para>
-
-@client:
-@filename:
-@Returns:
-
-
-<!-- ##### FUNCTION evolution_importer_client_process_item ##### -->
-<para>
-
-</para>
-
-@client:
-@listener:
-
-
-<!-- ##### FUNCTION evolution_importer_client_get_error ##### -->
-<para>
-
-</para>
-
-@client:
-@Returns:
-
-
diff --git a/doc/reference/shell/tmpl/evolution-importer-listener.sgml b/doc/reference/shell/tmpl/evolution-importer-listener.sgml
deleted file mode 100644
index 7b0b3ab488..0000000000
--- a/doc/reference/shell/tmpl/evolution-importer-listener.sgml
+++ /dev/null
@@ -1,56 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-EvolutionImporterListener
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT EvolutionImporterListenerPrivate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterListenerCallback ##### -->
-<para>
-
-</para>
-
-@listener:
-@result:
-@more_items:
-@closure:
-
-
-<!-- ##### STRUCT EvolutionImporterListener ##### -->
-<para>
-
-</para>
-
-@parent:
-@priv:
-
-<!-- ##### FUNCTION evolution_importer_listener_new ##### -->
-<para>
-
-</para>
-
-@callback:
-@closure:
-@Returns:
-
-
diff --git a/doc/reference/shell/tmpl/evolution-importer.sgml b/doc/reference/shell/tmpl/evolution-importer.sgml
deleted file mode 100644
index c092138c60..0000000000
--- a/doc/reference/shell/tmpl/evolution-importer.sgml
+++ /dev/null
@@ -1,117 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-EvolutionImporter
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT EvolutionImporterPrivate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterCreateControlFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@control:
-@closure:
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterSupportFormatFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@filename:
-@closure:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterLoadFileFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@filename:
-@closure:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterProcessItemFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@listener:
-@closure:
-@ev:
-
-
-<!-- ##### USER_FUNCTION EvolutionImporterGetErrorFn ##### -->
-<para>
-
-</para>
-
-@importer:
-@closure:
-@Returns:
-
-
-<!-- ##### ENUM EvolutionImporterResult ##### -->
-<para>
-
-</para>
-
-@EVOLUTION_IMPORTER_OK:
-@EVOLUTION_IMPORTER_UNSUPPORTED_OPERATION:
-@EVOLUTION_IMPORTER_INTERRUPTED:
-@EVOLUTION_IMPORTER_BUSY:
-@EVOLUTION_IMPORTER_NOT_READY:
-@EVOLUTION_IMPORTER_UNKNOWN_DATA:
-@EVOLUTION_IMPORTER_BAD_DATA:
-@EVOLUTION_IMPORTER_BAD_FILE:
-@EVOLUTION_IMPORTER_UNKNOWN_ERROR:
-
-<!-- ##### STRUCT EvolutionImporter ##### -->
-<para>
-
-</para>
-
-@parent:
-@priv:
-
-<!-- ##### FUNCTION evolution_importer_new ##### -->
-<para>
-
-</para>
-
-@create_control_fn:
-@support_format_fn:
-@load_file_fn:
-@process_item_fn:
-@get_error_fn:
-@closure:
-@Returns:
-
-
diff --git a/doc/reference/shell/tmpl/evolution-intelligent-importer.sgml b/doc/reference/shell/tmpl/evolution-intelligent-importer.sgml
deleted file mode 100644
index 4dfdb70203..0000000000
--- a/doc/reference/shell/tmpl/evolution-intelligent-importer.sgml
+++ /dev/null
@@ -1,67 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-EvolutionIntelligentImporter
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT EvolutionIntelligentImporterPrivate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### USER_FUNCTION EvolutionIntelligentImporterCanImportFn ##### -->
-<para>
-
-</para>
-
-@ii:
-@closure:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION EvolutionIntelligentImporterImportDataFn ##### -->
-<para>
-
-</para>
-
-@ii:
-@closure:
-
-
-<!-- ##### STRUCT EvolutionIntelligentImporter ##### -->
-<para>
-
-</para>
-
-@parent:
-@priv:
-
-<!-- ##### FUNCTION evolution_intelligent_importer_new ##### -->
-<para>
-
-</para>
-
-@can_import_fn:
-@import_data_fn:
-@importername:
-@message:
-@closure:
-@Returns:
-
-
diff --git a/doc/reference/shell/tmpl/intelligent.sgml b/doc/reference/shell/tmpl/intelligent.sgml
deleted file mode 100644
index 1c50af5c7b..0000000000
--- a/doc/reference/shell/tmpl/intelligent.sgml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-intelligent
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### FUNCTION intelligent_importer_init ##### -->
-<para>
-
-</para>
-
-
-
diff --git a/e-util/e-account-utils.c b/e-util/e-account-utils.c
index 4d169d956a..4395542f7c 100644
--- a/e-util/e-account-utils.c
+++ b/e-util/e-account-utils.c
@@ -15,6 +15,11 @@
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
*/
+/**
+ * SECTION: e-account-utils
+ * @include: e-util/e-account-utils.h
+ **/
+
#include "e-account-utils.h"
#include <gconf/gconf-client.h>
diff --git a/e-util/e-account-utils.h b/e-util/e-account-utils.h
index ca184404ef..f2ae8fc5dc 100644
--- a/e-util/e-account-utils.h
+++ b/e-util/e-account-utils.h
@@ -15,11 +15,6 @@
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
*/
-/**
- * SECTION: e-account-utils
- * @include: e-util/e-account-utils.h
- **/
-
#ifndef E_ACCOUNT_UTILS_H
#define E_ACCOUNT_UTILS_H
diff --git a/e-util/e-binding.c b/e-util/e-binding.c
index 86362a7eff..4b0f563a43 100644
--- a/e-util/e-binding.c
+++ b/e-util/e-binding.c
@@ -30,7 +30,7 @@ e_binding_warn (GObject *object,
const gchar *property_name)
{
g_warning (
- "%s instances have no `%s' property to bind to",
+ "%s instances have no '%s' property to bind to",
G_OBJECT_TYPE_NAME (object), property_name);
return NULL;
diff --git a/e-util/e-config.c b/e-util/e-config.c
index 613971fba5..e8eedffef8 100644
--- a/e-util/e-config.c
+++ b/e-util/e-config.c
@@ -41,6 +41,8 @@
#define d(x)
+typedef GtkWidget * (*EConfigItemSectionFactoryFunc)(EConfig *ec, EConfigItem *, GtkWidget *parent, GtkWidget *old, gpointer data, GtkWidget **real_frame);
+
struct _EConfigFactory {
gchar *id;
EConfigFactoryFunc func;
@@ -62,6 +64,7 @@ struct _widget_node {
EConfigItem *item;
GtkWidget *widget; /* widget created by the factory, if any */
GtkWidget *frame; /* if created by us */
+ GtkWidget *real_frame; /* used for sections and section tables, this is the real GtkFrame (whereas "frame" above is the internal vbox/table) */
guint empty:1; /* set if empty (i.e. hidden) */
};
@@ -87,6 +90,8 @@ struct _EConfigPrivate {
static gpointer parent_class;
+static GtkWidget *ech_config_section_factory (EConfig *config, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data, GtkWidget **real_frame);
+
static void
config_finalize (GObject *object)
{
@@ -94,7 +99,7 @@ config_finalize (GObject *object)
EConfigPrivate *p = emp->priv;
GList *link;
- d(printf("finalising EConfig %p\n", o));
+ d(printf("finalising EConfig %p\n", object));
g_free(emp->id);
@@ -519,6 +524,7 @@ ec_rebuild (EConfig *emp)
struct _widget_node *sectionnode = NULL, *pagenode = NULL;
GtkWidget *book = NULL, *page = NULL, *section = NULL, *root = NULL, *assistant = NULL;
gint pageno = 0, sectionno = 0, itemno = 0;
+ gint n_visible_widgets = 0;
struct _widget_node *last_active_page = NULL;
gboolean is_assistant;
GList *link;
@@ -550,7 +556,7 @@ ec_rebuild (EConfig *emp)
if (item->label != NULL)
translated_label = gettext (item->label);
- /* If the last section doesn't contain anything, hide it */
+ /* If the last section doesn't contain any visible widgets, hide it */
if (sectionnode != NULL
&& sectionnode->frame != NULL
&& (item->type == E_CONFIG_PAGE_START
@@ -558,11 +564,22 @@ ec_rebuild (EConfig *emp)
|| item->type == E_CONFIG_PAGE
|| item->type == E_CONFIG_SECTION
|| item->type == E_CONFIG_SECTION_TABLE)) {
- if ((sectionnode->empty = itemno == 0)) {
- gtk_widget_hide(sectionnode->frame);
+ if ((sectionnode->empty = (itemno == 0 || n_visible_widgets == 0))) {
+ if (sectionnode->real_frame)
+ gtk_widget_hide(sectionnode->real_frame);
+
+ if (sectionnode->frame)
+ gtk_widget_hide(sectionnode->frame);
+
sectionno--;
- } else
- gtk_widget_show(sectionnode->frame);
+ } else {
+ if (sectionnode->real_frame)
+ gtk_widget_show(sectionnode->real_frame);
+
+ if (sectionnode->frame)
+ gtk_widget_show(sectionnode->frame);
+ }
+
d(printf("%s section '%s' [sections=%d]\n", sectionnode->empty?"hiding":"showing", sectionnode->item->path, sectionno));
}
@@ -791,12 +808,35 @@ ec_rebuild (EConfig *emp)
}
itemno = 0;
+ n_visible_widgets = 0;
+
+ d(printf("Building section %s - '%s' - %s factory\n", item->path, item->label, item->factory ? "with" : "without"));
+
if (item->factory) {
- section = item->factory(emp, item, page, wn->widget, wn->context->data);
+ /* For sections, we pass an extra argument to the usual EConfigItemFactoryFunc.
+ * If this is an automatically-generated section, that extra argument (real_frame from
+ * EConfigItemSectionFactoryFunc) will contain the actual GtkFrame upon returning.
+ */
+ EConfigItemSectionFactoryFunc factory = (EConfigItemSectionFactoryFunc) item->factory;
+
+ section = factory(emp, item, page, wn->widget, wn->context->data, &wn->real_frame);
wn->frame = section;
if (section)
itemno = 1;
+ if (factory != ech_config_section_factory) {
+ /* This means there is a section that came from a user-specified factory,
+ * so we don't know what is inside the section. In that case, we increment
+ * n_visible_widgets so that the section will not get hidden later (we don't know
+ * if the section is empty or not, so we cannot decide to hide it).
+ *
+ * For automatically-generated sections, we use a special ech_config_section_factory() -
+ * see emph_construct_item().
+ */
+ n_visible_widgets++;
+ d(printf (" n_visible_widgets++ because there is a section factory -> frame=%p\n", section));
+ }
+
if (section
&& ((item->type == E_CONFIG_SECTION && !GTK_IS_BOX(section))
|| (item->type == E_CONFIG_SECTION_TABLE && !GTK_IS_TABLE(section))))
@@ -878,6 +918,11 @@ ec_rebuild (EConfig *emp)
d(printf("item %d:%s widget %p\n", itemno, item->path, w));
+ d(printf (" item %s: (%s - %s)\n",
+ item->path,
+ g_type_name_from_instance ((GTypeInstance *) w),
+ gtk_widget_get_visible (w) ? "visible" : "invisible"));
+
if (wn->widget && wn->widget != w) {
d(printf("destroy old widget for item '%s'\n", item->path));
gtk_widget_destroy(wn->widget);
@@ -887,18 +932,32 @@ ec_rebuild (EConfig *emp)
if (w) {
g_signal_connect(w, "destroy", G_CALLBACK(gtk_widget_destroyed), &wn->widget);
itemno++;
+
+ if (gtk_widget_get_visible (w))
+ n_visible_widgets++;
}
break;
}
}
- /* If the last section doesn't contain anything, hide it */
+ /* If the last section doesn't contain any visible widgets, hide it */
if (sectionnode != NULL && sectionnode->frame != NULL) {
- if ((sectionnode->empty = itemno == 0)) {
- gtk_widget_hide(sectionnode->frame);
+ d(printf ("Section %s - %d visible widgets (frame=%p)\n", sectionnode->item->path, n_visible_widgets, sectionnode->frame));
+ if ((sectionnode->empty = (itemno == 0 || n_visible_widgets == 0))) {
+ if (sectionnode->real_frame)
+ gtk_widget_hide(sectionnode->real_frame);
+
+ if (sectionnode->frame)
+ gtk_widget_hide(sectionnode->frame);
+
sectionno--;
- } else
- gtk_widget_show(sectionnode->frame);
+ } else {
+ if (sectionnode->real_frame)
+ gtk_widget_show(sectionnode->real_frame);
+
+ if (sectionnode->frame)
+ gtk_widget_show(sectionnode->frame);
+ }
d(printf("%s section '%s' [sections=%d]\n", sectionnode->empty?"hiding":"showing", sectionnode->item->path, sectionno));
}
@@ -1585,7 +1644,8 @@ ech_config_section_factory (EConfig *config,
EConfigItem *item,
GtkWidget *parent,
GtkWidget *old,
- gpointer data)
+ gpointer data,
+ GtkWidget **real_frame)
{
struct _EConfigHookGroup *group = data;
GtkWidget *label = NULL;
@@ -1612,6 +1672,8 @@ ech_config_section_factory (EConfig *config,
gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_NONE);
gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0);
+ *real_frame = widget;
+
/* This is why we have a custom factory for sections.
* When the plugin is disabled the frame is invisible. */
plugin = group->hook->hook.plugin;
@@ -1667,9 +1729,9 @@ emph_construct_item(EPluginHook *eph, EConfigHookGroup *menu, xmlNodePtr root, E
if (item->user_data)
item->factory = ech_config_widget_factory;
else if (item->type == E_CONFIG_SECTION)
- item->factory = ech_config_section_factory;
+ item->factory = (EConfigItemFactoryFunc) ech_config_section_factory;
else if (item->type == E_CONFIG_SECTION_TABLE)
- item->factory = ech_config_section_factory;
+ item->factory = (EConfigItemFactoryFunc) ech_config_section_factory;
d(printf(" path=%s label=%s factory=%s\n", item->path, item->label, (gchar *)item->user_data));
diff --git a/e-util/e-dialog-utils.c b/e-util/e-dialog-utils.c
index 19d9030d30..832d1b844a 100644
--- a/e-util/e-dialog-utils.c
+++ b/e-util/e-dialog-utils.c
@@ -46,6 +46,7 @@ e_notice (gpointer parent, GtkMessageType type, const gchar *format, ...)
va_start (args, format);
str = g_strdup_vprintf (format, args);
+
dialog = gtk_message_dialog_new (NULL,
GTK_DIALOG_DESTROY_WITH_PARENT,
type,
@@ -55,8 +56,11 @@ e_notice (gpointer parent, GtkMessageType type, const gchar *format, ...)
va_end (args);
g_free (str);
+ if (parent && !gtk_widget_is_toplevel (parent))
+ parent = gtk_widget_get_toplevel (parent);
if (parent)
gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
+
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}
diff --git a/e-util/e-extensible.c b/e-util/e-extensible.c
index 9960d31d9f..b718fc59bf 100644
--- a/e-util/e-extensible.c
+++ b/e-util/e-extensible.c
@@ -16,11 +16,54 @@
*
*/
+/**
+ * SECTION: e-extensible
+ * @short_description: an interface for extending objects
+ * @include: e-util/e-extensible.h
+ *
+ * #EExtension objects can be tacked on to any #GObject instance that
+ * implements the #EExtensible interface. A #GObject type can be made
+ * extensible in two steps:
+ *
+ * 1. Add the #EExtensible interface when registering the #GType.
+ * There are no methods to implement.
+ *
+ * <informalexample>
+ * <programlisting>
+ * #include <e-util/e-extensible.h>
+ *
+ * G_DEFINE_TYPE_WITH_CODE (
+ * ECustomWidget, e_custom_widget, GTK_TYPE_WIDGET,
+ * G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
+ * </programlisting>
+ * </informalexample>
+ *
+ * 2. Load extensions for the class at some point during #GObject
+ * initialization. Generally this should be done toward the end of
+ * the initialization code, so extensions get a fully initialized
+ * object to work with.
+ *
+ * <informalexample>
+ * <programlisting>
+ * static void
+ * e_custom_widget_init (ECustomWidget *widget)
+ * {
+ * Initialization code goes here...
+ *
+ * e_extensible_load_extensions (E_EXTENSIBLE (widget));
+ * }
+ * </programlisting>
+ * </informalexample>
+ **/
+
#include "e-extensible.h"
#include <e-util/e-util.h>
#include <e-util/e-extension.h>
+#define IS_AN_EXTENSION_TYPE(type) \
+ (g_type_is_a ((type), E_TYPE_EXTENSION))
+
static GQuark extensible_quark;
static GPtrArray *
@@ -89,6 +132,15 @@ e_extensible_get_type (void)
return type;
}
+/**
+ * e_extensible_load_extensions:
+ * @extensible: an #EExtensible
+ *
+ * Creates an instance of all instantiable subtypes of #EExtension which
+ * target the class of @extensible. The lifetimes of these newly created
+ * #EExtension objects are bound to @extensible such that they are finalized
+ * when @extensible is finalized.
+ **/
void
e_extensible_load_extensions (EExtensible *extensible)
{
@@ -110,3 +162,44 @@ e_extensible_load_extensions (EExtensible *extensible)
E_TYPE_EXTENSION, (ETypeFunc)
extensible_load_extension, extensible);
}
+
+/**
+ * e_extensible_list_extensions:
+ * @extensible: an #EExtensible
+ * @extension_type: the type of extensions to list
+ *
+ * Returns a list of #EExtension objects bound to @extensible whose
+ * types are ancestors of @extension_type. For a complete list of
+ * extension objects bound to @extensible, pass %E_TYPE_EXTENSION.
+ *
+ * The list itself should be freed with g_list_free(). The extension
+ * objects are owned by @extensible and should not be unreferenced.
+ *
+ * Returns: a list of extension objects derived from @extension_type
+ **/
+GList *
+e_extensible_list_extensions (EExtensible *extensible,
+ GType extension_type)
+{
+ GPtrArray *extensions;
+ GList *list = NULL;
+ guint ii;
+
+ g_return_val_if_fail (E_IS_EXTENSIBLE (extensible), NULL);
+ g_return_val_if_fail (IS_AN_EXTENSION_TYPE (extension_type), NULL);
+
+ e_extensible_load_extensions (extensible);
+
+ extensions = extensible_get_extensions (extensible);
+ g_return_val_if_fail (extensions != NULL, NULL);
+
+ for (ii = 0; ii < extensions->len; ii++) {
+ GObject *object;
+
+ object = g_ptr_array_index (extensions, ii);
+ if (g_type_is_a (G_OBJECT_TYPE (object), extension_type))
+ list = g_list_prepend (list, object);
+ }
+
+ return g_list_reverse (list);
+}
diff --git a/e-util/e-extensible.h b/e-util/e-extensible.h
index a72ea71611..6dd6294212 100644
--- a/e-util/e-extensible.h
+++ b/e-util/e-extensible.h
@@ -51,6 +51,8 @@ struct _EExtensibleInterface {
GType e_extensible_get_type (void);
void e_extensible_load_extensions (EExtensible *extensible);
+GList * e_extensible_list_extensions (EExtensible *extensible,
+ GType extension_type);
G_END_DECLS
diff --git a/e-util/e-extension.c b/e-util/e-extension.c
index 05687b64ba..59eab840c9 100644
--- a/e-util/e-extension.c
+++ b/e-util/e-extension.c
@@ -16,6 +16,29 @@
*
*/
+/**
+ * SECTION: e-extension
+ * @short_description: abstract base class for extensions
+ * @include: e-util/e-extension.h
+ *
+ * #EExtension provides a way to extend the functionality of objects
+ * that implement the #EExtensible interface. #EExtension subclasses
+ * can target a particular extensible object type. New instances of
+ * an extensible object type get paired with a new instance of each
+ * #EExtension subclass that targets the extensible object type.
+ *
+ * The first steps of writing a new extension are as follows:
+ *
+ * 1. Subclass #EExtension.
+ *
+ * 2. In the class initialization function, specify the #GType being
+ * extended. The #GType must implement the #EExtensible interface.
+ *
+ * 3. Register the extension's own #GType. If the extension is to
+ * be loaded dynamically using #GTypeModule, the type should be
+ * registered in the library module's e_module_load() function.
+ **/
+
#include "e-extension.h"
#define E_EXTENSION_GET_PRIVATE(obj) \
@@ -151,6 +174,14 @@ e_extension_init (EExtension *extension)
extension->priv = E_EXTENSION_GET_PRIVATE (extension);
}
+/**
+ * e_extension_get_extensible:
+ * @extension: an #EExtension
+ *
+ * Returns the object that @extension extends.
+ *
+ * Returns: the object being extended
+ **/
EExtensible *
e_extension_get_extensible (EExtension *extension)
{
diff --git a/e-util/e-extension.h b/e-util/e-extension.h
index 905ef412f3..e9eee64a62 100644
--- a/e-util/e-extension.h
+++ b/e-util/e-extension.h
@@ -47,6 +47,12 @@ typedef struct _EExtension EExtension;
typedef struct _EExtensionClass EExtensionClass;
typedef struct _EExtensionPrivate EExtensionPrivate;
+/**
+ * EExtension:
+ *
+ * Contains only private data that should be read and manipulated using the
+ * functions below.
+ **/
struct _EExtension {
GObject parent;
EExtensionPrivate *priv;
diff --git a/e-util/e-folder-map.c b/e-util/e-folder-map.c
index c77772f289..7d775bed8a 100644
--- a/e-util/e-folder-map.c
+++ b/e-util/e-folder-map.c
@@ -49,18 +49,18 @@ is_type_folder (const gchar *metadata, const gchar *search_type)
doc = e_xml_parse_file (metadata);
if (!doc) {
- g_warning ("Cannot parse `%s'", metadata);
+ g_warning ("Cannot parse '%s'", metadata);
return FALSE;
}
if (!(node = xmlDocGetRootElement (doc))) {
- g_warning ("`%s' corrupt: document contains no root node", metadata);
+ g_warning ("'%s' corrupt: document contains no root node", metadata);
xmlFreeDoc (doc);
return FALSE;
}
if (!node->name || strcmp ((gchar *)node->name, "efolder") != 0) {
- g_warning ("`%s' corrupt: root node is not 'efolder'", metadata);
+ g_warning ("'%s' corrupt: root node is not 'efolder'", metadata);
xmlFreeDoc (doc);
return FALSE;
}
@@ -122,7 +122,7 @@ e_folder_map_dir (const gchar *dirname, const gchar *type, GSList **dir_list)
}
if (!(dir = g_dir_open (path, 0, &error))) {
- g_warning ("cannot open `%s': %s", path, error->message);
+ g_warning ("cannot open '%s': %s", path, error->message);
g_error_free (error);
g_free (path);
return;
@@ -158,7 +158,7 @@ e_folder_map_local_folders (const gchar *local_dir, const gchar *type)
GError *error = NULL;
if (!(dir = g_dir_open (local_dir, 0, &error))) {
- g_warning ("cannot open `%s': %s", local_dir, error->message);
+ g_warning ("cannot open '%s': %s", local_dir, error->message);
g_error_free (error);
return NULL;
}
diff --git a/e-util/e-module.c b/e-util/e-module.c
index 3919841910..b61f5e7bdb 100644
--- a/e-util/e-module.c
+++ b/e-util/e-module.c
@@ -19,6 +19,12 @@
*
*/
+/**
+ * SECTION: e-module
+ * @short_description: a module loader
+ * @include: e-util/e-module.h
+ **/
+
#include "e-module.h"
#include <glib/gi18n.h>
diff --git a/e-util/e-module.h b/e-util/e-module.h
index 6f99fc0515..dc96bb34d9 100644
--- a/e-util/e-module.h
+++ b/e-util/e-module.h
@@ -19,11 +19,6 @@
*
*/
-/**
- * SECTION: e-module
- * @include: e-util/e-module.h
- **/
-
#ifndef E_MODULE_H
#define E_MODULE_H
diff --git a/e-util/e-selection.c b/e-util/e-selection.c
index 8be4c0b55a..3561dda636 100644
--- a/e-util/e-selection.c
+++ b/e-util/e-selection.c
@@ -19,6 +19,12 @@
*
*/
+/**
+ * SECTION: e-selection
+ * @short_description: selection and clipboard utilities
+ * @include: e-util/e-selection.h
+ **/
+
#include "e-selection.h"
#include <string.h>
diff --git a/e-util/e-selection.h b/e-util/e-selection.h
index f179180cd9..88ac772bae 100644
--- a/e-util/e-selection.h
+++ b/e-util/e-selection.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-selection
- * @short_description: selection and clipboard utilities
- * @include: e-util/e-selection.h
- **/
-
#ifndef E_SELECTION_H
#define E_SELECTION_H
diff --git a/e-util/e-ui-manager.c b/e-util/e-ui-manager.c
index 8c7455a054..f108cd37c5 100644
--- a/e-util/e-ui-manager.c
+++ b/e-util/e-ui-manager.c
@@ -16,6 +16,15 @@
*
*/
+/**
+ * SECTION: e-ui-manager
+ * @short_description: construct menus and toolbars from a UI definition
+ * @include: e-util/e-ui-manager.h
+ *
+ * This is a #GtkUIManager with support for Evolution's "express" mode,
+ * which influences the parsing of UI definitions.
+ **/
+
#include "e-ui-manager.h"
#include "e-util-private.h"
diff --git a/e-util/e-ui-manager.h b/e-util/e-ui-manager.h
index f0dc02c2cc..9b1f389d76 100644
--- a/e-util/e-ui-manager.h
+++ b/e-util/e-ui-manager.h
@@ -16,15 +16,6 @@
*
*/
-/**
- * SECTION: e-ui-manager
- * @short_description: construct menus and toolbars from a UI definition
- * @include: e-util/e-ui-manager.h
- *
- * This is a #GtkUIManager with support for Evolution's "express" mode,
- * which influences the parsing of UI definitions.
- **/
-
#ifndef E_UI_MANAGER_H
#define E_UI_MANAGER_H
diff --git a/e-util/e-util.c b/e-util/e-util.c
index cf5c0b0464..72ccd7a9e2 100644
--- a/e-util/e-util.c
+++ b/e-util/e-util.c
@@ -20,6 +20,11 @@
*
*/
+/**
+ * SECTION: e-util
+ * @include: e-util/e-util.h
+ **/
+
#include <config.h>
#include <stdlib.h>
@@ -237,7 +242,7 @@ e_lookup_action (GtkUIManager *ui_manager,
iter = g_list_next (iter);
}
- g_critical ("%s: action `%s' not found", G_STRFUNC, action_name);
+ g_critical ("%s: action '%s' not found", G_STRFUNC, action_name);
return NULL;
}
@@ -276,7 +281,7 @@ e_lookup_action_group (GtkUIManager *ui_manager,
iter = g_list_next (iter);
}
- g_critical ("%s: action group `%s' not found", G_STRFUNC, group_name);
+ g_critical ("%s: action group '%s' not found", G_STRFUNC, group_name);
return NULL;
}
diff --git a/e-util/e-util.h b/e-util/e-util.h
index dfbc6c0746..887cc20ce2 100644
--- a/e-util/e-util.h
+++ b/e-util/e-util.h
@@ -20,11 +20,6 @@
*
*/
-/**
- * SECTION: e-util
- * @include: e-util/e-util.h
- **/
-
#ifndef E_UTIL_H
#define E_UTIL_H
diff --git a/help/C/evolution.xml b/help/C/evolution.xml
index 299383b1a0..a343d84033 100644
--- a/help/C/evolution.xml
+++ b/help/C/evolution.xml
@@ -7036,7 +7036,7 @@
<para>Select this option to display weekends in one box instead of two in the month view.</para>
</formalpara>
<formalpara id="bsbhw7p">
- <title>Show week numbers in date navigator:</title>
+ <title>Show week numbers:</title>
<para>Shows the week numbers next to the respective weeks in the calendar.</para>
</formalpara>
<formalpara id="bsbhwdz">
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c
index 4ab444027f..734fefbd72 100644
--- a/mail/e-mail-backend.c
+++ b/mail/e-mail-backend.c
@@ -22,6 +22,7 @@
*
*/
+#include <string.h>
#include "e-mail-backend.h"
#include <camel/camel.h>
@@ -283,6 +284,11 @@ mail_backend_quit_requested_cb (EShell *shell,
/* We can quit immediately if offline. */
if (!e_shell_get_online (shell))
return;
+
+ /* In express mode, don't raise mail request in non mail window. */
+ if (e_shell_get_express_mode(shell) &&
+ strcmp(e_shell_window_get_active_view((EShellWindow *)window), "mail") != 0)
+ return;
/* Check Outbox for any unsent messages. */
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index 86ed222f04..fda1f3a034 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -208,6 +208,22 @@ mail_display_style_set (GtkWidget *widget,
}
static void
+mail_display_load_string (EWebView *web_view,
+ const gchar *string)
+{
+ EMailDisplayPrivate *priv;
+
+ priv = E_MAIL_DISPLAY_GET_PRIVATE (web_view);
+ g_return_if_fail (priv->formatter != NULL);
+
+ if (em_format_busy (EM_FORMAT (priv->formatter)))
+ return;
+
+ /* Chain up to parent's load_string() method. */
+ E_WEB_VIEW_CLASS (parent_class)->load_string (web_view, string);
+}
+
+static void
mail_display_url_requested (GtkHTML *html,
const gchar *uri,
GtkHTMLStream *stream)
@@ -270,6 +286,7 @@ mail_display_class_init (EMailDisplayClass *class)
{
GObjectClass *object_class;
GtkWidgetClass *widget_class;
+ EWebViewClass *web_view_class;
GtkHTMLClass *html_class;
parent_class = g_type_class_peek_parent (class);
@@ -284,6 +301,9 @@ mail_display_class_init (EMailDisplayClass *class)
widget_class->realize = mail_display_realize;
widget_class->style_set = mail_display_style_set;
+ web_view_class = E_WEB_VIEW_CLASS (class);
+ web_view_class->load_string = mail_display_load_string;
+
html_class = GTK_HTML_CLASS (class);
html_class->url_requested = mail_display_url_requested;
html_class->link_clicked = mail_display_link_clicked;
diff --git a/mail/e-mail-migrate.c b/mail/e-mail-migrate.c
index f28bf56825..34728929c2 100644
--- a/mail/e-mail-migrate.c
+++ b/mail/e-mail-migrate.c
@@ -1209,18 +1209,18 @@ is_mail_folder (const gchar *metadata)
gchar *type;
if (!(doc = xmlParseFile (metadata))) {
- g_warning ("Cannot parse `%s'", metadata);
+ g_warning ("Cannot parse '%s'", metadata);
return FALSE;
}
if (!(node = xmlDocGetRootElement (doc))) {
- g_warning ("`%s' corrupt: document contains no root node", metadata);
+ g_warning ("'%s' corrupt: document contains no root node", metadata);
xmlFreeDoc (doc);
return FALSE;
}
if (!node->name || strcmp ((gchar *)node->name, "efolder") != 0) {
- g_warning ("`%s' corrupt: root node is not 'efolder'", metadata);
+ g_warning ("'%s' corrupt: root node is not 'efolder'", metadata);
xmlFreeDoc (doc);
return FALSE;
}
@@ -1591,7 +1591,7 @@ em_migrate_folder(EMMigrateSession *session, const gchar *dirname, const gchar *
g_set_error (
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
- _("Unable to create new folder `%s': %s"),
+ _("Unable to create new folder '%s': %s"),
dest->str, g_strerror (errno));
goto fatal;
}
@@ -1619,7 +1619,7 @@ em_migrate_folder(EMMigrateSession *session, const gchar *dirname, const gchar *
g_set_error (
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
- _("Unable to copy folder `%s' to `%s': %s"),
+ _("Unable to copy folder '%s' to '%s': %s"),
src->str, dest->str, g_strerror (errno));
goto fatal;
}
@@ -1815,7 +1815,7 @@ em_migrate_local_folders_1_4 (EMMigrateSession *session, GError **error)
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
_("Unable to scan for existing mailboxes at "
- "`%s': %s"), session->srcdir, g_strerror (errno));
+ "'%s': %s"), session->srcdir, g_strerror (errno));
return FALSE;
}
@@ -2025,7 +2025,7 @@ em_migrate_pop_uid_caches_1_4 (const gchar *data_dir, GError **error)
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
_("Unable to open old POP keep-on-server data "
- "`%s': %s"), cache_dir, g_strerror (errno));
+ "'%s': %s"), cache_dir, g_strerror (errno));
g_free (cache_dir);
return FALSE;
}
@@ -2041,7 +2041,7 @@ em_migrate_pop_uid_caches_1_4 (const gchar *data_dir, GError **error)
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
_("Unable to create POP3 keep-on-server data "
- "directory `%s': %s"), cache_dir,
+ "directory '%s': %s"), cache_dir,
g_strerror (errno));
g_string_free (oldpath, TRUE);
g_free (cache_dir);
@@ -2073,7 +2073,7 @@ em_migrate_pop_uid_caches_1_4 (const gchar *data_dir, GError **error)
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
_("Unable to copy POP3 keep-on-server data "
- "`%s': %s"), oldpath->str,
+ "'%s': %s"), oldpath->str,
g_strerror (errno));
success = FALSE;
}
@@ -2357,7 +2357,7 @@ e_path_to_physical (const gchar *prefix, const gchar *vpath)
ppath_len++; /* For the separating slash. */
/* Take account of the fact that we need to translate every
- * separator into `subfolders/'.
+ * separator into 'subfolders/'.
*/
p = vpath;
while (1) {
@@ -2391,7 +2391,7 @@ e_path_to_physical (const gchar *prefix, const gchar *vpath)
break;
}
- memcpy (dp, p, newp - p + 1); /* `+ 1' to copy the slash too. */
+ memcpy (dp, p, newp - p + 1); /* '+ 1' to copy the slash too. */
dp += newp - p + 1;
memcpy (dp, SUBFOLDER_DIR_NAME, SUBFOLDER_DIR_NAME_LEN);
@@ -2544,7 +2544,7 @@ em_migrate_1_4 (const gchar *data_dir, xmlDocPtr filters, xmlDocPtr vfolders, GE
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
_("Failed to create local mail storage "
- "`%s': %s"), path + 5, g_strerror (errno));
+ "'%s': %s"), path + 5, g_strerror (errno));
g_free (session->srcdir);
camel_object_unref (session);
g_free (path);
@@ -2557,7 +2557,7 @@ em_migrate_1_4 (const gchar *data_dir, xmlDocPtr filters, xmlDocPtr vfolders, GE
g_set_error (
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
- _("Failed to create local mail storage `%s': %s"),
+ _("Failed to create local mail storage '%s': %s"),
path, lex.desc);
g_free (session->srcdir);
camel_object_unref (session);
@@ -3028,7 +3028,7 @@ e_mail_migrate (EShellBackend *shell_backend,
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
_("Unable to create local mail folders at "
- "`%s': %s"), data_dir, g_strerror (errno));
+ "'%s': %s"), data_dir, g_strerror (errno));
return FALSE;
}
}
@@ -3046,7 +3046,7 @@ e_mail_migrate (EShellBackend *shell_backend,
error, E_SHELL_MIGRATE_ERROR,
E_SHELL_MIGRATE_ERROR_FAILED,
_("Unable to read settings from previous "
- "Evolution install, `evolution/config.xmldb' "
+ "Evolution install, 'evolution/config.xmldb' "
"does not exist or is corrupt."));
return FALSE;
}
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index c670446a50..10f1864497 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -1286,8 +1286,8 @@ static GtkActionEntry mail_reader_entries[] = {
N_("Mark the selected messages as junk"),
G_CALLBACK (action_mail_mark_junk_cb) },
- { "mail-mark-notjunk",
- "mail-mark-notjunk",
+ { "mail-mark-not-junk",
+ "mail-mark-not-junk",
N_("_Not Junk"),
"<Shift><Control>j",
N_("Mark the selected messages as not being junk"),
@@ -1596,9 +1596,9 @@ static EPopupActionEntry mail_reader_popup_entries[] = {
N_("Mark as _Junk"),
"mail-mark-junk" },
- { "mail-popup-mark-notjunk",
+ { "mail-popup-mark-not-junk",
N_("Mark as _Not Junk"),
- "mail-mark-notjunk" },
+ "mail-mark-not-junk" },
{ "mail-popup-mark-read",
N_("Mar_k as Read"),
@@ -1781,28 +1781,6 @@ mail_reader_message_read_cb (EMailReader *reader)
}
static void
-update_webview_content (EMailReader *reader, const gchar *content)
-{
- EMFormatHTMLDisplay *html_display;
- EWebView *web_view;
-
- g_return_if_fail (reader != NULL);
- g_return_if_fail (content != NULL);
-
- html_display = e_mail_reader_get_html_display (reader);
- g_return_if_fail (html_display != NULL);
-
- /* skip the progress message when it's formatting something */
- if (em_format_busy (EM_FORMAT (html_display)))
- return;
-
- web_view = E_WEB_VIEW (EM_FORMAT_HTML (html_display)->html);
- g_return_if_fail (web_view != NULL);
-
- e_web_view_load_string (web_view, content);
-}
-
-static void
mail_reader_message_loaded_cb (CamelFolder *folder,
const gchar *message_uid,
CamelMimeMessage *message,
@@ -1816,6 +1794,7 @@ mail_reader_message_loaded_cb (CamelFolder *folder,
EShellBackend *shell_backend;
EShellSettings *shell_settings;
EShell *shell;
+ EWebView *web_view;
EMEvent *event;
EMEventTargetMessage *target;
const gchar *cursor_uid;
@@ -1841,6 +1820,8 @@ mail_reader_message_loaded_cb (CamelFolder *folder,
cursor_uid = MESSAGE_LIST (message_list)->cursor_uid;
+ web_view = E_WEB_VIEW (EM_FORMAT_HTML (html_display)->html);
+
/* If the user picked a different message in the time it took
* to fetch this message, then don't bother rendering it. */
if (g_strcmp0 (cursor_uid, message_uid) != 0)
@@ -1899,10 +1880,11 @@ mail_reader_message_loaded_cb (CamelFolder *folder,
_("Unable to retrieve message"),
ex->desc);
} else {
- string = g_strdup_printf (_("Retrieving message '%s'"), cursor_uid);
+ string = g_strdup_printf (
+ _("Retrieving message '%s'"), cursor_uid);
}
- update_webview_content (reader, string);
+ e_web_view_load_string (web_view, string);
g_free (string);
camel_exception_clear (ex);
@@ -1921,6 +1903,7 @@ mail_reader_message_selected_timeout_cb (EMailReader *reader)
EMailReaderPrivate *priv;
EMFormatHTMLDisplay *html_display;
GtkWidget *message_list;
+ EWebView *web_view;
CamelFolder *folder;
const gchar *cursor_uid;
const gchar *format_uid;
@@ -1934,6 +1917,8 @@ mail_reader_message_selected_timeout_cb (EMailReader *reader)
cursor_uid = MESSAGE_LIST (message_list)->cursor_uid;
format_uid = EM_FORMAT (html_display)->uid;
+ web_view = E_WEB_VIEW (EM_FORMAT_HTML (html_display)->html);
+
if (MESSAGE_LIST (message_list)->last_sel_single) {
GtkWidget *widget;
gboolean html_display_visible;
@@ -1956,8 +1941,9 @@ mail_reader_message_selected_timeout_cb (EMailReader *reader)
gboolean store_async;
MailMsgDispatchFunc disp_func;
- string = g_strdup_printf (_("Retrieving message '%s'"), cursor_uid);
- update_webview_content (reader, string);
+ string = g_strdup_printf (
+ _("Retrieving message '%s'"), cursor_uid);
+ e_web_view_load_string (web_view, string);
g_free (string);
store_async = folder->parent_store->flags & CAMEL_STORE_ASYNC;
@@ -2318,7 +2304,7 @@ mail_reader_update_actions (EMailReader *reader)
action = e_mail_reader_get_action (reader, action_name);
gtk_action_set_sensitive (action, sensitive && !(state & E_MAIL_READER_FOLDER_IS_JUNK));
- action_name = "mail-mark-notjunk";
+ action_name = "mail-mark-not-junk";
sensitive = selection_has_junk_messages;
action = e_mail_reader_get_action (reader, action_name);
gtk_action_set_sensitive (action, sensitive);
@@ -2671,32 +2657,6 @@ e_mail_reader_init (EMailReader *reader)
/* Bind properties. */
- e_binding_new_full (
- shell_settings, "mail-citation-color",
- html_display, "citation-color",
- e_binding_transform_string_to_color,
- NULL, NULL);
-
- e_binding_new (
- shell_settings, "mail-image-loading-policy",
- html_display, "image-loading-policy");
-
- e_binding_new (
- shell_settings, "mail-only-local-photos",
- html_display, "only-local-photos");
-
- e_binding_new (
- shell_settings, "mail-show-animated-images",
- web_view, "animate");
-
- e_binding_new (
- shell_settings, "mail-show-sender-photo",
- html_display, "show-sender-photo");
-
- e_binding_new (
- shell_settings, "mail-show-real-date",
- html_display, "show-real-date");
-
action_name = "mail-caret-mode";
action = e_mail_reader_get_action (reader, action_name);
@@ -2935,7 +2895,7 @@ e_mail_reader_get_action (EMailReader *reader,
if (action == NULL)
g_critical (
- "%s: action `%s' not found", G_STRFUNC, action_name);
+ "%s: action '%s' not found", G_STRFUNC, action_name);
return action;
}
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c
index 77d2dc8216..38be2f3dbd 100644
--- a/mail/em-account-editor.c
+++ b/mail/em-account-editor.c
@@ -835,7 +835,6 @@ emae_signature_new (GtkWidget *widget, EMAccountEditor *emae)
EShell *shell;
EShellSettings *shell_settings;
GtkWidget *editor;
- gboolean html_mode;
gpointer parent;
shell = e_shell_get_default ();
@@ -844,11 +843,7 @@ emae_signature_new (GtkWidget *widget, EMAccountEditor *emae)
parent = gtk_widget_get_toplevel (widget);
parent = gtk_widget_is_toplevel (parent) ? parent : NULL;
- html_mode = e_shell_settings_get_boolean (
- shell_settings, "composer-format-html");
-
editor = e_signature_editor_new ();
- gtkhtml_editor_set_html_mode (GTKHTML_EDITOR (editor), html_mode);
gtk_window_set_transient_for (GTK_WINDOW (editor), parent);
gtk_widget_show (editor);
}
@@ -2196,7 +2191,9 @@ emae_identity_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
gtk_notebook_append_page ((GtkNotebook *)parent, w, gtk_label_new (_("Identity")));
}
- emae_queue_widgets (emae, builder, "account_vbox", "identity_required_table", "identity_optional_table", "identity_optional_frame", NULL);
+ emae_queue_widgets (emae, builder, "account_vbox", "identity_required_table",
+ "identity_optional_table", "identity_optional_frame",
+ "identity_address", NULL);
g_object_unref (builder);
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
index fc312c8ae4..25e1761eb4 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
@@ -720,16 +720,14 @@ em_utils_composer_print_cb (EMsgComposer *composer,
/* Composing messages... */
static EMsgComposer *
-create_new_composer (const gchar *subject, const gchar *fromuri, gboolean lite)
+create_new_composer (const gchar *subject, const gchar *fromuri)
{
EMsgComposer *composer;
EComposerHeaderTable *table;
EAccount *account = NULL;
- if (lite)
- composer = e_msg_composer_lite_new ();
- else
- composer = e_msg_composer_new ();
+ composer = e_msg_composer_new ();
+
table = e_msg_composer_get_header_table (composer);
if (fromuri != NULL) {
@@ -759,7 +757,7 @@ em_utils_compose_new_message (const gchar *fromuri)
{
GtkWidget *composer;
- composer = (GtkWidget *) create_new_composer ("", fromuri, FALSE);
+ composer = (GtkWidget *) create_new_composer ("", fromuri);
if (composer == NULL)
return;
@@ -769,26 +767,6 @@ em_utils_compose_new_message (const gchar *fromuri)
}
/**
- * em_utils_compose_lite_new_message:
- *
- * Opens a new composer window as a child window of @parent's toplevel
- * window.
- **/
-EMsgComposer *
-em_utils_compose_lite_new_message (const gchar *fromuri)
-{
- GtkWidget *composer;
-
- composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE);
- if (composer == NULL)
- return NULL;
-
- composer_set_no_change (E_MSG_COMPOSER (composer), TRUE, TRUE);
-
- return E_MSG_COMPOSER (composer);
-}
-
-/**
* em_utils_compose_new_message_with_mailto:
* @url: mailto url
*
@@ -816,10 +794,8 @@ em_utils_compose_new_message_with_mailto (const gchar *url, const gchar *fromuri
composer_set_no_change (composer, TRUE, url == NULL);
- if (!e_msg_composer_get_lite ()) {
- gtk_widget_show ((GtkWidget *) composer);
- gdk_window_raise (((GtkWidget *) composer)->window);
- }
+ gtk_widget_show ((GtkWidget *) composer);
+ gdk_window_raise (((GtkWidget *) composer)->window);
return composer;
}
@@ -996,8 +972,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const gchar *uid)
composer_set_no_change (composer, TRUE, FALSE);
- if (!e_msg_composer_get_lite())
- gtk_widget_show (GTK_WIDGET (composer));
+ gtk_widget_show (GTK_WIDGET (composer));
return (GtkWidget *)composer;
}
@@ -1146,7 +1121,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam
{
EMsgComposer *composer;
- composer = create_new_composer (subject, fromuri, FALSE);
+ composer = create_new_composer (subject, fromuri);
if (composer == NULL)
return NULL;
@@ -1157,8 +1132,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam
composer_set_no_change (composer, TRUE, TRUE);
- if (!e_msg_composer_get_lite())
- gtk_widget_show (GTK_WIDGET (composer));
+ gtk_widget_show (GTK_WIDGET (composer));
return composer;
}
@@ -1228,7 +1202,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages,
text = em_utils_message_to_html (message, _("-------- Forwarded Message --------"), flags, &len, NULL, NULL, &validity_found);
if (text) {
- composer = create_new_composer (subject, fromuri, FALSE);
+ composer = create_new_composer (subject, fromuri);
if (composer) {
if (CAMEL_IS_MULTIPART(camel_medium_get_content_object((CamelMedium *)message)))
@@ -1245,8 +1219,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages,
emu_update_composers_security (composer, validity_found);
composer_set_no_change (composer, TRUE, TRUE);
- if (!e_msg_composer_get_lite())
- gtk_widget_show (GTK_WIDGET (composer));
+ gtk_widget_show (GTK_WIDGET (composer));
}
g_free (text);
}
@@ -2288,8 +2261,7 @@ em_utils_reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessag
composer_set_no_change (composer, TRUE, TRUE);
- if (!e_msg_composer_get_lite())
- gtk_widget_show (GTK_WIDGET (composer));
+ gtk_widget_show (GTK_WIDGET (composer));
return composer;
}
diff --git a/mail/em-composer-utils.h b/mail/em-composer-utils.h
index be29a7ae71..92e7e182f4 100644
--- a/mail/em-composer-utils.h
+++ b/mail/em-composer-utils.h
@@ -33,7 +33,6 @@
G_BEGIN_DECLS
void em_utils_compose_new_message (const gchar *fromuri);
-EMsgComposer * em_utils_compose_lite_new_message (const gchar *fromuri);
/* FIXME: mailto? url? should make up its mind what its called. imho use 'uri' */
EMsgComposer * em_utils_compose_new_message_with_mailto (const gchar *url, const gchar *fromuri);
diff --git a/mail/em-folder-tree-model.c b/mail/em-folder-tree-model.c
index 3daacc52c5..b779caf63a 100644
--- a/mail/em-folder-tree-model.c
+++ b/mail/em-folder-tree-model.c
@@ -37,10 +37,13 @@
#include <camel/camel-file-utils.h>
+#include "e-mail-store.h"
+
#include "mail-config.h"
#include "mail-session.h"
#include "mail-tools.h"
#include "mail-mt.h"
+#include "mail-ops.h"
/* sigh, these 2 only needed for outbox total count checking - a mess */
#include "mail-folder-cache.h"
@@ -80,6 +83,7 @@ struct _EMFolderTreeModelPrivate {
gulong account_changed_id;
gulong account_removed_id;
+ gulong account_added_id;
};
enum {
@@ -256,6 +260,26 @@ account_removed_cb (EAccountList *accounts,
em_folder_tree_model_remove_store (model, si->store);
}
+/* HACK: FIXME: the component should listen to the account object directly */
+static void
+add_new_store (gchar *uri, CamelStore *store, gpointer user_data)
+{
+ EAccount *account = user_data;
+
+ if (store == NULL)
+ return;
+
+ e_mail_store_add (store, account->name);
+}
+
+static void
+account_added_cb (EAccountList *accounts,
+ EAccount *account,
+ EMFolderTreeModel *model)
+{
+ mail_get_store (e_account_get_string (account, E_ACCOUNT_SOURCE_URL), NULL, add_new_store, account);
+}
+
static void
folder_tree_model_selection_finalized_cb (EMFolderTreeModel *model)
{
@@ -332,6 +356,8 @@ folder_tree_model_finalize (GObject *object)
priv->accounts, priv->account_changed_id);
g_signal_handler_disconnect (
priv->accounts, priv->account_removed_id);
+ g_signal_handler_disconnect (
+ priv->accounts, priv->account_added_id);
/* Chain up to parent's finalize() method. */
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -512,6 +538,9 @@ folder_tree_model_init (EMFolderTreeModel *model)
model->priv->account_removed_id = g_signal_connect (
model->priv->accounts, "account-removed",
G_CALLBACK (account_removed_cb), model);
+ model->priv->account_added_id = g_signal_connect (
+ model->priv->accounts, "account-added",
+ G_CALLBACK (account_added_cb), model);
g_signal_connect (mail_folder_cache_get_default (),
"folder-unread-updated",
diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c
index ad1b929e9d..aee37d7d16 100644
--- a/mail/em-folder-utils.c
+++ b/mail/em-folder-utils.c
@@ -504,7 +504,7 @@ struct _EMCreateFolderTempData
static gchar *
emfu_create_folder__desc (struct _EMCreateFolder *m)
{
- return g_strdup_printf (_("Creating folder `%s'"), m->full_name);
+ return g_strdup_printf (_("Creating folder '%s'"), m->full_name);
}
static void
diff --git a/mail/em-format-html.c b/mail/em-format-html.c
index 780b4c9581..db03a6a9d0 100644
--- a/mail/em-format-html.c
+++ b/mail/em-format-html.c
@@ -47,6 +47,7 @@
#include "e-util/e-icon-factory.h"
#include "e-util/e-util-private.h"
#include "e-util/e-util.h"
+#include "e-util/e-extensible.h"
#include <gtkhtml/gtkhtml.h>
#include <gtkhtml/gtkhtml-stream.h>
@@ -965,6 +966,8 @@ efh_init (EMFormatHTML *efh,
g_signal_connect_swapped (
efh, "notify::mark-citations",
G_CALLBACK (em_format_redraw), NULL);
+
+ e_extensible_load_extensions (E_EXTENSIBLE (efh));
}
GType
@@ -986,9 +989,18 @@ em_format_html_get_type (void)
NULL /* value_table */
};
+ static const GInterfaceInfo extensible_info = {
+ (GInterfaceInitFunc) NULL,
+ (GInterfaceFinalizeFunc) NULL,
+ NULL /* interface_data */
+ };
+
type = g_type_register_static (
em_format_get_type(), "EMFormatHTML",
&type_info, G_TYPE_FLAG_ABSTRACT);
+
+ g_type_add_interface_static (
+ type, E_TYPE_EXTENSIBLE, &extensible_info);
}
return type;
@@ -1383,7 +1395,7 @@ static void emfh_gethttp(struct _EMFormatHTMLJob *job, gint cancelled)
camel_http_stream_set_proxy ((CamelHttpStream *)instream, proxy);
g_free (proxy);
}
- camel_operation_start(NULL, _("Retrieving `%s'"), job->u.uri);
+ camel_operation_start(NULL, _("Retrieving '%s'"), job->u.uri);
tmp_stream = (CamelHttpStream *)instream;
content_type = camel_http_stream_get_content_type(tmp_stream);
length = camel_header_raw_find(&tmp_stream->headers, "Content-Length", NULL);
@@ -1392,7 +1404,7 @@ static void emfh_gethttp(struct _EMFormatHTMLJob *job, gint cancelled)
total = atoi(length);
camel_content_type_unref(content_type);
} else
- camel_operation_start_transient(NULL, _("Retrieving `%s'"), job->u.uri);
+ camel_operation_start_transient(NULL, _("Retrieving '%s'"), job->u.uri);
camel_url_free(url);
diff --git a/mail/evolution-mail.schemas.in b/mail/evolution-mail.schemas.in
index 09d875a361..294cf75f9a 100644
--- a/mail/evolution-mail.schemas.in
+++ b/mail/evolution-mail.schemas.in
@@ -160,21 +160,6 @@
</schema>
<schema>
- <key>/schemas/apps/evolution/mail/composer/show_mail_from</key>
- <applyto>/apps/evolution/mail/composer/show_mail_from</applyto>
- <owner>evolution-mail</owner>
- <type>bool</type>
- <default>true</default>
- <locale name="C">
- <short>Show "From" field when sending a mail message</short>
- <long>
- Show the "From" field when sending a mail message. This is
- controlled from the View menu when a mail account is chosen.
- </long>
- </locale>
- </schema>
-
- <schema>
<key>/schemas/apps/evolution/mail/composer/show_mail_reply_to</key>
<applyto>/apps/evolution/mail/composer/show_mail_reply_to</applyto>
<owner>evolution-mail</owner>
diff --git a/mail/importers/mail-importer.c b/mail/importers/mail-importer.c
index ee1c958d12..f61ce2658b 100644
--- a/mail/importers/mail-importer.c
+++ b/mail/importers/mail-importer.c
@@ -152,7 +152,7 @@ import_mbox_exec (struct _import_mbox_msg *m)
if (m->cancel)
oldcancel = camel_operation_register(m->cancel);
- camel_operation_start(NULL, _("Importing `%s'"), folder->full_name);
+ camel_operation_start(NULL, _("Importing '%s'"), folder->full_name);
camel_folder_freeze(folder);
while (camel_mime_parser_step(mp, NULL, NULL) == CAMEL_MIME_PARSER_STATE_FROM) {
CamelMimeMessage *msg;
diff --git a/mail/mail-config.ui b/mail/mail-config.ui
index 55f5ee6227..8f8935bd0e 100644
--- a/mail/mail-config.ui
+++ b/mail/mail-config.ui
@@ -2923,7 +2923,7 @@ For example: "Work" or "Personal"</property>
</packing>
</child>
<child>
- <object class="GtkHBox" id="hbox234">
+ <object class="GtkHBox" id="hboxMailSizeLimit">
<property name="visible">True</property>
<property name="spacing">4</property>
<child>
@@ -2972,7 +2972,7 @@ For example: "Work" or "Personal"</property>
</packing>
</child>
<child>
- <object class="GtkHBox" id="hbox233">
+ <object class="GtkHBox" id="hboxShrinkAddresses">
<property name="visible">True</property>
<child>
<object class="GtkCheckButton" id="address_checkbox">
@@ -4481,7 +4481,7 @@ For example: "Work" or "Personal"</property>
<property name="visible">True</property>
<property name="spacing">2</property>
<child>
- <object class="GtkVBox" id="vbox207">
+ <object class="GtkVBox" id="vboxTopPosting">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
@@ -4540,7 +4540,7 @@ For example: "Work" or "Personal"</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label506">
+ <object class="GtkLabel" id="labelAlerts">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Alerts</property>
diff --git a/mail/mail-folder-cache.c b/mail/mail-folder-cache.c
index 10a66a4f47..b1a332d4f4 100644
--- a/mail/mail-folder-cache.c
+++ b/mail/mail-folder-cache.c
@@ -23,6 +23,11 @@
*
*/
+/**
+ * SECTION: mail-folder-cache
+ * @short_description: Stores information about open folders
+ **/
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/mail/mail-folder-cache.h b/mail/mail-folder-cache.h
index 8a7b82eada..dd3a108d03 100644
--- a/mail/mail-folder-cache.h
+++ b/mail/mail-folder-cache.h
@@ -31,11 +31,6 @@
G_BEGIN_DECLS
-/**
- * SECTION: mail-folder-cache
- * @short_description: Stores information about open folders
- **/
-
#define MAIL_TYPE_FOLDER_CACHE mail_folder_cache_get_type()
#define MAIL_FOLDER_CACHE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAIL_TYPE_FOLDER_CACHE, MailFolderCache))
#define MAIL_FOLDER_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAIL_TYPE_FOLDER_CACHE, MailFolderCacheClass))
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 73ad926390..7cbb91bede 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -595,7 +595,7 @@ mail_send_message (struct _send_queue_msg *m, CamelFolder *queue, const gchar *u
folder = mail_tool_uri_to_folder (sent_folder_uri, 0, ex);
if (camel_exception_is_set(ex)) {
g_string_append_printf (err, _("Failed to append to %s: %s\n"
- "Appending to local `Sent' folder instead."),
+ "Appending to local 'Sent' folder instead."),
sent_folder_uri, camel_exception_get_description (ex));
camel_exception_clear (ex);
}
@@ -622,7 +622,7 @@ mail_send_message (struct _send_queue_msg *m, CamelFolder *queue, const gchar *u
if (err->len)
g_string_append(err, "\n\n");
g_string_append_printf (err, _("Failed to append to %s: %s\n"
- "Appending to local `Sent' folder instead."),
+ "Appending to local 'Sent' folder instead."),
name, camel_exception_get_description (ex));
camel_object_ref (sent_folder);
camel_object_unref (folder);
@@ -638,7 +638,7 @@ mail_send_message (struct _send_queue_msg *m, CamelFolder *queue, const gchar *u
if (err->len)
g_string_append(err, "\n\n");
- g_string_append_printf (err, _("Failed to append to local `Sent' folder: %s"),
+ g_string_append_printf (err, _("Failed to append to local 'Sent' folder: %s"),
camel_exception_get_description (ex));
}
}
diff --git a/mail/mail-tools.c b/mail/mail-tools.c
index 9e268d85cf..f006b1b963 100644
--- a/mail/mail-tools.c
+++ b/mail/mail-tools.c
@@ -120,7 +120,7 @@ mail_tool_get_local_movemail_path (const guchar *uri, CamelException *ex)
path = g_build_filename (data_dir, "spool", NULL);
if (g_stat(path, &st) == -1 && g_mkdir_with_parents(path, 0700) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Could not create spool directory `%s': %s"),
+ camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Could not create spool directory '%s': %s"),
path, g_strerror(errno));
g_free(path);
return NULL;
@@ -150,7 +150,7 @@ mail_tool_do_movemail (const gchar *source_url, CamelException *ex)
if (strcmp(uri->protocol, "mbox") != 0) {
/* This is really only an internal error anyway */
camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
- _("Trying to movemail a non-mbox source `%s'"),
+ _("Trying to movemail a non-mbox source '%s'"),
source_url);
camel_url_free(uri);
return NULL;
@@ -298,7 +298,7 @@ mail_tool_uri_to_folder (const gchar *uri, guint32 flags, CamelException *ex)
/* FIXME?: the filter:get_folder callback should do this itself? */
curi = em_uri_to_camel(uri);
if (uri == NULL) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Invalid folder: `%s'"), uri);
+ camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Invalid folder: '%s'"), uri);
return NULL;
}
uri = curi;
diff --git a/modules/Makefile.am b/modules/Makefile.am
index 653d1b69c6..4c0c38dcbb 100644
--- a/modules/Makefile.am
+++ b/modules/Makefile.am
@@ -10,6 +10,10 @@ if ENABLE_NETWORK_MANAGER
NETWORK_MANAGER_DIR = network-manager
endif
+if ENABLE_CONNMAN
+CONNMAN_DIR = connman
+endif
+
if ENABLE_WINDOWS_SENS
WINDOWS_SENS_DIR = windows-sens
endif
@@ -22,6 +26,7 @@ SUBDIRS = \
$(MONO_DIR) \
$(PYTHON_DIR) \
$(NETWORK_MANAGER_DIR) \
- $(WINDOWS_SENS_DIR)
+ $(WINDOWS_SENS_DIR) \
+ $(CONNMAN_DIR)
-include $(top_srcdir)/git.mk
diff --git a/modules/addressbook/e-book-shell-content.c b/modules/addressbook/e-book-shell-content.c
index 55b833269e..9642627844 100644
--- a/modules/addressbook/e-book-shell-content.c
+++ b/modules/addressbook/e-book-shell-content.c
@@ -629,6 +629,7 @@ e_book_shell_content_set_preview_visible (EBookShellContent *book_shell_content,
EShellSearchbar *
e_book_shell_content_get_searchbar (EBookShellContent *book_shell_content)
{
+ EShellView *shell_view;
EShellContent *shell_content;
GtkWidget *widget;
@@ -636,7 +637,8 @@ e_book_shell_content_get_searchbar (EBookShellContent *book_shell_content)
E_IS_BOOK_SHELL_CONTENT (book_shell_content), NULL);
shell_content = E_SHELL_CONTENT (book_shell_content);
- widget = e_shell_content_get_searchbar (shell_content);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ widget = e_shell_view_get_searchbar (shell_view);
return E_SHELL_SEARCHBAR (widget);
}
diff --git a/modules/addressbook/e-book-shell-migrate.c b/modules/addressbook/e-book-shell-migrate.c
index c237f40d94..55246ce047 100644
--- a/modules/addressbook/e-book-shell-migrate.c
+++ b/modules/addressbook/e-book-shell-migrate.c
@@ -370,7 +370,7 @@ migrate_contacts (MigrationContext *context, EBook *old_book, EBook *new_book)
if (!e_book_add_contact (new_book,
contact,
&e))
- g_warning ("contact add failed: `%s'", e->message);
+ g_warning ("contact add failed: '%s'", e->message);
num_added ++;
@@ -400,14 +400,14 @@ migrate_contact_folder_to_source (MigrationContext *context, gchar *old_path, ES
old_book = e_book_new (old_source, &e);
if (!old_book
|| !e_book_open (old_book, TRUE, &e)) {
- g_warning ("failed to load source book for migration: `%s'", e->message);
+ g_warning ("failed to load source book for migration: '%s'", e->message);
goto finish;
}
new_book = e_book_new (new_source, &e);
if (!new_book
|| !e_book_open (new_book, FALSE, &e)) {
- g_warning ("failed to load destination book for migration: `%s'", e->message);
+ g_warning ("failed to load destination book for migration: '%s'", e->message);
goto finish;
}
@@ -809,7 +809,7 @@ migrate_completion_folders (MigrationContext *context)
e_source_set_property (source, "completion", "true");
}
else {
- g_warning ("found completion folder with uri `%s' that "
+ g_warning ("found completion folder with uri '%s' that "
"doesn't correspond to anything we migrated.", physical_uri);
}
@@ -886,7 +886,7 @@ migrate_contact_lists_for_local_folders (MigrationContext *context, ESourceGroup
if (!e_book_commit_contact (book,
contact,
&e))
- g_warning ("contact commit failed: `%s'", e->message);
+ g_warning ("contact commit failed: '%s'", e->message);
}
num_converted ++;
@@ -989,7 +989,7 @@ migrate_company_phone_for_local_folders (MigrationContext *context, ESourceGroup
if (!e_book_commit_contact (book,
contact,
&e))
- g_warning ("contact commit failed: `%s'", e->message);
+ g_warning ("contact commit failed: '%s'", e->message);
}
num_converted ++;
diff --git a/modules/calendar/Makefile.am b/modules/calendar/Makefile.am
index 0a22b2f568..bbabb6cfb2 100644
--- a/modules/calendar/Makefile.am
+++ b/modules/calendar/Makefile.am
@@ -14,8 +14,20 @@ libevolution_module_calendar_la_SOURCES = \
evolution-module-calendar.c \
e-cal-attachment-handler.c \
e-cal-attachment-handler.h \
+ e-cal-config-calendar-item.c \
+ e-cal-config-calendar-item.h \
+ e-cal-config-date-edit.c \
+ e-cal-config-date-edit.h \
e-cal-config-hook.c \
e-cal-config-hook.h \
+ e-cal-config-meeting-store.c \
+ e-cal-config-meeting-store.h \
+ e-cal-config-meeting-time-selector.c \
+ e-cal-config-meeting-time-selector.h \
+ e-cal-config-model.c \
+ e-cal-config-model.h \
+ e-cal-config-view.c \
+ e-cal-config-view.h \
e-cal-event-hook.c \
e-cal-event-hook.h \
e-cal-shell-backend.c \
diff --git a/modules/calendar/e-cal-config-calendar-item.c b/modules/calendar/e-cal-config-calendar-item.c
new file mode 100644
index 0000000000..5c585f94ca
--- /dev/null
+++ b/modules/calendar/e-cal-config-calendar-item.c
@@ -0,0 +1,79 @@
+/*
+ * e-cal-config-calendar-item.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include "e-cal-config-calendar-item.h"
+
+#include <shell/e-shell.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extension.h>
+#include <misc/e-calendar-item.h>
+
+static void
+cal_config_calendar_item_constructed (GObject *object)
+{
+ EExtension *extension;
+ EExtensible *extensible;
+ EShellSettings *shell_settings;
+ EShell *shell;
+
+ extension = E_EXTENSION (object);
+ extensible = e_extension_get_extensible (extension);
+
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ e_binding_new (
+ shell_settings, "cal-show-week-numbers",
+ extensible, "show-week-numbers");
+
+ e_binding_new (
+ shell_settings, "cal-week-start-day",
+ extensible, "week-start-day");
+}
+
+static void
+cal_config_calendar_item_class_init (EExtensionClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = cal_config_calendar_item_constructed;
+
+ class->extensible_type = E_TYPE_CALENDAR_ITEM;
+}
+
+void
+e_cal_config_calendar_item_register_type (GTypeModule *type_module)
+{
+ static const GTypeInfo type_info = {
+ sizeof (EExtensionClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) cal_config_calendar_item_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EExtension),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ NULL /* value_table */
+ };
+
+ g_type_module_register_type (
+ type_module, E_TYPE_EXTENSION,
+ "ECalConfigCalendarItem", &type_info, 0);
+}
diff --git a/modules/calendar/e-cal-config-calendar-item.h b/modules/calendar/e-cal-config-calendar-item.h
new file mode 100644
index 0000000000..af12eb244a
--- /dev/null
+++ b/modules/calendar/e-cal-config-calendar-item.h
@@ -0,0 +1,30 @@
+/*
+ * e-cal-config-calendar-item.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_CAL_CONFIG_CALENDAR_ITEM_H
+#define E_CAL_CONFIG_CALENDAR_ITEM_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+void e_cal_config_calendar_item_register_type (GTypeModule *type_module);
+
+G_END_DECLS
+
+#endif /* E_CAL_CONFIG_CALENDAR_ITEM_H */
diff --git a/modules/calendar/e-cal-config-date-edit.c b/modules/calendar/e-cal-config-date-edit.c
new file mode 100644
index 0000000000..667e749dff
--- /dev/null
+++ b/modules/calendar/e-cal-config-date-edit.c
@@ -0,0 +1,79 @@
+/*
+ * e-cal-config-date-edit.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include "e-cal-config-date-edit.h"
+
+#include <shell/e-shell.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extension.h>
+#include <misc/e-dateedit.h>
+
+static void
+cal_config_date_edit_constructed (GObject *object)
+{
+ EExtension *extension;
+ EExtensible *extensible;
+ EShellSettings *shell_settings;
+ EShell *shell;
+
+ extension = E_EXTENSION (object);
+ extensible = e_extension_get_extensible (extension);
+
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ e_binding_new (
+ shell_settings, "cal-show-week-numbers",
+ extensible, "show-week-numbers");
+
+ e_binding_new (
+ shell_settings, "cal-week-start-day",
+ extensible, "week-start-day");
+}
+
+static void
+cal_config_date_edit_class_init (EExtensionClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = cal_config_date_edit_constructed;
+
+ class->extensible_type = E_TYPE_DATE_EDIT;
+}
+
+void
+e_cal_config_date_edit_register_type (GTypeModule *type_module)
+{
+ static const GTypeInfo type_info = {
+ sizeof (EExtensionClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) cal_config_date_edit_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EExtension),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ NULL /* value_table */
+ };
+
+ g_type_module_register_type (
+ type_module, E_TYPE_EXTENSION,
+ "ECalConfigDateEdit", &type_info, 0);
+}
diff --git a/modules/calendar/e-cal-config-date-edit.h b/modules/calendar/e-cal-config-date-edit.h
new file mode 100644
index 0000000000..33291201dc
--- /dev/null
+++ b/modules/calendar/e-cal-config-date-edit.h
@@ -0,0 +1,30 @@
+/*
+ * e-cal-config-date-edit.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_CAL_CONFIG_DATE_EDIT_H
+#define E_CAL_CONFIG_DATE_EDIT_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+void e_cal_config_date_edit_register_type (GTypeModule *type_module);
+
+G_END_DECLS
+
+#endif /* E_CAL_CONFIG_DATE_EDIT_H */
diff --git a/modules/calendar/e-cal-config-meeting-store.c b/modules/calendar/e-cal-config-meeting-store.c
new file mode 100644
index 0000000000..7169ac4029
--- /dev/null
+++ b/modules/calendar/e-cal-config-meeting-store.c
@@ -0,0 +1,79 @@
+/*
+ * e-cal-config-meeting-store.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include "e-cal-config-meeting-store.h"
+
+#include <shell/e-shell.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extension.h>
+#include <calendar/gui/e-meeting-store.h>
+
+static void
+cal_config_meeting_store_constructed (GObject *object)
+{
+ EExtension *extension;
+ EExtensible *extensible;
+ EShellSettings *shell_settings;
+ EShell *shell;
+
+ extension = E_EXTENSION (object);
+ extensible = e_extension_get_extensible (extension);
+
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ e_binding_new (
+ shell_settings, "cal-free-busy-template",
+ extensible, "free-busy-template");
+
+ e_binding_new (
+ shell_settings, "cal-timezone",
+ extensible, "timezone");
+}
+
+static void
+cal_config_meeting_store_class_init (EExtensionClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = cal_config_meeting_store_constructed;
+
+ class->extensible_type = E_TYPE_MEETING_STORE;
+}
+
+void
+e_cal_config_meeting_store_register_type (GTypeModule *type_module)
+{
+ static const GTypeInfo type_info = {
+ sizeof (EExtensionClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) cal_config_meeting_store_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EExtension),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ NULL /* value_table */
+ };
+
+ g_type_module_register_type (
+ type_module, E_TYPE_EXTENSION,
+ "ECalConfigMeetingStore", &type_info, 0);
+}
diff --git a/modules/calendar/e-cal-config-meeting-store.h b/modules/calendar/e-cal-config-meeting-store.h
new file mode 100644
index 0000000000..9ad2835da8
--- /dev/null
+++ b/modules/calendar/e-cal-config-meeting-store.h
@@ -0,0 +1,30 @@
+/*
+ * e-cal-config-meeting-store.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_CAL_CONFIG_MEETING_STORE_H
+#define E_CAL_CONFIG_MEETING_STORE_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+void e_cal_config_meeting_store_register_type (GTypeModule *type_module);
+
+G_END_DECLS
+
+#endif /* E_CAL_CONFIG_MEETING_STORE_H */
diff --git a/modules/calendar/e-cal-config-meeting-time-selector.c b/modules/calendar/e-cal-config-meeting-time-selector.c
new file mode 100644
index 0000000000..1c45d3b9ef
--- /dev/null
+++ b/modules/calendar/e-cal-config-meeting-time-selector.c
@@ -0,0 +1,83 @@
+/*
+ * e-cal-config-meeting-time-selector.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include "e-cal-config-meeting-time-selector.h"
+
+#include <shell/e-shell.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extension.h>
+#include <calendar/gui/e-meeting-time-sel.h>
+
+static void
+cal_config_meeting_time_selector_constructed (GObject *object)
+{
+ EExtension *extension;
+ EExtensible *extensible;
+ EShellSettings *shell_settings;
+ EShell *shell;
+
+ extension = E_EXTENSION (object);
+ extensible = e_extension_get_extensible (extension);
+
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ e_binding_new (
+ shell_settings, "cal-show-week-numbers",
+ extensible, "show-week-numbers");
+
+ e_binding_new (
+ shell_settings, "cal-use-24-hour-format",
+ extensible, "use-24-hour-format");
+
+ e_binding_new (
+ shell_settings, "cal-week-start-day",
+ extensible, "week-start-day");
+}
+
+static void
+cal_config_meeting_time_selector_class_init (EExtensionClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = cal_config_meeting_time_selector_constructed;
+
+ class->extensible_type = E_TYPE_MEETING_TIME_SELECTOR;
+}
+
+void
+e_cal_config_meeting_time_selector_register_type (GTypeModule *type_module)
+{
+ static const GTypeInfo type_info = {
+ sizeof (EExtensionClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) cal_config_meeting_time_selector_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EExtension),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ NULL /* value_table */
+ };
+
+ g_type_module_register_type (
+ type_module, E_TYPE_EXTENSION,
+ "ECalConfigMeetingTimeSelector", &type_info, 0);
+}
diff --git a/modules/calendar/e-cal-config-meeting-time-selector.h b/modules/calendar/e-cal-config-meeting-time-selector.h
new file mode 100644
index 0000000000..b244263605
--- /dev/null
+++ b/modules/calendar/e-cal-config-meeting-time-selector.h
@@ -0,0 +1,30 @@
+/*
+ * e-cal-config-meeting-time-selector.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_CAL_CONFIG_MEETING_TIME_SELECTOR_H
+#define E_CAL_CONFIG_MEETING_TIME_SELECTOR_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+void e_cal_config_meeting_time_selector_register_type (GTypeModule *type_module);
+
+G_END_DECLS
+
+#endif /* E_CAL_CONFIG_MEETING_TIME_SELECTOR_H */
diff --git a/modules/calendar/e-cal-config-model.c b/modules/calendar/e-cal-config-model.c
new file mode 100644
index 0000000000..d176d509e9
--- /dev/null
+++ b/modules/calendar/e-cal-config-model.c
@@ -0,0 +1,99 @@
+/*
+ * e-cal-config-model.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include "e-cal-config-model.h"
+
+#include <shell/e-shell.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extension.h>
+#include <calendar/gui/e-cal-model.h>
+#include <calendar/gui/e-cal-model-tasks.h>
+
+static void
+cal_config_model_constructed (GObject *object)
+{
+ EExtension *extension;
+ EExtensible *extensible;
+ EShellSettings *shell_settings;
+ EShell *shell;
+
+ extension = E_EXTENSION (object);
+ extensible = e_extension_get_extensible (extension);
+
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ /*** ECalModel ***/
+
+ e_binding_new (
+ shell_settings, "cal-timezone",
+ extensible, "timezone");
+
+ e_binding_new (
+ shell_settings, "cal-use-24-hour-format",
+ extensible, "use-24-hour-format");
+
+ e_binding_new (
+ shell_settings, "cal-week-start-day",
+ extensible, "week-start-day");
+
+ /*** ECalModelTasks ***/
+
+ if (E_IS_CAL_MODEL_TASKS (extensible)) {
+
+ e_binding_new (
+ shell_settings, "cal-tasks-color-due-today",
+ extensible, "color-due-today");
+
+ e_binding_new (
+ shell_settings, "cal-tasks-color-overdue",
+ extensible, "color-overdue");
+ }
+}
+
+static void
+cal_config_model_class_init (EExtensionClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = cal_config_model_constructed;
+
+ class->extensible_type = E_TYPE_CAL_MODEL;
+}
+
+void
+e_cal_config_model_register_type (GTypeModule *type_module)
+{
+ static const GTypeInfo type_info = {
+ sizeof (EExtensionClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) cal_config_model_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EExtension),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ NULL /* value_table */
+ };
+
+ g_type_module_register_type (
+ type_module, E_TYPE_EXTENSION,
+ "ECalConfigModel", &type_info, 0);
+}
diff --git a/modules/calendar/e-cal-config-model.h b/modules/calendar/e-cal-config-model.h
new file mode 100644
index 0000000000..1c1045a906
--- /dev/null
+++ b/modules/calendar/e-cal-config-model.h
@@ -0,0 +1,30 @@
+/*
+ * e-cal-config-model.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_CAL_CONFIG_MODEL_H
+#define E_CAL_CONFIG_MODEL_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+void e_cal_config_model_register_type (GTypeModule *type_module);
+
+G_END_DECLS
+
+#endif /* E_CAL_CONFIG_MODEL_H */
diff --git a/modules/calendar/e-cal-config-view.c b/modules/calendar/e-cal-config-view.c
new file mode 100644
index 0000000000..e543bf6c56
--- /dev/null
+++ b/modules/calendar/e-cal-config-view.c
@@ -0,0 +1,130 @@
+/*
+ * e-cal-config-view.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include "e-cal-config-view.h"
+
+#include <shell/e-shell.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extension.h>
+#include <calendar/gui/e-day-view.h>
+#include <calendar/gui/e-week-view.h>
+
+static void
+cal_config_view_constructed (GObject *object)
+{
+ EExtension *extension;
+ EExtensible *extensible;
+ EShellSettings *shell_settings;
+ EShell *shell;
+
+ extension = E_EXTENSION (object);
+ extensible = e_extension_get_extensible (extension);
+
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ /*** EDayView ***/
+
+ if (E_IS_DAY_VIEW (extensible)) {
+
+ e_binding_new (
+ shell_settings, "cal-show-week-numbers",
+ E_DAY_VIEW (extensible)->week_number_label, "visible");
+
+ e_binding_new (
+ shell_settings, "cal-marcus-bains-show-line",
+ extensible, "marcus-bains-show-line");
+
+ e_binding_new (
+ shell_settings, "cal-marcus-bains-day-view-color",
+ extensible, "marcus-bains-day-view-color");
+
+ e_binding_new (
+ shell_settings, "cal-marcus-bains-time-bar-color",
+ extensible, "marcus-bains-time-bar-color");
+
+ e_binding_new (
+ shell_settings, "cal-time-divisions",
+ extensible, "mins-per-row");
+
+ e_binding_new (
+ shell_settings, "cal-work-day-end-hour",
+ extensible, "work-day-end-hour");
+
+ e_binding_new (
+ shell_settings, "cal-work-day-end-minute",
+ extensible, "work-day-end-minute");
+
+ e_binding_new (
+ shell_settings, "cal-work-day-start-hour",
+ extensible, "work-day-start-hour");
+
+ e_binding_new (
+ shell_settings, "cal-work-day-start-minute",
+ extensible, "work-day-start-minute");
+
+ e_binding_new (
+ shell_settings, "cal-working-days-bitset",
+ extensible, "working-days");
+ }
+
+ /*** EWeekView ***/
+
+ if (E_IS_WEEK_VIEW (extensible)) {
+
+ e_binding_new (
+ shell_settings, "cal-compress-weekend",
+ extensible, "compress-weekend");
+
+ e_binding_new (
+ shell_settings, "cal-show-event-end-times",
+ extensible, "show-event-end-times");
+ }
+}
+
+static void
+cal_config_view_class_init (EExtensionClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = cal_config_view_constructed;
+
+ class->extensible_type = E_TYPE_CALENDAR_VIEW;
+}
+
+void
+e_cal_config_view_register_type (GTypeModule *type_module)
+{
+ static const GTypeInfo type_info = {
+ sizeof (EExtensionClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) cal_config_view_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EExtension),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ NULL /* value_table */
+ };
+
+ g_type_module_register_type (
+ type_module, E_TYPE_EXTENSION,
+ "ECalConfigView", &type_info, 0);
+}
diff --git a/modules/calendar/e-cal-config-view.h b/modules/calendar/e-cal-config-view.h
new file mode 100644
index 0000000000..e36acddf0c
--- /dev/null
+++ b/modules/calendar/e-cal-config-view.h
@@ -0,0 +1,31 @@
+/*
+ * e-cal-config-view.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_CAL_CONFIG_VIEW_H
+#define E_CAL_CONFIG_VIEW_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+void e_cal_config_view_register_type (GTypeModule *type_module);
+
+G_END_DECLS
+
+#endif /* E_CAL_CONFIG_VIEW_H */
+
diff --git a/modules/calendar/e-cal-shell-backend.c b/modules/calendar/e-cal-shell-backend.c
index 5e6f390189..86750f0a32 100644
--- a/modules/calendar/e-cal-shell-backend.c
+++ b/modules/calendar/e-cal-shell-backend.c
@@ -600,7 +600,7 @@ cal_shell_backend_handle_uri_cb (EShellBackend *shell_backend,
source = e_source_list_peek_source_by_uid (source_list, source_uid);
if (source == NULL) {
- g_printerr ("No source for UID `%s'\n", source_uid);
+ g_printerr ("No source for UID '%s'\n", source_uid);
g_object_unref (source_list);
goto exit;
}
diff --git a/modules/calendar/e-cal-shell-content.c b/modules/calendar/e-cal-shell-content.c
index f5cc0162c0..e35b935f05 100644
--- a/modules/calendar/e-cal-shell-content.c
+++ b/modules/calendar/e-cal-shell-content.c
@@ -314,11 +314,11 @@ cal_shell_content_constructed (GObject *object)
{
ECalShellContentPrivate *priv;
ECalendarView *calendar_view;
- ECalModel *memo_model;
- ECalModel *task_model;
+ ECalModel *memo_model=NULL;
+ ECalModel *task_model=NULL;
EShell *shell;
EShellContent *shell_content;
- EShellSettings *shell_settings;
+ EShellBackend *shell_backend;
EShellView *shell_view;
EShellWindow *shell_window;
EShellContent *foreign_content;
@@ -342,51 +342,57 @@ cal_shell_content_constructed (GObject *object)
shell_window = e_shell_view_get_shell_window (shell_view);
shell = e_shell_window_get_shell (shell_window);
- shell_settings = e_shell_get_shell_settings (shell);
/* We borrow the memopad and taskpad models from the memo
* and task views, loading the views if necessary. */
-
- foreign_view = e_shell_window_get_shell_view (shell_window, "memos");
- foreign_content = e_shell_view_get_shell_content (foreign_view);
- g_object_get (foreign_content, "model", &memo_model, NULL);
-
- foreign_view = e_shell_window_get_shell_view (shell_window, "tasks");
- foreign_content = e_shell_view_get_shell_content (foreign_view);
- g_object_get (foreign_content, "model", &task_model, NULL);
-
+ if(!e_shell_get_express_mode(e_shell_get_default())) {
+ foreign_view = e_shell_window_get_shell_view (shell_window, "memos");
+ foreign_content = e_shell_view_get_shell_content (foreign_view);
+ g_object_get (foreign_content, "model", &memo_model, NULL);
+
+ foreign_view = e_shell_window_get_shell_view (shell_window, "tasks");
+ foreign_content = e_shell_view_get_shell_content (foreign_view);
+ g_object_get (foreign_content, "model", &task_model, NULL);
+ }
/* Build content widgets. */
container = GTK_WIDGET (object);
+
+ if (!e_shell_get_express_mode(e_shell_get_default())) {
+ widget = e_paned_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_container_add (GTK_CONTAINER (container), widget);
+ priv->hpaned = g_object_ref (widget);
+ gtk_widget_show (widget);
- widget = e_paned_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_container_add (GTK_CONTAINER (container), widget);
- priv->hpaned = g_object_ref (widget);
- gtk_widget_show (widget);
-
- container = priv->hpaned;
+ container = priv->hpaned;
+ }
widget = gtk_notebook_new ();
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (widget), FALSE);
gtk_notebook_set_show_border (GTK_NOTEBOOK (widget), FALSE);
- gtk_paned_pack1 (GTK_PANED (container), widget, TRUE, FALSE);
+ if (!e_shell_get_express_mode(e_shell_get_default()))
+ gtk_paned_pack1 (GTK_PANED (container), widget, TRUE, FALSE);
+ else
+ gtk_container_add (GTK_CONTAINER (container), widget);
priv->notebook = g_object_ref (widget);
gtk_widget_show (widget);
- /* FIXME Need to deal with saving and restoring the position.
- * Month view has its own position. */
- widget = e_paned_new (GTK_ORIENTATION_VERTICAL);
- e_paned_set_fixed_resize (E_PANED (widget), FALSE);
- gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, TRUE);
- priv->vpaned = g_object_ref (widget);
- gtk_widget_show (widget);
+ if (!e_shell_get_express_mode(e_shell_get_default())) {
+ /* FIXME Need to deal with saving and restoring the position.
+ * Month view has its own position. */
+ widget = e_paned_new (GTK_ORIENTATION_VERTICAL);
+ e_paned_set_fixed_resize (E_PANED (widget), FALSE);
+ gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, TRUE);
+ priv->vpaned = g_object_ref (widget);
+ gtk_widget_show (widget);
+ }
container = priv->notebook;
/* Add views in the order defined by GnomeCalendarViewType, such
* that the notebook page number corresponds to the view type. */
- priv->calendar = gnome_calendar_new (shell_settings);
+ priv->calendar = gnome_calendar_new ();
calendar = GNOME_CALENDAR (priv->calendar);
for (ii = 0; ii < GNOME_CAL_LAST_VIEW; ii++) {
@@ -403,7 +409,7 @@ cal_shell_content_constructed (GObject *object)
priv->notebook, "page");
container = priv->vpaned;
-
+if(!e_shell_get_express_mode(e_shell_get_default())) {
widget = gtk_vbox_new (FALSE, 0);
gtk_paned_pack1 (GTK_PANED (container), widget, TRUE, TRUE);
gtk_widget_show (widget);
@@ -484,7 +490,7 @@ cal_shell_content_constructed (GObject *object)
widget, "open-component",
G_CALLBACK (e_cal_shell_view_memopad_open_memo),
shell_view);
-
+}
/* Load the view instance. */
view_instance = e_shell_view_new_view_instance (shell_view, NULL);
@@ -496,21 +502,23 @@ cal_shell_content_constructed (GObject *object)
* The GtkWidget::map() callback below explains why. */
priv->view_instance = view_instance;
- g_signal_connect_swapped (
- shell_view, "notify::view-id",
- G_CALLBACK (cal_shell_content_notify_view_id_cb),
- object);
+ if (!e_shell_get_express_mode(e_shell_get_default())) {
+ g_signal_connect_swapped (
+ shell_view, "notify::view-id",
+ G_CALLBACK (cal_shell_content_notify_view_id_cb),
+ object);
- /* Bind GObject properties to GConf keys. */
+ bridge = gconf_bridge_get ();
- bridge = gconf_bridge_get ();
-
- object = G_OBJECT (priv->vpaned);
- key = "/apps/evolution/calendar/display/tag_vpane_position";
- gconf_bridge_bind_property_delayed (bridge, key, object, "proportion");
+ object = G_OBJECT (priv->vpaned);
+ key = "/apps/evolution/calendar/display/tag_vpane_position";
+ gconf_bridge_bind_property_delayed (bridge, key, object, "proportion");
+ }
- g_object_unref (memo_model);
- g_object_unref (task_model);
+ if (memo_model)
+ g_object_unref (memo_model);
+ if (task_model)
+ g_object_unref (task_model);
}
static void
@@ -545,7 +553,7 @@ cal_shell_content_class_init (ECalShellContentClass *class)
object_class->get_property = cal_shell_content_get_property;
object_class->dispose = cal_shell_content_dispose;
object_class->constructed = cal_shell_content_constructed;
-
+
widget_class = GTK_WIDGET_CLASS (class);
widget_class->map = cal_shell_content_map;
@@ -669,6 +677,7 @@ e_cal_shell_content_get_task_table (ECalShellContent *cal_shell_content)
EShellSearchbar *
e_cal_shell_content_get_searchbar (ECalShellContent *cal_shell_content)
{
+ EShellView *shell_view;
EShellContent *shell_content;
GtkWidget *widget;
@@ -676,7 +685,8 @@ e_cal_shell_content_get_searchbar (ECalShellContent *cal_shell_content)
E_IS_CAL_SHELL_CONTENT (cal_shell_content), NULL);
shell_content = E_SHELL_CONTENT (cal_shell_content);
- widget = e_shell_content_get_searchbar (shell_content);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ widget = e_shell_view_get_searchbar (shell_view);
return E_SHELL_SEARCHBAR (widget);
}
diff --git a/modules/calendar/e-cal-shell-migrate.c b/modules/calendar/e-cal-shell-migrate.c
index ea0e6aa751..f307522a9b 100644
--- a/modules/calendar/e-cal-shell-migrate.c
+++ b/modules/calendar/e-cal-shell-migrate.c
@@ -82,7 +82,7 @@ static e_gconf_map_t calendar_other_map[] = {
static e_gconf_map_t calendar_datenavigator_map[] = {
/* /Calendar/DateNavigator */
- { "ShowWeekNumbers", "calendar/date_navigator/show_week_numbers", E_GCONF_MAP_BOOL },
+ { "ShowWeekNumbers", "calendar/display/show_week_numbers", E_GCONF_MAP_BOOL },
{ NULL },
};
@@ -690,7 +690,7 @@ e_cal_shell_backend_migrate (EShellBackend *shell_backend,
if (!migrate_ical_folder (l->data, on_this_computer, source_name, E_CAL_SOURCE_TYPE_EVENT)) {
/* FIXME: domain/code */
- g_set_error(error, 0, 0, _("Unable to migrate calendar `%s'"), source_name);
+ g_set_error(error, 0, 0, _("Unable to migrate calendar '%s'"), source_name);
g_free(source_name);
goto fail;
}
diff --git a/modules/calendar/e-cal-shell-settings.c b/modules/calendar/e-cal-shell-settings.c
index 3852de0a52..4613f280bb 100644
--- a/modules/calendar/e-cal-shell-settings.c
+++ b/modules/calendar/e-cal-shell-settings.c
@@ -491,8 +491,8 @@ e_cal_shell_backend_init_settings (EShell *shell)
"/apps/evolution/calendar/prompts/confirm_purge");
e_shell_settings_install_property_for_key (
- "cal-day-view-show-week-numbers",
- "/apps/evolution/calendar/display/day_view_show_week_number");
+ "cal-show-week-numbers",
+ "/apps/evolution/calendar/display/show_week_numbers");
e_shell_settings_install_property_for_key (
"cal-free-busy-template",
@@ -539,10 +539,6 @@ e_cal_shell_backend_init_settings (EShell *shell)
"/apps/evolution/calendar/display/show_event_end");
e_shell_settings_install_property_for_key (
- "cal-show-week-numbers",
- "/apps/evolution/calendar/date_navigator/show_week_numbers");
-
- e_shell_settings_install_property_for_key (
"cal-tasks-color-due-today",
"/apps/evolution/calendar/tasks/colors/due_today");
diff --git a/modules/calendar/e-cal-shell-sidebar.c b/modules/calendar/e-cal-shell-sidebar.c
index eb28868ce6..546d21b3c3 100644
--- a/modules/calendar/e-cal-shell-sidebar.c
+++ b/modules/calendar/e-cal-shell-sidebar.c
@@ -33,6 +33,7 @@
#include "calendar/gui/calendar-config.h"
#include "calendar/gui/e-calendar-selector.h"
#include "calendar/gui/misc.h"
+#include "calendar/gui/dialogs/calendar-setup.h"
#include "e-cal-shell-view.h"
#include "e-cal-shell-backend.h"
@@ -476,7 +477,7 @@ cal_shell_sidebar_restore_state_cb (EShellWindow *shell_window,
bridge = gconf_bridge_get ();
object = G_OBJECT (priv->paned);
- key = "/apps/evolution/calendar/display/date_navigator_vpane_position";
+ key = "/apps/evolution/calendar/display/date_navigator_pane_position";
gconf_bridge_bind_property_delayed (bridge, key, object, "vposition");
}
@@ -559,6 +560,21 @@ cal_shell_sidebar_finalize (GObject *object)
}
static void
+new_calendar_clicked (GtkButton *button,
+ EShellSidebar *shell_sidebar)
+{
+ EShellView *shell_view;
+ EShellWindow *shell_window;
+ EShellBackend *shell_backend;
+
+ shell_view = e_shell_sidebar_get_shell_view (shell_sidebar);
+ shell_backend = e_shell_view_get_shell_backend (shell_view);
+ shell_window = e_shell_view_get_shell_window (shell_view);
+
+ calendar_setup_new_calendar (GTK_WINDOW (shell_window));
+}
+
+static void
cal_shell_sidebar_constructed (GObject *object)
{
ECalShellSidebarPrivate *priv;
@@ -605,7 +621,21 @@ cal_shell_sidebar_constructed (GObject *object)
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type (
GTK_SCROLLED_WINDOW (widget), GTK_SHADOW_IN);
- gtk_paned_pack1 (GTK_PANED (container), widget, TRUE, TRUE);
+ if(!e_shell_get_express_mode(e_shell_get_default())) {
+ gtk_paned_pack1 (GTK_PANED (container), widget, TRUE, TRUE);
+ } else {
+ GtkWidget *button;
+
+ container = gtk_vbox_new (FALSE, 6);
+ gtk_box_pack_start (GTK_BOX(container), widget, TRUE, TRUE, 0);
+
+ button = gtk_button_new_with_label (_("New Calendar..."));
+ gtk_box_pack_start (GTK_BOX(container), button, FALSE, FALSE, 0);
+ g_signal_connect (button, "clicked", G_CALLBACK(new_calendar_clicked), shell_sidebar);
+
+ gtk_paned_pack1 (GTK_PANED (priv->paned), container, TRUE, TRUE);
+ gtk_widget_show_all (container);
+ }
gtk_widget_show (widget);
container = widget;
@@ -624,7 +654,8 @@ cal_shell_sidebar_constructed (GObject *object)
calitem = E_CALENDAR (widget)->calitem;
e_calendar_item_set_days_start_week_sel (calitem, 9);
e_calendar_item_set_max_days_sel (calitem, 42);
- gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, TRUE);
+ gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, FALSE);
+ gtk_widget_set_size_request (widget, -1, 200);
priv->date_navigator = g_object_ref (widget);
gtk_widget_show (widget);
diff --git a/modules/calendar/e-cal-shell-view-actions.c b/modules/calendar/e-cal-shell-view-actions.c
index 5eaa9a4eb0..83f6101d0a 100644
--- a/modules/calendar/e-cal-shell-view-actions.c
+++ b/modules/calendar/e-cal-shell-view-actions.c
@@ -1196,6 +1196,25 @@ action_event_schedule_cb (GtkAction *action,
edit_event_as (cal_shell_view, TRUE);
}
+ static void
+quit_calendar_cb (GtkAction *action,
+ ECalShellView *cal_shell_view)
+{
+ EShellView *shell_view;
+ EShellWindow *shell_window;
+ GdkEvent *event;
+
+ shell_view = E_SHELL_VIEW (cal_shell_view);
+ shell_window = e_shell_view_get_shell_window (shell_view);
+
+ /* Synthesize a delete_event on this window. */
+ event = gdk_event_new (GDK_DELETE);
+ event->any.window = g_object_ref (((GtkWidget *) shell_window)->window);
+ event->any.send_event = TRUE;
+ gtk_main_do_event (event);
+ gdk_event_free (event);
+}
+
static void
action_event_schedule_appointment_cb (GtkAction *action,
ECalShellView *cal_shell_view)
@@ -1428,6 +1447,13 @@ static GtkActionEntry calendar_entries[] = {
N_("Converts a meeting to an appointment"),
G_CALLBACK (action_event_schedule_appointment_cb) },
+ { "quit-calendar",
+ GTK_STOCK_CLOSE,
+ N_("Quit"),
+ NULL,
+ NULL, /* XXX Add a tooltip! */
+ G_CALLBACK (quit_calendar_cb) },
+
/*** Menus ***/
{ "calendar-actions-menu",
@@ -1689,7 +1715,7 @@ e_cal_shell_view_actions_init (ECalShellView *cal_shell_view)
cal_shell_content = cal_shell_view->priv->cal_shell_content;
searchbar = e_cal_shell_content_get_searchbar (cal_shell_content);
-
+
/* Calendar Actions */
action_group = ACTION_GROUP (CALENDAR);
gtk_action_group_add_actions (
@@ -1710,8 +1736,9 @@ e_cal_shell_view_actions_init (ECalShellView *cal_shell_view)
/* Advanced Search Action */
action = ACTION (CALENDAR_SEARCH_ADVANCED_HIDDEN);
gtk_action_set_visible (action, FALSE);
- e_shell_searchbar_set_search_option (
- searchbar, GTK_RADIO_ACTION (action));
+ if (searchbar)
+ e_shell_searchbar_set_search_option (
+ searchbar, GTK_RADIO_ACTION (action));
/* Lockdown Printing Actions */
action_group = ACTION_GROUP (LOCKDOWN_PRINTING);
@@ -1833,18 +1860,20 @@ e_cal_shell_view_update_search_filter (ECalShellView *cal_shell_view)
cal_shell_content = cal_shell_view->priv->cal_shell_content;
searchbar = e_cal_shell_content_get_searchbar (cal_shell_content);
- combo_box = e_shell_searchbar_get_filter_combo_box (searchbar);
+ if (searchbar) {
+ combo_box = e_shell_searchbar_get_filter_combo_box (searchbar);
- e_shell_view_block_execute_search (shell_view);
+ e_shell_view_block_execute_search (shell_view);
- /* Use any action in the group; doesn't matter which. */
- e_action_combo_box_set_action (combo_box, radio_action);
+ /* Use any action in the group; doesn't matter which. */
+ e_action_combo_box_set_action (combo_box, radio_action);
- ii = CALENDAR_FILTER_UNMATCHED;
- e_action_combo_box_add_separator_after (combo_box, ii);
+ ii = CALENDAR_FILTER_UNMATCHED;
+ e_action_combo_box_add_separator_after (combo_box, ii);
- ii = CALENDAR_FILTER_NEXT_7_DAYS_APPOINTMENTS;
- e_action_combo_box_add_separator_after (combo_box, ii);
+ ii = CALENDAR_FILTER_NEXT_7_DAYS_APPOINTMENTS;
+ e_action_combo_box_add_separator_after (combo_box, ii);
- e_shell_view_unblock_execute_search (shell_view);
+ e_shell_view_unblock_execute_search (shell_view);
+ }
}
diff --git a/modules/calendar/e-cal-shell-view-actions.h b/modules/calendar/e-cal-shell-view-actions.h
index a69b82f645..b79bc6baaf 100644
--- a/modules/calendar/e-cal-shell-view-actions.h
+++ b/modules/calendar/e-cal-shell-view-actions.h
@@ -89,6 +89,8 @@
E_SHELL_WINDOW_ACTION ((window), "event-reply-all")
#define E_SHELL_WINDOW_ACTION_EVENT_OCCURRENCE_MOVABLE(window) \
E_SHELL_WINDOW_ACTION ((window), "event-occurrence-movable")
+#define E_SHELL_WINDOW_ACTION_EVENT_MEETING_NEW(window) \
+ E_SHELL_WINDOW_ACTION ((window), "event-meeting-new")
/* Memo Pad Actions */
#define E_SHELL_WINDOW_ACTION_CALENDAR_MEMOPAD_FORWARD(window) \
diff --git a/modules/calendar/e-cal-shell-view-private.c b/modules/calendar/e-cal-shell-view-private.c
index c669c29b33..a958a9f05e 100644
--- a/modules/calendar/e-cal-shell-view-private.c
+++ b/modules/calendar/e-cal-shell-view-private.c
@@ -28,6 +28,16 @@
#define CHECK_NB 5
+/* be compatible with older e-d-s for MeeGo */
+#ifndef ETC_TIMEZONE
+# define ETC_TIMEZONE "/etc/timezone"
+# define ETC_TIMEZONE_MAJ "/etc/TIMEZONE"
+# define ETC_RC_CONF "/etc/rc.conf"
+# define ETC_SYSCONFIG_CLOCK "/etc/sysconfig/clock"
+# define ETC_CONF_D_CLOCK "/etc/conf.d/clock"
+# define ETC_LOCALTIME "/etc/localtime"
+#endif
+
static const gchar * files_to_check [CHECK_NB] = {
ETC_TIMEZONE,
ETC_TIMEZONE_MAJ,
@@ -611,35 +621,41 @@ e_cal_shell_view_private_constructed (ECalShellView *cal_shell_view)
G_CALLBACK (cal_shell_view_selector_client_removed_cb),
cal_shell_view);
- g_signal_connect_swapped (
- memo_table, "popup-event",
- G_CALLBACK (cal_shell_view_memopad_popup_event_cb),
- cal_shell_view);
-
- g_signal_connect_swapped (
- memo_table, "selection-change",
- G_CALLBACK (e_cal_shell_view_memopad_actions_update),
- cal_shell_view);
+ if (memo_table)
+ g_signal_connect_swapped (
+ memo_table, "popup-event",
+ G_CALLBACK (cal_shell_view_memopad_popup_event_cb),
+ cal_shell_view);
- g_signal_connect_swapped (
- memo_table, "status-message",
- G_CALLBACK (e_cal_shell_view_memopad_set_status_message),
- cal_shell_view);
+ if (memo_table)
+ g_signal_connect_swapped (
+ memo_table, "selection-change",
+ G_CALLBACK (e_cal_shell_view_memopad_actions_update),
+ cal_shell_view);
- g_signal_connect_swapped (
- task_table, "popup-event",
- G_CALLBACK (cal_shell_view_taskpad_popup_event_cb),
- cal_shell_view);
+ if (memo_table)
+ g_signal_connect_swapped (
+ memo_table, "status-message",
+ G_CALLBACK (e_cal_shell_view_memopad_set_status_message),
+ cal_shell_view);
- g_signal_connect_swapped (
- task_table, "status-message",
- G_CALLBACK (e_cal_shell_view_taskpad_set_status_message),
- cal_shell_view);
+ if (task_table)
+ g_signal_connect_swapped (
+ task_table, "popup-event",
+ G_CALLBACK (cal_shell_view_taskpad_popup_event_cb),
+ cal_shell_view);
- g_signal_connect_swapped (
- task_table, "selection-change",
- G_CALLBACK (e_cal_shell_view_taskpad_actions_update),
- cal_shell_view);
+ if (task_table)
+ g_signal_connect_swapped (
+ task_table, "status-message",
+ G_CALLBACK (e_cal_shell_view_taskpad_set_status_message),
+ cal_shell_view);
+
+ if (task_table)
+ g_signal_connect_swapped (
+ task_table, "selection-change",
+ G_CALLBACK (e_cal_shell_view_taskpad_actions_update),
+ cal_shell_view);
e_categories_add_change_hook (
(GHookFunc) e_cal_shell_view_update_search_filter,
diff --git a/modules/calendar/e-cal-shell-view.c b/modules/calendar/e-cal-shell-view.c
index cd44f37c56..1f719e82c5 100644
--- a/modules/calendar/e-cal-shell-view.c
+++ b/modules/calendar/e-cal-shell-view.c
@@ -283,6 +283,7 @@ cal_shell_view_update_actions (EShellView *shell_view)
GtkAction *action;
GList *list, *iter;
gboolean sensitive;
+ gboolean visible;
guint32 state;
gint n_selected;
@@ -303,6 +304,26 @@ cal_shell_view_update_actions (EShellView *shell_view)
shell_window = e_shell_view_get_shell_window (shell_view);
+ if(e_shell_get_express_mode(e_shell_get_default())) {
+ GtkWidget *widget, *item;
+
+ /* Hack: Get rid of New and Send/Receive in toolbar
+ * while in express mode */
+ widget = e_shell_window_get_managed_widget (
+ shell_window, "/main-toolbar");
+
+ item = (GtkWidget *)gtk_toolbar_get_nth_item ((GtkToolbar *)widget, 0);
+ gtk_widget_hide(item);
+
+ widget = e_shell_window_get_managed_widget (
+ shell_window, "/main-menu");
+ gtk_widget_hide(widget);
+
+ item = e_shell_window_get_managed_widget (
+ shell_window, "/main-toolbar/send-receive");
+ if (item)
+ gtk_widget_hide(item);
+ }
cal_shell_content = priv->cal_shell_content;
calendar = e_cal_shell_content_get_calendar (cal_shell_content);
view_type = gnome_calendar_get_view (calendar);
@@ -444,6 +465,10 @@ cal_shell_view_update_actions (EShellView *shell_view)
action = ACTION (EVENT_REPLY_ALL);
sensitive = (n_selected == 1) && is_meeting;
gtk_action_set_sensitive (action, sensitive);
+
+ action = ACTION (EVENT_MEETING_NEW);
+ visible = itip_addresses_get_default() != NULL;
+ gtk_action_set_visible (action, visible);
}
static void
@@ -472,7 +497,7 @@ cal_shell_view_class_init (ECalShellViewClass *class,
shell_view_class->new_shell_sidebar = e_cal_shell_sidebar_new;
shell_view_class->execute_search = cal_shell_view_execute_search;
shell_view_class->update_actions = cal_shell_view_update_actions;
-}
+}
static void
cal_shell_view_init (ECalShellView *cal_shell_view,
diff --git a/modules/calendar/e-memo-shell-backend.c b/modules/calendar/e-memo-shell-backend.c
index 979b525304..b0635b6e38 100644
--- a/modules/calendar/e-memo-shell-backend.c
+++ b/modules/calendar/e-memo-shell-backend.c
@@ -419,7 +419,7 @@ memo_shell_backend_handle_uri_cb (EShellBackend *shell_backend,
source = e_source_list_peek_source_by_uid (source_list, source_uid);
if (source == NULL) {
- g_printerr ("No source for UID `%s'\n", source_uid);
+ g_printerr ("No source for UID '%s'\n", source_uid);
g_object_unref (source_list);
goto exit;
}
diff --git a/modules/calendar/e-memo-shell-content.c b/modules/calendar/e-memo-shell-content.c
index 34946b7bdd..d56a6105d1 100644
--- a/modules/calendar/e-memo-shell-content.c
+++ b/modules/calendar/e-memo-shell-content.c
@@ -418,7 +418,7 @@ memo_shell_content_constructed (GObject *object)
shell = e_shell_backend_get_shell (shell_backend);
shell_settings = e_shell_get_shell_settings (shell);
- priv->memo_model = e_cal_model_memos_new (shell_settings);
+ priv->memo_model = e_cal_model_memos_new ();
timezone = e_shell_settings_get_pointer (
shell_settings, "cal-timezone");
@@ -730,6 +730,7 @@ e_memo_shell_content_set_preview_visible (EMemoShellContent *memo_shell_content,
EShellSearchbar *
e_memo_shell_content_get_searchbar (EMemoShellContent *memo_shell_content)
{
+ EShellView *shell_view;
EShellContent *shell_content;
GtkWidget *widget;
@@ -737,7 +738,8 @@ e_memo_shell_content_get_searchbar (EMemoShellContent *memo_shell_content)
E_IS_MEMO_SHELL_CONTENT (memo_shell_content), NULL);
shell_content = E_SHELL_CONTENT (memo_shell_content);
- widget = e_shell_content_get_searchbar (shell_content);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ widget = e_shell_view_get_searchbar (shell_view);
return E_SHELL_SEARCHBAR (widget);
}
diff --git a/modules/calendar/e-task-shell-backend.c b/modules/calendar/e-task-shell-backend.c
index 7926555ec6..e428c9413e 100644
--- a/modules/calendar/e-task-shell-backend.c
+++ b/modules/calendar/e-task-shell-backend.c
@@ -424,7 +424,7 @@ task_shell_backend_handle_uri_cb (EShellBackend *shell_backend,
source = e_source_list_peek_source_by_uid (source_list, source_uid);
if (source == NULL) {
- g_printerr ("No source for UID `%s'\n", source_uid);
+ g_printerr ("No source for UID '%s'\n", source_uid);
g_object_unref (source_list);
goto exit;
}
diff --git a/modules/calendar/e-task-shell-content.c b/modules/calendar/e-task-shell-content.c
index 5fb39a9738..910b4da48e 100644
--- a/modules/calendar/e-task-shell-content.c
+++ b/modules/calendar/e-task-shell-content.c
@@ -415,7 +415,7 @@ task_shell_content_constructed (GObject *object)
shell = e_shell_window_get_shell (shell_window);
shell_settings = e_shell_get_shell_settings (shell);
- priv->task_model = e_cal_model_tasks_new (shell_settings);
+ priv->task_model = e_cal_model_tasks_new ();
timezone = e_shell_settings_get_pointer (
shell_settings, "cal-timezone");
@@ -752,6 +752,7 @@ e_task_shell_content_set_preview_visible (ETaskShellContent *task_shell_content,
EShellSearchbar *
e_task_shell_content_get_searchbar (ETaskShellContent *task_shell_content)
{
+ EShellView *shell_view;
EShellContent *shell_content;
GtkWidget *widget;
@@ -759,7 +760,8 @@ e_task_shell_content_get_searchbar (ETaskShellContent *task_shell_content)
E_IS_TASK_SHELL_CONTENT (task_shell_content), NULL);
shell_content = E_SHELL_CONTENT (task_shell_content);
- widget = e_shell_content_get_searchbar (shell_content);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ widget = e_shell_view_get_searchbar (shell_view);
return E_SHELL_SEARCHBAR (widget);
}
diff --git a/modules/calendar/e-task-shell-migrate.c b/modules/calendar/e-task-shell-migrate.c
index 3ba36ce9b1..3c3210b472 100644
--- a/modules/calendar/e-task-shell-migrate.c
+++ b/modules/calendar/e-task-shell-migrate.c
@@ -617,7 +617,7 @@ e_task_shell_backend_migrate (EShellBackend *shell_backend,
if (!migrate_ical_folder (l->data, on_this_computer, source_name, E_CAL_SOURCE_TYPE_TODO)) {
/* FIXME: domain/code */
- g_set_error(error, 0, 0, _("Unable to migrate tasks `%s'"), source_name);
+ g_set_error(error, 0, 0, _("Unable to migrate tasks '%s'"), source_name);
g_free(source_name);
goto fail;
}
diff --git a/modules/calendar/evolution-module-calendar.c b/modules/calendar/evolution-module-calendar.c
index f72e8a97e4..b54f6439a3 100644
--- a/modules/calendar/evolution-module-calendar.c
+++ b/modules/calendar/evolution-module-calendar.c
@@ -39,6 +39,13 @@
#include "e-task-shell-sidebar.h"
#include "e-task-shell-view.h"
+#include "e-cal-config-calendar-item.h"
+#include "e-cal-config-date-edit.h"
+#include "e-cal-config-meeting-store.h"
+#include "e-cal-config-meeting-time-selector.h"
+#include "e-cal-config-model.h"
+#include "e-cal-config-view.h"
+
/* Module Entry Points */
void e_module_load (GTypeModule *type_module);
void e_module_unload (GTypeModule *type_module);
@@ -67,6 +74,13 @@ e_module_load (GTypeModule *type_module)
e_task_shell_content_register_type (type_module);
e_task_shell_sidebar_register_type (type_module);
e_task_shell_view_register_type (type_module);
+
+ e_cal_config_calendar_item_register_type (type_module);
+ e_cal_config_date_edit_register_type (type_module);
+ e_cal_config_meeting_store_register_type (type_module);
+ e_cal_config_meeting_time_selector_register_type (type_module);
+ e_cal_config_model_register_type (type_module);
+ e_cal_config_view_register_type (type_module);
}
G_MODULE_EXPORT void
diff --git a/modules/connman/Makefile.am b/modules/connman/Makefile.am
new file mode 100644
index 0000000000..63822262c4
--- /dev/null
+++ b/modules/connman/Makefile.am
@@ -0,0 +1,22 @@
+module_LTLIBRARIES = libevolution-module-connman.la
+
+libevolution_module_connman_la_CPPFLAGS = \
+ $(AM_CPPFLAGS) \
+ -I$(top_srcdir) \
+ -DG_LOG_DOMAIN=\"evolution-connman\" \
+ $(GNOME_PLATFORM_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS)
+
+libevolution_module_connman_la_SOURCES = \
+ evolution-connman.c
+
+libevolution_module_connman_la_LIBADD = \
+ $(top_builddir)/e-util/libeutil.la \
+ $(top_builddir)/shell/libeshell.la \
+ $(GNOME_PLATFORM_LIBS) \
+ $(DBUS_GLIB_LIBS)
+
+libevolution_module_connman_la_LDFLAGS = \
+ -module -avoid-version $(NO_UNDEFINED)
+
+-include $(top_srcdir)/git.mk
diff --git a/modules/connman/evolution-connman.c b/modules/connman/evolution-connman.c
new file mode 100644
index 0000000000..abf532f295
--- /dev/null
+++ b/modules/connman/evolution-connman.c
@@ -0,0 +1,209 @@
+/*
+ * evolution-connman.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#include <shell/e-shell.h>
+#include <e-util/e-extension.h>
+
+#define CM_DBUS_SERVICE "org.moblin.connman"
+#define CM_DBUS_INTERFACE "org.moblin.connman.Manager"
+#define CM_DBUS_PATH "/"
+
+/* Standard GObject macros */
+#define E_TYPE_CONNMAN \
+ (e_connman_get_type ())
+#define E_CONNMAN(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_CONNMAN, EConnMan))
+
+typedef struct {
+ EExtension parent;
+ DBusConnection *connection;
+} EConnMan;
+typedef EExtensionClass EConnManClass;
+
+/* Module Entry Points */
+void e_module_load (GTypeModule *type_module);
+void e_module_unload (GTypeModule *type_module);
+
+/* Forward Declarations */
+GType e_connman_get_type (void);
+static gboolean network_manager_connect (EConnMan *extension);
+
+G_DEFINE_DYNAMIC_TYPE (EConnMan, e_connman, E_TYPE_EXTENSION)
+
+static void
+extension_set_state (EConnMan *extension, const char *state)
+{
+ EExtensible *extensible;
+
+ extensible = e_extension_get_extensible (E_EXTENSION (extension));
+ g_return_if_fail (E_IS_SHELL (extensible));
+
+ e_shell_set_network_available (E_SHELL (extensible), !g_strcmp0 (state, "online"));
+}
+
+static DBusHandlerResult
+connman_monitor (DBusConnection *connection G_GNUC_UNUSED,
+ DBusMessage *message,
+ gpointer user_data)
+{
+ char *value;
+ EConnMan *extension = user_data;
+ DBusError error = DBUS_ERROR_INIT;
+ DBusHandlerResult ret = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ if (!dbus_message_has_path (message, CM_DBUS_PATH) ||
+ !dbus_message_has_interface (message, CM_DBUS_INTERFACE) ||
+ !dbus_message_has_member (message, "StateChanged"))
+ goto err_exit;
+
+ if (!dbus_message_get_args (message, &error,
+ DBUS_TYPE_STRING, &value,
+ DBUS_TYPE_INVALID))
+ goto err_exit;
+
+ extension_set_state (extension, value);
+ ret = DBUS_HANDLER_RESULT_HANDLED;
+
+ err_exit:
+ return ret;
+}
+
+static void
+connman_check_initial_state (EConnMan *extension)
+{
+ DBusMessage *message = NULL;
+ DBusMessage *response = NULL;
+ DBusError error = DBUS_ERROR_INIT;
+
+ message = dbus_message_new_method_call (
+ CM_DBUS_SERVICE, CM_DBUS_PATH, CM_DBUS_INTERFACE, "GetState");
+
+ /* XXX Assuming this should be safe to call synchronously. */
+ response = dbus_connection_send_with_reply_and_block (
+ extension->connection, message, 100, &error);
+
+ if (response != NULL) {
+ const char *value;
+ if (dbus_message_get_args (message, &error,
+ DBUS_TYPE_STRING, &value,
+ DBUS_TYPE_INVALID))
+ extension_set_state (extension, value);
+ } else {
+ g_warning ("%s", error.message);
+ dbus_error_free (&error);
+ return;
+ }
+
+ dbus_message_unref (message);
+ dbus_message_unref (response);
+}
+
+static gboolean
+network_manager_connect (EConnMan *extension)
+{
+ DBusError error = DBUS_ERROR_INIT;
+
+ /* This is a timeout callback, so the return value denotes
+ * whether to reschedule, not whether we're successful. */
+
+ if (extension->connection != NULL)
+ return FALSE;
+
+ extension->connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
+ if (extension->connection == NULL) {
+ g_warning ("%s", error.message);
+ dbus_error_free (&error);
+ return TRUE;
+ }
+
+ dbus_connection_setup_with_g_main (extension->connection, NULL);
+ dbus_connection_set_exit_on_disconnect (extension->connection, FALSE);
+
+ if (!dbus_connection_add_filter (
+ extension->connection, connman_monitor, extension, NULL))
+ goto fail;
+
+ dbus_bus_add_match (
+ extension->connection,
+ "type='signal',"
+ "interface='" CM_DBUS_INTERFACE "',"
+ "sender='" CM_DBUS_SERVICE "',"
+ "member='StateChanged',"
+ "path='" CM_DBUS_PATH "'",
+ &error);
+ if (dbus_error_is_set (&error)) {
+ g_warning ("%s", error.message);
+ dbus_error_free (&error);
+ goto fail;
+ }
+
+ connman_check_initial_state (extension);
+
+ return FALSE;
+
+fail:
+ dbus_connection_unref (extension->connection);
+ extension->connection = NULL;
+
+ return TRUE;
+}
+
+static void
+network_manager_constructed (GObject *object)
+{
+ network_manager_connect (E_CONNMAN (object));
+}
+
+static void
+e_connman_class_init (EConnManClass *class)
+{
+ GObjectClass *object_class;
+ EExtensionClass *extension_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = network_manager_constructed;
+
+ extension_class = E_EXTENSION_CLASS (class);
+ extension_class->extensible_type = E_TYPE_SHELL;
+}
+
+static void
+e_connman_class_finalize (EConnManClass *class)
+{
+}
+
+static void
+e_connman_init (EConnMan *extension)
+{
+}
+
+G_MODULE_EXPORT void
+e_module_load (GTypeModule *type_module)
+{
+ e_connman_register_type (type_module);
+}
+
+G_MODULE_EXPORT void
+e_module_unload (GTypeModule *type_module)
+{
+}
diff --git a/modules/mail/Makefile.am b/modules/mail/Makefile.am
index 65a5c30d1f..323820217b 100644
--- a/modules/mail/Makefile.am
+++ b/modules/mail/Makefile.am
@@ -17,8 +17,12 @@ libevolution_module_mail_la_SOURCES = \
evolution-module-mail.c \
e-mail-attachment-handler.c \
e-mail-attachment-handler.h \
+ e-mail-config-format-html.c \
+ e-mail-config-format-html.h \
e-mail-config-hook.c \
e-mail-config-hook.h \
+ e-mail-config-web-view.c \
+ e-mail-config-web-view.h \
e-mail-event-hook.c \
e-mail-event-hook.h \
e-mail-junk-hook.c \
diff --git a/modules/mail/e-mail-config-format-html.c b/modules/mail/e-mail-config-format-html.c
new file mode 100644
index 0000000000..a92a943976
--- /dev/null
+++ b/modules/mail/e-mail-config-format-html.c
@@ -0,0 +1,93 @@
+/*
+ * e-mail-config-format-html.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include "e-mail-config-format-html.h"
+
+#include <shell/e-shell.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extension.h>
+#include <mail/em-format-html.h>
+
+static void
+mail_config_format_html_constructed (GObject *object)
+{
+ EExtension *extension;
+ EExtensible *extensible;
+ EShellSettings *shell_settings;
+ EShell *shell;
+
+ extension = E_EXTENSION (object);
+ extensible = e_extension_get_extensible (extension);
+
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ e_binding_new_full (
+ shell_settings, "mail-citation-color",
+ extensible, "citation-color",
+ e_binding_transform_string_to_color,
+ NULL, NULL);
+
+ e_binding_new (
+ shell_settings, "mail-image-loading-policy",
+ extensible, "image-loading-policy");
+
+ e_binding_new (
+ shell_settings, "mail-only-local-photos",
+ extensible, "only-local-photos");
+
+ e_binding_new (
+ shell_settings, "mail-show-sender-photo",
+ extensible, "show-sender-photo");
+
+ e_binding_new (
+ shell_settings, "mail-show-real-date",
+ extensible, "show-real-date");
+}
+
+static void
+mail_config_format_html_class_init (EExtensionClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = mail_config_format_html_constructed;
+
+ class->extensible_type = EM_TYPE_FORMAT_HTML;
+}
+
+void
+e_mail_config_format_html_register_type (GTypeModule *type_module)
+{
+ static const GTypeInfo type_info = {
+ sizeof (EExtensionClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) mail_config_format_html_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EExtension),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ NULL /* value_table */
+ };
+
+ g_type_module_register_type (
+ type_module, E_TYPE_EXTENSION,
+ "EMailConfigFormatHTML", &type_info, 0);
+}
diff --git a/modules/mail/e-mail-config-format-html.h b/modules/mail/e-mail-config-format-html.h
new file mode 100644
index 0000000000..bed76d88b7
--- /dev/null
+++ b/modules/mail/e-mail-config-format-html.h
@@ -0,0 +1,30 @@
+/*
+ * e-mail-config-format-html.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_MAIL_CONFIG_FORMAT_HTML_H
+#define E_MAIL_CONFIG_FORMAT_HTML_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+void e_mail_config_format_html_register_type (GTypeModule *type_module);
+
+G_END_DECLS
+
+#endif /* E_MAIL_CONFIG_FORMAT_HTML_H */
diff --git a/modules/mail/e-mail-config-web-view.c b/modules/mail/e-mail-config-web-view.c
new file mode 100644
index 0000000000..5cfb648154
--- /dev/null
+++ b/modules/mail/e-mail-config-web-view.c
@@ -0,0 +1,100 @@
+/*
+ * e-mail-config-web-view.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include "e-mail-config-web-view.h"
+
+#include <shell/e-shell.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extension.h>
+#include <misc/e-web-view.h>
+
+static void
+mail_config_web_view_realize (GtkWidget *widget)
+{
+ EShell *shell;
+ EShellSettings *shell_settings;
+
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ e_binding_new (
+ shell_settings, "mail-show-animated-images",
+ widget, "animate");
+
+ e_binding_new (
+ shell_settings, "composer-inline-spelling",
+ widget, "inline-spelling");
+
+ e_binding_new (
+ shell_settings, "composer-magic-links",
+ widget, "magic-links");
+
+ e_binding_new (
+ shell_settings, "composer-magic-smileys",
+ widget, "magic-smileys");
+}
+
+static void
+mail_config_web_view_constructed (GObject *object)
+{
+ EExtension *extension;
+ EExtensible *extensible;
+
+ extension = E_EXTENSION (object);
+ extensible = e_extension_get_extensible (extension);
+
+ /* Wait to bind shell settings until the EWebView is realized
+ * so GtkhtmlEditor has a chance to install a GtkHTMLEditorAPI.
+ * Otherwise our settings will have no effect. */
+
+ g_signal_connect (
+ extensible, "realize",
+ G_CALLBACK (mail_config_web_view_realize), NULL);
+}
+
+static void
+mail_config_web_view_class_init (EExtensionClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = mail_config_web_view_constructed;
+
+ class->extensible_type = E_TYPE_WEB_VIEW;
+}
+
+void
+e_mail_config_web_view_register_type (GTypeModule *type_module)
+{
+ static const GTypeInfo type_info = {
+ sizeof (EExtensionClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) mail_config_web_view_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EExtension),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ NULL /* value_table */
+ };
+
+ g_type_module_register_type (
+ type_module, E_TYPE_EXTENSION,
+ "EMailConfigWebView", &type_info, 0);
+}
diff --git a/modules/mail/e-mail-config-web-view.h b/modules/mail/e-mail-config-web-view.h
new file mode 100644
index 0000000000..c2a8758709
--- /dev/null
+++ b/modules/mail/e-mail-config-web-view.h
@@ -0,0 +1,30 @@
+/*
+ * e-mail-config-web-view.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_MAIL_CONFIG_WEB_VIEW_H
+#define E_MAIL_CONFIG_WEB_VIEW_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+void e_mail_config_web_view_register_type (GTypeModule *type_module);
+
+G_END_DECLS
+
+#endif /* E_MAIL_CONFIG_WEB_VIEW_H */
diff --git a/modules/mail/e-mail-shell-backend.c b/modules/mail/e-mail-shell-backend.c
index de8d4f42d9..b3eb0a97c1 100644
--- a/modules/mail/e-mail-shell-backend.c
+++ b/modules/mail/e-mail-shell-backend.c
@@ -408,32 +408,28 @@ mail_shell_backend_window_created_cb (EShell *shell,
GtkWindow *window,
EShellBackend *shell_backend)
{
- EShellSettings *shell_settings;
static gboolean first_time = TRUE;
const gchar *backend_name;
- shell_settings = e_shell_get_shell_settings (shell);
-
/* This applies to both the composer and signature editor. */
if (GTKHTML_IS_EDITOR (window)) {
+ EShellSettings *shell_settings;
GList *spell_languages;
-
- e_binding_new (
- shell_settings, "composer-inline-spelling",
- window, "inline-spelling");
-
- e_binding_new (
- shell_settings, "composer-magic-links",
- window, "magic-links");
-
- e_binding_new (
- shell_settings, "composer-magic-smileys",
- window, "magic-smileys");
+ gboolean active = TRUE;
spell_languages = e_load_spell_languages ();
gtkhtml_editor_set_spell_languages (
GTKHTML_EDITOR (window), spell_languages);
g_list_free (spell_languages);
+
+ shell_settings = e_shell_get_shell_settings (shell);
+
+ /* Express mode does not honor this setting. */
+ if (!e_shell_get_express_mode (shell))
+ active = e_shell_settings_get_boolean (
+ shell_settings, "composer-format-html");
+
+ gtkhtml_editor_set_html_mode (GTKHTML_EDITOR (window), active);
}
if (E_IS_MSG_COMPOSER (window)) {
diff --git a/modules/mail/e-mail-shell-content.c b/modules/mail/e-mail-shell-content.c
index 846c1ee854..aa2718dcec 100644
--- a/modules/mail/e-mail-shell-content.c
+++ b/modules/mail/e-mail-shell-content.c
@@ -621,7 +621,7 @@ mail_shell_content_set_folder (EMailReader *reader,
key = STATE_KEY_GROUP_BY_THREADS;
value = g_key_file_get_boolean (key_file, group_name, key, &error);
if (error != NULL) {
- value = FALSE;
+ value = TRUE;
g_clear_error (&error);
}
@@ -881,6 +881,7 @@ e_mail_shell_content_set_preview_visible (EMailShellContent *mail_shell_content,
EShellSearchbar *
e_mail_shell_content_get_searchbar (EMailShellContent *mail_shell_content)
{
+ EShellView *shell_view;
EShellContent *shell_content;
GtkWidget *widget;
@@ -888,7 +889,8 @@ e_mail_shell_content_get_searchbar (EMailShellContent *mail_shell_content)
E_IS_MAIL_SHELL_CONTENT (mail_shell_content), NULL);
shell_content = E_SHELL_CONTENT (mail_shell_content);
- widget = e_shell_content_get_searchbar (shell_content);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ widget = e_shell_view_get_searchbar (shell_view);
return E_SHELL_SEARCHBAR (widget);
}
diff --git a/modules/mail/e-mail-shell-view-actions.c b/modules/mail/e-mail-shell-view-actions.c
index e92800c660..f534c2a276 100644
--- a/modules/mail/e-mail-shell-view-actions.c
+++ b/modules/mail/e-mail-shell-view-actions.c
@@ -1223,7 +1223,7 @@ static GtkRadioActionEntry mail_filter_entries[] = {
MAIL_FILTER_LAST_5_DAYS_MESSAGES },
{ "mail-filter-messages-not-junk",
- "mail-mark-notjunk",
+ "mail-mark-not-junk",
N_("Messages Not Junk"),
NULL,
NULL, /* XXX Add a tooltip! */
diff --git a/modules/mail/e-mail-shell-view-actions.h b/modules/mail/e-mail-shell-view-actions.h
index eb11f46013..addd67452b 100644
--- a/modules/mail/e-mail-shell-view-actions.h
+++ b/modules/mail/e-mail-shell-view-actions.h
@@ -115,8 +115,8 @@
E_SHELL_WINDOW_ACTION ((window), "mail-mark-important")
#define E_SHELL_WINDOW_ACTION_MAIL_MARK_JUNK(window) \
E_SHELL_WINDOW_ACTION ((window), "mail-mark-junk")
-#define E_SHELL_WINDOW_ACTION_MAIL_MARK_NOTJUNK(window) \
- E_SHELL_WINDOW_ACTION ((window), "mail-mark-notjunk")
+#define E_SHELL_WINDOW_ACTION_MAIL_MARK_NOT_JUNK(window) \
+ E_SHELL_WINDOW_ACTION ((window), "mail-mark-not-junk")
#define E_SHELL_WINDOW_ACTION_MAIL_MARK_READ(window) \
E_SHELL_WINDOW_ACTION ((window), "mail-mark-read")
#define E_SHELL_WINDOW_ACTION_MAIL_MARK_UNIMPORTANT(window) \
diff --git a/modules/mail/em-composer-prefs.c b/modules/mail/em-composer-prefs.c
index 574657806e..49f2fda5b6 100644
--- a/modules/mail/em-composer-prefs.c
+++ b/modules/mail/em-composer-prefs.c
@@ -36,6 +36,7 @@
#include "em-composer-prefs.h"
#include "composer/e-msg-composer.h"
+#include "shell/e-shell-utils.h"
#include <camel/camel-iconv.h>
@@ -398,10 +399,15 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
/* General tab */
/* Default Behavior */
+
+ /* Express mode does not honor this setting. */
widget = e_builder_get_widget (prefs->builder, "chkSendHTML");
- e_mutual_binding_new (
- shell_settings, "composer-format-html",
- widget, "active");
+ if (e_shell_get_express_mode (shell))
+ gtk_widget_hide (widget);
+ else
+ e_mutual_binding_new (
+ shell_settings, "composer-format-html",
+ widget, "active");
widget = e_builder_get_widget (prefs->builder, "chkPromptEmptySubject");
e_mutual_binding_new (
@@ -517,9 +523,11 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
widget, "editor-created",
G_CALLBACK (e_shell_watch_window), shell);
- e_binding_new (
- shell_settings, "composer-format-html",
- widget, "prefer-html");
+ /* Express mode does not honor this setting. */
+ if (!e_shell_get_express_mode (shell))
+ e_binding_new (
+ shell_settings, "composer-format-html",
+ widget, "prefer-html");
#ifndef G_OS_WIN32
e_binding_new_with_negation (
@@ -545,6 +553,14 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
signature_tree_view, "selected",
widget, "signature");
+ /* Sanitize the dialog for Express mode */
+ e_shell_hide_widgets_for_express_mode (shell, prefs->builder,
+ "chkOutlookFilenames",
+ "vboxTopPosting",
+ "labelAlerts",
+ "chkPromptEmptySubject",
+ NULL);
+
/* get our toplevel widget */
target = em_config_target_new_prefs (ec, client);
e_config_set_target ((EConfig *)ec, (EConfigTarget *)target);
diff --git a/modules/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c
index 89a7f0acc9..a885c72744 100644
--- a/modules/mail/em-mailer-prefs.c
+++ b/modules/mail/em-mailer-prefs.c
@@ -43,6 +43,7 @@
#include "e-util/e-datetime-format.h"
#include "e-util/e-util-private.h"
#include "widgets/misc/e-charset-combo-box.h"
+#include "shell/e-shell-utils.h"
#include "e-mail-label-manager.h"
#include "e-mail-reader-utils.h"
@@ -1207,6 +1208,15 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
g_signal_connect (G_OBJECT (prefs->junk_header_add), "clicked", G_CALLBACK (jh_add_cb), prefs);
g_signal_connect (G_OBJECT (prefs->junk_header_remove), "clicked", G_CALLBACK (jh_remove_cb), prefs);
+ /* Sanitize the dialog for Express mode */
+ e_shell_hide_widgets_for_express_mode (shell, prefs->builder,
+ "hboxReadTimeout",
+ "hboxMailSizeLimit",
+ "hboxShrinkAddresses",
+ "magic_spacebar_checkbox",
+ "hboxEnableSearchFolders",
+ NULL);
+
/* get our toplevel widget */
target = em_config_target_new_prefs(ec, prefs->gconf);
e_config_set_target((EConfig *)ec, (EConfigTarget *)target);
diff --git a/modules/mail/evolution-module-mail.c b/modules/mail/evolution-module-mail.c
index 1bb58c7742..9e9744569b 100644
--- a/modules/mail/evolution-module-mail.c
+++ b/modules/mail/evolution-module-mail.c
@@ -30,6 +30,9 @@
#include "e-mail-shell-sidebar.h"
#include "e-mail-shell-view.h"
+#include "e-mail-config-format-html.h"
+#include "e-mail-config-web-view.h"
+
/* Module Entry Points */
void e_module_load (GTypeModule *type_module);
void e_module_unload (GTypeModule *type_module);
@@ -50,6 +53,9 @@ e_module_load (GTypeModule *type_module)
e_mail_shell_content_register_type (type_module);
e_mail_shell_sidebar_register_type (type_module);
e_mail_shell_view_register_type (type_module);
+
+ e_mail_config_format_html_register_type (type_module);
+ e_mail_config_web_view_register_type (type_module);
}
G_MODULE_EXPORT void
diff --git a/modules/network-manager/Makefile.am b/modules/network-manager/Makefile.am
index f7a01a6c31..90579dae38 100644
--- a/modules/network-manager/Makefile.am
+++ b/modules/network-manager/Makefile.am
@@ -12,8 +12,8 @@ libevolution_module_network_manager_la_SOURCES = \
evolution-network-manager.c
libevolution_module_network_manager_la_LIBADD = \
- $(top_builddir)/shell/libeshell.la \
$(top_builddir)/e-util/libeutil.la \
+ $(top_builddir)/shell/libeshell.la \
$(GNOME_PLATFORM_LIBS) \
$(DBUS_GLIB_LIBS)
diff --git a/plugins/bbdb/gaimbuddies.c b/plugins/bbdb/gaimbuddies.c
index 184c071e39..66f77bcc99 100644
--- a/plugins/bbdb/gaimbuddies.c
+++ b/plugins/bbdb/gaimbuddies.c
@@ -40,7 +40,6 @@
#include <string.h>
#include <libebook/e-book.h>
-#include <libedataserver/md5-utils.h>
#include <libedataserverui/e-source-combo-box.h>
#include <sys/time.h>
@@ -75,15 +74,29 @@ get_buddy_filename (void)
static gchar *
get_md5_as_string (const gchar *filename)
{
- guchar d[16];
+ GMappedFile *mapped_file;
+ const gchar *contents;
+ gchar *digest;
+ gsize length;
+ GError *error = NULL;
g_return_val_if_fail (filename != NULL, NULL);
- md5_get_digest_from_file (filename, d);
+ mapped_file = g_mapped_file_new (filename, FALSE, &error);
+ if (mapped_file == NULL) {
+ g_warning ("%s", error->message);
+ return NULL;
+ }
+
+ contents = g_mapped_file_get_contents (mapped_file);
+ length = g_mapped_file_get_length (mapped_file);
+
+ digest = g_compute_checksum_for_data (
+ G_CHECKSUM_MD5, (guchar *) contents, length);
+
+ g_mapped_file_unref (mapped_file);
- return g_strdup_printf ("%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x",
- d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],
- d[8], d[9], d[10], d[11], d[12], d[13], d[14], d[15]);
+ return digest;
}
void
diff --git a/plugins/bogo-junk-plugin/bf-junk-filter.c b/plugins/bogo-junk-plugin/bf-junk-filter.c
index 6d315da575..4190eebe86 100644
--- a/plugins/bogo-junk-plugin/bf-junk-filter.c
+++ b/plugins/bogo-junk-plugin/bf-junk-filter.c
@@ -51,6 +51,7 @@
#include <camel/camel-stream-fs.h>
#include <camel/camel-debug.h>
#include <gconf/gconf-client.h>
+#include "shell/e-shell.h"
#ifndef BOGOFILTER_BINARY
#define BOGOFILTER_BINARY "/usr/bin/bogofilter"
@@ -388,6 +389,7 @@ convert_unicode_cb (GtkWidget *widget, gpointer data)
GtkWidget *
org_gnome_bogo_convert_unicode (struct _EPlugin *epl, struct _EConfigHookItemFactoryData *data)
{
+ EShell *shell;
GtkWidget *check;
guint i = ((GtkTable *)data->parent)->nrows;
@@ -399,7 +401,13 @@ org_gnome_bogo_convert_unicode (struct _EPlugin *epl, struct _EConfigHookItemFac
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), em_junk_bf_unicode);
g_signal_connect (GTK_TOGGLE_BUTTON (check), "toggled", G_CALLBACK (convert_unicode_cb), (gpointer) "/apps/evolution/mail/junk/bogofilter/unicode");
gtk_table_attach((GtkTable *)data->parent, check, 0, 1, i, i+1, 0, 0, 0, 0);
- gtk_widget_show (check);
- return (GtkWidget *)check;
+
+ shell = e_shell_get_default ();
+ if (e_shell_get_express_mode (shell))
+ gtk_widget_hide (check);
+ else
+ gtk_widget_show (check);
+
+ return check;
}
diff --git a/plugins/groupwise-features/share-folder-common.c b/plugins/groupwise-features/share-folder-common.c
index 14e3b0e5bd..992664f863 100644
--- a/plugins/groupwise-features/share-folder-common.c
+++ b/plugins/groupwise-features/share-folder-common.c
@@ -138,7 +138,7 @@ struct _EMCreateFolder {
static gchar *
create_folder_desc (struct _EMCreateFolder *m)
{
- return g_strdup_printf (_("Creating folder `%s'"), m->full_name);
+ return g_strdup_printf (_("Creating folder '%s'"), m->full_name);
}
static void
diff --git a/plugins/profiler/profiler.c b/plugins/profiler/profiler.c
index b57ba83817..e3ecd07a9e 100644
--- a/plugins/profiler/profiler.c
+++ b/plugins/profiler/profiler.c
@@ -45,7 +45,7 @@ org_gnome_evolution_profiler_event(EPlugin *ep, EProfileEventTarget *t)
name = g_strdup_printf("eprofile.%ld", (glong) getpid());
fp = fopen(name, "w");
if (fp)
- fprintf(stderr, "Generating profiling data in `%s'\n", name);
+ fprintf(stderr, "Generating profiling data in '%s'\n", name);
g_free(name);
}
diff --git a/plugins/pst-import/pst-importer.c b/plugins/pst-import/pst-importer.c
index 7d2868042a..fa0b61e993 100644
--- a/plugins/pst-import/pst-importer.c
+++ b/plugins/pst-import/pst-importer.c
@@ -453,7 +453,7 @@ pst_import_file (PstImporter *m)
filename = g_filename_from_uri (((EImportTargetURI *)m->target)->uri_src, NULL, NULL);
m->parent_uri = g_strdup (((EImportTargetURI *)m->target)->uri_dest); /* Destination folder, was set in our widget */
- camel_operation_start (NULL, _("Importing `%s'"), filename);
+ camel_operation_start (NULL, _("Importing '%s'"), filename);
if (GPOINTER_TO_INT (g_datalist_get_data (&m->target->data, "pst-do-mail"))) {
mail_tool_uri_to_folder (m->parent_uri, CAMEL_STORE_FOLDER_CREATE, &m->base.ex);
@@ -559,7 +559,7 @@ pst_process_item (PstImporter *m, pst_desc_tree *d_ptr)
if (item->folder != NULL) {
pst_process_folder (m, item);
- camel_operation_start (NULL, _("Importing `%s'"), item->file_as.str);
+ camel_operation_start (NULL, _("Importing '%s'"), item->file_as.str);
} else {
if (m->folder_count && (m->current_item < m->folder_count)) {
camel_operation_progress (NULL, (m->current_item * 100) / m->folder_count);
diff --git a/plugins/sa-junk-plugin/em-junk-filter.c b/plugins/sa-junk-plugin/em-junk-filter.c
index c0b59891a1..c8c53c6169 100644
--- a/plugins/sa-junk-plugin/em-junk-filter.c
+++ b/plugins/sa-junk-plugin/em-junk-filter.c
@@ -47,6 +47,7 @@
#include <gtk/gtk.h>
#include "mail/em-config.h"
+#include "shell/e-shell.h"
#include <gconf/gconf-client.h>
@@ -926,6 +927,7 @@ use_remote_tests_cb (GtkWidget *widget, gpointer data)
GtkWidget *
org_gnome_sa_use_remote_tests (struct _EPlugin *epl, struct _EConfigHookItemFactoryData *data)
{
+ EShell *shell;
GtkWidget *check, *vbox, *label;
gchar *text = g_strdup_printf (" <small>%s</small>", _("This will make SpamAssassin more reliable, but slower"));
guint i = ((GtkTable *)data->parent)->nrows;
@@ -944,7 +946,13 @@ org_gnome_sa_use_remote_tests (struct _EPlugin *epl, struct _EConfigHookItemFact
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), !em_junk_sa_local_only);
g_signal_connect (GTK_TOGGLE_BUTTON (check), "toggled", G_CALLBACK (use_remote_tests_cb), (gpointer) "/apps/evolution/mail/junk/sa/local_only");
gtk_table_attach((GtkTable *)data->parent, vbox, 0, 1, i, i+1, 0, 0, 0, 0);
- gtk_widget_show_all (vbox);
- return (GtkWidget *)vbox;
+
+ shell = e_shell_get_default ();
+ if (e_shell_get_express_mode (shell))
+ gtk_widget_hide (vbox);
+ else
+ gtk_widget_show_all (vbox);
+
+ return vbox;
}
diff --git a/plugins/startup-wizard/startup-wizard.c b/plugins/startup-wizard/startup-wizard.c
index a38b2d9e9a..97d2297480 100644
--- a/plugins/startup-wizard/startup-wizard.c
+++ b/plugins/startup-wizard/startup-wizard.c
@@ -66,7 +66,15 @@ startup_wizard (EPlugin *ep, ESEventTargetUpgrade *target)
GSList *accounts;
EConfig *config;
EMAccountEditor *emae;
+ char *req_view;
+ req_view = e_shell_get_startup_view(e_shell_get_default());
+
+ if (req_view && strcmp (req_view, "mail") && e_shell_get_express_mode(e_shell_get_default())) {
+ return;
+ }
+
+
client = gconf_client_get_default ();
accounts = gconf_client_get_list (client, "/apps/evolution/mail/accounts", GCONF_VALUE_STRING, NULL);
g_object_unref (client);
diff --git a/shell/Makefile.am b/shell/Makefile.am
index 7b742debae..1241dd41d3 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -58,6 +58,8 @@ libeshell_la_SOURCES = \
e-shell.c \
e-shell-backend.c \
e-shell-content.c \
+ e-shell-meego.c \
+ e-shell-meego.h \
e-shell-searchbar.c \
e-shell-settings.c \
e-shell-sidebar.c \
diff --git a/shell/e-shell-backend.c b/shell/e-shell-backend.c
index 18ebe0f8d8..570e58db95 100644
--- a/shell/e-shell-backend.c
+++ b/shell/e-shell-backend.c
@@ -21,6 +21,12 @@
* Copyright (C) 2009 Intel Corporation
*/
+/**
+ * SECTION: e-shell-backend
+ * @short_description: dynamically loaded capabilities
+ * @include: shell/e-shell-backend.h
+ **/
+
#include "e-shell-backend.h"
#include <errno.h>
@@ -37,8 +43,6 @@
struct _EShellBackendPrivate {
- gpointer shell; /* weak pointer */
-
/* We keep a reference to corresponding EShellView subclass
* since it keeps a reference back to us. This ensures the
* subclass is not finalized before we are, otherwise it
@@ -52,63 +56,38 @@ struct _EShellBackendPrivate {
};
enum {
- PROP_0,
- PROP_SHELL
-};
-
-enum {
ACTIVITY_ADDED,
LAST_SIGNAL
};
-static gpointer parent_class;
static guint signals[LAST_SIGNAL];
-static void
-shell_backend_set_shell (EShellBackend *shell_backend,
- EShell *shell)
-{
- g_return_if_fail (shell_backend->priv->shell == NULL);
+G_DEFINE_ABSTRACT_TYPE (EShellBackend, e_shell_backend, E_TYPE_EXTENSION)
- shell_backend->priv->shell = shell;
-
- g_object_add_weak_pointer (
- G_OBJECT (shell_backend),
- &shell_backend->priv->shell);
-}
-
-static void
-shell_backend_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
+static GObject *
+shell_backend_constructor (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_properties)
{
- switch (property_id) {
- case PROP_SHELL:
- shell_backend_set_shell (
- E_SHELL_BACKEND (object),
- g_value_get_object (value));
- return;
- }
+ EShellBackendPrivate *priv;
+ EShellBackendClass *class;
+ EShellViewClass *shell_view_class;
+ GObject *object;
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-}
+ /* Chain up to parent's construct() method. */
+ object = G_OBJECT_CLASS (e_shell_backend_parent_class)->constructor (
+ type, n_construct_properties, construct_properties);
-static void
-shell_backend_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (property_id) {
- case PROP_SHELL:
- g_value_set_object (
- value, e_shell_backend_get_shell (
- E_SHELL_BACKEND (object)));
- return;
- }
+ class = E_SHELL_BACKEND_GET_CLASS (object);
+ priv = E_SHELL_BACKEND_GET_PRIVATE (object);
+
+ /* Install a reference to ourselves in the
+ * corresponding EShellViewClass structure. */
+ shell_view_class = g_type_class_ref (class->shell_view_type);
+ shell_view_class->shell_backend = g_object_ref (object);
+ priv->shell_view_class = shell_view_class;
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ return object;
}
static void
@@ -118,19 +97,13 @@ shell_backend_dispose (GObject *object)
priv = E_SHELL_BACKEND_GET_PRIVATE (object);
- if (priv->shell != NULL) {
- g_object_remove_weak_pointer (
- G_OBJECT (priv->shell), &priv->shell);
- priv->shell = NULL;
- }
-
if (priv->shell_view_class != NULL) {
g_type_class_unref (priv->shell_view_class);
priv->shell_view_class = NULL;
}
/* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (e_shell_backend_parent_class)->dispose (object);
}
static void
@@ -144,7 +117,7 @@ shell_backend_finalize (GObject *object)
g_free (priv->data_dir);
/* Chain up to parent's finalize() method. */
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (e_shell_backend_parent_class)->finalize (object);
}
static const gchar *
@@ -189,39 +162,25 @@ shell_backend_get_data_dir (EShellBackend *shell_backend)
}
static void
-shell_backend_class_init (EShellBackendClass *class)
+e_shell_backend_class_init (EShellBackendClass *class)
{
GObjectClass *object_class;
+ EExtensionClass *extension_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EShellBackendPrivate));
object_class = G_OBJECT_CLASS (class);
- object_class->set_property = shell_backend_set_property;
- object_class->get_property = shell_backend_get_property;
+ object_class->constructor = shell_backend_constructor;
object_class->dispose = shell_backend_dispose;
object_class->finalize = shell_backend_finalize;
+ extension_class = E_EXTENSION_CLASS (class);
+ extension_class->extensible_type = E_TYPE_SHELL;
+
class->get_config_dir = shell_backend_get_config_dir;
class->get_data_dir = shell_backend_get_data_dir;
/**
- * EShellBackend:shell
- *
- * The #EShell singleton.
- **/
- g_object_class_install_property (
- object_class,
- PROP_SHELL,
- g_param_spec_object (
- "shell",
- _("Shell"),
- _("The EShell singleton"),
- E_TYPE_SHELL,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY));
-
- /**
* EShellBackend::activity-added
* @shell_backend: the #EShellBackend that emitted the signal
* @activity: an #EActivity
@@ -239,44 +198,9 @@ shell_backend_class_init (EShellBackendClass *class)
}
static void
-shell_backend_init (EShellBackend *shell_backend,
- EShellBackendClass *class)
+e_shell_backend_init (EShellBackend *shell_backend)
{
- EShellViewClass *shell_view_class;
-
shell_backend->priv = E_SHELL_BACKEND_GET_PRIVATE (shell_backend);
-
- /* Install a reference to ourselves in the corresponding
- * EShellViewClass structure, */
- shell_view_class = g_type_class_ref (class->shell_view_type);
- shell_view_class->shell_backend = g_object_ref (shell_backend);
- shell_backend->priv->shell_view_class = shell_view_class;
-}
-
-GType
-e_shell_backend_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- const GTypeInfo type_info = {
- sizeof (EShellBackendClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) shell_backend_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EShellBackend),
- 0, /* n_preallocs */
- (GInstanceInitFunc) shell_backend_init,
- NULL /* value_table */
- };
-
- type = g_type_register_static (
- G_TYPE_OBJECT, "EShellBackend", &type_info, 0);
- }
-
- return type;
}
/**
@@ -358,9 +282,13 @@ e_shell_backend_get_data_dir (EShellBackend *shell_backend)
EShell *
e_shell_backend_get_shell (EShellBackend *shell_backend)
{
+ EExtensible *extensible;
+
g_return_val_if_fail (E_IS_SHELL_BACKEND (shell_backend), NULL);
- return E_SHELL (shell_backend->priv->shell);
+ extensible = e_extension_get_extensible (E_EXTENSION (shell_backend));
+
+ return E_SHELL (extensible);
}
/**
diff --git a/shell/e-shell-backend.h b/shell/e-shell-backend.h
index cda014e5a9..055a2a3322 100644
--- a/shell/e-shell-backend.h
+++ b/shell/e-shell-backend.h
@@ -19,17 +19,12 @@
*
*/
-/**
- * SECTION: e-shell-backend
- * @short_description: dynamically loaded capabilities
- * @include: shell/e-shell-backend.h
- **/
-
#ifndef E_SHELL_BACKEND_H
#define E_SHELL_BACKEND_H
#include <shell/e-shell-common.h>
#include <e-util/e-activity.h>
+#include <e-util/e-extension.h>
/* Standard GObject macros */
#define E_TYPE_SHELL_BACKEND \
@@ -66,7 +61,7 @@ typedef struct _EShellBackendPrivate EShellBackendPrivate;
* functions below.
**/
struct _EShellBackend {
- GObject parent;
+ EExtension parent;
EShellBackendPrivate *priv;
};
@@ -100,7 +95,7 @@ struct _EShellBackend {
* #EShellBackendClass contains a number of important settings for subclasses.
**/
struct _EShellBackendClass {
- GObjectClass parent_class;
+ EExtensionClass parent_class;
GType shell_view_type;
diff --git a/shell/e-shell-content.c b/shell/e-shell-content.c
index e0102908de..5d5857cfc2 100644
--- a/shell/e-shell-content.c
+++ b/shell/e-shell-content.c
@@ -19,11 +19,18 @@
*
*/
+/**
+ * SECTION: e-shell-content
+ * @short_description: the right side of the main window
+ * @include: shell/e-shell-content.h
+ **/
+
#include "e-shell-content.h"
#include <glib/gi18n.h>
#include "e-util/e-binding.h"
+#include "e-util/e-extensible.h"
#include "e-util/e-util.h"
#include "e-util/e-alert-dialog.h"
#include "filter/e-rule-editor.h"
@@ -41,9 +48,9 @@
struct _EShellContentPrivate {
- gpointer shell_view; /* weak pointer */
+ gpointer shell_view; /* weak pointer */
- GtkWidget *searchbar;
+ GtkWidget *searchbar; /* not referenced */
/* Custom search rules. */
gchar *user_filename;
@@ -54,7 +61,9 @@ enum {
PROP_SHELL_VIEW
};
-static gpointer parent_class;
+G_DEFINE_TYPE_WITH_CODE (
+ EShellContent, e_shell_content, GTK_TYPE_BIN,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL));
static void
shell_content_dialog_rule_changed (GtkWidget *dialog,
@@ -131,17 +140,15 @@ shell_content_dispose (GObject *object)
}
/* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (e_shell_content_parent_class)->dispose (object);
}
static void
shell_content_constructed (GObject *object)
{
- EShellContentClass *class;
EShellContent *shell_content;
EShellBackend *shell_backend;
EShellView *shell_view;
- GtkWidget *widget;
const gchar *data_dir;
shell_content = E_SHELL_CONTENT (object);
@@ -156,37 +163,7 @@ shell_content_constructed (GObject *object)
shell_content->priv->user_filename =
g_build_filename (data_dir, "searches.xml", NULL);
- class = E_SHELL_CONTENT_GET_CLASS (shell_content);
- if (class->construct_searchbar != NULL)
- widget = class->construct_searchbar (shell_content);
- else
- widget = NULL;
- if (widget != NULL) {
- gtk_widget_set_parent (widget, GTK_WIDGET (shell_content));
- shell_content->priv->searchbar = g_object_ref (widget);
- gtk_widget_show (widget);
- }
-}
-
-static void
-shell_content_destroy (GtkObject *gtk_object)
-{
- EShellContentPrivate *priv;
-
- priv = E_SHELL_CONTENT_GET_PRIVATE (gtk_object);
-
- /* Unparent the widget before destroying it to avoid
- * writing a custom GtkContainer::remove() method. */
-
- if (priv->searchbar != NULL) {
- gtk_widget_unparent (priv->searchbar);
- gtk_widget_destroy (priv->searchbar);
- g_object_unref (priv->searchbar);
- priv->searchbar = NULL;
- }
-
- /* Chain up to parent's destroy() method. */
- GTK_OBJECT_CLASS (parent_class)->destroy (gtk_object);
+ e_extensible_load_extensions (E_EXTENSIBLE (object));
}
static void
@@ -251,6 +228,26 @@ shell_content_size_allocate (GtkWidget *widget,
}
static void
+shell_content_remove (GtkContainer *container,
+ GtkWidget *widget)
+{
+ GtkContainerClass *container_class;
+ EShellContentPrivate *priv;
+
+ priv = E_SHELL_CONTENT_GET_PRIVATE (container);
+
+ if (widget == priv->searchbar) {
+ gtk_widget_unparent (priv->searchbar);
+ priv->searchbar = NULL;
+ return;
+ }
+
+ /* Chain up to parent's remove() method. */
+ container_class = GTK_CONTAINER_CLASS (e_shell_content_parent_class);
+ container_class->remove (container, widget);
+}
+
+static void
shell_content_forall (GtkContainer *container,
gboolean include_internals,
GtkCallback callback,
@@ -265,51 +262,17 @@ shell_content_forall (GtkContainer *container,
callback (priv->searchbar, callback_data);
/* Chain up to parent's forall() method. */
- GTK_CONTAINER_CLASS (parent_class)->forall (
+ GTK_CONTAINER_CLASS (e_shell_content_parent_class)->forall (
container, include_internals, callback, callback_data);
}
-static gchar *
-shell_content_get_search_name (EShellContent *shell_content)
-{
- EShellSearchbar *searchbar;
- EShellView *shell_view;
- EFilterRule *rule;
- const gchar *search_text;
-
- shell_view = e_shell_content_get_shell_view (shell_content);
-
- rule = e_shell_view_get_search_rule (shell_view);
- g_return_val_if_fail (E_IS_FILTER_RULE (rule), NULL);
-
- searchbar = E_SHELL_SEARCHBAR (shell_content->priv->searchbar);
- search_text = e_shell_searchbar_get_search_text (searchbar);
-
- if (search_text == NULL || *search_text == '\0')
- search_text = "''";
-
- return g_strdup_printf ("%s %s", rule->name, search_text);
-}
-
-static GtkWidget *
-shell_content_construct_searchbar (EShellContent *shell_content)
-{
- EShellView *shell_view;
-
- shell_view = e_shell_content_get_shell_view (shell_content);
-
- return e_shell_searchbar_new (shell_view);
-}
-
static void
-shell_content_class_init (EShellContentClass *class)
+e_shell_content_class_init (EShellContentClass *class)
{
GObjectClass *object_class;
- GtkObjectClass *gtk_object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EShellContentPrivate));
object_class = G_OBJECT_CLASS (class);
@@ -318,19 +281,14 @@ shell_content_class_init (EShellContentClass *class)
object_class->dispose = shell_content_dispose;
object_class->constructed = shell_content_constructed;
- gtk_object_class = GTK_OBJECT_CLASS (class);
- gtk_object_class->destroy = shell_content_destroy;
-
widget_class = GTK_WIDGET_CLASS (class);
widget_class->size_request = shell_content_size_request;
widget_class->size_allocate = shell_content_size_allocate;
container_class = GTK_CONTAINER_CLASS (class);
+ container_class->remove = shell_content_remove;
container_class->forall = shell_content_forall;
- class->get_search_name = shell_content_get_search_name;
- class->construct_searchbar = shell_content_construct_searchbar;
-
/**
* EShellContent:shell-view
*
@@ -349,39 +307,13 @@ shell_content_class_init (EShellContentClass *class)
}
static void
-shell_content_init (EShellContent *shell_content)
+e_shell_content_init (EShellContent *shell_content)
{
shell_content->priv = E_SHELL_CONTENT_GET_PRIVATE (shell_content);
GTK_WIDGET_SET_FLAGS (shell_content, GTK_NO_WINDOW);
}
-GType
-e_shell_content_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EShellContentClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) shell_content_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EShellContent),
- 0, /* n_preallocs */
- (GInstanceInitFunc) shell_content_init,
- NULL /* value_table */
- };
-
- type = g_type_register_static (
- GTK_TYPE_BIN, "EShellContent", &type_info, 0);
- }
-
- return type;
-}
-
/**
* e_shell_content_new:
* @shell_view: an #EShellView
@@ -400,21 +332,34 @@ e_shell_content_new (EShellView *shell_view)
}
/**
- * e_shell_content_get_searchbar:
+ * e_shell_content_set_searchbar:
* @shell_content: an #EShellContent
+ * @searchbar: a #GtkWidget, or %NULL
*
- * Returns the search bar widget returned by the
- * <structfield>construct_searchbar</structfield> method in
- * #EShellContentClass.
- *
- * Returns: the search bar widget
+ * Packs @searchbar at the top of @shell_content.
**/
-GtkWidget *
-e_shell_content_get_searchbar (EShellContent *shell_content)
+void
+e_shell_content_set_searchbar (EShellContent *shell_content,
+ GtkWidget *searchbar)
{
- g_return_val_if_fail (E_IS_SHELL_CONTENT (shell_content), NULL);
+ g_return_if_fail (E_IS_SHELL_CONTENT (shell_content));
+
+ if (searchbar != NULL) {
+ g_return_if_fail (GTK_IS_WIDGET (searchbar));
+ g_object_ref_sink (searchbar);
+ }
- return shell_content->priv->searchbar;
+ if (shell_content->priv->searchbar != NULL)
+ gtk_container_remove (
+ GTK_CONTAINER (shell_content),
+ shell_content->priv->searchbar);
+
+ shell_content->priv->searchbar = searchbar;
+
+ if (searchbar != NULL)
+ gtk_widget_set_parent (searchbar, GTK_WIDGET (shell_content));
+
+ gtk_widget_queue_resize (GTK_WIDGET (shell_content));
}
/**
@@ -459,29 +404,6 @@ e_shell_content_get_shell_view (EShellContent *shell_content)
return E_SHELL_VIEW (shell_content->priv->shell_view);
}
-/**
- * e_shell_content_get_search_name:
- * @shell_content: an #EShellContent
- *
- * Returns a newly-allocated string containing a suitable name for the
- * current search criteria. This is used as the suggested name in the
- * Save Search dialog. Free the returned string with g_free().
- *
- * Returns: a name for the current search criteria
- **/
-gchar *
-e_shell_content_get_search_name (EShellContent *shell_content)
-{
- EShellContentClass *class;
-
- g_return_val_if_fail (E_IS_SHELL_CONTENT (shell_content), NULL);
-
- class = E_SHELL_CONTENT_GET_CLASS (shell_content);
- g_return_val_if_fail (class->get_search_name != NULL, NULL);
-
- return class->get_search_name (shell_content);
-}
-
void
e_shell_content_run_advanced_search_dialog (EShellContent *shell_content)
{
@@ -607,7 +529,7 @@ e_shell_content_run_save_search_dialog (EShellContent *shell_content)
g_return_if_fail (E_IS_FILTER_RULE (rule));
rule = e_filter_rule_clone (rule);
- search_name = e_shell_content_get_search_name (shell_content);
+ search_name = e_shell_view_get_search_name (shell_view);
e_filter_rule_set_name (rule, search_name);
g_free (search_name);
diff --git a/shell/e-shell-content.h b/shell/e-shell-content.h
index 3c3332b17b..e6a11291a7 100644
--- a/shell/e-shell-content.h
+++ b/shell/e-shell-content.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-content
- * @short_description: the right side of the main window
- * @include: shell/e-shell-content.h
- **/
-
#ifndef E_SHELL_CONTENT_H
#define E_SHELL_CONTENT_H
@@ -74,22 +68,18 @@ struct _EShellContentClass {
/* Methods */
guint32 (*check_state) (EShellContent *shell_content);
- gchar * (*get_search_name) (EShellContent *shell_content);
-
- /* This is a protected method. Not for public use. */
- GtkWidget * (*construct_searchbar) (EShellContent *shell_content);
};
GType e_shell_content_get_type (void);
GtkWidget * e_shell_content_new (struct _EShellView *shell_view);
-GtkWidget * e_shell_content_get_searchbar (EShellContent *shell_content);
+void e_shell_content_set_searchbar (EShellContent *shell_content,
+ GtkWidget *searchbar);
guint32 e_shell_content_check_state (EShellContent *shell_content);
struct _EShellView *
e_shell_content_get_shell_view (EShellContent *shell_content);
const gchar * e_shell_content_get_view_id (EShellContent *shell_content);
void e_shell_content_set_view_id (EShellContent *shell_content,
const gchar *view_id);
-gchar * e_shell_content_get_search_name (EShellContent *shell_content);
void e_shell_content_run_advanced_search_dialog
(EShellContent *shell_content);
void e_shell_content_run_edit_searches_dialog
diff --git a/shell/e-shell-meego.c b/shell/e-shell-meego.c
new file mode 100644
index 0000000000..3e1bb8a393
--- /dev/null
+++ b/shell/e-shell-meego.c
@@ -0,0 +1,157 @@
+/*
+ * e-shell-meego.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ * Inspired by mx's mx-application.c by
+ * Thomas Wood <thomas.wood@intel.com>,
+ * Chris Lord <chris@linux.intel.com>
+ */
+
+#include <glib.h>
+#include <e-shell-meego.h>
+
+#ifndef G_OS_WIN32
+#include <gdk/gdkx.h>
+#include <X11/Xatom.h>
+#endif
+
+#ifdef G_OS_WIN32
+void e_shell_detect_meego (gboolean *is_meego, gboolean *small_screen)
+{
+ *is_meego = *small_screen = FALSE;
+}
+#else
+void e_shell_detect_meego (gboolean *is_meego, gboolean *small_screen)
+{
+ Window *wm_window_v = NULL;
+ unsigned char *moblin_string = NULL;
+ GModule *module = NULL;
+ /*
+ * Wow - this is unpleasant, but it is hard to link directly
+ * to the X libraries, and we have to use XGetWindowProperty
+ * to get to the (mind-mashed) 'supporting' window.
+ */
+ struct {
+ int (*XFree) (void *);
+ int (*XGetWindowProperty) (Display*, XID, Atom, long, long, Bool,
+ Atom, Atom *, int *, unsigned long*,
+ unsigned long*, unsigned char**);
+ } fns = { 0, 0 };
+
+ *is_meego = *small_screen = FALSE;
+
+ moblin_string = (unsigned char *)g_getenv ("EVO_MEEGO");
+ if (!moblin_string) {
+ GdkScreen *screen;
+ GdkDisplay *display;
+ GdkAtom wm_win, mob_atom;
+ Atom dummy_t;
+ unsigned long dummy_l;
+ int dummy_i;
+
+ if (!gdk_display_get_default ())
+ return;
+
+ wm_win = gdk_atom_intern ("_NET_SUPPORTING_WM_CHECK", TRUE);
+ mob_atom = gdk_atom_intern ("_MOBLIN", TRUE);
+ if (!wm_win || !mob_atom)
+ return;
+
+ module = g_module_open (NULL, 0);
+ if (!module)
+ return;
+ g_module_symbol (module, "XFree", (gpointer) &fns.XFree);
+ g_module_symbol (module, "XGetWindowProperty",
+ (gpointer) &fns.XGetWindowProperty);
+ if (!fns.XFree || !fns.XGetWindowProperty) {
+ fprintf (stderr, "defective X server\n");
+ goto exit;
+ }
+
+ display = gdk_display_get_default ();
+ screen = gdk_display_get_default_screen (gdk_display_get_default());
+
+ gdk_error_trap_push ();
+
+ /* get the window manager's supporting window */
+ fns.XGetWindowProperty (gdk_x11_display_get_xdisplay (display),
+ GDK_WINDOW_XID (gdk_screen_get_root_window (screen)),
+ gdk_x11_atom_to_xatom_for_display (display, wm_win),
+ 0, 1, False, XA_WINDOW, &dummy_t, &dummy_i,
+ &dummy_l, &dummy_l, (unsigned char **)(&wm_window_v));
+
+ /* get the '_Moblin' setting */
+ if (wm_window_v && (*wm_window_v != None))
+ fns.XGetWindowProperty (gdk_x11_display_get_xdisplay (display), *wm_window_v,
+ gdk_x11_atom_to_xatom_for_display (display, mob_atom),
+ 0, 8192, False, XA_STRING,
+ &dummy_t, &dummy_i, &dummy_l, &dummy_l,
+ &moblin_string);
+
+ gdk_error_trap_pop ();
+ }
+
+ if (moblin_string) {
+ int i;
+ char **props;
+
+ g_warning ("prop '%s'", moblin_string);
+
+ /* use meego theming tweaks */
+ *is_meego = TRUE;
+
+ props = g_strsplit ((gchar *)moblin_string, ":", -1);
+ for (i = 0; props && props[i]; i++) {
+ char **pair = g_strsplit (props[i], "=", 2);
+
+ g_warning ("pair '%s'='%s'", pair ? pair[0] : "<null>",
+ pair && pair[0] ? pair[1] : "<null>");
+
+ /* Hunt for session-type=small-screen */
+ if (pair && pair[0] && !g_ascii_strcasecmp (pair[0], "session-type"))
+ *small_screen = !g_ascii_strcasecmp (pair[1], "small-screen");
+ g_strfreev (pair);
+ }
+ g_strfreev (props);
+ if (fns.XFree)
+ fns.XFree (moblin_string);
+ }
+
+ exit:
+ if (wm_window_v)
+ fns.XFree (wm_window_v);
+ if (module)
+ g_module_close (module);
+}
+#endif
+
+#ifdef TEST_APP
+/* gcc -g -O0 -Wall -I. -DTEST_APP `pkg-config --cflags --libs gtk+-2.0` e-shell-meego.c && ./a.out */
+#include <gtk/gtk.h>
+
+int main (int argc, char **argv)
+{
+ gboolean is_meego, small_screen;
+
+ gtk_init (&argc, &argv);
+
+ e_shell_detect_meego (&is_meego, &small_screen);
+ fprintf (stderr, "Meego ? %d small ? %d\n", is_meego, small_screen);
+
+ return 0;
+}
+#endif
diff --git a/shell/e-shell-meego.h b/shell/e-shell-meego.h
new file mode 100644
index 0000000000..54a7d528b4
--- /dev/null
+++ b/shell/e-shell-meego.h
@@ -0,0 +1,24 @@
+/*
+ * e-shell-meego.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ */
+#ifndef E_SHELL_MEEGO_H
+#define E_SHELL_MEEGO_H
+
+extern void e_shell_detect_meego (gboolean *is_meego, gboolean *small_screen);
+
+#endif /* E_SHELL_MEEGO_H */
diff --git a/shell/e-shell-searchbar.c b/shell/e-shell-searchbar.c
index 272ba0e906..940bd9fd6b 100644
--- a/shell/e-shell-searchbar.c
+++ b/shell/e-shell-searchbar.c
@@ -19,6 +19,12 @@
*
*/
+/**
+ * SECTION: e-shell-searchbar
+ * @short_description: quick search interface
+ * @include: shell/e-shell-searchbar.h
+ **/
+
#include "e-shell-searchbar.h"
#include <config.h>
@@ -26,6 +32,7 @@
#include "e-util/e-util.h"
#include "e-util/e-binding.h"
+#include "e-util/e-extensible.h"
#include "widgets/misc/e-action-combo-box.h"
#include "widgets/misc/e-hinted-entry.h"
@@ -60,8 +67,9 @@ struct _EShellSearchbarPrivate {
/* State Key File */
gchar *state_group;
+ guint express_mode : 1;
guint filter_visible : 1;
- guint label_visible : 1;
+ guint labels_visible : 1;
guint search_visible : 1;
guint scope_visible : 1;
guint state_dirty : 1;
@@ -69,9 +77,10 @@ struct _EShellSearchbarPrivate {
enum {
PROP_0,
+ PROP_EXPRESS_MODE,
PROP_FILTER_COMBO_BOX,
PROP_FILTER_VISIBLE,
- PROP_LABEL_VISIBLE,
+ PROP_LABELS_VISIBLE,
PROP_SEARCH_HINT,
PROP_SEARCH_OPTION,
PROP_SEARCH_TEXT,
@@ -82,7 +91,9 @@ enum {
PROP_STATE_GROUP
};
-static gpointer parent_class;
+G_DEFINE_TYPE_WITH_CODE (
+ EShellSearchbar, e_shell_searchbar, GTK_TYPE_BOX,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
static void
shell_searchbar_save_search_filter (EShellSearchbar *searchbar)
@@ -463,14 +474,20 @@ shell_searchbar_set_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
+ case PROP_EXPRESS_MODE:
+ e_shell_searchbar_set_express_mode (
+ E_SHELL_SEARCHBAR (object),
+ g_value_get_boolean (value));
+ return;
+
case PROP_FILTER_VISIBLE:
e_shell_searchbar_set_filter_visible (
E_SHELL_SEARCHBAR (object),
g_value_get_boolean (value));
return;
- case PROP_LABEL_VISIBLE:
- e_shell_searchbar_set_label_visible (
+ case PROP_LABELS_VISIBLE:
+ e_shell_searchbar_set_labels_visible (
E_SHELL_SEARCHBAR (object),
g_value_get_boolean (value));
return;
@@ -528,15 +545,21 @@ shell_searchbar_get_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
+ case PROP_EXPRESS_MODE:
+ g_value_set_boolean (
+ value, e_shell_searchbar_get_express_mode (
+ E_SHELL_SEARCHBAR (object)));
+ return;
+
case PROP_FILTER_COMBO_BOX:
g_value_set_object (
value, e_shell_searchbar_get_filter_combo_box (
E_SHELL_SEARCHBAR (object)));
return;
- case PROP_LABEL_VISIBLE:
+ case PROP_LABELS_VISIBLE:
g_value_set_boolean (
- value, e_shell_searchbar_get_label_visible (
+ value, e_shell_searchbar_get_labels_visible (
E_SHELL_SEARCHBAR (object)));
return;
@@ -620,7 +643,7 @@ shell_searchbar_dispose (GObject *object)
}
/* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (e_shell_searchbar_parent_class)->dispose (object);
}
static void
@@ -693,13 +716,15 @@ shell_searchbar_constructed (GObject *object)
widget = GTK_WIDGET (searchbar);
gtk_size_group_add_widget (size_group, widget);
+
+ e_extensible_load_extensions (E_EXTENSIBLE (object));
}
static void
shell_searchbar_map (GtkWidget *widget)
{
/* Chain up to parent's map() method. */
- GTK_WIDGET_CLASS (parent_class)->map (widget);
+ GTK_WIDGET_CLASS (e_shell_searchbar_parent_class)->map (widget);
/* Load state after constructed() so we don't derail
* subclass initialization. We wait until map() so we
@@ -708,12 +733,11 @@ shell_searchbar_map (GtkWidget *widget)
}
static void
-shell_searchbar_class_init (EShellSearchbarClass *class)
+e_shell_searchbar_class_init (EShellSearchbarClass *class)
{
GObjectClass *object_class;
GtkWidgetClass *widget_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EShellSearchbarPrivate));
object_class = G_OBJECT_CLASS (class);
@@ -727,6 +751,17 @@ shell_searchbar_class_init (EShellSearchbarClass *class)
g_object_class_install_property (
object_class,
+ PROP_EXPRESS_MODE,
+ g_param_spec_boolean (
+ "express-mode",
+ NULL,
+ NULL,
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (
+ object_class,
PROP_FILTER_COMBO_BOX,
g_param_spec_object (
"filter-combo-box",
@@ -737,9 +772,9 @@ shell_searchbar_class_init (EShellSearchbarClass *class)
g_object_class_install_property (
object_class,
- PROP_LABEL_VISIBLE,
+ PROP_LABELS_VISIBLE,
g_param_spec_boolean (
- "label-visible",
+ "labels-visible",
NULL,
NULL,
TRUE,
@@ -853,7 +888,7 @@ shell_searchbar_class_init (EShellSearchbarClass *class)
}
static void
-shell_searchbar_init (EShellSearchbar *searchbar)
+e_shell_searchbar_init (EShellSearchbar *searchbar)
{
GtkBox *box;
GtkLabel *label;
@@ -884,6 +919,10 @@ shell_searchbar_init (EShellSearchbar *searchbar)
gtk_box_pack_start (box, widget, FALSE, FALSE, 0);
gtk_widget_show (widget);
+ e_binding_new (
+ searchbar, "labels-visible",
+ widget, "visible");
+
label = GTK_LABEL (widget);
widget = e_action_combo_box_new ();
@@ -911,11 +950,12 @@ shell_searchbar_init (EShellSearchbar *searchbar)
gtk_box_pack_start (box, widget, FALSE, FALSE, 0);
gtk_widget_show (widget);
- label = GTK_LABEL (widget);
e_binding_new (
- searchbar, "label-visible",
+ searchbar, "labels-visible",
widget, "visible");
+ label = GTK_LABEL (widget);
+
widget = e_hinted_entry_new ();
gtk_label_set_mnemonic_widget (label, widget);
gtk_box_pack_start (box, widget, TRUE, TRUE, 0);
@@ -989,32 +1029,6 @@ shell_searchbar_init (EShellSearchbar *searchbar)
G_CONNECT_AFTER | G_CONNECT_SWAPPED);
}
-GType
-e_shell_searchbar_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EShellSearchbarClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) shell_searchbar_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EShellSearchbar),
- 0, /* n_preallocs */
- (GInstanceInitFunc) shell_searchbar_init,
- NULL /* value_table */
- };
-
- type = g_type_register_static (
- GTK_TYPE_BOX, "EShellSearchbar", &type_info, 0);
- }
-
- return type;
-}
-
/**
* e_shell_searchbar_new:
* @shell_view: an #EShellView
@@ -1048,6 +1062,31 @@ e_shell_searchbar_get_shell_view (EShellSearchbar *searchbar)
return E_SHELL_VIEW (searchbar->priv->shell_view);
}
+gboolean
+e_shell_searchbar_get_express_mode (EShellSearchbar *searchbar)
+{
+ g_return_val_if_fail (E_IS_SHELL_SEARCHBAR (searchbar), FALSE);
+
+ return searchbar->priv->express_mode;
+}
+
+void
+e_shell_searchbar_set_express_mode (EShellSearchbar *searchbar,
+ gboolean express_mode)
+{
+ g_return_if_fail (E_IS_SHELL_SEARCHBAR (searchbar));
+
+ searchbar->priv->express_mode = express_mode;
+
+ /* Emit "notify" on all the properties we override. */
+ g_object_freeze_notify (G_OBJECT (searchbar));
+ g_object_notify (G_OBJECT (searchbar), "express-mode");
+ g_object_notify (G_OBJECT (searchbar), "labels-visible");
+ g_object_notify (G_OBJECT (searchbar), "filter-visible");
+ g_object_notify (G_OBJECT (searchbar), "scope-visible");
+ g_object_thaw_notify (G_OBJECT (searchbar));
+}
+
EActionComboBox *
e_shell_searchbar_get_filter_combo_box (EShellSearchbar *searchbar)
{
@@ -1057,22 +1096,26 @@ e_shell_searchbar_get_filter_combo_box (EShellSearchbar *searchbar)
}
gboolean
-e_shell_searchbar_get_label_visible (EShellSearchbar *searchbar)
+e_shell_searchbar_get_labels_visible (EShellSearchbar *searchbar)
{
g_return_val_if_fail (E_IS_SHELL_SEARCHBAR (searchbar), FALSE);
- return searchbar->priv->label_visible;
+ /* Express mode overrides this. */
+ if (e_shell_searchbar_get_express_mode (searchbar))
+ return FALSE;
+
+ return searchbar->priv->labels_visible;
}
void
-e_shell_searchbar_set_label_visible (EShellSearchbar *searchbar,
- gboolean label_visible)
+e_shell_searchbar_set_labels_visible (EShellSearchbar *searchbar,
+ gboolean labels_visible)
{
g_return_if_fail (E_IS_SHELL_SEARCHBAR (searchbar));
- searchbar->priv->label_visible = label_visible;
+ searchbar->priv->labels_visible = labels_visible;
- g_object_notify (G_OBJECT (searchbar), "label-visible");
+ g_object_notify (G_OBJECT (searchbar), "labels-visible");
}
gboolean
@@ -1080,6 +1123,10 @@ e_shell_searchbar_get_filter_visible (EShellSearchbar *searchbar)
{
g_return_val_if_fail (E_IS_SHELL_SEARCHBAR (searchbar), FALSE);
+ /* Express mode overrides this. */
+ if (e_shell_searchbar_get_express_mode (searchbar))
+ return FALSE;
+
return searchbar->priv->filter_visible;
}
@@ -1220,6 +1267,10 @@ e_shell_searchbar_get_scope_visible (EShellSearchbar *searchbar)
{
g_return_val_if_fail (E_IS_SHELL_SEARCHBAR (searchbar), FALSE);
+ /* Express mode overrides this. */
+ if (e_shell_searchbar_get_express_mode (searchbar))
+ return FALSE;
+
return searchbar->priv->scope_visible;
}
@@ -1273,6 +1324,7 @@ e_shell_searchbar_load_state (EShellSearchbar *searchbar)
GKeyFile *key_file;
GtkAction *action;
GtkWidget *widget;
+ gboolean express_mode;
const gchar *search_text;
const gchar *state_group;
const gchar *key;
@@ -1288,6 +1340,8 @@ e_shell_searchbar_load_state (EShellSearchbar *searchbar)
key_file = e_shell_view_get_state_key_file (shell_view);
shell_window = e_shell_view_get_shell_window (shell_view);
+ express_mode = e_shell_searchbar_get_express_mode (searchbar);
+
/* Changing the combo boxes triggers searches, so block
* the search action until the state is fully restored. */
action = E_SHELL_WINDOW_ACTION_SEARCH_QUICK (shell_window);
@@ -1299,7 +1353,7 @@ e_shell_searchbar_load_state (EShellSearchbar *searchbar)
key = STATE_KEY_SEARCH_FILTER;
string = g_key_file_get_string (key_file, state_group, key, NULL);
- if (string != NULL && *string != '\0')
+ if (string != NULL && *string != '\0' && !express_mode)
action = e_shell_window_get_action (shell_window, string);
else
action = NULL;
@@ -1344,7 +1398,7 @@ e_shell_searchbar_load_state (EShellSearchbar *searchbar)
key = STATE_KEY_SEARCH_SCOPE;
string = g_key_file_get_string (key_file, state_group, key, NULL);
- if (string != NULL && *string != '\0')
+ if (string != NULL && *string != '\0' && !express_mode)
action = e_shell_window_get_action (shell_window, string);
else
action = NULL;
diff --git a/shell/e-shell-searchbar.h b/shell/e-shell-searchbar.h
index 23fa480a86..84049e99e0 100644
--- a/shell/e-shell-searchbar.h
+++ b/shell/e-shell-searchbar.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-searchbar
- * @short_description: quick search interface
- * @include: shell/e-shell-searchbar.h
- **/
-
#ifndef E_SHELL_SEARCHBAR_H
#define E_SHELL_SEARCHBAR_H
@@ -75,6 +69,11 @@ struct _EShellSearchbarClass {
GType e_shell_searchbar_get_type (void);
GtkWidget * e_shell_searchbar_new (EShellView *shell_view);
EShellView * e_shell_searchbar_get_shell_view(EShellSearchbar *searchbar);
+gboolean e_shell_searchbar_get_express_mode
+ (EShellSearchbar *searchbar);
+void e_shell_searchbar_set_express_mode
+ (EShellSearchbar *searchbar,
+ gboolean express_mode);
EActionComboBox *
e_shell_searchbar_get_filter_combo_box
(EShellSearchbar *searchbar);
@@ -83,11 +82,11 @@ gboolean e_shell_searchbar_get_filter_visible
void e_shell_searchbar_set_filter_visible
(EShellSearchbar *searchbar,
gboolean filter_visible);
-gboolean e_shell_searchbar_get_label_visible
+gboolean e_shell_searchbar_get_labels_visible
(EShellSearchbar *searchbar);
-void e_shell_searchbar_set_label_visible
+void e_shell_searchbar_set_labels_visible
(EShellSearchbar *searchbar,
- gboolean label_visible);
+ gboolean labels_visible);
const gchar * e_shell_searchbar_get_search_hint
(EShellSearchbar *searchbar);
void e_shell_searchbar_set_search_hint
diff --git a/shell/e-shell-settings.c b/shell/e-shell-settings.c
index 99e1822e68..7c5cac4e53 100644
--- a/shell/e-shell-settings.c
+++ b/shell/e-shell-settings.c
@@ -19,6 +19,12 @@
*
*/
+/**
+ * SECTION: e-shell-settings
+ * @short_description: settings management
+ * @include: shell/e-shell-settings.h
+ **/
+
#include "e-shell-settings.h"
#include "e-util/gconf-bridge.h"
diff --git a/shell/e-shell-settings.h b/shell/e-shell-settings.h
index c1ac497dec..15aaff2071 100644
--- a/shell/e-shell-settings.h
+++ b/shell/e-shell-settings.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-settings
- * @short_description: settings management
- * @include: shell/e-shell-settings.h
- **/
-
#ifndef E_SHELL_SETTINGS_H
#define E_SHELL_SETTINGS_H
diff --git a/shell/e-shell-sidebar.c b/shell/e-shell-sidebar.c
index 5701321f24..edb8ba5299 100644
--- a/shell/e-shell-sidebar.c
+++ b/shell/e-shell-sidebar.c
@@ -19,9 +19,16 @@
*
*/
+/**
+ * SECTION: e-shell-sidebar
+ * @short_description: the left side of the main window
+ * @include: shell/e-shell-sidebar.h
+ **/
+
#include "e-shell-sidebar.h"
#include <e-util/e-binding.h>
+#include <e-util/e-extensible.h>
#include <e-util/e-unicode.h>
#include <shell/e-shell-view.h>
@@ -48,7 +55,9 @@ enum {
PROP_SHELL_VIEW
};
-static gpointer parent_class;
+G_DEFINE_TYPE_WITH_CODE (
+ EShellSidebar, e_shell_sidebar, GTK_TYPE_BIN,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
static void
shell_sidebar_set_shell_view (EShellSidebar *shell_sidebar,
@@ -147,7 +156,7 @@ shell_sidebar_dispose (GObject *object)
}
/* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (e_shell_sidebar_parent_class)->dispose (object);
}
static void
@@ -162,7 +171,7 @@ shell_sidebar_finalize (GObject *object)
g_free (priv->secondary_text);
/* Chain up to parent's finalize() method. */
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (e_shell_sidebar_parent_class)->finalize (object);
}
static void
@@ -191,6 +200,8 @@ shell_sidebar_constructed (GObject *object)
g_object_get (action, "label", &label, NULL);
e_shell_sidebar_set_primary_text (shell_sidebar, label);
g_free (label);
+
+ e_extensible_load_extensions (E_EXTENSIBLE (object));
}
static void
@@ -211,7 +222,7 @@ shell_sidebar_destroy (GtkObject *gtk_object)
}
/* Chain up to parent's destroy() method. */
- GTK_OBJECT_CLASS (parent_class)->destroy (gtk_object);
+ GTK_OBJECT_CLASS (e_shell_sidebar_parent_class)->destroy (gtk_object);
}
static void
@@ -282,19 +293,18 @@ shell_sidebar_forall (GtkContainer *container,
callback (priv->event_box, callback_data);
/* Chain up to parent's forall() method. */
- GTK_CONTAINER_CLASS (parent_class)->forall (
+ GTK_CONTAINER_CLASS (e_shell_sidebar_parent_class)->forall (
container, include_internals, callback, callback_data);
}
static void
-shell_sidebar_class_init (EShellSidebarClass *class)
+e_shell_sidebar_class_init (EShellSidebarClass *class)
{
GObjectClass *object_class;
GtkObjectClass *gtk_object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EShellSidebarPrivate));
object_class = G_OBJECT_CLASS (class);
@@ -378,7 +388,7 @@ shell_sidebar_class_init (EShellSidebarClass *class)
}
static void
-shell_sidebar_init (EShellSidebar *shell_sidebar)
+e_shell_sidebar_init (EShellSidebar *shell_sidebar)
{
GtkStyle *style;
GtkWidget *widget;
@@ -446,32 +456,6 @@ shell_sidebar_init (EShellSidebar *shell_sidebar)
e_binding_new (shell_sidebar, "secondary-text", widget, "label");
}
-GType
-e_shell_sidebar_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EShellSidebarClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) shell_sidebar_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EShellSidebar),
- 0, /* n_preallocs */
- (GInstanceInitFunc) shell_sidebar_init,
- NULL /* value_table */
- };
-
- type = g_type_register_static (
- GTK_TYPE_BIN, "EShellSidebar", &type_info, 0);
- }
-
- return type;
-}
-
/**
* e_shell_sidebar_new:
* @shell_view: an #EShellView
diff --git a/shell/e-shell-sidebar.h b/shell/e-shell-sidebar.h
index 5999aa9de2..95f2e97dad 100644
--- a/shell/e-shell-sidebar.h
+++ b/shell/e-shell-sidebar.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-sidebar
- * @short_description: the left side of the main window
- * @include: shell/e-shell-sidebar.h
- **/
-
#ifndef E_SHELL_SIDEBAR_H
#define E_SHELL_SIDEBAR_H
diff --git a/shell/e-shell-switcher.c b/shell/e-shell-switcher.c
index 7e82e556bc..c12423de99 100644
--- a/shell/e-shell-switcher.c
+++ b/shell/e-shell-switcher.c
@@ -19,9 +19,16 @@
*
*/
+/**
+ * SECTION: e-shell-switcher
+ * @short_description: buttons for switching views
+ * @include: shell/e-shell-switcher.h
+ **/
+
#include "e-shell-switcher.h"
#include <glib/gi18n.h>
+#include <e-util/e-extensible.h>
#define E_SHELL_SWITCHER_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
@@ -50,9 +57,17 @@ enum {
LAST_SIGNAL
};
-static gpointer parent_class;
static guint signals[LAST_SIGNAL];
+/* Forward Declarations */
+static void shell_switcher_tool_shell_iface_init (GtkToolShellIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (
+ EShellSwitcher, e_shell_switcher, GTK_TYPE_BIN,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TOOL_SHELL,
+ shell_switcher_tool_shell_iface_init))
+
static gint
shell_switcher_layout_actions (EShellSwitcher *switcher)
{
@@ -223,7 +238,7 @@ shell_switcher_dispose (GObject *object)
}
/* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (e_shell_switcher_parent_class)->dispose (object);
}
static void
@@ -346,7 +361,8 @@ shell_switcher_remove (GtkContainer *container,
}
/* Chain up to parent's remove() method. */
- GTK_CONTAINER_CLASS (parent_class)->remove (container, widget);
+ GTK_CONTAINER_CLASS (e_shell_switcher_parent_class)->remove (
+ container, widget);
}
static void
@@ -364,7 +380,7 @@ shell_switcher_forall (GtkContainer *container,
priv->proxies, (GFunc) callback, callback_data);
/* Chain up to parent's forall() method. */
- GTK_CONTAINER_CLASS (parent_class)->forall (
+ GTK_CONTAINER_CLASS (e_shell_switcher_parent_class)->forall (
container, include_internals, callback, callback_data);
}
@@ -410,13 +426,12 @@ shell_switcher_get_relief_style (GtkToolShell *shell)
}
static void
-shell_switcher_class_init (EShellSwitcherClass *class)
+e_shell_switcher_class_init (EShellSwitcherClass *class)
{
GObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EShellSwitcherPrivate));
object_class = G_OBJECT_CLASS (class);
@@ -487,11 +502,13 @@ shell_switcher_class_init (EShellSwitcherClass *class)
}
static void
-shell_switcher_init (EShellSwitcher *switcher)
+e_shell_switcher_init (EShellSwitcher *switcher)
{
switcher->priv = E_SHELL_SWITCHER_GET_PRIVATE (switcher);
GTK_WIDGET_SET_FLAGS (switcher, GTK_NO_WINDOW);
+
+ e_extensible_load_extensions (E_EXTENSIBLE (switcher));
}
static void
@@ -503,41 +520,6 @@ shell_switcher_tool_shell_iface_init (GtkToolShellIface *iface)
iface->get_relief_style = shell_switcher_get_relief_style;
}
-GType
-e_shell_switcher_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EShellSwitcherClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) shell_switcher_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EShellSwitcher),
- 0, /* n_preallocs */
- (GInstanceInitFunc) shell_switcher_init,
- NULL /* value_table */
- };
-
- static const GInterfaceInfo tool_shell_info = {
- (GInterfaceInitFunc) shell_switcher_tool_shell_iface_init,
- (GInterfaceFinalizeFunc) NULL,
- NULL /* interface_data */
- };
-
- type = g_type_register_static (
- GTK_TYPE_BIN, "EShellSwitcher", &type_info, 0);
-
- g_type_add_interface_static (
- type, GTK_TYPE_TOOL_SHELL, &tool_shell_info);
- }
-
- return type;
-}
-
/**
* e_shell_switcher_new:
*
diff --git a/shell/e-shell-switcher.h b/shell/e-shell-switcher.h
index dd3eddf970..b18546d58f 100644
--- a/shell/e-shell-switcher.h
+++ b/shell/e-shell-switcher.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-switcher
- * @short_description: buttons for switching views
- * @include: shell/e-shell-switcher.h
- **/
-
#ifndef E_SHELL_SWITCHER_H
#define E_SHELL_SWITCHER_H
diff --git a/shell/e-shell-taskbar.c b/shell/e-shell-taskbar.c
index 7e8a34ac7c..bf8dfa7e2a 100644
--- a/shell/e-shell-taskbar.c
+++ b/shell/e-shell-taskbar.c
@@ -19,11 +19,18 @@
*
*/
+/**
+ * SECTION: e-shell-taskbar
+ * @short_description: the bottom of the main window
+ * @include: shell/e-shell-taskbar.h
+ **/
+
#include "e-shell-taskbar.h"
#include <e-shell-view.h>
-#include <widgets/misc/e-activity-proxy.h>
+#include <e-util/e-extensible.h>
+#include <misc/e-activity-proxy.h>
#define E_SHELL_TASKBAR_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
@@ -49,7 +56,9 @@ enum {
PROP_SHELL_VIEW
};
-static gpointer parent_class;
+G_DEFINE_TYPE_WITH_CODE (
+ EShellTaskbar, e_shell_taskbar, GTK_TYPE_HBOX,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
static void
shell_taskbar_activity_remove (EShellTaskbar *shell_taskbar,
@@ -204,7 +213,7 @@ shell_taskbar_dispose (GObject *object)
object);
/* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (e_shell_taskbar_parent_class)->dispose (object);
}
static void
@@ -217,7 +226,7 @@ shell_taskbar_finalize (GObject *object)
g_hash_table_destroy (priv->proxy_table);
/* Chain up to parent's finalize() method. */
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (e_shell_taskbar_parent_class)->finalize (object);
}
static void
@@ -239,16 +248,17 @@ shell_taskbar_constructed (GObject *object)
shell_backend, "activity-added",
G_CALLBACK (shell_taskbar_activity_add), shell_taskbar);
- /* to not enlarge window width on new activities */
+ /* Do not enlarge window width on new activities. */
gtk_widget_set_size_request (GTK_WIDGET (shell_taskbar), 0, -1);
+
+ e_extensible_load_extensions (E_EXTENSIBLE (object));
}
static void
-shell_taskbar_class_init (EShellTaskbarClass *class)
+e_shell_taskbar_class_init (EShellTaskbarClass *class)
{
GObjectClass *object_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EShellTaskbarPrivate));
object_class = G_OBJECT_CLASS (class);
@@ -292,7 +302,7 @@ shell_taskbar_class_init (EShellTaskbarClass *class)
}
static void
-shell_taskbar_init (EShellTaskbar *shell_taskbar)
+e_shell_taskbar_init (EShellTaskbar *shell_taskbar)
{
GtkWidget *widget;
GHashTable *proxy_table;
@@ -328,32 +338,6 @@ shell_taskbar_init (EShellTaskbar *shell_taskbar)
GTK_WIDGET (shell_taskbar), -1, (height * 2));
}
-GType
-e_shell_taskbar_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EShellTaskbarClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) shell_taskbar_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EShellTaskbar),
- 0, /* n_preallocs */
- (GInstanceInitFunc) shell_taskbar_init,
- NULL /* value_table */
- };
-
- type = g_type_register_static (
- GTK_TYPE_HBOX, "EShellTaskbar", &type_info, 0);
- }
-
- return type;
-}
-
/**
* e_shell_taskbar_new:
* @shell_view: an #EShellView
diff --git a/shell/e-shell-taskbar.h b/shell/e-shell-taskbar.h
index d2ebfbb0c4..e01ec40989 100644
--- a/shell/e-shell-taskbar.h
+++ b/shell/e-shell-taskbar.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-taskbar
- * @short_description: the bottom of the main window
- * @include: shell/e-shell-taskbar.h
- **/
-
#ifndef E_SHELL_TASKBAR_H
#define E_SHELL_TASKBAR_H
diff --git a/shell/e-shell-utils.c b/shell/e-shell-utils.c
index c7b296931c..2a9f6f4f72 100644
--- a/shell/e-shell-utils.c
+++ b/shell/e-shell-utils.c
@@ -19,6 +19,12 @@
*
*/
+/**
+ * SECTION: e-shell-utils
+ * @short_description: high-level utilities with shell integration
+ * @include: shell/e-shell-utils.h
+ **/
+
#include "e-shell-utils.h"
#include <glib/gi18n-lib.h>
@@ -342,3 +348,57 @@ e_shell_utils_import_uris (EShell *shell, gchar **uris, gboolean preview)
return g_strv_length (uris);
}
+
+/**
+ * e_shell_hide_widgets_for_express_mode:
+ * @shell: an #EShell
+ * @builder: a #GtkBuilder
+ * @widget_name: NULL-terminated list of strings
+ *
+ * If Evolution is running in Express mode (i.e. if the specified @shell is in
+ * Express mode), then this function will hide a list of widgets, based on their
+ * specified names. The list of names must be NULL-terminated, and each element
+ * of that list must be the name of a widget present in @builder. Those widgets
+ * will then get hidden.
+ *
+ * This can be used to simplify preference dialogs and such in an easy fashion, for use
+ * in Express mode.
+ *
+ * If Evolution is not running in Express mode, this function does nothing.
+ */
+void
+e_shell_hide_widgets_for_express_mode (EShell *shell,
+ GtkBuilder *builder,
+ const char *widget_name,
+ ...)
+{
+ va_list args;
+ const char *name;
+
+ g_return_if_fail (E_IS_SHELL (shell));
+ g_return_if_fail (GTK_IS_BUILDER (builder));
+ g_return_if_fail (widget_name != NULL);
+
+ if (!e_shell_get_express_mode (shell))
+ return;
+
+ va_start (args, widget_name);
+
+ name = va_arg (args, const char *);
+ while (name) {
+ GObject *object;
+
+ object = gtk_builder_get_object (builder, name);
+ if (!object || !GTK_IS_WIDGET (object)) {
+ g_error ("Object '%s' was not found in the builder file, or it is not a GtkWidget", name);
+ g_assert_not_reached ();
+ }
+
+ gtk_widget_hide (GTK_WIDGET (object));
+
+ name = va_arg (args, const char *);
+ }
+
+ va_end (args);
+}
+
diff --git a/shell/e-shell-utils.h b/shell/e-shell-utils.h
index e705ded2e5..e552cc2e19 100644
--- a/shell/e-shell-utils.h
+++ b/shell/e-shell-utils.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-utils
- * @short_description: high-level utilities with shell integration
- * @include: shell/e-shell-utils.h
- **/
-
#ifndef E_SHELL_UTILS_H
#define E_SHELL_UTILS_H
@@ -56,6 +50,11 @@ guint e_shell_utils_import_uris (EShell *shell,
gchar **uris,
gboolean preview);
+void e_shell_hide_widgets_for_express_mode (EShell *shell,
+ GtkBuilder *builder,
+ const char *widget_name,
+ ...) G_GNUC_NULL_TERMINATED;
+
G_END_DECLS
#endif /* E_SHELL_UTILS_H */
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
index 3a5c6e219d..be099b9869 100644
--- a/shell/e-shell-view.c
+++ b/shell/e-shell-view.c
@@ -19,24 +19,34 @@
*
*/
+/**
+ * SECTION: e-shell-view
+ * @short_description: views within the main window
+ * @include: shell/e-shell-view.h
+ **/
+
#include "e-shell-view.h"
#include <string.h>
#include <glib/gi18n.h>
-#include "e-util/e-util-private.h"
-#include "e-util/e-util.h"
+#include "e-util/e-binding.h"
+#include "e-util/e-extensible.h"
#include "e-util/e-file-utils.h"
#include "e-util/e-plugin-ui.h"
#include "e-util/e-ui-manager.h"
+#include "e-util/e-util-private.h"
+#include "e-util/e-util.h"
#include "filter/e-rule-context.h"
+#include "e-shell-searchbar.h"
#include "e-shell-window-actions.h"
#define E_SHELL_VIEW_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), E_TYPE_SHELL_VIEW, EShellViewPrivate))
+#define SIMPLE_SEARCHBAR_WIDTH 300
#define STATE_SAVE_TIMEOUT_SECONDS 3
struct _EShellViewPrivate {
@@ -57,6 +67,7 @@ struct _EShellViewPrivate {
GtkWidget *shell_content;
GtkWidget *shell_sidebar;
GtkWidget *shell_taskbar;
+ GtkWidget *searchbar;
EFilterRule *search_rule;
guint execute_search_blocked;
@@ -69,6 +80,7 @@ enum {
PROP_0,
PROP_ACTION,
PROP_PAGE_NUM,
+ PROP_SEARCHBAR,
PROP_SEARCH_RULE,
PROP_SHELL_BACKEND,
PROP_SHELL_CONTENT,
@@ -345,8 +357,9 @@ shell_view_set_action (EShellView *shell_view,
static void
shell_view_set_shell_window (EShellView *shell_view,
- GtkWidget *shell_window)
+ EShellWindow *shell_window)
{
+ g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
g_return_if_fail (shell_view->priv->shell_window == NULL);
shell_view->priv->shell_window = shell_window;
@@ -422,6 +435,12 @@ shell_view_get_property (GObject *object,
E_SHELL_VIEW (object)));
return;
+ case PROP_SEARCHBAR:
+ g_value_set_object (
+ value, e_shell_view_get_searchbar (
+ E_SHELL_VIEW (object)));
+ return;
+
case PROP_SEARCH_RULE:
g_value_set_object (
value, e_shell_view_get_search_rule (
@@ -522,6 +541,11 @@ shell_view_dispose (GObject *object)
priv->shell_taskbar = NULL;
}
+ if (priv->searchbar != NULL) {
+ g_object_unref (priv->searchbar);
+ priv->searchbar = NULL;
+ }
+
if (priv->search_rule != NULL) {
g_object_unref (priv->search_rule);
priv->search_rule = NULL;
@@ -575,9 +599,101 @@ shell_view_constructed (GObject *object)
shell_view->priv->shell_sidebar = g_object_ref_sink (widget);
gtk_widget_show (widget);
+ if (shell_view_class->construct_searchbar != NULL) {
+ widget = shell_view_class->construct_searchbar (shell_view);
+ shell_view->priv->searchbar = g_object_ref_sink (widget);
+ }
+
/* Size group should be safe to unreference now. */
g_object_unref (shell_view->priv->size_group);
shell_view->priv->size_group = NULL;
+
+ e_extensible_load_extensions (E_EXTENSIBLE (object));
+}
+
+static GtkWidget *
+shell_view_construct_searchbar (EShellView *shell_view)
+{
+ EShell *shell;
+ EShellWindow *shell_window;
+ EShellContent *shell_content;
+ EShellSearchbar *shell_searchbar;
+ GtkToolItem *item;
+ GtkAction *action;
+ GtkWidget *main_toolbar;
+ GtkWidget *widget;
+
+ shell_content = e_shell_view_get_shell_content (shell_view);
+ shell_window = e_shell_view_get_shell_window (shell_view);
+ shell = e_shell_window_get_shell (shell_window);
+
+ widget = e_shell_searchbar_new (shell_view);
+
+ /* In normal mode, we hand the searchbar off to EShellContent. */
+ if (!e_shell_get_express_mode (shell)) {
+ e_shell_content_set_searchbar (shell_content, widget);
+ gtk_widget_show (widget);
+ return widget;
+ }
+
+ /* Express mode is more complicated. We append a heavily simplified
+ * version of it to the main toolbar, but only show it when this shell
+ * view is active. So each view still gets its own searchbar. */
+
+ shell_searchbar = E_SHELL_SEARCHBAR (widget);
+ e_shell_searchbar_set_express_mode (shell_searchbar, TRUE);
+
+ /* XXX Hardcoded sizes are evil, but what should the width be
+ * relative to. Window width? The other toolbar width? */
+ gtk_widget_set_size_request (widget, SIMPLE_SEARCHBAR_WIDTH, -1);
+
+ main_toolbar = e_shell_window_get_managed_widget (
+ shell_window, "/search-toolbar");
+
+ item = gtk_tool_item_new ();
+ gtk_container_add (GTK_CONTAINER (item), widget);
+ gtk_widget_show (GTK_WIDGET (item));
+
+ action = e_shell_view_get_action (shell_view);
+ e_binding_new (action, "active", widget, "visible");
+
+ gtk_toolbar_insert (GTK_TOOLBAR (main_toolbar), item, -1);
+
+ if (e_shell_get_small_screen_mode (shell)) {
+ GtkWidget *image;
+ GtkAction *action;
+ GtkToolItem *item;
+
+ action = e_shell_window_get_action (shell_window, "close-window");
+ image = gtk_image_new_from_icon_name ("window-close-hover",
+ GTK_ICON_SIZE_DIALOG);
+ item = gtk_tool_button_new (image, gtk_action_get_label (action));
+ gtk_widget_set_name (GTK_WIDGET (item), "MeeGoCloseButton");
+ gtk_activatable_set_related_action (GTK_ACTIVATABLE (item), action);
+ gtk_box_pack_start ((GtkBox *)e_shell_window_get_menu_bar_box(shell_window), (GtkWidget *)item, FALSE, FALSE, 0);
+ gtk_widget_show_all((GtkWidget *)item);
+ }
+
+ return widget;
+}
+
+static gchar *
+shell_view_get_search_name (EShellView *shell_view)
+{
+ EShellSearchbar *searchbar;
+ EFilterRule *rule;
+ const gchar *search_text;
+
+ rule = e_shell_view_get_search_rule (shell_view);
+ g_return_val_if_fail (E_IS_FILTER_RULE (rule), NULL);
+
+ searchbar = E_SHELL_SEARCHBAR (shell_view->priv->searchbar);
+ search_text = e_shell_searchbar_get_search_text (searchbar);
+
+ if (search_text == NULL || *search_text == '\0')
+ search_text = "''";
+
+ return g_strdup_printf ("%s %s", rule->name, search_text);
}
static void
@@ -663,6 +779,9 @@ shell_view_class_init (EShellViewClass *class)
class->new_shell_sidebar = e_shell_sidebar_new;
class->new_shell_taskbar = e_shell_taskbar_new;
+ class->construct_searchbar = shell_view_construct_searchbar;
+ class->get_search_name = shell_view_get_search_name;
+
class->toggled = shell_view_toggled;
class->clear_search = shell_view_clear_search;
class->custom_search = shell_view_custom_search;
@@ -976,9 +1095,18 @@ e_shell_view_get_type (void)
NULL /* value_table */
};
+ const GInterfaceInfo extensible_info = {
+ (GInterfaceInitFunc) NULL,
+ (GInterfaceFinalizeFunc) NULL,
+ NULL /* interface_data */
+ };
+
type = g_type_register_static (
G_TYPE_OBJECT, "EShellView",
&type_info, G_TYPE_FLAG_ABSTRACT);
+
+ g_type_add_interface_static (
+ type, E_TYPE_EXTENSIBLE, &extensible_info);
}
return type;
@@ -1201,6 +1329,29 @@ e_shell_view_set_page_num (EShellView *shell_view,
}
/**
+ * e_shell_view_get_search_name:
+ * @shell_view: an #EShellView
+ *
+ * Returns a newly-allocated string containing a suitable name for the
+ * current search criteria. This is used as the suggested name in the
+ * Save Search dialog. Free the returned string with g_free().
+ *
+ * Returns: a name for the current search criteria
+ **/
+gchar *
+e_shell_view_get_search_name (EShellView *shell_view)
+{
+ EShellViewClass *class;
+
+ g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
+
+ class = E_SHELL_VIEW_GET_CLASS (shell_view);
+ g_return_val_if_fail (class->get_search_name != NULL, NULL);
+
+ return class->get_search_name (shell_view);
+}
+
+/**
* e_shell_view_get_search_rule:
* @shell_view: an #EShellView
*
@@ -1217,6 +1368,20 @@ e_shell_view_get_search_rule (EShellView *shell_view)
}
/**
+ * e_shell_view_get_searchbar:
+ * @shell_view: an #EShellView
+ *
+ * Returns the searchbar widget for @shell_view.
+ **/
+GtkWidget *
+e_shell_view_get_searchbar (EShellView *shell_view)
+{
+ g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
+
+ return shell_view->priv->searchbar;
+}
+
+/**
* e_shell_view_set_search_rule:
* @shell_view: an #EShellView
* @search_rule: an #EFilterRule
diff --git a/shell/e-shell-view.h b/shell/e-shell-view.h
index 1e189217e1..4387082f21 100644
--- a/shell/e-shell-view.h
+++ b/shell/e-shell-view.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-view
- * @short_description: views within the main window
- * @include: shell/e-shell-view.h
- **/
-
#ifndef E_SHELL_VIEW_H
#define E_SHELL_VIEW_H
@@ -172,6 +166,10 @@ struct _EShellViewClass {
GtkWidget * (*new_shell_sidebar) (EShellView *shell_view);
GtkWidget * (*new_shell_taskbar) (EShellView *shell_view);
+ /* Create, configure and pack a search bar widget. */
+ GtkWidget * (*construct_searchbar) (EShellView *shell_view);
+ gchar * (*get_search_name) (EShellView *shell_view);
+
/* Signals */
void (*toggled) (EShellView *shell_view);
void (*clear_search) (EShellView *shell_view);
@@ -194,6 +192,8 @@ gboolean e_shell_view_is_active (EShellView *shell_view);
gint e_shell_view_get_page_num (EShellView *shell_view);
void e_shell_view_set_page_num (EShellView *shell_view,
gint page_num);
+GtkWidget * e_shell_view_get_searchbar (EShellView *shell_view);
+gchar * e_shell_view_get_search_name (EShellView *shell_view);
EFilterRule * e_shell_view_get_search_rule (EShellView *shell_view);
void e_shell_view_set_search_rule (EShellView *shell_view,
EFilterRule *search_rule);
diff --git a/shell/e-shell-window-actions.c b/shell/e-shell-window-actions.c
index 9b14730c7b..65c6acff7a 100644
--- a/shell/e-shell-window-actions.c
+++ b/shell/e-shell-window-actions.c
@@ -926,10 +926,17 @@ action_preferences_cb (GtkAction *action,
shell_backend = e_shell_view_get_shell_backend (shell_view);
shell_backend_class = E_SHELL_BACKEND_GET_CLASS (shell_backend);
- if (shell_backend_class->preferences_page != NULL)
- e_preferences_window_show_page (
- E_PREFERENCES_WINDOW (preferences_window),
- shell_backend_class->preferences_page);
+ if (shell_backend_class->preferences_page != NULL) {
+ if (e_shell_get_express_mode (shell)) {
+ e_preferences_window_filter_page (
+ E_PREFERENCES_WINDOW (preferences_window),
+ shell_backend_class->preferences_page);
+ } else {
+ e_preferences_window_show_page (
+ E_PREFERENCES_WINDOW (preferences_window),
+ shell_backend_class->preferences_page);
+ }
+ }
}
/**
@@ -1446,6 +1453,21 @@ static GtkActionEntry shell_entries[] = {
N_("Close this window"),
G_CALLBACK (action_close_cb) },
+ { "close-window-menu",
+ GTK_STOCK_CLOSE,
+ NULL,
+ "<Control>w",
+ N_("Close this window"),
+ G_CALLBACK (action_close_cb) },
+
+
+ { "close-window",
+ GTK_STOCK_CLOSE,
+ N_("_Close Window"),
+ "<Control>w",
+ N_("Close this window"),
+ G_CALLBACK (action_close_cb) },
+
{ "contents",
GTK_STOCK_HELP,
N_("_Contents"),
@@ -2077,9 +2099,11 @@ e_shell_window_create_new_menu (EShellWindow *shell_window)
/* Add menu separators. */
- separator = gtk_separator_menu_item_new ();
- new_item_actions = g_list_prepend (new_item_actions, separator);
- gtk_widget_show (GTK_WIDGET (separator));
+ if (new_item_actions != NULL) {
+ separator = gtk_separator_menu_item_new ();
+ new_item_actions = g_list_prepend (new_item_actions, separator);
+ gtk_widget_show (GTK_WIDGET (separator));
+ }
if (new_source_actions != NULL) {
separator = gtk_separator_menu_item_new ();
diff --git a/shell/e-shell-window-private.c b/shell/e-shell-window-private.c
index 2272faca9e..6878ff7456 100644
--- a/shell/e-shell-window-private.c
+++ b/shell/e-shell-window-private.c
@@ -300,7 +300,6 @@ e_shell_window_private_constructed (EShellWindow *shell_window)
merge_id = gtk_ui_manager_new_merge_id (ui_manager);
priv->gal_view_merge_id = merge_id;
-
/* Construct window widgets. */
widget = gtk_vbox_new (FALSE, 0);
@@ -433,7 +432,9 @@ e_shell_window_private_constructed (EShellWindow *shell_window)
object = G_OBJECT (shell_window);
key = "/apps/evolution/shell/view_defaults/component_id";
- gconf_bridge_bind_property (bridge, key, object, "active-view");
+ g_object_set (object, "active-view",
+ gconf_client_get_string (e_shell_get_gconf_client (shell), key, NULL),
+ NULL);
object = G_OBJECT (priv->content_pane);
key = "/apps/evolution/shell/view_defaults/folder_bar/width";
@@ -443,14 +444,17 @@ e_shell_window_private_constructed (EShellWindow *shell_window)
key = "/apps/evolution/shell/view_defaults/sidebar_visible";
gconf_bridge_bind_property (bridge, key, object, "sidebar-visible");
- object = G_OBJECT (shell_window);
- key = "/apps/evolution/shell/view_defaults/statusbar_visible";
- gconf_bridge_bind_property (bridge, key, object, "taskbar-visible");
-
if (e_shell_get_express_mode (shell)) {
+ const char *active_view = e_shell_window_get_active_view (shell_window);
e_shell_window_set_switcher_visible (shell_window, FALSE);
+ e_shell_window_set_taskbar_visible (shell_window, active_view &&
+ !strcmp (active_view, "mail"));
} else {
object = G_OBJECT (shell_window);
+ key = "/apps/evolution/shell/view_defaults/statusbar_visible";
+ gconf_bridge_bind_property (bridge, key, object, "taskbar-visible");
+
+ object = G_OBJECT (shell_window);
key = "/apps/evolution/shell/view_defaults/buttons_visible";
gconf_bridge_bind_property (bridge, key, object, "switcher-visible");
}
diff --git a/shell/e-shell-window-private.h b/shell/e-shell-window-private.h
index 6050ce135d..02a688503e 100644
--- a/shell/e-shell-window-private.h
+++ b/shell/e-shell-window-private.h
@@ -93,6 +93,7 @@ struct _EShellWindowPrivate {
GtkWidget *status_notebook;
/* Miscellaneous */
+ GtkWidget *menubar_box;
/* Shell signal handlers. */
GArray *signal_handler_ids;
diff --git a/shell/e-shell-window.c b/shell/e-shell-window.c
index 5513efbe95..7970f5b015 100644
--- a/shell/e-shell-window.c
+++ b/shell/e-shell-window.c
@@ -19,10 +19,17 @@
*
*/
+/**
+ * SECTION: e-shell-window
+ * @short_description: the main window
+ * @include: shell/e-shell-window.h
+ **/
+
#include "e-shell-window-private.h"
#include <gconf/gconf-client.h>
+#include <e-util/e-extensible.h>
#include <e-util/e-plugin-ui.h>
#include <e-util/e-util-private.h>
@@ -45,9 +52,12 @@ enum {
LAST_SIGNAL
};
-static gpointer parent_class;
static gulong signals[LAST_SIGNAL];
+G_DEFINE_TYPE_WITH_CODE (
+ EShellWindow, e_shell_window, GTK_TYPE_WINDOW,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
+
static void
shell_window_menubar_update_new_menu (EShellWindow *shell_window)
{
@@ -299,7 +309,7 @@ shell_window_dispose (GObject *object)
e_shell_window_private_dispose (E_SHELL_WINDOW (object));
/* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (e_shell_window_parent_class)->dispose (object);
}
static void
@@ -308,13 +318,21 @@ shell_window_finalize (GObject *object)
e_shell_window_private_finalize (E_SHELL_WINDOW (object));
/* Chain up to parent's finalize() method. */
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (e_shell_window_parent_class)->finalize (object);
}
static void
shell_window_constructed (GObject *object)
{
- e_shell_window_private_constructed (E_SHELL_WINDOW (object));
+ EShellWindow *shell_window = E_SHELL_WINDOW (object);
+
+ e_shell_window_private_constructed (shell_window);
+
+ e_extensible_load_extensions (E_EXTENSIBLE (object));
+
+ if (e_shell_get_meego_mode (shell_window->priv->shell) &&
+ e_shell_get_small_screen_mode (shell_window->priv->shell))
+ gtk_window_set_decorated (GTK_WINDOW (object), FALSE);
}
static GtkWidget *
@@ -326,6 +344,23 @@ shell_window_construct_menubar (EShellWindow *shell_window)
shell_window, "/main-menu");
gtk_widget_show (main_menu);
+ if (e_shell_get_small_screen_mode (shell_window->priv->shell)) {
+ GtkWidget *parent, *child;
+
+ parent = gtk_widget_get_parent (main_menu);
+ g_object_ref (parent);
+ gtk_container_remove ((GtkContainer *)parent, main_menu);
+ child = gtk_hbox_new (FALSE, 0);
+ gtk_box_pack_start ((GtkBox *)child, main_menu, TRUE, TRUE, 0);
+ gtk_widget_show (child);
+ gtk_container_add ((GtkContainer *)parent, child);
+ shell_window->priv->menubar_box = child;
+
+ e_mutual_binding_new (main_menu, "visible",
+ child, "visible");
+ main_menu = child;
+ }
+
g_signal_connect (
shell_window, "notify::active-view",
G_CALLBACK (shell_window_menubar_update_new_menu), NULL);
@@ -333,21 +368,34 @@ shell_window_construct_menubar (EShellWindow *shell_window)
return main_menu;
}
+GtkWidget *
+e_shell_window_get_menu_bar_box (EShellWindow *shell_window)
+{
+ return shell_window->priv->menubar_box;
+}
+
static GtkWidget *
shell_window_construct_toolbar (EShellWindow *shell_window)
{
GtkUIManager *ui_manager;
- GtkWidget *main_toolbar;
+ GtkWidget *toolbar;
+ GtkWidget *box;
GtkToolItem *item;
ui_manager = e_shell_window_get_ui_manager (shell_window);
- main_toolbar = e_shell_window_get_managed_widget (
- shell_window, "/main-toolbar");
+ box = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (box);
e_binding_new (
shell_window, "toolbar-visible",
- main_toolbar, "visible");
+ box, "visible");
+
+ toolbar = e_shell_window_get_managed_widget (
+ shell_window, "/main-toolbar");
+
+ if (e_shell_get_meego_mode (shell_window->priv->shell))
+ gtk_widget_set_name (GTK_WIDGET (toolbar), "MeeGoToolbar");
/* XXX Having this separator in the UI definition doesn't work
* because GtkUIManager is unaware of the "New" button, so
@@ -360,7 +408,7 @@ shell_window_construct_toolbar (EShellWindow *shell_window)
* convinced having it proxy some new type of GtkAction
* is worth the extra effort. */
item = gtk_separator_tool_item_new ();
- gtk_toolbar_insert (GTK_TOOLBAR (main_toolbar), item, 0);
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, 0);
gtk_widget_show (GTK_WIDGET (item));
item = e_menu_tool_button_new (_("New"));
@@ -369,7 +417,7 @@ shell_window_construct_toolbar (EShellWindow *shell_window)
GTK_WIDGET (item), "clicked",
gtk_ui_manager_get_accel_group (ui_manager),
GDK_N, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
- gtk_toolbar_insert (GTK_TOOLBAR (main_toolbar), item, 0);
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, 0);
gtk_widget_show (GTK_WIDGET (item));
g_signal_connect (
@@ -377,7 +425,23 @@ shell_window_construct_toolbar (EShellWindow *shell_window)
G_CALLBACK (shell_window_toolbar_update_new_menu),
GTK_MENU_TOOL_BUTTON (item));
- return main_toolbar;
+ gtk_box_pack_start (GTK_BOX (box), toolbar, TRUE, TRUE, 0);
+
+ toolbar = e_shell_window_get_managed_widget (
+ shell_window, "/search-toolbar");
+ gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar), FALSE);
+ gtk_box_pack_start (GTK_BOX (box), toolbar, FALSE, FALSE, 0);
+ if (e_shell_get_meego_mode (shell_window->priv->shell))
+ gtk_widget_set_name (GTK_WIDGET (toolbar), "MeeGoToolbar");
+
+ toolbar = e_shell_window_get_managed_widget (
+ shell_window, "/close-toolbar");
+ gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar), FALSE);
+ gtk_box_pack_start (GTK_BOX (box), toolbar, FALSE, FALSE, 0);
+ if (e_shell_get_meego_mode (shell_window->priv->shell))
+ gtk_widget_set_name (GTK_WIDGET (toolbar), "MeeGoToolbar");
+
+ return box;
}
static GtkWidget *
@@ -582,11 +646,24 @@ shell_window_create_shell_view (EShellWindow *shell_window,
}
static void
-shell_window_class_init (EShellWindowClass *class)
+shell_window_realize (GtkWidget *widget)
+{
+ EShellWindow *shell_window;
+
+ shell_window = E_SHELL_WINDOW (widget);
+ e_shell_adapt_window_size (shell_window->priv->shell,
+ GTK_WINDOW (widget));
+
+ /* Chain up to parent's dispose() method. */
+ GTK_WIDGET_CLASS (e_shell_window_parent_class)->realize (widget);
+}
+
+static void
+e_shell_window_class_init (EShellWindowClass *class)
{
GObjectClass *object_class;
+ GtkWidgetClass *widget_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EShellWindowPrivate));
object_class = G_OBJECT_CLASS (class);
@@ -596,6 +673,9 @@ shell_window_class_init (EShellWindowClass *class)
object_class->finalize = shell_window_finalize;
object_class->constructed = shell_window_constructed;
+ widget_class = GTK_WIDGET_CLASS (class);
+ widget_class->realize = shell_window_realize;
+
class->construct_menubar = shell_window_construct_menubar;
class->construct_toolbar = shell_window_construct_toolbar;
class->construct_sidebar = shell_window_construct_sidebar;
@@ -603,6 +683,7 @@ shell_window_class_init (EShellWindowClass *class)
class->construct_taskbar = shell_window_construct_taskbar;
class->create_shell_view = shell_window_create_shell_view;
+
/**
* EShellWindow:active-view
*
@@ -779,39 +860,13 @@ shell_window_class_init (EShellWindowClass *class)
}
static void
-shell_window_init (EShellWindow *shell_window)
+e_shell_window_init (EShellWindow *shell_window)
{
shell_window->priv = E_SHELL_WINDOW_GET_PRIVATE (shell_window);
e_shell_window_private_init (shell_window);
}
-GType
-e_shell_window_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- const GTypeInfo type_info = {
- sizeof (EShellWindowClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) shell_window_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EShellWindow),
- 0, /* n_preallocs */
- (GInstanceInitFunc) shell_window_init,
- NULL /* value_table */
- };
-
- type = g_type_register_static (
- GTK_TYPE_WINDOW, "EShellWindow", &type_info, 0);
- }
-
- return type;
-}
-
/**
* e_shell_window_new:
* @shell: an #EShell
diff --git a/shell/e-shell-window.h b/shell/e-shell-window.h
index 0bd71075c9..9baa3cf8e9 100644
--- a/shell/e-shell-window.h
+++ b/shell/e-shell-window.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell-window
- * @short_description: the main window
- * @include: shell/e-shell-window.h
- **/
-
#ifndef E_SHELL_WINDOW_H
#define E_SHELL_WINDOW_H
@@ -152,6 +146,7 @@ void e_shell_window_register_new_source_actions
const gchar *backend_name,
GtkActionEntry *entries,
guint n_entries);
+GtkWidget * e_shell_window_get_menu_bar_box (EShellWindow *shell_window);
G_END_DECLS
diff --git a/shell/e-shell.c b/shell/e-shell.c
index 459ebdc64a..a786bf6eed 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -19,6 +19,12 @@
*
*/
+/**
+ * SECTION: e-shell
+ * @short_description: the backbone of Evolution
+ * @include: shell/e-shell.h
+ **/
+
#include "e-shell.h"
#include <glib/gi18n.h>
@@ -46,7 +52,7 @@ struct _EShellPrivate {
GtkWidget *preferences_window;
/* Shell Backends */
- GList *loaded_backends;
+ GList *loaded_backends; /* not referenced */
GHashTable *backends_by_name;
GHashTable *backends_by_scheme;
@@ -55,6 +61,8 @@ struct _EShellPrivate {
gchar *geometry;
gchar *module_directory;
+
+ gchar *startup_view;
guint auto_reconnect : 1;
guint network_available : 1;
@@ -62,11 +70,15 @@ struct _EShellPrivate {
guint quit_cancelled : 1;
guint safe_mode : 1;
guint express_mode : 1;
+ guint meego_mode : 1;
+ guint small_screen_mode : 1;
};
enum {
PROP_0,
PROP_EXPRESS_MODE,
+ PROP_MEEGO_MODE,
+ PROP_SMALL_SCREEN_MODE,
PROP_GEOMETRY,
PROP_MODULE_DIRECTORY,
PROP_NETWORK_AVAILABLE,
@@ -401,23 +413,14 @@ shell_split_and_insert_items (GHashTable *hash_table,
}
static void
-shell_add_backend (GType type,
- EShell *shell)
+shell_process_backend (EShellBackend *shell_backend,
+ EShell *shell)
{
EShellBackendClass *class;
- EShellBackend *shell_backend;
GHashTable *backends_by_name;
GHashTable *backends_by_scheme;
const gchar *string;
- shell_backend = g_object_new (type, "shell", shell, NULL);
-
- shell->priv->loaded_backends = g_list_insert_sorted (
- shell->priv->loaded_backends, shell_backend,
- (GCompareFunc) e_shell_backend_compare);
-
- /* Bookkeeping */
-
class = E_SHELL_BACKEND_GET_CLASS (shell_backend);
backends_by_name = shell->priv->backends_by_name;
backends_by_scheme = shell->priv->backends_by_scheme;
@@ -474,6 +477,18 @@ shell_set_express_mode (EShell *shell,
}
static void
+shell_set_meego_mode (EShell *shell, gboolean is_meego)
+{
+ shell->priv->meego_mode = is_meego;
+}
+
+static void
+shell_set_small_screen_mode (EShell *shell, gboolean small_screen)
+{
+ shell->priv->small_screen_mode = small_screen;
+}
+
+static void
shell_set_geometry (EShell *shell,
const gchar *geometry)
{
@@ -504,6 +519,18 @@ shell_set_property (GObject *object,
g_value_get_boolean (value));
return;
+ case PROP_MEEGO_MODE:
+ shell_set_meego_mode (
+ E_SHELL (object),
+ g_value_get_boolean (value));
+ return;
+
+ case PROP_SMALL_SCREEN_MODE:
+ shell_set_small_screen_mode (
+ E_SHELL (object),
+ g_value_get_boolean (value));
+ return;
+
case PROP_GEOMETRY:
shell_set_geometry (
E_SHELL (object),
@@ -545,6 +572,18 @@ shell_get_property (GObject *object,
E_SHELL (object)));
return;
+ case PROP_MEEGO_MODE:
+ g_value_set_boolean (
+ value, e_shell_get_meego_mode (
+ E_SHELL (object)));
+ return;
+
+ case PROP_SMALL_SCREEN_MODE:
+ g_value_set_boolean (
+ value, e_shell_get_small_screen_mode (
+ E_SHELL (object)));
+ return;
+
case PROP_MODULE_DIRECTORY:
g_value_set_string (
value, e_shell_get_module_directory (
@@ -580,6 +619,11 @@ shell_dispose (GObject *object)
priv = E_SHELL_GET_PRIVATE (object);
+ if (priv->startup_view != NULL) {
+ g_free (priv->startup_view);
+ priv->startup_view = NULL;
+ }
+
if (priv->settings != NULL) {
g_object_unref (priv->settings);
priv->settings = NULL;
@@ -595,10 +639,6 @@ shell_dispose (GObject *object)
priv->preferences_window = NULL;
}
- g_list_foreach (priv->loaded_backends, (GFunc) g_object_unref, NULL);
- g_list_free (priv->loaded_backends);
- priv->loaded_backends = NULL;
-
if (priv->preparing_for_line_change != NULL) {
g_object_remove_weak_pointer (
G_OBJECT (priv->preparing_for_line_change),
@@ -623,6 +663,8 @@ shell_finalize (GObject *object)
if (!unique_app_is_running (UNIQUE_APP (object)))
e_file_lock_destroy ();
+ g_list_free (priv->loaded_backends);
+
g_free (priv->geometry);
g_free (priv->module_directory);
@@ -634,6 +676,7 @@ static void
shell_constructed (GObject *object)
{
EShellPrivate *priv;
+ GList *list;
priv = E_SHELL_GET_PRIVATE (object);
@@ -653,11 +696,13 @@ shell_constructed (GObject *object)
shell_load_modules (E_SHELL (object));
- e_type_traverse (
- E_TYPE_SHELL_BACKEND, (ETypeFunc)
- shell_add_backend, object);
-
- e_extensible_load_extensions (E_EXTENSIBLE (object));
+ /* Process shell backends. */
+ list = g_list_sort (
+ e_extensible_list_extensions (
+ E_EXTENSIBLE (object), E_TYPE_SHELL_BACKEND),
+ (GCompareFunc) e_shell_backend_compare);
+ g_list_foreach (list, (GFunc) shell_process_backend, object);
+ priv->loaded_backends = list;
}
static UniqueResponse
@@ -791,6 +836,40 @@ e_shell_class_init (EShellClass *class)
G_PARAM_CONSTRUCT_ONLY));
/**
+ * EShell:meego
+ *
+ * Are we running under meego - if so, adapt ourselves
+ * to fit in well with their theming.
+ **/
+ g_object_class_install_property (
+ object_class,
+ PROP_MEEGO_MODE,
+ g_param_spec_boolean (
+ "meego-mode",
+ "Meego Mode",
+ "Whether meego mode is enabled",
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ /**
+ * EShell:small-screen
+ *
+ * Are we running with a small (1024x600) screen - if so, start
+ * throwing the babies overboard to fit onto that screen size.
+ **/
+ g_object_class_install_property (
+ object_class,
+ PROP_SMALL_SCREEN_MODE,
+ g_param_spec_boolean (
+ "small-screen-mode",
+ "Small Screen Mode",
+ "Whether we run on a rather small screen",
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ /**
* EShell:geometry
*
* User-specified initial window geometry string to apply
@@ -1081,6 +1160,8 @@ e_shell_init (EShell *shell)
shell->priv->backends_by_scheme = backends_by_scheme;
shell->priv->safe_mode = e_file_lock_exists ();
+ shell->priv->startup_view = NULL;
+
g_object_ref_sink (shell->priv->preferences_window);
/* Add our icon directory to the theme's search path
@@ -1582,6 +1663,38 @@ e_shell_get_express_mode (EShell *shell)
}
/**
+ * e_shell_get_meego_mode:
+ * @shell: an #EShell
+ *
+ * Returns %TRUE if Evolution is in MeeGo mode.
+ *
+ * Returns: %TRUE if Evolution is in MeeGo mode
+ **/
+gboolean
+e_shell_get_meego_mode (EShell *shell)
+{
+ g_return_val_if_fail (E_IS_SHELL (shell), FALSE);
+
+ return shell->priv->meego_mode;
+}
+
+/**
+ * e_shell_get_small_screen_mode:
+ * @shell: an #EShell
+ *
+ * Returns %TRUE if Evolution is in small (netbook) screen mode.
+ *
+ * Returns: %TRUE if Evolution is in small screen mode
+ **/
+gboolean
+e_shell_get_small_screen_mode (EShell *shell)
+{
+ g_return_val_if_fail (E_IS_SHELL (shell), FALSE);
+
+ return shell->priv->small_screen_mode;
+}
+
+/**
* e_shell_get_module_directory:
* @shell: an #EShell
*
@@ -1799,3 +1912,50 @@ e_shell_cancel_quit (EShell *shell)
g_signal_stop_emission (shell, signals[QUIT_REQUESTED], 0);
}
+
+/**
+ * e_shell_adapt_window_size:
+ * @shell: an #EShell
+ * @window: a #GtkWindow to adapt to full-screen
+ *
+ * This is used to adapt to window's size to be optimal for
+ * the platform. The shell settings are used to determine if
+ * a window should be set to full screen etc.
+ *
+ * This method is best called when the widget is realized on
+ * a given screen.
+ **/
+void
+e_shell_adapt_window_size (EShell *shell,
+ GtkWindow *window)
+{
+ gint monitor;
+ GdkScreen *scr;
+ GdkRectangle rect;
+
+ if (!e_shell_get_meego_mode (shell) ||
+ !e_shell_get_small_screen_mode (shell))
+ return;
+
+ scr = gdk_screen_get_default ();
+ monitor = gdk_screen_get_monitor_at_window (scr, GTK_WIDGET (window)->window);
+ gdk_screen_get_monitor_geometry (scr, monitor, &rect);
+
+ gtk_window_set_default_size (window, rect.width, rect.height);
+ gtk_window_set_decorated (window, FALSE);
+ gtk_window_maximize (window);
+}
+
+void
+e_shell_set_startup_view (EShell *shell,
+ const char *view)
+{
+ shell->priv->startup_view = g_strdup(view);
+}
+
+
+const char *
+e_shell_get_startup_view (EShell *shell)
+{
+ return shell->priv->startup_view;
+}
diff --git a/shell/e-shell.h b/shell/e-shell.h
index 5ff9abb77d..0b8c3336c8 100644
--- a/shell/e-shell.h
+++ b/shell/e-shell.h
@@ -19,12 +19,6 @@
*
*/
-/**
- * SECTION: e-shell
- * @short_description: the backbone of Evolution
- * @include: shell/e-shell.h
- **/
-
#ifndef E_SHELL_H
#define E_SHELL_H
@@ -114,7 +108,9 @@ GList * e_shell_get_watched_windows (EShell *shell);
GtkWindow * e_shell_get_active_window (EShell *shell);
void e_shell_send_receive (EShell *shell,
GtkWindow *parent);
+gboolean e_shell_get_meego_mode (EShell *shell);
gboolean e_shell_get_express_mode (EShell *shell);
+gboolean e_shell_get_small_screen_mode (EShell *shell);
const gchar * e_shell_get_module_directory (EShell *shell);
gboolean e_shell_get_network_available (EShell *shell);
void e_shell_set_network_available (EShell *shell,
@@ -129,6 +125,12 @@ void e_shell_event (EShell *shell,
gboolean e_shell_quit (EShell *shell);
void e_shell_cancel_quit (EShell *shell);
+void e_shell_adapt_window_size (EShell *shell,
+ GtkWindow *window);
+void e_shell_set_startup_view (EShell *shell,
+ const char *view);
+const char * e_shell_get_startup_view (EShell *shell);
+
G_END_DECLS
#endif /* E_SHELL_H */
diff --git a/shell/main.c b/shell/main.c
index 41ca79eac8..02bc094480 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -49,6 +49,7 @@
#include "e-shell.h"
#include "e-shell-migrate.h"
+#include "e-shell-meego.h"
#include "e-config-upgrade.h"
#include "es-event.h"
@@ -387,6 +388,7 @@ create_default_shell (void)
gboolean online = TRUE;
const gchar *key;
GError *error = NULL;
+ gboolean is_meego = FALSE, small_screen = FALSE;
client = gconf_client_get_default ();
@@ -421,6 +423,9 @@ create_default_shell (void)
if (!express_mode)
express_mode = gconf_client_get_bool (client, key, &error);
+ if (express_mode)
+ e_shell_detect_meego (&is_meego, &small_screen);
+
if (error != NULL) {
g_warning ("%s", error->message);
g_clear_error (&error);
@@ -431,7 +436,9 @@ create_default_shell (void)
"name", "org.gnome.Evolution",
"geometry", geometry,
"module-directory", EVOLUTION_MODULEDIR,
+ "meego-mode", is_meego,
"express-mode", express_mode,
+ "small-screen-mode", small_screen,
"online", online,
NULL);
@@ -614,6 +621,11 @@ main (gint argc, gchar **argv)
e_plugin_load_plugins ();
}
+ if (requested_view)
+ e_shell_set_startup_view(shell, requested_view);
+ else if (express_mode)
+ e_shell_set_startup_view(shell, "mail");
+
/* Attempt migration -after- loading all modules and plugins,
* as both shell backends and certain plugins hook into this. */
e_shell_migrate_attempt (shell);
diff --git a/smime/gui/component.c b/smime/gui/component.c
index 48546bf75f..0b7a679ee2 100644
--- a/smime/gui/component.c
+++ b/smime/gui/component.c
@@ -43,7 +43,7 @@ smime_pk11_passwd (ECertDB *db, PK11SlotInfo* slot, gboolean retry, gchar **pass
g_strchomp (slot_name);
- prompt = g_strdup_printf (_("Enter the password for `%s'"), slot_name);
+ prompt = g_strdup_printf (_("Enter the password for '%s'"), slot_name);
g_free (slot_name);
*passwd = e_passwords_ask_password (_("Enter password"), "SMIME-PKCS11", "",
diff --git a/smime/lib/e-cert-db.c b/smime/lib/e-cert-db.c
index ce22dc8537..73f184ab17 100644
--- a/smime/lib/e-cert-db.c
+++ b/smime/lib/e-cert-db.c
@@ -1189,7 +1189,7 @@ e_cert_db_import_certs_from_file (ECertDB *cert_db,
rv = FALSE;
}
else {
- printf ("importing %d bytes from `%s'\n", bytes_read, file_path);
+ printf ("importing %d bytes from '%s'\n", bytes_read, file_path);
switch (cert_type) {
case E_CERT_CA:
diff --git a/smime/lib/e-pkcs12.c b/smime/lib/e-pkcs12.c
index af8aedae9d..7f5b49d37f 100644
--- a/smime/lib/e-pkcs12.c
+++ b/smime/lib/e-pkcs12.c
@@ -167,7 +167,7 @@ input_to_decoder (SEC_PKCS12DecoderContext *dcx, const gchar *path, GError **err
fp = g_fopen (path, "rb");
if (!fp) {
/* XXX gerror */
- printf ("couldn't open `%s'\n", path);
+ printf ("couldn't open '%s'\n", path);
return FALSE;
}
@@ -319,7 +319,7 @@ e_pkcs12_import_from_file (EPKCS12 *pkcs12, const gchar *path, GError **error)
gboolean wantRetry;
PK11SlotInfo *slot;
- printf ("importing pkcs12 from `%s'\n", path);
+ printf ("importing pkcs12 from '%s'\n", path);
slot = PK11_GetInternalKeySlot();
diff --git a/ui/evolution-calendars.ui b/ui/evolution-calendars.ui
index feef83de6c..8bd41d4bb1 100644
--- a/ui/evolution-calendars.ui
+++ b/ui/evolution-calendars.ui
@@ -5,8 +5,10 @@
<menuitem action='event-open'/>
</placeholder>
<placeholder name='print-actions'>
+#if !EXPRESS
<menuitem action='calendar-print-preview'/>
<menuitem action='calendar-print'/>
+#endif
</placeholder>
</menu>
<menu action='edit-menu'>
@@ -28,20 +30,41 @@
</placeholder>
</menubar>
<toolbar name='main-toolbar'>
+#if !EXPRESS
+ <toolitem action='send-receive'/>
+ <separator/>
<toolitem action='calendar-print'/>
<toolitem action='delete-selection'/>
<separator/>
+#endif
<toolitem action='calendar-go-back'/>
<toolitem action='calendar-go-today'/>
<toolitem action='calendar-go-forward'/>
+#if !EXPRESS
<separator/>
<toolitem action='calendar-jump-to'/>
+#endif
<separator/>
<toolitem action='calendar-view-day'/>
<toolitem action='calendar-view-workweek'/>
+#if !EXPRESS
<toolitem action='calendar-view-week'/>
+#endif
+
<toolitem action='calendar-view-month'/>
+#if !EXPRESS
<toolitem action='calendar-view-list'/>
+#endif
+#if EXPRESS
+ <separator/>
+ <toolitem action='preferences'/>
+#endif
+ </toolbar>
+ <toolbar name='close-toolbar'>
+#if EXPRESS
+ <separator expand="true"/>
+ <toolitem action='quit-calendar'/>
+#endif
</toolbar>
<popup name='calendar-popup'>
<menuitem action='calendar-new'/>
@@ -59,12 +82,15 @@
<menuitem action='event-new'/>
<menuitem action='event-all-day-new'/>
<menuitem action='event-meeting-new'/>
+#if !EXPRESS
<menuitem action='task-new'/>
<separator/>
<menuitem action='event-popup-print'/>
<separator/>
+#endif
<menuitem action='popup-paste-clipboard'/>
<separator/>
+#if !EXPRESS
<menu action='gal-view-menu'>
<menuitem action='calendar-view-day'/>
<menuitem action='calendar-view-workweek'/>
@@ -76,24 +102,31 @@
</menu>
<menuitem action='calendar-popup-go-today'/>
<menuitem action='calendar-popup-jump-to'/>
+#endif
</popup>
<popup name='calendar-event-popup'>
<menuitem action='event-popup-open'/>
<menuitem action='event-popup-save-as'/>
+#if !EXPRESS
<menuitem action='event-popup-print'/>
+#endif
<separator/>
<menuitem action='popup-cut-clipboard'/>
<menuitem action='popup-copy-clipboard'/>
<menuitem action='popup-paste-clipboard'/>
+#if !EXPRESS
<separator/>
<menuitem action='event-popup-copy'/>
<menuitem action='event-popup-move'/>
+#endif
<menuitem action='event-popup-delegate'/>
<menuitem action='event-popup-schedule'/>
<menuitem action='event-popup-schedule-appointment'/>
+#if !EXPRESS
<menuitem action='event-popup-forward'/>
<menuitem action='event-popup-reply'/>
<menuitem action='event-popup-reply-all'/>
+#endif
<separator/>
<menuitem action='event-popup-occurrence-movable'/>
<menuitem action='event-popup-delete'/>
@@ -108,7 +141,9 @@
<menuitem action='calendar-memopad-open'/>
<menuitem action='calendar-memopad-open-url'/>
<menuitem action='calendar-memopad-save-as'/>
+#if !EXPRESS
<menuitem action='calendar-memopad-print'/>
+#endif
<separator/>
<menuitem action='popup-cut-clipboard'/>
<menuitem action='popup-copy-clipboard'/>
@@ -124,7 +159,9 @@
<menuitem action='calendar-taskpad-open'/>
<menuitem action='calendar-taskpad-open-url'/>
<menuitem action='calendar-taskpad-save-as'/>
+#if !EXPRESS
<menuitem action='calendar-taskpad-print'/>
+#endif
<separator/>
<menuitem action='popup-cut-clipboard'/>
<menuitem action='popup-copy-clipboard'/>
diff --git a/ui/evolution-contacts.ui b/ui/evolution-contacts.ui
index 11dc1f20d0..a258060184 100644
--- a/ui/evolution-contacts.ui
+++ b/ui/evolution-contacts.ui
@@ -7,8 +7,10 @@
<menuitem action='address-book-save-as'/>
</placeholder>
<placeholder name='print-actions'>
+#if !EXPRESS
<menuitem action='address-book-print-preview'/>
<menuitem action='address-book-print'/>
+#endif
</placeholder>
</menu>
<menu action='edit-menu'>
@@ -46,7 +48,11 @@
</placeholder>
</menubar>
<toolbar name='main-toolbar'>
+#if !EXPRESS
+ <toolitem action='send-receive'/>
+ <separator/>
<toolitem action='address-book-print'/>
+#endif
<toolitem action='delete-selection'/>
<toolitem action='address-book-stop'/>
</toolbar>
@@ -66,7 +72,9 @@
<separator/>
<menuitem action='contact-popup-open'/>
<menuitem action='contact-popup-save-as'/>
+#if !EXPRESS
<menuitem action='contact-popup-print'/>
+#endif
<separator/>
<menuitem action='popup-cut-clipboard'/>
<menuitem action='popup-copy-clipboard'/>
diff --git a/ui/evolution-mail-reader.ui b/ui/evolution-mail-reader.ui
index ad0b401676..53cb8845d3 100644
--- a/ui/evolution-mail-reader.ui
+++ b/ui/evolution-mail-reader.ui
@@ -82,7 +82,7 @@
<menuitem action="mail-mark-unimportant"/>
<separator/>
<menuitem action="mail-mark-junk"/>
- <menuitem action="mail-mark-notjunk"/>
+ <menuitem action="mail-mark-not-junk"/>
<separator/>
<menuitem action="mail-flag-for-followup"/>
<menuitem action="mail-flag-clear"/>
@@ -127,7 +127,7 @@
#endif
<toolitem action='mail-delete'/>
<toolitem action='mail-mark-junk'/>
- <toolitem action='mail-mark-notjunk'/>
+ <toolitem action='mail-mark-not-junk'/>
</placeholder>
<separator/>
<placeholder name='mail-toolbar-navigation'>
diff --git a/ui/evolution-mail.ui b/ui/evolution-mail.ui
index 849d579eb6..bae4b26fe2 100644
--- a/ui/evolution-mail.ui
+++ b/ui/evolution-mail.ui
@@ -61,11 +61,13 @@
</menu>
</menubar>
<toolbar name='main-toolbar'>
-#if EXPRESS
<placeholder name='toolbar-actions'>
+ <toolitem action='send-receive'/>
+ <separator/>
+#if EXPRESS
<toolitem action='new-addressbook-window'/>
- </placeholder>
#endif
+ </placeholder>
<placeholder name='mail-toolbar-common'/>
#if !EXPRESS
<toolitem action='mail-stop'/>
@@ -109,7 +111,7 @@
<menuitem action='mail-popup-mark-important'/>
<menuitem action='mail-popup-mark-unimportant'/>
<menuitem action='mail-popup-mark-junk'/>
- <menuitem action='mail-popup-mark-notjunk'/>
+ <menuitem action='mail-popup-mark-not-junk'/>
<menuitem action='mail-popup-flag-for-followup'/>
<menuitem action="mail-popup-flag-clear"/>
<menuitem action="mail-popup-flag-completed"/>
diff --git a/ui/evolution-memos.ui b/ui/evolution-memos.ui
index dbe42c7714..b204605ab9 100644
--- a/ui/evolution-memos.ui
+++ b/ui/evolution-memos.ui
@@ -29,14 +29,16 @@
</menu>
</menubar>
<toolbar name='main-toolbar'>
- <placeholder name='toolbar-actions'>
- <toolitem action='cut-clipboard'/>
- <toolitem action='copy-clipboard'/>
- <toolitem action='paste-clipboard'/>
- <separator/>
- <toolitem action='memo-list-print'/>
- <toolitem action='delete-selection'/>
- </placeholder>
+#if !EXPRESS
+ <toolitem action='send-receive'/>
+ <separator/>
+#endif
+ <toolitem action='cut-clipboard'/>
+ <toolitem action='copy-clipboard'/>
+ <toolitem action='paste-clipboard'/>
+ <separator/>
+ <toolitem action='memo-list-print'/>
+ <toolitem action='delete-selection'/>
</toolbar>
<popup name='memo-popup'>
<menuitem action='memo-new'/>
diff --git a/ui/evolution-shell.ui b/ui/evolution-shell.ui
index 2407260649..c16189932e 100644
--- a/ui/evolution-shell.ui
+++ b/ui/evolution-shell.ui
@@ -10,8 +10,10 @@
<placeholder name='file-actions'/>
<separator/>
<menuitem action='import'/>
+#if !EXPRESS
<separator/>
<menuitem action='page-setup'/>
+#endif
<placeholder name='print-actions'/>
<separator/>
<placeholder name='long-running-actions'/>
@@ -89,8 +91,9 @@
</menu>
</menubar>
<toolbar name='main-toolbar'>
- <toolitem action='send-receive'/>
- <separator/>
<placeholder name='toolbar-actions'/>
</toolbar>
+ <toolbar name='search-toolbar'/>
+ <toolbar name='close-toolbar'/>
+
</ui>
diff --git a/ui/evolution-tasks.ui b/ui/evolution-tasks.ui
index 62d9f023b7..8993e5c43a 100644
--- a/ui/evolution-tasks.ui
+++ b/ui/evolution-tasks.ui
@@ -39,6 +39,10 @@
</placeholder>
</menubar>
<toolbar name='main-toolbar'>
+#if !EXPRESS
+ <toolitem action='send-receive'/>
+ <separator/>
+#endif
<toolitem action='cut-clipboard'/>
<toolitem action='copy-clipboard'/>
<toolitem action='paste-clipboard'/>
diff --git a/widgets/misc/e-account-combo-box.c b/widgets/misc/e-account-combo-box.c
index 0ded393e72..786478a5e3 100644
--- a/widgets/misc/e-account-combo-box.c
+++ b/widgets/misc/e-account-combo-box.c
@@ -41,6 +41,7 @@ enum {
struct _EAccountComboBoxPrivate {
EAccountList *account_list;
GHashTable *index;
+ int num_displayed_accounts;
};
static gpointer parent_class;
@@ -150,6 +151,8 @@ account_combo_box_refresh_cb (EAccountList *account_list,
GList *list = NULL;
GList *iter;
+ combo_box->priv->num_displayed_accounts = 0;
+
store = gtk_list_store_new (2, G_TYPE_STRING, E_TYPE_ACCOUNT);
model = GTK_TREE_MODEL (store);
index = combo_box->priv->index;
@@ -182,6 +185,7 @@ account_combo_box_refresh_cb (EAccountList *account_list,
gchar *string;
account = iter->data;
+ combo_box->priv->num_displayed_accounts++;
/* Show the account name for duplicate email addresses. */
if (account_combo_box_has_dupes (list, account->id->address))
@@ -514,3 +518,21 @@ e_account_combo_box_set_active_name (EAccountComboBox *combo_box,
return e_account_combo_box_set_active (combo_box, account);
}
+
+/**
+ * e_account_combo_box_count_displayed_accounts:
+ * @combo_box: an #EAccountComboBox
+ *
+ * Counts the number of accounts that are displayed in the @combo_box. This may not
+ * be the actual number of accounts that are configured, as some of those accounts
+ * may be disabled by the user.
+ *
+ * Return value: number of active and valid accounts as shown in the @combo_box.
+ */
+int
+e_account_combo_box_count_displayed_accounts (EAccountComboBox *combo_box)
+{
+ g_return_val_if_fail (E_IS_ACCOUNT_COMBO_BOX (combo_box), -1);
+
+ return combo_box->priv->num_displayed_accounts;
+}
diff --git a/widgets/misc/e-account-combo-box.h b/widgets/misc/e-account-combo-box.h
index 12d4be6c72..60078690e9 100644
--- a/widgets/misc/e-account-combo-box.h
+++ b/widgets/misc/e-account-combo-box.h
@@ -78,6 +78,8 @@ gboolean e_account_combo_box_set_active_name
(EAccountComboBox *combo_box,
const gchar *account_name);
+int e_account_combo_box_count_displayed_accounts (EAccountComboBox *combo_box);
+
G_END_DECLS
#endif /* E_ACCOUNT_COMBO_BOX_H */
diff --git a/widgets/misc/e-calendar-item.c b/widgets/misc/e-calendar-item.c
index def7019c21..4d7506e05d 100644
--- a/widgets/misc/e-calendar-item.c
+++ b/widgets/misc/e-calendar-item.c
@@ -35,6 +35,7 @@
#include <glib/gi18n.h>
#include <libedataserver/e-data-server-util.h>
#include <e-util/e-util.h>
+#include <e-util/e-extensible.h>
static const gint e_calendar_item_days_in_month[12] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
@@ -228,7 +229,9 @@ enum {
static guint e_calendar_item_signals[LAST_SIGNAL] = { 0 };
-G_DEFINE_TYPE (ECalendarItem, e_calendar_item, GNOME_TYPE_CANVAS_ITEM)
+G_DEFINE_TYPE_WITH_CODE (
+ ECalendarItem, e_calendar_item, GNOME_TYPE_CANVAS_ITEM,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
static void
e_calendar_item_class_init (ECalendarItemClass *class)
@@ -844,6 +847,8 @@ e_calendar_item_realize (GnomeCanvasItem *item)
calitem = E_CALENDAR_ITEM (item);
e_calendar_item_style_set (GTK_WIDGET(item->canvas), calitem);
+
+ e_extensible_load_extensions (E_EXTENSIBLE (calitem));
}
static void
diff --git a/widgets/misc/e-calendar-item.h b/widgets/misc/e-calendar-item.h
index 6a3b74fccb..4aab58ea2e 100644
--- a/widgets/misc/e-calendar-item.h
+++ b/widgets/misc/e-calendar-item.h
@@ -109,12 +109,24 @@ typedef void (*ECalendarItemStyleCallback) (ECalendarItem *calitem,
typedef struct tm (*ECalendarItemGetTimeCallback) (ECalendarItem *calitem,
gpointer data);
-#define E_CALENDAR_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- e_calendar_item_get_type (), ECalendarItem))
-#define E_CALENDAR_ITEM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),\
- e_calendar_item_get_type ()))
-#define E_IS_CALENDAR_ITEM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \
- e_calendar_item_get_type ()))
+/* Standard GObject macros */
+#define E_TYPE_CALENDAR_ITEM \
+ (e_calendar_item_get_type ())
+#define E_CALENDAR_ITEM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_CALENDAR_ITEM, ECalendarItem))
+#define E_CALENDAR_ITEM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_CALENDAR_ITEM, ECalendarItemClass))
+#define E_IS_CALENDAR_ITEM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_CALENDAR_ITEM))
+#define E_IS_CALENDAR_ITEM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), E_TYPE_CALENDAR_ITEM))
+#define E_CALENDAR_ITEM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), E_TYPE_CALENDAR_ITEM, ECalendarItemClass))
struct _ECalendarItem
{
diff --git a/widgets/misc/e-dateedit.c b/widgets/misc/e-dateedit.c
index db63ffaaf8..03c8f2fd47 100644
--- a/widgets/misc/e-dateedit.c
+++ b/widgets/misc/e-dateedit.c
@@ -41,6 +41,7 @@
#include <libedataserver/e-data-server-util.h>
#include <e-util/e-util.h>
#include <e-util/e-binding.h>
+#include <e-util/e-extensible.h>
#include "e-calendar.h"
#define E_DATE_EDIT_GET_PRIVATE(obj) \
@@ -205,9 +206,12 @@ static gboolean e_date_edit_set_time_internal (EDateEdit *dedit,
gint hour,
gint minute);
-static gpointer parent_class;
static gint signals[LAST_SIGNAL];
+G_DEFINE_TYPE_WITH_CODE (
+ EDateEdit, e_date_edit, GTK_TYPE_HBOX,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
+
static void
date_edit_set_property (GObject *object,
guint property_id,
@@ -334,16 +338,15 @@ date_edit_dispose (GObject *object)
}
/* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (e_date_edit_parent_class)->dispose (object);
}
static void
-date_edit_class_init (EDateEditClass *class)
+e_date_edit_class_init (EDateEditClass *class)
{
GObjectClass *object_class;
GtkWidgetClass *widget_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EDateEditPrivate));
object_class = G_OBJECT_CLASS (class);
@@ -448,7 +451,7 @@ date_edit_class_init (EDateEditClass *class)
}
static void
-date_edit_init (EDateEdit *dedit)
+e_date_edit_init (EDateEdit *dedit)
{
dedit->priv = E_DATE_EDIT_GET_PRIVATE (dedit);
@@ -476,32 +479,8 @@ date_edit_init (EDateEdit *dedit)
/* Set it to the current time. */
e_date_edit_set_time (dedit, 0);
-}
-
-GType
-e_date_edit_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EDateEditClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) date_edit_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EDateEdit),
- 0, /* n_preallocs */
- (GInstanceInitFunc) date_edit_init,
- NULL /* value_table */
- };
-
- type = g_type_register_static (
- GTK_TYPE_HBOX, "EDateEdit", &type_info, 0);
- }
- return type;
+ e_extensible_load_extensions (E_EXTENSIBLE (dedit));
}
/**
diff --git a/widgets/misc/e-preferences-window.c b/widgets/misc/e-preferences-window.c
index f40dee180b..8fa4fcf85f 100644
--- a/widgets/misc/e-preferences-window.c
+++ b/widgets/misc/e-preferences-window.c
@@ -33,11 +33,17 @@
struct _EPreferencesWindowPrivate {
GtkWidget *icon_view;
+ GtkWidget *scroll;
GtkWidget *notebook;
GHashTable *index;
+
+ GtkListStore *store;
+ GtkTreeModelFilter *filter;
+ const char *filter_view;
};
enum {
+ COLUMN_ID, /* G_TYPE_STRING */
COLUMN_TEXT, /* G_TYPE_STRING */
COLUMN_PIXBUF, /* GDK_TYPE_PIXBUF */
COLUMN_PAGE, /* G_TYPE_INT */
@@ -102,7 +108,7 @@ preferences_window_selection_changed_cb (EPreferencesWindow *window)
if (list == NULL)
return;
- model = gtk_icon_view_get_model (icon_view);
+ model = window->priv->store;
gtk_tree_model_get_iter (model, &iter, list->data);
gtk_tree_model_get (model, &iter, COLUMN_PAGE, &page, -1);
@@ -190,6 +196,40 @@ preferences_window_class_init (EPreferencesWindowClass *class)
widget_class->show = preferences_window_show;
}
+static gboolean
+filter_view (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ EPreferencesWindow *window = (EPreferencesWindow *)data;
+ gchar *str;
+ gboolean visible = FALSE;
+
+ if (!window->priv->filter_view)
+ return TRUE;
+
+ gtk_tree_model_get (model, iter, COLUMN_ID, &str, -1);
+ if (strncmp(window->priv->filter_view, "mail", 4) == 0) {
+ /* Show everything except calendar */
+ if (str && (strncmp (str, "cal", 3) == 0))
+ visible = FALSE;
+ else
+ visible = TRUE;
+ } else if (strncmp(window->priv->filter_view, "cal", 3) == 0) {
+ /* Show only calendar and nothing else */
+ if (str && (strncmp (str, "cal", 3) != 0))
+ visible = FALSE;
+ else
+ visible = TRUE;
+
+ } else /* In any other case, show everything */
+ visible = TRUE;
+
+ g_free (str);
+
+ return visible;
+}
+
static void
preferences_window_init (EPreferencesWindow *window)
{
@@ -209,11 +249,16 @@ preferences_window_init (EPreferencesWindow *window)
window->priv = E_PREFERENCES_WINDOW_GET_PRIVATE (window);
window->priv->index = index;
+ window->priv->filter_view = NULL;
store = gtk_list_store_new (
- 4, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_INT, G_TYPE_INT);
+ 5, G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_INT, G_TYPE_INT);
gtk_tree_sortable_set_sort_column_id (
GTK_TREE_SORTABLE (store), COLUMN_SORT, GTK_SORT_ASCENDING);
+ window->priv->store = store;
+
+ window->priv->filter = (GtkTreeModelFilter *)gtk_tree_model_filter_new ((GtkTreeModel *)store, NULL);
+ gtk_tree_model_filter_set_visible_func (window->priv->filter, filter_view, window, NULL);
title = _("Evolution Preferences");
gtk_window_set_title (GTK_WINDOW (window), title);
@@ -243,11 +288,12 @@ preferences_window_init (EPreferencesWindow *window)
gtk_scrolled_window_set_shadow_type (
GTK_SCROLLED_WINDOW (widget), GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, TRUE, 0);
+ window->priv->scroll = widget;
gtk_widget_show (widget);
-
+
container = widget;
- widget = gtk_icon_view_new_with_model (GTK_TREE_MODEL (store));
+ widget = gtk_icon_view_new_with_model (GTK_TREE_MODEL (window->priv->filter));
gtk_icon_view_set_columns (GTK_ICON_VIEW (widget), 1);
gtk_icon_view_set_text_column (GTK_ICON_VIEW (widget), COLUMN_TEXT);
gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (widget), COLUMN_PIXBUF);
@@ -359,13 +405,14 @@ e_preferences_window_add_page (EPreferencesWindow *window,
notebook = GTK_NOTEBOOK (window->priv->notebook);
page = gtk_notebook_get_n_pages (notebook);
- model = gtk_icon_view_get_model (icon_view);
+ model = window->priv->store;
pixbuf = preferences_window_load_pixbuf (icon_name);
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (
GTK_LIST_STORE (model), &iter,
+ COLUMN_ID, page_name,
COLUMN_TEXT, caption, COLUMN_PIXBUF, pixbuf,
COLUMN_PAGE, page, COLUMN_SORT, sort_order, -1);
@@ -405,3 +452,35 @@ e_preferences_window_show_page (EPreferencesWindow *window,
gtk_icon_view_scroll_to_path (icon_view, path, FALSE, 0.0, 0.0);
gtk_tree_path_free (path);
}
+
+void
+e_preferences_window_filter_page (EPreferencesWindow *window,
+ const gchar *page_name)
+{
+ GtkTreeRowReference *reference;
+ GtkIconView *icon_view;
+ GtkTreePath *path;
+
+ g_return_if_fail (E_IS_PREFERENCES_WINDOW (window));
+ g_return_if_fail (page_name != NULL);
+
+ icon_view = GTK_ICON_VIEW (window->priv->icon_view);
+ reference = g_hash_table_lookup (window->priv->index, page_name);
+ g_return_if_fail (reference != NULL);
+
+ path = gtk_tree_row_reference_get_path (reference);
+ gtk_icon_view_select_path (icon_view, path);
+ gtk_icon_view_scroll_to_path (icon_view, path, FALSE, 0.0, 0.0);
+ gtk_tree_path_free (path);
+
+ window->priv->filter_view = page_name;
+ gtk_tree_model_filter_refilter (window->priv->filter);
+
+ /* XXX: We need a better solution to hide the icon view when
+ * there is just one entry */
+ if (strncmp(page_name, "cal", 3) == 0) {
+ gtk_widget_hide (window->priv->scroll);
+ } else
+ gtk_widget_show (window->priv->scroll);
+}
+
diff --git a/widgets/misc/e-preferences-window.h b/widgets/misc/e-preferences-window.h
index 4944a89e58..97f0da85e2 100644
--- a/widgets/misc/e-preferences-window.h
+++ b/widgets/misc/e-preferences-window.h
@@ -68,6 +68,8 @@ void e_preferences_window_add_page (EPreferencesWindow *window,
gint sort_order);
void e_preferences_window_show_page (EPreferencesWindow *window,
const gchar *page_name);
+void e_preferences_window_filter_page (EPreferencesWindow *window,
+ const gchar *page_name);
G_END_DECLS
diff --git a/widgets/misc/e-web-view.c b/widgets/misc/e-web-view.c
index e9fc71d7ca..beb865b98b 100644
--- a/widgets/misc/e-web-view.c
+++ b/widgets/misc/e-web-view.c
@@ -28,9 +28,10 @@
#include <camel/camel-internet-address.h>
#include <camel/camel-url.h>
-#include "e-util/e-util.h"
-#include "e-util/e-binding.h"
-#include "e-util/e-plugin-ui.h"
+#include <e-util/e-util.h>
+#include <e-util/e-binding.h>
+#include <e-util/e-extensible.h>
+#include <e-util/e-plugin-ui.h>
#include "e-popup-action.h"
#include "e-selectable.h"
@@ -75,6 +76,9 @@ enum {
PROP_DISABLE_PRINTING,
PROP_DISABLE_SAVE_TO_DISK,
PROP_EDITABLE,
+ PROP_INLINE_SPELLING,
+ PROP_MAGIC_LINKS,
+ PROP_MAGIC_SMILEYS,
PROP_OPEN_PROXY,
PROP_PASTE_TARGET_LIST,
PROP_PRINT_PROXY,
@@ -118,6 +122,14 @@ static const gchar *ui =
" </popup>"
"</ui>";
+/* Forward Declarations */
+static void e_web_view_selectable_init (ESelectableInterface *interface);
+
+G_DEFINE_TYPE_WITH_CODE (
+ EWebView, e_web_view, GTK_TYPE_HTML,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL)
+ G_IMPLEMENT_INTERFACE (E_TYPE_SELECTABLE, e_web_view_selectable_init))
+
static EWebViewRequest *
web_view_request_new (EWebView *web_view,
const gchar *uri,
@@ -503,6 +515,24 @@ web_view_set_property (GObject *object,
g_value_get_boolean (value));
return;
+ case PROP_INLINE_SPELLING:
+ e_web_view_set_inline_spelling (
+ E_WEB_VIEW (object),
+ g_value_get_boolean (value));
+ return;
+
+ case PROP_MAGIC_LINKS:
+ e_web_view_set_magic_links (
+ E_WEB_VIEW (object),
+ g_value_get_boolean (value));
+ return;
+
+ case PROP_MAGIC_SMILEYS:
+ e_web_view_set_magic_smileys (
+ E_WEB_VIEW (object),
+ g_value_get_boolean (value));
+ return;
+
case PROP_OPEN_PROXY:
e_web_view_set_open_proxy (
E_WEB_VIEW (object),
@@ -574,6 +604,24 @@ web_view_get_property (GObject *object,
E_WEB_VIEW (object)));
return;
+ case PROP_INLINE_SPELLING:
+ g_value_set_boolean (
+ value, e_web_view_get_inline_spelling (
+ E_WEB_VIEW (object)));
+ return;
+
+ case PROP_MAGIC_LINKS:
+ g_value_set_boolean (
+ value, e_web_view_get_magic_links (
+ E_WEB_VIEW (object)));
+ return;
+
+ case PROP_MAGIC_SMILEYS:
+ g_value_set_boolean (
+ value, e_web_view_get_magic_smileys (
+ E_WEB_VIEW (object)));
+ return;
+
case PROP_OPEN_PROXY:
g_value_set_object (
value, e_web_view_get_open_proxy (
@@ -809,6 +857,16 @@ web_view_extract_uri (EWebView *web_view,
}
static void
+web_view_load_string (EWebView *web_view,
+ const gchar *string)
+{
+ if (string != NULL && *string != '\0')
+ gtk_html_load_from_string (GTK_HTML (web_view), string, -1);
+ else
+ e_web_view_clear (web_view);
+}
+
+static void
web_view_copy_clipboard (EWebView *web_view)
{
gtk_html_command (GTK_HTML (web_view), "copy");
@@ -1004,7 +1062,7 @@ web_view_selectable_select_all (ESelectable *selectable)
}
static void
-web_view_class_init (EWebViewClass *class)
+e_web_view_class_init (EWebViewClass *class)
{
GObjectClass *object_class;
GtkWidgetClass *widget_class;
@@ -1030,6 +1088,7 @@ web_view_class_init (EWebViewClass *class)
html_class->iframe_created = web_view_iframe_created;
class->extract_uri = web_view_extract_uri;
+ class->load_string = web_view_load_string;
class->copy_clipboard = web_view_copy_clipboard;
class->cut_clipboard = web_view_cut_clipboard;
class->paste_clipboard = web_view_paste_clipboard;
@@ -1072,7 +1131,8 @@ web_view_class_init (EWebViewClass *class)
"Disable Printing",
NULL,
FALSE,
- G_PARAM_READWRITE));
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
g_object_class_install_property (
object_class,
@@ -1082,7 +1142,8 @@ web_view_class_init (EWebViewClass *class)
"Disable Save-to-Disk",
NULL,
FALSE,
- G_PARAM_READWRITE));
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
#endif
g_object_class_install_property (
@@ -1097,6 +1158,36 @@ web_view_class_init (EWebViewClass *class)
g_object_class_install_property (
object_class,
+ PROP_INLINE_SPELLING,
+ g_param_spec_boolean (
+ "inline-spelling",
+ "Inline Spelling",
+ NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_MAGIC_LINKS,
+ g_param_spec_boolean (
+ "magic-links",
+ "Magic Links",
+ NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_MAGIC_SMILEYS,
+ g_param_spec_boolean (
+ "magic-smileys",
+ "Magic Smileys",
+ NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
PROP_OPEN_PROXY,
g_param_spec_object (
"open-proxy",
@@ -1209,7 +1300,7 @@ web_view_class_init (EWebViewClass *class)
}
static void
-web_view_selectable_init (ESelectableInterface *interface)
+e_web_view_selectable_init (ESelectableInterface *interface)
{
interface->update_actions = web_view_selectable_update_actions;
interface->cut_clipboard = web_view_selectable_cut_clipboard;
@@ -1219,7 +1310,7 @@ web_view_selectable_init (ESelectableInterface *interface)
}
static void
-web_view_init (EWebView *web_view)
+e_web_view_init (EWebView *web_view)
{
GtkUIManager *ui_manager;
GtkActionGroup *action_group;
@@ -1335,41 +1426,8 @@ web_view_init (EWebView *web_view)
id = "org.gnome.evolution.webview";
e_plugin_ui_register_manager (ui_manager, id, web_view);
e_plugin_ui_enable_manager (ui_manager, id);
-}
-
-GType
-e_web_view_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EWebViewClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) web_view_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EWebView),
- 0, /* n_preallocs */
- (GInstanceInitFunc) web_view_init,
- NULL /* value_table */
- };
-
- static const GInterfaceInfo selectable_info = {
- (GInterfaceInitFunc) web_view_selectable_init,
- (GInterfaceFinalizeFunc) NULL,
- NULL /* interface_data */
- };
-
- type = g_type_register_static (
- GTK_TYPE_HTML, "EWebView", &type_info, 0);
-
- g_type_add_interface_static (
- type, E_TYPE_SELECTABLE, &selectable_info);
- }
- return type;
+ e_extensible_load_extensions (E_EXTENSIBLE (web_view));
}
GtkWidget *
@@ -1390,12 +1448,14 @@ void
e_web_view_load_string (EWebView *web_view,
const gchar *string)
{
+ EWebViewClass *class;
+
g_return_if_fail (E_IS_WEB_VIEW (web_view));
- if (string != NULL && *string != '\0')
- gtk_html_load_from_string (GTK_HTML (web_view), string, -1);
- else
- e_web_view_clear (web_view);
+ class = E_WEB_VIEW_GET_CLASS (web_view);
+ g_return_if_fail (class->load_string != NULL);
+
+ class->load_string (web_view, string);
}
gboolean
@@ -1522,6 +1582,84 @@ e_web_view_set_editable (EWebView *web_view,
g_object_notify (G_OBJECT (web_view), "editable");
}
+gboolean
+e_web_view_get_inline_spelling (EWebView *web_view)
+{
+ /* XXX This is just here to maintain symmetry
+ * with e_web_view_set_inline_spelling(). */
+
+ g_return_val_if_fail (E_IS_WEB_VIEW (web_view), FALSE);
+
+ return gtk_html_get_inline_spelling (GTK_HTML (web_view));
+}
+
+void
+e_web_view_set_inline_spelling (EWebView *web_view,
+ gboolean inline_spelling)
+{
+ /* XXX GtkHTML does not utilize GObject properties as well
+ * as it could. This just wraps gtk_html_set_inline_spelling()
+ * so we get a "notify::inline-spelling" signal. */
+
+ g_return_if_fail (E_IS_WEB_VIEW (web_view));
+
+ gtk_html_set_inline_spelling (GTK_HTML (web_view), inline_spelling);
+
+ g_object_notify (G_OBJECT (web_view), "inline-spelling");
+}
+
+gboolean
+e_web_view_get_magic_links (EWebView *web_view)
+{
+ /* XXX This is just here to maintain symmetry
+ * with e_web_view_set_magic_links(). */
+
+ g_return_val_if_fail (E_IS_WEB_VIEW (web_view), FALSE);
+
+ return gtk_html_get_magic_links (GTK_HTML (web_view));
+}
+
+void
+e_web_view_set_magic_links (EWebView *web_view,
+ gboolean magic_links)
+{
+ /* XXX GtkHTML does not utilize GObject properties as well
+ * as it could. This just wraps gtk_html_set_magic_links()
+ * so we can get a "notify::magic-links" signal. */
+
+ g_return_if_fail (E_IS_WEB_VIEW (web_view));
+
+ gtk_html_set_magic_links (GTK_HTML (web_view), magic_links);
+
+ g_object_notify (G_OBJECT (web_view), "magic-links");
+}
+
+gboolean
+e_web_view_get_magic_smileys (EWebView *web_view)
+{
+ /* XXX This is just here to maintain symmetry
+ * with e_web_view_set_magic_smileys(). */
+
+ g_return_val_if_fail (E_IS_WEB_VIEW (web_view), FALSE);
+
+ return gtk_html_get_magic_smileys (GTK_HTML (web_view));
+}
+
+void
+e_web_view_set_magic_smileys (EWebView *web_view,
+ gboolean magic_smileys)
+{
+ /* XXX GtkHTML does not utilize GObject properties as well
+ * as it could. This just wraps gtk_html_set_magic_smileys()
+ * so we can get a "notify::magic-smileys" signal. */
+
+ g_return_if_fail (E_IS_WEB_VIEW (web_view));
+
+ gtk_html_set_magic_smileys (GTK_HTML (web_view), magic_smileys);
+
+ g_object_notify (G_OBJECT (web_view), "magic-smileys");
+}
+
const gchar *
e_web_view_get_selected_uri (EWebView *web_view)
{
diff --git a/widgets/misc/e-web-view.h b/widgets/misc/e-web-view.h
index 788eadb1b7..7d8eb4c8d0 100644
--- a/widgets/misc/e-web-view.h
+++ b/widgets/misc/e-web-view.h
@@ -69,6 +69,8 @@ struct _EWebViewClass {
gchar * (*extract_uri) (EWebView *web_view,
GdkEventButton *event,
GtkHTML *frame);
+ void (*load_string) (EWebView *web_view,
+ const gchar *load_string);
/* Signals */
void (*copy_clipboard) (EWebView *web_view);
@@ -106,6 +108,15 @@ void e_web_view_set_disable_save_to_disk
gboolean e_web_view_get_editable (EWebView *web_view);
void e_web_view_set_editable (EWebView *web_view,
gboolean editable);
+gboolean e_web_view_get_inline_spelling (EWebView *web_view);
+void e_web_view_set_inline_spelling (EWebView *web_view,
+ gboolean inline_spelling);
+gboolean e_web_view_get_magic_links (EWebView *web_view);
+void e_web_view_set_magic_links (EWebView *web_view,
+ gboolean magic_links);
+gboolean e_web_view_get_magic_smileys (EWebView *web_view);
+void e_web_view_set_magic_smileys (EWebView *web_view,
+ gboolean magic_smileys);
const gchar * e_web_view_get_selected_uri (EWebView *web_view);
void e_web_view_set_selected_uri (EWebView *web_view,
const gchar *selected_uri);
diff --git a/widgets/table/e-cell-text.c b/widgets/table/e-cell-text.c
index f9d3441d6f..f0509e4590 100644
--- a/widgets/table/e-cell-text.c
+++ b/widgets/table/e-cell-text.c
@@ -1421,7 +1421,7 @@ ect_print_height (ECellView *ecell_view, GtkPrintContext *context,
* should be 16 + 4.
* Height of some special font is much higher than others,
* such as Arabic. So leave some more margin for cell.
-` */
+ */
return 16 + 8;
}