From: Murray Cumming Date: Tue, 3 Apr 2007 15:10:07 +0000 (+0000) Subject: 2007-04-03 Murray Cumming X-Git-Tag: git_migration_finished~3958 X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=24c7fbfe1ce5156e490df32274b72fba1ad39a16;p=modest 2007-04-03 Murray Cumming * configure.ac: * src/Makefile.am: * src/maemo/Makefile.am: * src/maemo/easysetup/: Added files from the previously-exernal osso-modest-easysetup. * src/maemo/modest-main-window-ui.h: * src/modest-ui-actions.c: * src/modest-ui-actions.h: Added modest_ui_actions_on_new_account() as a signal handler for the New Account menu item. It shows the easysetup wizard. * po/en_GB.po: Added additional needed logical IDs and translations. Started ChangeLog2 file, because I cannot work without a ChangeLog. murrayc. Apparently ChangeLog is not used for some vague Nokia legal reasons. pmo-trunk-r1491 --- diff --git a/ChangeLog2 b/ChangeLog2 new file mode 100644 index 0000000..1cde256 --- /dev/null +++ b/ChangeLog2 @@ -0,0 +1,17 @@ +2007-04-03 Murray Cumming + + * configure.ac: + * src/Makefile.am: + * src/maemo/Makefile.am: + * src/maemo/easysetup/: Added files from the previously-exernal + osso-modest-easysetup. + * src/maemo/modest-main-window-ui.h: + * src/modest-ui-actions.c: + * src/modest-ui-actions.h: + Added modest_ui_actions_on_new_account() as a signal handler for the + New Account menu item. It shows the easysetup wizard. + * po/en_GB.po: Added additional needed logical IDs and translations. + +Started ChangeLog2 file, because I cannot work without a ChangeLog. murrayc. +Apparently ChangeLog is not used for some vague Nokia legal reasons. + diff --git a/configure.ac b/configure.ac index 84688bc..f4a01a3 100644 --- a/configure.ac +++ b/configure.ac @@ -178,6 +178,7 @@ man/Makefile src/Makefile src/gnome/Makefile src/maemo/Makefile +src/maemo/easysetup/Makefile src/widgets/Makefile docs/Makefile docs/reference/Makefile diff --git a/po/en_GB.po b/po/en_GB.po index e729296..0c809ba 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -1158,10 +1158,6 @@ msgstr "Messages" msgid "mcen_fi_advsetup_retrievetype_messages_attachments" msgstr "Messages and attachments" -# Label -msgid "mcen_fi_advsetup_leave_on_server" -msgstr "Leave messages on server" - # Label msgid "mcen_fi_advsetup_retrieve_number" msgstr "No. of messages to retrieve" @@ -2757,3 +2753,112 @@ msgstr "Unable to create folder" # Information note: This information note is displayed if the user is attempting to delete a folder and the action is not successful for some other reason that the folder being one of the mandatory folders, e.g. user created folder. msgid "mail_in_ui_folder_delete_error" msgstr "Unable to delete folder" + + +# Field title +msgid "mcen_fi_remoteroot_account" +msgstr "account" + +# column title +msgid "mcen_ti_default" +msgstr "Default" + +# column title +msgid "mcen_ti_account" +msgstr "Account" + +# Dialog title. First %s is "POP" or "IMAP" and second %s is the value of user defined 'Description' -field of the account. +msgid "mcen_ti_account_settings" +msgstr "%s account settings for %s" + +# Tab title +msgid "mcen_ti_account_settings_account" +msgstr "Account" + +# field title +msgid "mcen_fi_advsetup_limit_retrieve" +msgstr "Limit retrieve" + +# Choice list item +msgid "mcen_fi_advsetup_retrieve_nolimit" +msgstr "No limit" + +# field title. Uses a checkbox +msgid "mcen_fi_advsetup_leave_on_server" +msgstr "Leave messages on server" + +# Tab title +msgid "mcen_ti_account_settings_userinfo" +msgstr "User info" + +# field title for button +msgid "mcen_fi_email_signature" +msgstr "Signature" + +# field title +msgid "mcen_fi_emailsetup_port" +msgstr "Port" + +# Label +msgid "mail_fi_username" +msgstr "Username" + +# wizard title +msgid "mcen_ti_emailsetup" +msgstr "Account setup" + +# dialog title +msgid "mcen_ti_accountdetails" +msgstr "Account details" + +# text +msgid "mcen_ia_accountdetails" +msgstr "Select your country and service provider from the list below." + +# field title +msgid "mcen_fi_country" +msgstr "Country" + +# field title +msgid "mcen_fi_serviceprovider" +msgstr "Service provider" + +# field title # Mandatory field +msgid "mcen_fi_account_title" +msgstr "Title*" + +# dialog title +msgid "mcen_ti_emailsetup_userdetails" +msgstr "User details" + +# dialog title +msgid "mcen_ti_emailsetup_complete" +msgstr "Complete" + +# text +msgid "mcen_ia_easysetup_complete" +msgstr "Tap 'Finish' to save or 'Cancel' to discard the settings. You can later change your settings from the 'Tools > Accounts...' in the menu." + +# dialog title +msgid "mcen_ti_emailsetup_incomingdetails" +msgstr "Incoming details" + +# field title +msgid "mcen_li_emailsetup_secure_connection" +msgstr "Secure connection" + +# field title +msgid "mcen_li_emailsetup_secure_authentication" +msgstr "Use Secure authentication" + +# dialog title +msgid "mcen_ti_emailsetup_outgoingdetails" +msgstr "Outgoing details" + +# text +msgid "mcen_ia_customsetup_complete" +msgstr "Tap 'Finish' to save or 'Cancel' to discard the settings.\nTap 'Edit' to modify the advanced account settings." + +# field title +msgid "mcen_fi_advanced_settings" +msgstr "Advanced settings:" diff --git a/src/Makefile.am b/src/Makefile.am index 2b7a7bc..44cb025 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -90,6 +90,7 @@ modest_LDADD = \ $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_LIBS) \ $(MODEST_LIBTINYMAIL_MAEMO_LIBS) \ $(MODEST_PLATFORM)/libmodest-ui.la \ + $(MODEST_PLATFORM)/easysetup/libmodest-easysetup.la \ widgets/libmodest-widgets.la EXTRA_DIST=modest-marshal.list diff --git a/src/maemo/Makefile.am b/src/maemo/Makefile.am index feb799d..269191f 100644 --- a/src/maemo/Makefile.am +++ b/src/maemo/Makefile.am @@ -26,6 +26,7 @@ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +SUBDIRS=easysetup INCLUDES=\ $(MODEST_GSTUFF_CFLAGS) \ diff --git a/src/maemo/easysetup/Makefile.am b/src/maemo/easysetup/Makefile.am index a79c6a1..56b9044 100644 --- a/src/maemo/easysetup/Makefile.am +++ b/src/maemo/easysetup/Makefile.am @@ -1,18 +1,48 @@ -SUBDIRS=modest-account-mgr -DIST_SUBDIRS= +# Copyright (c) 2006,2007 Nokia Corporation +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the Nokia Corporation nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + INCLUDES=\ - $(MODEST_GSTUFF_CFLAGS)\ + $(MODEST_GSTUFF_CFLAGS) \ + $(MODEST_LIBTINYMAIL_MAEMO_CFLAGS) \ + -DMODEST_PLATFORM_ID=$(MODEST_PLATFORM_ID) \ + -I ${top_srcdir}/src/widgets \ + -I ${top_srcdir}/src \ -DPREFIX=\"@prefix@\" \ - -DOSSO_MODEST_EASYSETUP_LOCALEDIR=\"$(OSSO_MODEST_EASYSETUP_LOCALEDIR)\" \ - -I$(srcdir)/modest-account-mgr - + -DMAEMO_CHANGES \ + -DPIXMAP_PREFIX=\"${datadir}/pixmaps/modest/\" \ + -DMODEST_UIDIR=\""$(datadir)/modest/ui/"\" \ + -Wall -bin_PROGRAMS=\ - osso-modest-easysetup +noinst_LTLIBRARIES=\ + libmodest-easysetup.la -osso_modest_easysetup_SOURCES=\ - main.c \ +libmodest_easysetup_la_SOURCES= \ modest-wizard-dialog.h modest-wizard-dialog.c \ modest-presets.h modest-presets.c \ modest-easysetup-wizard.h modest-easysetup-wizard.c \ @@ -21,10 +51,8 @@ osso_modest_easysetup_SOURCES=\ modest-easysetup-servertype-combo-box.h modest-easysetup-servertype-combo-box.c \ modest-easysetup-serversecurity-combo-box.h modest-easysetup-serversecurity-combo-box.c \ modest-easysetup-secureauth-combo-box.h modest-easysetup-secureauth-combo-box.c \ - modest-validating-entry.h modest-validating-entry.c \ - modest-text-utils.h modest-text-utils.c + modest-validating-entry.h modest-validating-entry.c -osso_modest_easysetup_LDADD = \ +LDADD = \ $(MODEST_GSTUFF_LIBS) \ - modest-account-mgr/libmodestaccountmgr.a - + $(MODEST_LIBTINYMAIL_MAEMO_LIBS) diff --git a/src/maemo/easysetup/localisation.h b/src/maemo/easysetup/localisation.h deleted file mode 100644 index efdf636..0000000 --- a/src/maemo/easysetup/localisation.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef LOCALISATION_H -#define LOCALISATION_H - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif /* HAVE_CONFIG_H */ - -#ifdef ENABLE_NLS -#include -#define _(String) gettext(String) -#ifdef gettext_noop -#define N_(String) gettext_noop(String) -#else -#define N_(String) (String) -#endif -#define locale_init() setlocale(LC_ALL, "");\ - bindtextdomain(GETTEXT_PACKAGE, localedir);\ - textdomain(GETTEXT_PACKAGE); -#else /* NLS is disabled */ -#define locale_init() -#define _(String) (String) -#define N_(String) (String) -#define textdomain(String) (String) -#define gettext(String) (String) -#define dgettext(Domain,String) (String) -#define dcgettext(Domain,String,Type) (String) -#define bindtextdomain(Domain,Directory) (Domain) -#define bind_textdomain_codeset(Domain,Codeset) (Codeset) -#endif /* ENABLE_NLS */ - -#endif /* LOCALISATION_H */ -#ifndef LOCALISATION_H -#define LOCALISATION_H - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif /* HAVE_CONFIG_H */ - -#ifdef ENABLE_NLS -#include -#define _(String) gettext(String) -#ifdef gettext_noop -#define N_(String) gettext_noop(String) -#else -#define N_(String) (String) -#endif -#define locale_init() setlocale(LC_ALL, "");\ - bindtextdomain(GETTEXT_PACKAGE, localedir);\ - textdomain(GETTEXT_PACKAGE); -#else /* NLS is disabled */ -#define locale_init() -#define _(String) (String) -#define N_(String) (String) -#define textdomain(String) (String) -#define gettext(String) (String) -#define dgettext(Domain,String) (String) -#define dcgettext(Domain,String,Type) (String) -#define bindtextdomain(Domain,Directory) (Domain) -#define bind_textdomain_codeset(Domain,Codeset) (Codeset) -#endif /* ENABLE_NLS */ - -#endif /* LOCALISATION_H */ - diff --git a/src/maemo/easysetup/modest-easysetup-secureauth-combo-box.h b/src/maemo/easysetup/modest-easysetup-secureauth-combo-box.h index bb1fd8e..0a151cf 100644 --- a/src/maemo/easysetup/modest-easysetup-secureauth-combo-box.h +++ b/src/maemo/easysetup/modest-easysetup-secureauth-combo-box.h @@ -7,7 +7,7 @@ #define _EASYSETUP_SECUREAUTH_COMBO_BOX #include -#include "modest-account-mgr/modest-protocol-info.h" +#include "modest-protocol-info.h" G_BEGIN_DECLS diff --git a/src/maemo/easysetup/modest-easysetup-serversecurity-combo-box.h b/src/maemo/easysetup/modest-easysetup-serversecurity-combo-box.h index fb08ec7..916858c 100644 --- a/src/maemo/easysetup/modest-easysetup-serversecurity-combo-box.h +++ b/src/maemo/easysetup/modest-easysetup-serversecurity-combo-box.h @@ -7,7 +7,7 @@ #define _EASYSETUP_SERVERSECURITY_COMBO_BOX #include -#include "modest-account-mgr/modest-protocol-info.h" +#include "modest-protocol-info.h" G_BEGIN_DECLS diff --git a/src/maemo/easysetup/modest-easysetup-servertype-combo-box.h b/src/maemo/easysetup/modest-easysetup-servertype-combo-box.h index 76c4aee..a4b97ea 100644 --- a/src/maemo/easysetup/modest-easysetup-servertype-combo-box.h +++ b/src/maemo/easysetup/modest-easysetup-servertype-combo-box.h @@ -7,7 +7,7 @@ #define _EASYSETUP_SERVERTYPE_COMBO_BOX #include -#include "modest-account-mgr/modest-protocol-info.h" +#include "modest-protocol-info.h" G_BEGIN_DECLS diff --git a/src/maemo/easysetup/modest-easysetup-wizard.c b/src/maemo/easysetup/modest-easysetup-wizard.c index a9eaed6..008a064 100644 --- a/src/maemo/easysetup/modest-easysetup-wizard.c +++ b/src/maemo/easysetup/modest-easysetup-wizard.c @@ -22,7 +22,7 @@ #include "modest-easysetup-secureauth-combo-box.h" #include "modest-validating-entry.h" #include "modest-text-utils.h" -#include "modest-account-mgr/modest-account-mgr.h" +#include "modest-account-mgr.h" #include #include /* For strlen(). */ diff --git a/src/maemo/easysetup/modest-easysetup-wizard.h b/src/maemo/easysetup/modest-easysetup-wizard.h index 8958873..5e132bc 100644 --- a/src/maemo/easysetup/modest-easysetup-wizard.h +++ b/src/maemo/easysetup/modest-easysetup-wizard.h @@ -8,7 +8,7 @@ /* #include */ #include "modest-wizard-dialog.h" /* We use a copied-and-improved HildonWizardDialog. */ -#include "modest-account-mgr/modest-account-mgr.h" +#include "modest-account-mgr.h" #include G_BEGIN_DECLS diff --git a/src/maemo/easysetup/modest-text-utils.c b/src/maemo/easysetup/modest-text-utils.c deleted file mode 100644 index 875c20d..0000000 --- a/src/maemo/easysetup/modest-text-utils.c +++ /dev/null @@ -1,923 +0,0 @@ -/* Copyright (c) 2006, Nokia Corporation - * All rights reserved. - * - */ - - -#include -#include -#include -#include -#include -#include - - -#ifdef HAVE_CONFIG_H -#include -#endif /*HAVE_CONFIG_H */ - -/* defines */ -#define FORWARD_STRING _("-----Forwarded Message-----") -#define FROM_STRING _("From:") -#define SENT_STRING _("Sent:") -#define TO_STRING _("To:") -#define SUBJECT_STRING _("Subject:") -#define EMPTY_STRING "" - -/* - * we need these regexps to find URLs in plain text e-mails - */ -typedef struct _url_match_pattern_t url_match_pattern_t; -struct _url_match_pattern_t { - gchar *regex; - regex_t *preg; - gchar *prefix; -}; - -typedef struct _url_match_t url_match_t; -struct _url_match_t { - guint offset; - guint len; - const gchar* prefix; -}; - -#define MAIL_VIEWER_URL_MATCH_PATTERNS { \ - { "(file|rtsp|http|ftp|https)://[-A-Za-z0-9_$.+!*(),;:@%&=?/~#]+[-A-Za-z0-9_$%&=?/~#]",\ - NULL, NULL },\ - { "www\\.[-a-z0-9.]+[-a-z0-9](:[0-9]*)?(/[-A-Za-z0-9_$.+!*(),;:@%&=?/~#]*[^]}\\),?!;:\"]?)?",\ - NULL, "http://" },\ - { "ftp\\.[-a-z0-9.]+[-a-z0-9](:[0-9]*)?(/[-A-Za-z0-9_$.+!*(),;:@%&=?/~#]*[^]}\\),?!;:\"]?)?",\ - NULL, "ftp://" },\ - { "(voipto|callto|chatto|jabberto|xmpp):[-_a-z@0-9.\\+]+", \ - NULL, NULL}, \ - { "mailto:[-_a-z0-9.\\+]+@[-_a-z0-9.]+", \ - NULL, NULL},\ - { "[-_a-z0-9.\\+]+@[-_a-z0-9.]+",\ - NULL, "mailto:"}\ - } - -/* private */ -static gchar* cite (const time_t sent_date, const gchar *from); -static void hyperlinkify_plain_text (GString *txt); -static gint cmp_offsets_reverse (const url_match_t *match1, const url_match_t *match2); -static void chk_partial_match (const url_match_t *match, guint* offset); -static GSList* get_url_matches (GString *txt); - -static GString* get_next_line (const char *b, const gsize blen, const gchar * iter); -static int get_indent_level (const char *l); -static void unquote_line (GString * l); -static void append_quoted (GString * buf, const int indent, const GString * str, - const int cutpoint); -static int get_breakpoint_utf8 (const gchar * s, const gint indent, const gint limit); -static int get_breakpoint_ascii (const gchar * s, const gint indent, const gint limit); -static int get_breakpoint (const gchar * s, const gint indent, const gint limit); - -static gchar* modest_text_utils_quote_plain_text (const gchar *text, - const gchar *cite, - int limit); - -static gchar* modest_text_utils_quote_html (const gchar *text, - const gchar *cite, - int limit); - - -/* ******************************************************************* */ -/* ************************* PUBLIC FUNCTIONS ************************ */ -/* ******************************************************************* */ - -gchar * -modest_text_utils_quote (const gchar *text, - const gchar *content_type, - const gchar *from, - const time_t sent_date, - int limit) -{ - gchar *retval, *cited; - - g_return_val_if_fail (text, NULL); - g_return_val_if_fail (content_type, NULL); - - cited = cite (sent_date, from); - - if (content_type && strcmp (content_type, "text/html") == 0) - /* TODO: extract the of the HTML and pass it to - the function */ - retval = modest_text_utils_quote_html (text, cited, limit); - else - retval = modest_text_utils_quote_plain_text (text, cited, limit); - - g_free (cited); - - return retval; -} - - -gchar * -modest_text_utils_cite (const gchar *text, - const gchar *content_type, - const gchar *from, - time_t sent_date) -{ - gchar *tmp, *retval; - - g_return_val_if_fail (text, NULL); - g_return_val_if_fail (content_type, NULL); - - tmp = cite (sent_date, from); - retval = g_strdup_printf ("%s%s\n", tmp, text); - g_free (tmp); - - return retval; -} - -gchar * -modest_text_utils_inline (const gchar *text, - const gchar *content_type, - const gchar *from, - time_t sent_date, - const gchar *to, - const gchar *subject) -{ - gchar sent_str[101]; - const gchar *plain_format = "%s\n%s %s\n%s %s\n%s %s\n%s %s\n\n%s"; - const gchar *html_format = \ - "%s
\n\n" \ - "\n" \ - "\n" \ - "\n" \ - "\n" \ - "

