/*
* Copyright (C) 2016 Red Hat, Inc. (www.redhat.com)
*
* This library 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.
*
* This library 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 this library. If not, see .
*/
#include "evolution-config.h"
#include
#include
#include "e-util/e-util.h"
#include "mail/e-mail-config-provider-page.h"
#include "e-mail-config-imapx-options.h"
/* Standard GObject macros */
#define E_TYPE_MAIL_CONFIG_IMAPX_OPTIONS \
(e_mail_config_imapx_options_get_type ())
#define E_MAIL_CONFIG_IMAPX_OPTIONS(obj) \
(G_TYPE_CHECK_INSTANCE_CAST \
((obj), E_TYPE_MAIL_CONFIG_IMAPX_OPTIONS, EMailConfigIMAPxOptions))
#define E_MAIL_CONFIG_IMAPX_OPTIONS_CLASS(cls) \
(G_TYPE_CHECK_CLASS_CAST \
((cls), E_TYPE_MAIL_CONFIG_IMAPX_OPTIONS, EMailConfigIMAPxOptionsClass))
#define E_IS_MAIL_CONFIG_IMAPX_OPTIONS(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE \
((obj), E_TYPE_MAIL_CONFIG_IMAPX_OPTIONS))
#define E_IS_MAIL_CONFIG_IMAPX_OPTIONS_CLASS(cls) \
(G_TYPE_CHECK_CLASS_TYPE \
((cls), E_TYPE_MAIL_CONFIG_IMAPX_OPTIONS))
#define E_MAIL_CONFIG_IMAPX_OPTIONS_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS \
((obj), E_TYPE_MAIL_CONFIG_IMAPX_OPTIONS, EMailConfigIMAPxOptionsClass))
typedef struct _EMailConfigIMAPxOptions EMailConfigIMAPxOptions;
typedef struct _EMailConfigIMAPxOptionsClass EMailConfigIMAPxOptionsClass;
struct _EMailConfigIMAPxOptions {
EExtension parent;
};
struct _EMailConfigIMAPxOptionsClass {
EExtensionClass parent_class;
};
GType e_mail_config_imapx_options_get_type
(void) G_GNUC_CONST;
G_DEFINE_DYNAMIC_TYPE (EMailConfigIMAPxOptions, e_mail_config_imapx_options, E_TYPE_EXTENSION)
static void
mail_config_imapx_options_constructed (GObject *object)
{
EMailConfigProviderPage *provider_page;
EMailConfigServiceBackend *backend;
CamelProvider *provider;
CamelSettings *settings;
GtkBox *placeholder;
GtkWidget *hbox;
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (e_mail_config_imapx_options_parent_class)->constructed (object);
provider_page = E_MAIL_CONFIG_PROVIDER_PAGE (e_extension_get_extensible (E_EXTENSION (object)));
backend = e_mail_config_provider_page_get_backend (provider_page);
provider = e_mail_config_service_backend_get_provider (backend);
settings = e_mail_config_service_backend_get_settings (backend);
if (e_mail_config_provider_page_is_empty (provider_page) ||
!provider || g_strcmp0 (provider->protocol, "imapx") != 0)
return;
g_return_if_fail (CAMEL_IS_OFFLINE_SETTINGS (settings));
placeholder = e_mail_config_provider_page_get_placeholder (provider_page, "imapx-limit-by-age-placeholder");
g_return_if_fail (placeholder != NULL);
hbox = e_dialog_offline_settings_new_limit_box (CAMEL_OFFLINE_SETTINGS (settings));
gtk_box_pack_start (placeholder, hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
}
static void
e_mail_config_imapx_options_class_init (EMailConfigIMAPxOptionsClass *class)
{
GObjectClass *object_class;
EExtensionClass *extension_class;
object_class = G_OBJECT_CLASS (class);
object_class->constructed = mail_config_imapx_options_constructed;
extension_class = E_EXTENSION_CLASS (class);
extension_class->extensible_type = E_TYPE_MAIL_CONFIG_PROVIDER_PAGE;
}
static void
e_mail_config_imapx_options_class_finalize (EMailConfigIMAPxOptionsClass *class)
{
}
static void
e_mail_config_imapx_options_init (EMailConfigIMAPxOptions *extension)
{
}
void
e_mail_config_imapx_options_type_register (GTypeModule *type_module)
{
/* XXX G_DEFINE_DYNAMIC_TYPE declares a static type registration
* function, so we have to wrap it with a public function in
* order to register types from a separate compilation unit. */
e_mail_config_imapx_options_register_type (type_module);
}