[evolution] eds-I#372 - SMTP: Add option to not re-encode message on upload
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] eds-I#372 - SMTP: Add option to not re-encode message on upload
- Date: Mon, 24 Jan 2022 17:09:55 +0000 (UTC)
commit 1a891f6ef76a274a6b76881440ac69d5fe3cc57d
Author: Milan Crha <mcrha redhat com>
Date: Mon Jan 24 18:09:21 2022 +0100
eds-I#372 - SMTP: Add option to not re-encode message on upload
Related to https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/372
src/mail/e-mail-config-provider-page.c | 224 ++++++++++-----------
src/mail/e-mail-config-provider-page.h | 6 +
.../mail-config/e-mail-config-smtp-backend.c | 3 +
3 files changed, 115 insertions(+), 118 deletions(-)
---
diff --git a/src/mail/e-mail-config-provider-page.c b/src/mail/e-mail-config-provider-page.c
index d65f37db7d..bcb9cd0ee8 100644
--- a/src/mail/e-mail-config-provider-page.c
+++ b/src/mail/e-mail-config-provider-page.c
@@ -56,12 +56,10 @@ G_DEFINE_TYPE_WITH_CODE (
e_mail_config_provider_page_interface_init))
static void
-mail_config_provider_page_handle_dependency (EMailConfigProviderPage *page,
+mail_config_provider_page_handle_dependency (CamelSettings *settings,
CamelProviderConfEntry *entry,
GtkWidget *widget)
{
- EMailConfigServiceBackend *backend;
- CamelSettings *settings;
GBindingFlags binding_flags = G_BINDING_SYNC_CREATE;
const gchar *depname = entry->depname;
gint margin;
@@ -74,9 +72,6 @@ mail_config_provider_page_handle_dependency (EMailConfigProviderPage *page,
depname++;
}
- backend = e_mail_config_provider_page_get_backend (page);
- settings = e_mail_config_service_backend_get_settings (backend);
-
e_binding_bind_property (
settings, depname,
widget, "sensitive",
@@ -88,20 +83,16 @@ mail_config_provider_page_handle_dependency (EMailConfigProviderPage *page,
}
static void
-mail_config_provider_page_add_section (EMailConfigProviderPage *page,
- GtkBox *main_box,
- CamelProviderConfEntry *entry)
+mail_config_provider_page_add_section (GtkBox *main_box,
+ CamelProvider *provider,
+ CamelProviderConfEntry *entry,
+ gboolean skip_first_section_name)
{
- EMailConfigServiceBackend *backend;
- CamelProvider *provider;
GtkWidget *widget;
gchar *markup;
g_return_if_fail (entry->text != NULL);
- backend = e_mail_config_provider_page_get_backend (page);
- provider = e_mail_config_service_backend_get_provider (backend);
-
markup = g_markup_printf_escaped ("<b>%s</b>", entry->text);
widget = gtk_label_new (markup);
@@ -111,26 +102,21 @@ mail_config_provider_page_add_section (EMailConfigProviderPage *page,
gtk_widget_show (widget);
/* Skip the top margin if this is the first entry. */
- if (entry != provider->extra_conf)
+ if (entry != provider->extra_conf || !skip_first_section_name)
gtk_widget_set_margin_top (widget, 6);
g_free (markup);
}
static void
-mail_config_provider_page_add_checkbox (EMailConfigProviderPage *page,
- GtkBox *main_box,
- CamelProviderConfEntry *entry)
+mail_config_provider_page_add_checkbox (GtkBox *main_box,
+ CamelSettings *settings,
+ CamelProviderConfEntry *entry)
{
- EMailConfigServiceBackend *backend;
- CamelSettings *settings;
GtkWidget *widget;
g_return_if_fail (entry->text != NULL);
- backend = e_mail_config_provider_page_get_backend (page);
- settings = e_mail_config_service_backend_get_settings (backend);
-
widget = gtk_check_button_new_with_mnemonic (entry->text);
gtk_widget_set_margin_left (widget, STANDARD_MARGIN);
gtk_box_pack_start (main_box, widget, FALSE, FALSE, 0);
@@ -142,16 +128,14 @@ mail_config_provider_page_add_checkbox (EMailConfigProviderPage *page,
G_BINDING_BIDIRECTIONAL |
G_BINDING_SYNC_CREATE);
- mail_config_provider_page_handle_dependency (page, entry, widget);
+ mail_config_provider_page_handle_dependency (settings, entry, widget);
}
static void
-mail_config_provider_page_add_checkspin (EMailConfigProviderPage *page,
- GtkBox *main_box,
- CamelProviderConfEntry *entry)
+mail_config_provider_page_add_checkspin (GtkBox *main_box,
+ CamelSettings *settings,
+ CamelProviderConfEntry *entry)
{
- EMailConfigServiceBackend *backend;
- CamelSettings *settings;
GObjectClass *class;
GParamSpec *pspec;
GParamSpec *use_pspec;
@@ -163,9 +147,6 @@ mail_config_provider_page_add_checkspin (EMailConfigProviderPage *page,
g_return_if_fail (entry->text != NULL);
- backend = e_mail_config_provider_page_get_backend (page);
- settings = e_mail_config_service_backend_get_settings (backend);
-
/* The entry->name property (e.g. "foo") should be numeric for the
* spin button. If a "use" boolean property exists (e.g. "use-foo")
* then a checkbox is also shown. */
@@ -316,25 +297,20 @@ mail_config_provider_page_add_checkspin (EMailConfigProviderPage *page,
gtk_widget_show (label);
}
- mail_config_provider_page_handle_dependency (page, entry, hbox);
+ mail_config_provider_page_handle_dependency (settings, entry, hbox);
}
static void
-mail_config_provider_page_add_entry (EMailConfigProviderPage *page,
- GtkBox *main_box,
- CamelProviderConfEntry *entry)
+mail_config_provider_page_add_entry (GtkBox *main_box,
+ CamelSettings *settings,
+ CamelProviderConfEntry *entry)
{
- EMailConfigServiceBackend *backend;
- CamelSettings *settings;
GtkWidget *hbox;
GtkWidget *input;
GtkWidget *label;
g_return_if_fail (entry->text != NULL);
- backend = e_mail_config_provider_page_get_backend (page);
- settings = e_mail_config_service_backend_get_settings (backend);
-
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_set_spacing (GTK_BOX (hbox), 6);
gtk_widget_set_margin_left (hbox, STANDARD_MARGIN);
@@ -362,12 +338,12 @@ mail_config_provider_page_add_entry (EMailConfigProviderPage *page,
label, "sensitive",
G_BINDING_SYNC_CREATE);
- mail_config_provider_page_handle_dependency (page, entry, hbox);
+ mail_config_provider_page_handle_dependency (settings, entry, hbox);
}
static void
-mail_config_provider_page_add_label (EMailConfigProviderPage *page,
- GtkBox *main_box,
+mail_config_provider_page_add_label (GtkBox *main_box,
+ CamelSettings *settings,
CamelProviderConfEntry *entry)
{
GtkWidget *hbox;
@@ -386,17 +362,15 @@ mail_config_provider_page_add_label (EMailConfigProviderPage *page,
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
- mail_config_provider_page_handle_dependency (page, entry, hbox);
+ mail_config_provider_page_handle_dependency (settings, entry, hbox);
}
static void
-mail_config_provider_page_add_options (EMailConfigProviderPage *page,
- GtkBox *main_box,
+mail_config_provider_page_add_options (GtkBox *main_box,
+ CamelProvider *provider,
+ CamelSettings *settings,
CamelProviderConfEntry *entry)
{
- EMailConfigServiceBackend *backend;
- CamelProvider *provider;
- CamelSettings *settings;
GtkCellRenderer *renderer;
GtkListStore *store;
GtkWidget *hbox;
@@ -415,10 +389,6 @@ mail_config_provider_page_add_options (EMailConfigProviderPage *page,
g_return_if_fail (entry->text != NULL);
g_return_if_fail (entry->value != NULL);
- backend = e_mail_config_provider_page_get_backend (page);
- provider = e_mail_config_service_backend_get_provider (backend);
- settings = e_mail_config_service_backend_get_settings (backend);
-
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_set_spacing (GTK_BOX (hbox), 6);
gtk_widget_set_margin_left (hbox, STANDARD_MARGIN);
@@ -475,12 +445,12 @@ mail_config_provider_page_add_options (EMailConfigProviderPage *page,
gtk_cell_layout_set_attributes (
GTK_CELL_LAYOUT (combo), renderer, "text", 1, NULL);
- mail_config_provider_page_handle_dependency (page, entry, hbox);
+ mail_config_provider_page_handle_dependency (settings, entry, hbox);
}
static void
-mail_config_provider_page_add_placeholder (EMailConfigProviderPage *page,
- GtkBox *main_box,
+mail_config_provider_page_add_placeholder (GtkBox *main_box,
+ CamelSettings *settings,
CamelProviderConfEntry *entry)
{
GtkWidget *hbox;
@@ -497,7 +467,82 @@ mail_config_provider_page_add_placeholder (EMailConfigProviderPage *page,
gtk_box_pack_start (main_box, hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
- mail_config_provider_page_handle_dependency (page, entry, hbox);
+ mail_config_provider_page_handle_dependency (settings, entry, hbox);
+}
+
+void
+e_mail_config_provider_add_widgets (CamelProvider *provider,
+ CamelSettings *settings,
+ GtkBox *main_box,
+ gboolean skip_first_section_name)
+{
+ CamelProviderConfEntry *entries;
+ gboolean first_section = skip_first_section_name;
+ gint ii;
+
+ if (!provider || !provider->extra_conf)
+ return;
+
+ g_return_if_fail (CAMEL_IS_SETTINGS (settings));
+ g_return_if_fail (GTK_IS_BOX (main_box));
+
+ /* Note the "text" member of each CamelProviderConfEntry is
+ * already localized, so we can use it directly in widgets. */
+
+ entries = provider->extra_conf;
+
+ /* Loop until we see CAMEL_PROVIDER_CONF_END. */
+ for (ii = 0; entries[ii].type != CAMEL_PROVIDER_CONF_END; ii++) {
+
+ /* Skip entries with no name. */
+ if (entries[ii].name == NULL)
+ continue;
+
+ switch (entries[ii].type) {
+ case CAMEL_PROVIDER_CONF_SECTION_START:
+ /* Skip the first section start. */
+ if (first_section) {
+ first_section = FALSE;
+ continue;
+ }
+ mail_config_provider_page_add_section (
+ main_box, provider, &entries[ii], skip_first_section_name);
+ break;
+
+ case CAMEL_PROVIDER_CONF_CHECKBOX:
+ mail_config_provider_page_add_checkbox (
+ main_box, settings, &entries[ii]);
+ break;
+
+ case CAMEL_PROVIDER_CONF_CHECKSPIN:
+ mail_config_provider_page_add_checkspin (
+ main_box, settings, &entries[ii]);
+ break;
+
+ case CAMEL_PROVIDER_CONF_ENTRY:
+ mail_config_provider_page_add_entry (
+ main_box, settings, &entries[ii]);
+ break;
+
+ case CAMEL_PROVIDER_CONF_LABEL:
+ mail_config_provider_page_add_label (
+ main_box, settings, &entries[ii]);
+ break;
+
+ case CAMEL_PROVIDER_CONF_OPTIONS:
+ mail_config_provider_page_add_options (
+ main_box, provider, settings, &entries[ii]);
+ break;
+
+ case CAMEL_PROVIDER_CONF_PLACEHOLDER:
+ mail_config_provider_page_add_placeholder (
+ main_box, settings, &entries[ii]);
+ break;
+
+ default:
+ break; /* skip it */
+ }
+ }
}
static void
@@ -505,17 +550,15 @@ mail_config_provider_page_add_widgets (EMailConfigProviderPage *page,
GtkBox *main_box)
{
EMailConfigServiceBackend *backend;
- CamelProviderConfEntry *entries;
CamelProvider *provider;
+ CamelSettings *settings;
GtkWidget *container;
GtkWidget *widget;
ESource *source;
ESourceExtension *extension;
- gboolean first_section = TRUE;
const gchar *extension_name;
const gchar *text;
gchar *markup;
- gint ii;
/* XXX We begin the page with our own section header and refresh
* interval setting, and then skip the CamelProvider's first
@@ -529,6 +572,7 @@ mail_config_provider_page_add_widgets (EMailConfigProviderPage *page,
backend = e_mail_config_provider_page_get_backend (page);
source = e_mail_config_service_backend_get_source (backend);
+ settings = e_mail_config_service_backend_get_settings (backend);
provider = e_mail_config_service_backend_get_provider (backend);
g_return_if_fail (provider != NULL);
@@ -584,63 +628,7 @@ mail_config_provider_page_add_widgets (EMailConfigProviderPage *page,
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
gtk_widget_show (widget);
- /* Note the "text" member of each CamelProviderConfEntry is
- * already localized, so we can use it directly in widgets. */
-
- entries = provider->extra_conf;
-
- /* Loop until we see CAMEL_PROVIDER_CONF_END. */
- for (ii = 0; entries[ii].type != CAMEL_PROVIDER_CONF_END; ii++) {
-
- /* Skip entries with no name. */
- if (entries[ii].name == NULL)
- continue;
-
- switch (entries[ii].type) {
- case CAMEL_PROVIDER_CONF_SECTION_START:
- /* Skip the first section start. */
- if (first_section) {
- first_section = FALSE;
- continue;
- }
- mail_config_provider_page_add_section (
- page, main_box, &entries[ii]);
- break;
-
- case CAMEL_PROVIDER_CONF_CHECKBOX:
- mail_config_provider_page_add_checkbox (
- page, main_box, &entries[ii]);
- break;
-
- case CAMEL_PROVIDER_CONF_CHECKSPIN:
- mail_config_provider_page_add_checkspin (
- page, main_box, &entries[ii]);
- break;
-
- case CAMEL_PROVIDER_CONF_ENTRY:
- mail_config_provider_page_add_entry (
- page, main_box, &entries[ii]);
- break;
-
- case CAMEL_PROVIDER_CONF_LABEL:
- mail_config_provider_page_add_label (
- page, main_box, &entries[ii]);
- break;
-
- case CAMEL_PROVIDER_CONF_OPTIONS:
- mail_config_provider_page_add_options (
- page, main_box, &entries[ii]);
- break;
-
- case CAMEL_PROVIDER_CONF_PLACEHOLDER:
- mail_config_provider_page_add_placeholder (
- page, main_box, &entries[ii]);
- break;
-
- default:
- break; /* skip it */
- }
- }
+ e_mail_config_provider_add_widgets (provider, settings, main_box, TRUE);
}
static void
diff --git a/src/mail/e-mail-config-provider-page.h b/src/mail/e-mail-config-provider-page.h
index 6cf3e94e2b..76aa052241 100644
--- a/src/mail/e-mail-config-provider-page.h
+++ b/src/mail/e-mail-config-provider-page.h
@@ -79,6 +79,12 @@ GtkBox * e_mail_config_provider_page_get_placeholder
(EMailConfigProviderPage *page,
const gchar *name);
+void e_mail_config_provider_add_widgets
+ (CamelProvider *provider,
+ CamelSettings *settings,
+ GtkBox *main_box,
+ gboolean skip_first_section_name);
+
G_END_DECLS
#endif /* E_MAIL_CONFIG_PROVIDER_PAGE_H */
diff --git a/src/modules/mail-config/e-mail-config-smtp-backend.c
b/src/modules/mail-config/e-mail-config-smtp-backend.c
index 9419ecb03d..9d22caf386 100644
--- a/src/modules/mail-config/e-mail-config-smtp-backend.c
+++ b/src/modules/mail-config/e-mail-config-smtp-backend.c
@@ -24,6 +24,7 @@
#include <mail/e-mail-config-auth-check.h>
#include <mail/e-mail-config-page.h>
+#include <mail/e-mail-config-provider-page.h>
#include <mail/e-mail-config-service-page.h>
#include "e-mail-config-smtp-backend.h"
@@ -332,6 +333,8 @@ mail_config_smtp_backend_insert_widgets (EMailConfigServiceBackend *backend,
priv->forget_password_button = widget; /* do not reference */
gtk_widget_hide (widget);
+ e_mail_config_provider_add_widgets (provider, settings, parent, FALSE);
+
g_signal_connect (priv->forget_password_button, "clicked",
G_CALLBACK (smtp_backend_forget_password_cb), backend);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]