%s"; - const gchar *format; - - g_return_val_if_fail (text, NULL); - g_return_val_if_fail (content_type, NULL); - g_return_val_if_fail (text, NULL); - - modest_text_utils_strftime (sent_str, 100, "%c", sent_date); - - if (!strcmp (content_type, "text/html")) - /* TODO: extract the of the HTML and pass it to - the function */ - format = html_format; - else - format = plain_format; - - return g_strdup_printf (format, - FORWARD_STRING, - FROM_STRING, (from) ? from : EMPTY_STRING, - SENT_STRING, sent_str, - TO_STRING, (to) ? to : EMPTY_STRING, - SUBJECT_STRING, (subject) ? subject : EMPTY_STRING, - text); -} - -/* just to prevent warnings: - * warning: `%x' yields only last 2 digits of year in some locales - */ -gsize -modest_text_utils_strftime(char *s, gsize max, const char *fmt, time_t timet) -{ - static GDate date; - - /* does not work on old maemo glib: - * g_date_set_time_t (&date, timet); - */ - g_date_set_time (&date, (GTime) timet); - - return g_date_strftime (s, max, fmt, (const GDate*) &date); -} - -gchar * -modest_text_utils_derived_subject (const gchar *subject, const gchar *prefix) -{ - gchar *tmp; - - g_return_val_if_fail (prefix, NULL); - - if (!subject) - return g_strdup (prefix); - - tmp = g_strchug (g_strdup (subject)); - - if (!strncmp (tmp, prefix, strlen (prefix))) { - return tmp; - } else { - g_free (tmp); - return g_strdup_printf ("%s %s", prefix, subject); - } -} - -gchar* -modest_text_utils_remove_address (const gchar *address_list, const gchar *address) -{ - gchar *dup, *token, *ptr, *result; - GString *filtered_emails; - - g_return_val_if_fail (address_list, NULL); - - if (!address) - return g_strdup (address_list); - - /* search for substring */ - if (!strstr ((const char *) address_list, (const char *) address)) - return g_strdup (address_list); - - dup = g_strdup (address_list); - filtered_emails = g_string_new (NULL); - - token = strtok_r (dup, ",", &ptr); - - while (token != NULL) { - /* Add to list if not found */ - if (!strstr ((const char *) token, (const char *) address)) { - if (filtered_emails->len == 0) - g_string_append_printf (filtered_emails, "%s", g_strstrip (token)); - else - g_string_append_printf (filtered_emails, ",%s", g_strstrip (token)); - } - token = strtok_r (NULL, ",", &ptr); - } - result = filtered_emails->str; - - /* Clean */ - g_free (dup); - g_string_free (filtered_emails, FALSE); - - return result; -} - -gchar* -modest_text_utils_convert_to_html (const gchar *data) -{ - guint i; - gboolean first_space = TRUE; - GString *html; - gsize len; - - if (!data) - return NULL; - - len = strlen (data); - html = g_string_sized_new (len + 100); /* just a guess... */ - - g_string_append_printf (html, - "" - "" - "" - "" - ""); - - /* replace with special html chars where needed*/ - for (i = 0; i != len; ++i) { - char kar = data[i]; - switch (kar) { - - case 0: break; /* ignore embedded \0s */ - case '<' : g_string_append (html, "<"); break; - case '>' : g_string_append (html, ">"); break; - case '&' : g_string_append (html, """); break; - case '\n': g_string_append (html, "
\n"); break; - default: - if (kar == ' ') { - g_string_append (html, first_space ? " " : " "); - first_space = FALSE; - } else if (kar == '\t') - g_string_append (html, "    "); - else { - int charnum = 0; - first_space = TRUE; - /* optimization trick: accumulate 'normal' chars, then copy */ - do { - kar = data [++charnum + i]; - - } while ((i + charnum < len) && - (kar > '>' || (kar != '<' && kar != '>' - && kar != '&' && kar != ' ' - && kar != '\n' && kar != '\t'))); - g_string_append_len (html, &data[i], charnum); - i += (charnum - 1); - } - } - } - - g_string_append (html, "
"); - hyperlinkify_plain_text (html); - - return g_string_free (html, FALSE); -} - -GSList * -modest_text_utils_split_addresses_list (const gchar *addresses) -{ - gchar *current, *start, *last_blank; - GSList *result = NULL; - - start = (gchar *) addresses; - current = start; - last_blank = start; - - while (*current != '\0') { - if ((start == current)&&((*current == ' ')||(*current == ','))) { - start++; - last_blank = current; - } else if (*current == ',') { - gchar *new_address = NULL; - new_address = g_strndup (start, current - last_blank); - result = g_slist_prepend (result, new_address); - start = current + 1; - last_blank = start; - } else if (*current == '\"') { - if (current == start) { - current++; - start++; - } - while ((*current != '\"')&&(*current != '\0')) - current++; - } - - current++; - } - - if (start != current) { - gchar *new_address = NULL; - new_address = g_strndup (start, current - last_blank); - result = g_slist_prepend (result, new_address); - } - - result = g_slist_reverse (result); - return result; - -} - -void -modest_text_utils_address_range_at_position (const gchar *recipients_list, - gint position, - gint *start, - gint *end) -{ - gchar *current = NULL; - gint range_start = 0; - gint range_end = 0; - gint index; - gboolean is_quoted = FALSE; - - index = 0; - for (current = (gchar *) recipients_list; *current != '\0'; current = g_utf8_find_next_char (current, NULL)) { - gunichar c = g_utf8_get_char (current); - - if ((c == ',') && (!is_quoted)) { - if (index < position) { - range_start = index + 1; - } else { - break; - } - } else if (c == '\"') { - is_quoted = !is_quoted; - } else if ((c == ' ') &&(range_start == index)) { - range_start ++; - } - index ++; - range_end = index; - } - - if (start) - *start = range_start; - if (end) - *end = range_end; -} - - -/* ******************************************************************* */ -/* ************************* UTILIY FUNCTIONS ************************ */ -/* ******************************************************************* */ - -static GString * -get_next_line (const gchar * b, const gsize blen, const gchar * iter) -{ - GString *gs; - const gchar *i0; - - if (iter > b + blen) - return g_string_new(""); - - i0 = iter; - while (iter[0]) { - if (iter[0] == '\n') - break; - iter++; - } - gs = g_string_new_len (i0, iter - i0); - return gs; -} -static int -get_indent_level (const char *l) -{ - int indent = 0; - - while (l[0]) { - if (l[0] == '>') { - indent++; - if (l[1] == ' ') { - l++; - } - } else { - break; - } - l++; - - } - - /* if we hit the signature marker "-- ", we return -(indent + 1). This - * stops reformatting. - */ - if (strcmp (l, "-- ") == 0) { - return -1 - indent; - } else { - return indent; - } -} - -static void -unquote_line (GString * l) -{ - gchar *p; - - p = l->str; - while (p[0]) { - if (p[0] == '>') { - if (p[1] == ' ') { - p++; - } - } else { - break; - } - p++; - } - g_string_erase (l, 0, p - l->str); -} - -static void -append_quoted (GString * buf, int indent, const GString * str, - const int cutpoint) -{ - int i; - - indent = indent < 0 ? abs (indent) - 1 : indent; - for (i = 0; i <= indent; i++) { - g_string_append (buf, "> "); - } - if (cutpoint > 0) { - g_string_append_len (buf, str->str, cutpoint); - } else { - g_string_append (buf, str->str); - } - g_string_append (buf, "\n"); -} - -static int -get_breakpoint_utf8 (const gchar * s, gint indent, const gint limit) -{ - gint index = 0; - const gchar *pos, *last; - gunichar *uni; - - indent = indent < 0 ? abs (indent) - 1 : indent; - - last = NULL; - pos = s; - uni = g_utf8_to_ucs4_fast (s, -1, NULL); - while (pos[0]) { - if ((index + 2 * indent > limit) && last) { - g_free (uni); - return last - s; - } - if (g_unichar_isspace (uni[index])) { - last = pos; - } - pos = g_utf8_next_char (pos); - index++; - } - g_free (uni); - return strlen (s); -} - -static int -get_breakpoint_ascii (const gchar * s, const gint indent, const gint limit) -{ - gint i, last; - - last = strlen (s); - if (last + 2 * indent < limit) - return last; - - for (i = strlen (s); i > 0; i--) { - if (s[i] == ' ') { - if (i + 2 * indent <= limit) { - return i; - } else { - last = i; - } - } - } - return last; -} - -static int -get_breakpoint (const gchar * s, const gint indent, const gint limit) -{ - - if (g_utf8_validate (s, -1, NULL)) { - return get_breakpoint_utf8 (s, indent, limit); - } else { /* assume ASCII */ - //g_warning("invalid UTF-8 in msg"); - return get_breakpoint_ascii (s, indent, limit); - } -} - -static gchar * -cite (const time_t sent_date, const gchar *from) -{ - gchar sent_str[101]; - - /* format sent_date */ - modest_text_utils_strftime (sent_str, 100, "%c", sent_date); - return g_strdup_printf (N_("On %s, %s wrote:\n"), - sent_str, - (from) ? from : EMPTY_STRING); -} - - -static gchar * -modest_text_utils_quote_plain_text (const gchar *text, - const gchar *cite, - int limit) -{ - const gchar *iter; - gint indent, breakpoint, rem_indent = 0; - GString *q, *l, *remaining; - gsize len; - - /* remaining will store the rest of the line if we have to break it */ - q = g_string_new (cite); - remaining = g_string_new (""); - - iter = text; - len = strlen(text); - do { - l = get_next_line (text, len, iter); - iter = iter + l->len + 1; - indent = get_indent_level (l->str); - unquote_line (l); - - if (remaining->len) { - if (l->len && indent == rem_indent) { - g_string_prepend (l, " "); - g_string_prepend (l, remaining->str); - } else { - do { - breakpoint = - get_breakpoint (remaining->str, - rem_indent, - limit); - append_quoted (q, rem_indent, - remaining, breakpoint); - g_string_erase (remaining, 0, - breakpoint); - if (remaining->str[0] == ' ') { - g_string_erase (remaining, 0, - 1); - } - } while (remaining->len); - } - } - g_string_free (remaining, TRUE); - breakpoint = get_breakpoint (l->str, indent, limit); - remaining = g_string_new (l->str + breakpoint); - if (remaining->str[0] == ' ') { - g_string_erase (remaining, 0, 1); - } - rem_indent = indent; - append_quoted (q, indent, l, breakpoint); - g_string_free (l, TRUE); - } while ((iter < text + len) || (remaining->str[0])); - - return g_string_free (q, FALSE); -} - -static gchar* -modest_text_utils_quote_html (const gchar *text, - const gchar *cite, - int limit) -{ - const gchar *format = \ - "\n" \ - "\n" \ - "\n" \ - "%s" \ - "
\n%s\n
\n" \ - "\n" \ - "\n"; - - return g_strdup_printf (format, cite, text); -} - -static gint -cmp_offsets_reverse (const url_match_t *match1, const url_match_t *match2) -{ - return match2->offset - match1->offset; -} - - - -/* - * check if the match is inside an existing match... */ -static void -chk_partial_match (const url_match_t *match, guint* offset) -{ - if (*offset >= match->offset && *offset < match->offset + match->len) - *offset = -1; -} - -static GSList* -get_url_matches (GString *txt) -{ - regmatch_t rm; - guint rv, i, offset = 0; - GSList *match_list = NULL; - - static url_match_pattern_t patterns[] = MAIL_VIEWER_URL_MATCH_PATTERNS; - const size_t pattern_num = sizeof(patterns)/sizeof(url_match_pattern_t); - - /* initalize the regexps */ - for (i = 0; i != pattern_num; ++i) { - patterns[i].preg = g_slice_new0 (regex_t); - - /* this should not happen */ - g_return_val_if_fail (regcomp (patterns[i].preg, patterns[i].regex, - REG_ICASE|REG_EXTENDED|REG_NEWLINE) == 0, NULL); - } - /* find all the matches */ - for (i = 0; i != pattern_num; ++i) { - offset = 0; - while (1) { - int test_offset; - if ((rv = regexec (patterns[i].preg, txt->str + offset, 1, &rm, 0)) != 0) { - g_return_val_if_fail (rv == REG_NOMATCH, NULL); /* this should not happen */ - break; /* try next regexp */ - } - if (rm.rm_so == -1) - break; - - /* FIXME: optimize this */ - /* to avoid partial matches on something that was already found... */ - /* check_partial_match will put -1 in the data ptr if that is the case */ - test_offset = offset + rm.rm_so; - g_slist_foreach (match_list, (GFunc)chk_partial_match, &test_offset); - - /* make a list of our matches ( tupels)*/ - if (test_offset != -1) { - url_match_t *match = g_slice_new (url_match_t); - match->offset = offset + rm.rm_so; - match->len = rm.rm_eo - rm.rm_so; - match->prefix = patterns[i].prefix; - match_list = g_slist_prepend (match_list, match); - } - offset += rm.rm_eo; - } - } - - for (i = 0; i != pattern_num; ++i) { - regfree (patterns[i].preg); - g_slice_free (regex_t, patterns[i].preg); - } /* don't free patterns itself -- it's static */ - - /* now sort the list, so the matches are in reverse order of occurence. - * that way, we can do the replacements starting from the end, so we don't need - * to recalculate the offsets - */ - match_list = g_slist_sort (match_list, - (GCompareFunc)cmp_offsets_reverse); - return match_list; -} - - - -static void -hyperlinkify_plain_text (GString *txt) -{ - GSList *cursor; - GSList *match_list = get_url_matches (txt); - - /* we will work backwards, so the offsets stay valid */ - for (cursor = match_list; cursor; cursor = cursor->next) { - - url_match_t *match = (url_match_t*) cursor->data; - gchar *url = g_strndup (txt->str + match->offset, match->len); - gchar *repl = NULL; /* replacement */ - - /* the prefix is NULL: use the one that is already there */ - repl = g_strdup_printf ("%s", - match->prefix ? match->prefix : EMPTY_STRING, - url, url); - - /* replace the old thing with our hyperlink - * replacement thing */ - g_string_erase (txt, match->offset, match->len); - g_string_insert (txt, match->offset, repl); - - g_free (url); - g_free (repl); - - g_slice_free (url_match_t, match); - } - - g_slist_free (match_list); -} - - - -gchar* -modest_text_utils_get_display_address (gchar *address) -{ - gchar *cursor; - - if (!address) - return NULL; - - g_return_val_if_fail (g_utf8_validate (address, -1, NULL), NULL); - - g_strchug (address); /* remove leading whitespace */ - - /* from display name */ - cursor = g_strstr_len (address, strlen(address), "<"); - if (cursor == address) /* there's nothing else? leave it */ - return address; - if (cursor) - cursor[0]='\0'; - - /* remove (bla bla) from display name */ - cursor = g_strstr_len (address, strlen(address), "("); - if (cursor == address) /* there's nothing else? leave it */ - return address; - if (cursor) - cursor[0]='\0'; - - g_strchomp (address); /* remove trailing whitespace */ - - return address; -} - - - -gint -modest_text_utils_get_subject_prefix_len (const gchar *sub) -{ - gint i; - static const gchar* prefix[] = { - "Re:", "RE:", "Fwd:", "FWD:", "FW:", NULL - }; - - if (!sub || (sub[0] != 'R' && sub[0] != 'F')) /* optimization */ - return 0; - - i = 0; - - while (prefix[i]) { - if (g_str_has_prefix(sub, prefix[i])) { - int prefix_len = strlen(prefix[i]); - if (sub[prefix_len] == ' ') - ++prefix_len; /* ignore space after prefix as well */ - return prefix_len; - } - ++i; - } - return 0; -} - - -gint -modest_text_utils_utf8_strcmp (const gchar* s1, const gchar *s2, gboolean insensitive) -{ - gint result = 0; - gchar *n1, *n2; - - /* work even when s1 and/or s2 == NULL */ - if (G_UNLIKELY(s1 == s2)) - return 0; - - /* if it's not case sensitive */ - if (!insensitive) - return strcmp (s1 ? s1 : "", s2 ? s2 : ""); - - n1 = g_utf8_collate_key (s1 ? s1 : "", -1); - n2 = g_utf8_collate_key (s2 ? s2 : "", -1); - - result = strcmp (n1, n2); - - g_free (n1); - g_free (n2); - - return result; -} - - -gchar* -modest_text_utils_get_display_date (time_t date) -{ - time_t now; - const guint BUF_SIZE = 64; - gchar date_buf[BUF_SIZE]; - gchar now_buf [BUF_SIZE]; - - now = time (NULL); - - modest_text_utils_strftime (date_buf, BUF_SIZE, "%x", date); - modest_text_utils_strftime (now_buf, BUF_SIZE, "%x", now); /* today */ - - /* if this is today, get the time instead of the date */ - if (strcmp (date_buf, now_buf) == 0) - modest_text_utils_strftime (date_buf, BUF_SIZE, _("%X"), date); - - return g_strdup(date_buf); -} - -gboolean -modest_text_utils_validate_email_address (const gchar *email_address) -{ - int count = 0; - const gchar *c = NULL, *domain = NULL; - static gchar *rfc822_specials = "()<>@,;:\\\"[]"; - - /* first we validate the name portion (name@domain) */ - for (c = email_address; *c; c++) { - if (*c == '\"' && - (c == email_address || - *(c - 1) == '.' || - *(c - 1) == '\"')) { - while (*++c) { - if (*c == '\"') - break; - if (*c == '\\' && (*++c == ' ')) - continue; - if (*c <= ' ' || *c >= 127) - return FALSE; - } - if (!*c++) - return FALSE; - if (*c == '@') - break; - if (*c != '.') - return FALSE; - continue; - } - if (*c == '@') - break; - if (*c <= ' ' || *c >= 127) - return FALSE; - if (strchr(rfc822_specials, *c)) - return FALSE; - } - if (c == email_address || *(c - 1) == '.') - return FALSE; - - /* next we validate the domain portion (name@domain) */ - if (!*(domain = ++c)) - return FALSE; - do { - if (*c == '.') { - if (c == domain || *(c - 1) == '.') - return FALSE; - count++; - } - if (*c <= ' ' || *c >= 127) - return FALSE; - if (strchr(rfc822_specials, *c)) - return FALSE; - } while (*++c); - - return (count >= 1) ? TRUE : FALSE; -} - - - - -gchar * -modest_text_utils_get_display_size (guint size) -{ - const guint KB=1024; - const guint MB=1024 * KB; - const guint GB=1024 * MB; - const guint TB=1024 * GB; - - if (size < KB) - return g_strdup_printf (_("%0.1f Kb"), (double)size / KB); - else if (size < MB) - return g_strdup_printf (_("%d Kb"), size / KB); - else if (size < GB) - return g_strdup_printf (_("%d Mb"), size / MB); - else if (size < TB) - return g_strdup_printf (_("%d Gb"), size/ GB); - else - return g_strdup_printf (_("Very big")); -} diff --git a/src/maemo/easysetup/modest-text-utils.h b/src/maemo/easysetup/modest-text-utils.h deleted file mode 100644 index 18dea34..0000000 --- a/src/maemo/easysetup/modest-text-utils.h +++ /dev/null @@ -1,253 +0,0 @@ -/* Copyright (c) 2006, Nokia Corporation - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the Nokia Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -/* modest-text-utils.h */ - -#ifndef __MODEST_TEXT_UTILS_H__ -#define __MODEST_TEXT_UTILS_H__ - -#include -#include - -/** - * modest_text_utils_derived_subject: - * @subject: a string which contains the original subject - * @prefix: the prefix for the new subject (such as 'Re:' or 'Fwd:'), - * must not be NULL - * - * create a 'derived' subject line for eg. replies and forwards - * - * Returns: a newly allocated string containing the resulting subject - * subject == NULL, then @prefix " " will be returned - */ -gchar* modest_text_utils_derived_subject (const gchar *subject, - const gchar* prefix); - - -/** - * modest_text_utils_quote: - * @text: a non-NULL string which contains the message to quote - * @from: a non-NULL sender of the original message - * @content_type: the non-NULL content type for the quoting, e.g. "text/html" - * @sent_date: sent date/time of the original message - * @limit: specifies the maximum characters per line in the quoted text - * - * quote an existing message - * - * Returns: a newly allocated string containing the quoted message - */ -gchar* modest_text_utils_quote (const gchar *text, - const gchar *content_type, - const gchar *from, - const time_t sent_date, - int limit); - - -/** - * modest_text_utils_cited_text: - * @from: sender of the message - * @sent_date: the sent date of the original message - * @text: the text of the original message - * - * cite the text in a message - * - * Returns: a newly allocated string containing the cited text - */ -gchar* modest_text_utils_cite (const gchar *text, - const gchar *content_type, - const gchar *from, - time_t sent_date); - -/** - * modest_text_utils_inlined_text - * @from: the non-NULL sender of the original message - * @sent_date: sent date/time of the original message - * @to: - * @subject: - * @text: - * - * creates a new string with the "Original message" text prepended to - * the text passed as argument and some data of the header - * - * Returns: a newly allocated string containing the quoted message - */ -gchar* modest_text_utils_inline (const gchar *text, - const gchar *content_type, - const gchar *from, - time_t sent_date, - const gchar *to, - const gchar *subject); - -/** - * modest_text_utils_remove_address - * @address_list: none-NULL string with a comma-separated list of email addresses - * @address: an specific e-mail address - * - * remove a specific address from a list of email addresses; if @address - * is NULL, returns an unchanged @address_list - * - * Returns: a newly allocated string containing the new list, or NULL - * in case of error or the original @address_list was NULL - */ -gchar* modest_text_utils_remove_address (const gchar *address_list, - const gchar *address); - -/** - * modest_text_utils_address_range_at_position: - * @address_list: utf8 string containing a list of addresses - * @position: a gint - * @start: a gint pointer - * @end: a gint pointer - * - * Finds the start and end positions of the address at @position, - * in @recipients_list, a list of addresses in the format of a - * recipient list in email. It stores the results in @start and - * @end - */ -void modest_text_utils_address_range_at_position (const gchar *recipients_list, - gint position, - gint *start, - gint *end); - - -/** - * modest_text_utils_convert_to_html: - * @txt: a string which contains the message to quote - * - * convert plain text (utf8) into html - * - * Returns: a newly allocated string containing the html - */ -gchar* modest_text_utils_convert_to_html (const gchar *txt); - - -/** - * modest_text_utils_strftime: - * @s: - * @max: - * @fmt: - * @timet: - * - * this is just an alias for strftime(3), so we can use that without - * getting warning from gcc - * - * Returns: a formatted string of max length @max in @s - */ -size_t modest_text_utils_strftime(char *s, size_t max, const char *fmt, time_t timet); - - - -/** - * modest_text_utils_get_display_addres: - * @address: original address (UTF8 string) - * - * make a 'display address' from an address: - * "Foo Bar (Bla)" --> "Foo Bar" - * ie. removes "<...>" and "(...)" parts - * the change is in-place; removes leading/trailing whitespace - * - * Returns: the new address. The string is *not* newly allocated. - * NULL in case of error - */ -gchar* modest_text_utils_get_display_address (gchar *address); - - -/** - * modest_text_utils_get_subject_prefix_len: - * @subject: original subject (UTF8 string) - * - * determine the length of the "Re:/RE:/Fwd:" prefix in an e-mail address - * - * Returns: the length of the prefix, or 0 if there is none - */ -gint modest_text_utils_get_subject_prefix_len (const gchar *subject); - - -/** - * modest_text_utils_utf8_strcmp: - * @s1: the first string - * @s2: the second string - * @insensitive: should the comparison be case-insensitive? - * - * a strcmp that is NULL-safe, can deal with UTF8 and case-insensitive comparison - * - * Returns: an integer less than, equal to, or greater than zero if s1 is found, - * respectively, to be less than, to match, or be greater than s2. - */ -gint modest_text_utils_utf8_strcmp (const gchar* s1, const gchar *s2, gboolean insensitive); - - - -/** - * modest_text_utils_get_display_date: - * @date: the date to display - * - * get a string representation for a date. - * - * Returns: the new display date, as a newly allocated string; - * free with g_free - */ -gchar* modest_text_utils_get_display_date (time_t date); - - -/** - * modest_text_utils_get_display_size: - * @size: size in bytes - * - * get a string representation for a size in bytes. - * - * Returns: the newly allocated display string for the - * size in bytes. must be freed. - */ -gchar * modest_text_utils_get_display_size (guint size); - - -/** - * modest_text_utils_validate_email_address: - * @email_address: a string - * - * validates the email address passed as argument - * - * Returns: TRUE if the address is valid, FALSE otherwise - **/ -gboolean modest_text_utils_validate_email_address (const gchar *email_address); - -/** - * modest_text_utils_split_addresses_list: - * @addresses: a string - * - * obtains a GSList of addresses from a string of addresses - * in the format understood by email protocols - * - * Returns: a GSList of strings - **/ -GSList *modest_text_utils_split_addresses_list (const gchar *addresses); - -#endif /* __MODEST_TEXT_UTILS_H__ */ diff --git a/src/maemo/modest-main-window-ui.h b/src/maemo/modest-main-window-ui.h index 1e5397a..f70f3f3 100644 --- a/src/maemo/modest-main-window-ui.h +++ b/src/maemo/modest-main-window-ui.h @@ -95,7 +95,7 @@ static const GtkActionEntry modest_action_entries [] = { { "FoldersMoveToTrash", NULL, N_("Move to trash"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_move_folder_to_trash_folder) }, /* Accounts */ - { "AccountsNew", NULL, N_("_New account..."), NULL, NULL, NULL }, + { "AccountsNew", NULL, N_("_New account..."), NULL, NULL, G_CALLBACK (modest_ui_actions_on_new_account) }, { "AccountsManage", NULL, N_("Manage..."), NULL, NULL, G_CALLBACK (modest_ui_actions_on_accounts) }, { "AccountsConfigureSMTP", NULL, N_("Configure SMTP servers..."), NULL, NULL, NULL }, diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 027f0ed..f979316 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -48,6 +48,7 @@ #include "modest-account-mgr-helpers.h" #include "modest-mail-operation.h" +#include "easysetup/modest-easysetup-wizard.h" #include #include #include @@ -236,6 +237,15 @@ modest_ui_actions_on_accounts (GtkAction *action, ModestWindow *win) } void +modest_ui_actions_on_new_account (GtkAction *action, ModestWindow *win) +{ + ModestEasysetupWizardDialog *wizard = modest_easysetup_wizard_dialog_new (); + gtk_window_set_transient_for (GTK_WINDOW (wizard), win); + gtk_dialog_run (GTK_DIALOG (wizard)); + gtk_widget_destroy (wizard); +} + +void modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win) { ModestWindow *msg_win; diff --git a/src/modest-ui-actions.h b/src/modest-ui-actions.h index d85e601..cd5c1d2 100644 --- a/src/modest-ui-actions.h +++ b/src/modest-ui-actions.h @@ -43,6 +43,8 @@ void modest_ui_actions_on_delete (GtkAction *action, ModestWindow *wi void modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win); +void modest_ui_actions_on_new_account (GtkAction *action, ModestWindow *win); + void modest_ui_actions_on_accounts (GtkAction *action, ModestWindow *win); void modest_ui_actions_on_add_to_contacts (GtkAction *action, ModestWindow *win);
%s%s
%s%s
%s%s
%s%s