Add 'book-config-google' module.
Register the "Google" backend in EBookSourceConfig widgets. Partially replaces the 'google-account-setup' plugin.
This commit is contained in:
@ -1633,6 +1633,7 @@ modules/bogofilter/Makefile
|
||||
modules/calendar/Makefile
|
||||
modules/mail/Makefile
|
||||
modules/backup-restore/Makefile
|
||||
modules/book-config-google/Makefile
|
||||
modules/book-config-local/Makefile
|
||||
modules/composer-autosave/Makefile
|
||||
modules/mailto-handler/Makefile
|
||||
|
||||
@ -16,6 +16,7 @@ SUBDIRS = \
|
||||
calendar \
|
||||
mail \
|
||||
backup-restore \
|
||||
book-config-google \
|
||||
book-config-local \
|
||||
composer-autosave \
|
||||
mailto-handler \
|
||||
|
||||
27
modules/book-config-google/Makefile.am
Normal file
27
modules/book-config-google/Makefile.am
Normal file
@ -0,0 +1,27 @@
|
||||
module_LTLIBRARIES = module-book-config-google.la
|
||||
|
||||
module_book_config_google_la_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS) \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/widgets \
|
||||
-DG_LOG_DOMAIN=\"evolution-book-config-google\" \
|
||||
$(EVOLUTION_DATA_SERVER_CFLAGS) \
|
||||
$(GNOME_PLATFORM_CFLAGS)
|
||||
|
||||
module_book_config_google_la_SOURCES = \
|
||||
evolution-book-config-google.c
|
||||
|
||||
module_book_config_google_la_LIBADD = \
|
||||
$(top_builddir)/e-util/libeutil.la \
|
||||
$(top_builddir)/widgets/misc/libemiscwidgets.la \
|
||||
$(top_builddir)/addressbook/printing/libecontactprint.la \
|
||||
$(top_builddir)/addressbook/gui/merging/libeabbookmerging.la \
|
||||
$(top_builddir)/addressbook/gui/widgets/libeabwidgets.la \
|
||||
$(top_builddir)/addressbook/util/libeabutil.la \
|
||||
$(EVOLUTION_DATA_SERVER_LIBS) \
|
||||
$(GNOME_PLATFORM_LIBS)
|
||||
|
||||
module_book_config_google_la_LDFLAGS = \
|
||||
-module -avoid-version $(NO_UNDEFINED)
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
161
modules/book-config-google/evolution-book-config-google.c
Normal file
161
modules/book-config-google/evolution-book-config-google.c
Normal file
@ -0,0 +1,161 @@
|
||||
/*
|
||||
* evolution-book-config-google.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 <config.h>
|
||||
#include <glib/gi18n-lib.h>
|
||||
|
||||
#include <libebackend/e-extension.h>
|
||||
#include <libedataserver/e-source-authentication.h>
|
||||
#include <libedataserver/e-source-security.h>
|
||||
|
||||
#include <misc/e-interval-chooser.h>
|
||||
#include <misc/e-source-config-backend.h>
|
||||
#include <addressbook/gui/widgets/e-book-source-config.h>
|
||||
|
||||
typedef ESourceConfigBackend EBookConfigGoogle;
|
||||
typedef ESourceConfigBackendClass EBookConfigGoogleClass;
|
||||
|
||||
typedef struct _Context Context;
|
||||
|
||||
struct _Context {
|
||||
gint placeholder;
|
||||
};
|
||||
|
||||
/* Module Entry Points */
|
||||
void e_module_load (GTypeModule *type_module);
|
||||
void e_module_unload (GTypeModule *type_module);
|
||||
|
||||
/* Forward Declarations */
|
||||
GType e_book_config_google_get_type (void);
|
||||
|
||||
G_DEFINE_DYNAMIC_TYPE (
|
||||
EBookConfigGoogle,
|
||||
e_book_config_google,
|
||||
E_TYPE_SOURCE_CONFIG_BACKEND)
|
||||
|
||||
static void
|
||||
book_config_google_context_free (Context *context)
|
||||
{
|
||||
g_slice_free (Context, context);
|
||||
}
|
||||
|
||||
static void
|
||||
book_config_google_insert_widgets (ESourceConfigBackend *backend,
|
||||
ESource *scratch_source)
|
||||
{
|
||||
ESourceConfig *config;
|
||||
Context *context;
|
||||
const gchar *uid;
|
||||
|
||||
context = g_slice_new (Context);
|
||||
uid = e_source_get_uid (scratch_source);
|
||||
config = e_source_config_backend_get_config (backend);
|
||||
|
||||
g_object_set_data_full (
|
||||
G_OBJECT (backend), uid, context,
|
||||
(GDestroyNotify) book_config_google_context_free);
|
||||
|
||||
e_book_source_config_add_offline_toggle (
|
||||
E_BOOK_SOURCE_CONFIG (config), scratch_source);
|
||||
|
||||
e_source_config_add_user_entry (config, scratch_source);
|
||||
|
||||
e_source_config_add_secure_connection (config, scratch_source);
|
||||
|
||||
e_source_config_add_refresh_interval (config, scratch_source);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
book_config_google_check_complete (ESourceConfigBackend *backend,
|
||||
ESource *scratch_source)
|
||||
{
|
||||
ESourceAuthentication *extension;
|
||||
const gchar *extension_name;
|
||||
const gchar *user;
|
||||
|
||||
extension_name = E_SOURCE_EXTENSION_AUTHENTICATION;
|
||||
extension = e_source_get_extension (scratch_source, extension_name);
|
||||
user = e_source_authentication_get_user (extension);
|
||||
|
||||
return (user != NULL && *user != '\0');
|
||||
}
|
||||
|
||||
static void
|
||||
book_config_google_commit_changes (ESourceConfigBackend *backend,
|
||||
ESource *scratch_source)
|
||||
{
|
||||
ESourceAuthentication *extension;
|
||||
const gchar *extension_name;
|
||||
const gchar *user;
|
||||
|
||||
extension_name = E_SOURCE_EXTENSION_AUTHENTICATION;
|
||||
extension = e_source_get_extension (scratch_source, extension_name);
|
||||
|
||||
/* The authentication method should match what the google backend
|
||||
* returns for get_supported_auth_methods(), although in practice
|
||||
* the value just needs to be something other than "none". */
|
||||
e_source_authentication_set_method (extension, "plain/password");
|
||||
|
||||
user = e_source_authentication_get_user (extension);
|
||||
g_return_if_fail (user != NULL);
|
||||
|
||||
/* A user name without a domain implies '<user>@gmail.com'. */
|
||||
if (strchr (user, '@') == NULL) {
|
||||
gchar *full_user;
|
||||
|
||||
full_user = g_strconcat (user, "@gmail.com", NULL);
|
||||
e_source_authentication_set_user (extension, full_user);
|
||||
g_free (full_user);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
e_book_config_google_class_init (ESourceConfigBackendClass *class)
|
||||
{
|
||||
EExtensionClass *extension_class;
|
||||
|
||||
extension_class = E_EXTENSION_CLASS (class);
|
||||
extension_class->extensible_type = E_TYPE_BOOK_SOURCE_CONFIG;
|
||||
|
||||
class->parent_uid = "google-stub";
|
||||
class->backend_name = "google";
|
||||
class->insert_widgets = book_config_google_insert_widgets;
|
||||
class->check_complete = book_config_google_check_complete;
|
||||
class->commit_changes = book_config_google_commit_changes;
|
||||
}
|
||||
|
||||
static void
|
||||
e_book_config_google_class_finalize (ESourceConfigBackendClass *class)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
e_book_config_google_init (ESourceConfigBackend *backend)
|
||||
{
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
e_module_load (GTypeModule *type_module)
|
||||
{
|
||||
e_book_config_google_register_type (type_module);
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
e_module_unload (GTypeModule *type_module)
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user