diff options
Diffstat (limited to 'modules/addressbook')
-rw-r--r-- | modules/addressbook/Makefile.am | 2 | ||||
-rw-r--r-- | modules/addressbook/e-book-config-name-selector-entry.c | 131 | ||||
-rw-r--r-- | modules/addressbook/e-book-config-name-selector-entry.h | 30 | ||||
-rw-r--r-- | modules/addressbook/evolution-module-addressbook.c | 2 |
4 files changed, 165 insertions, 0 deletions
diff --git a/modules/addressbook/Makefile.am b/modules/addressbook/Makefile.am index f18d871f0d..f02d942b69 100644 --- a/modules/addressbook/Makefile.am +++ b/modules/addressbook/Makefile.am @@ -33,6 +33,8 @@ module_addressbook_la_SOURCES = \ eab-composer-util.h \ e-book-config-hook.c \ e-book-config-hook.h \ + e-book-config-name-selector-entry.c \ + e-book-config-name-selector-entry.h \ e-book-shell-backend.c \ e-book-shell-backend.h \ e-book-shell-content.c \ diff --git a/modules/addressbook/e-book-config-name-selector-entry.c b/modules/addressbook/e-book-config-name-selector-entry.c new file mode 100644 index 0000000000..3339931b84 --- /dev/null +++ b/modules/addressbook/e-book-config-name-selector-entry.c @@ -0,0 +1,131 @@ +/* + * e-book-config-name-selector-entry.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/> + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "e-book-config-name-selector-entry.h" + +#include <libebackend/libebackend.h> +#include <libedataserverui/libedataserverui.h> + +typedef struct _EBookConfigNameSelectorEntry EBookConfigNameSelectorEntry; +typedef struct _EBookConfigNameSelectorEntryClass EBookConfigNameSelectorEntryClass; + +struct _EBookConfigNameSelectorEntry { + EExtension parent; + GSettings *settings; +}; + +struct _EBookConfigNameSelectorEntryClass { + EExtensionClass parent_class; +}; + +static gpointer parent_class; + +static void +book_config_name_selector_entry_realize (GtkWidget *widget, + EBookConfigNameSelectorEntry *extension) +{ + g_settings_bind ( + extension->settings, "completion-minimum-query-length", + widget, "minimum-query-length", + G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); + + g_settings_bind ( + extension->settings, "completion-show-address", + widget, "show-address", + G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); +} + +static void +book_config_name_selector_entry_dispose (GObject *object) +{ + EBookConfigNameSelectorEntry *extension; + + extension = (EBookConfigNameSelectorEntry *) object; + + if (extension->settings != NULL) { + g_object_unref (extension->settings); + extension->settings = NULL; + } + + /* Chain up to parent's dispose() method. */ + G_OBJECT_CLASS (parent_class)->dispose (object); +} + +static void +book_config_name_selector_entry_constructed (GObject *object) +{ + EBookConfigNameSelectorEntry *extension; + EExtensible *extensible; + + extension = (EBookConfigNameSelectorEntry *) object; + extensible = e_extension_get_extensible (E_EXTENSION (extension)); + + extension->settings = g_settings_new ("org.gnome.evolution.addressbook"); + + /* Wait to bind settings until the ENameSelectorEntry is realized */ + + /*g_signal_connect ( + extensible, "realize", + G_CALLBACK (book_config_name_selector_entry_realize), extension);*/ + + /* Chain up to parent's consturcted() method. */ + G_OBJECT_CLASS (parent_class)->constructed (object); + + book_config_name_selector_entry_realize (extensible, extension); +} + +static void +book_config_name_selector_entry_class_init (EBookConfigNameSelectorEntryClass *class) +{ + GObjectClass *object_class; + EExtensionClass *extension_class; + + parent_class = g_type_class_peek_parent (class); + + object_class = G_OBJECT_CLASS (class); + object_class->dispose = book_config_name_selector_entry_dispose; + object_class->constructed = book_config_name_selector_entry_constructed; + + extension_class = E_EXTENSION_CLASS (class); + extension_class->extensible_type = E_TYPE_NAME_SELECTOR_ENTRY; +} + +void +e_book_config_name_selector_entry_register_type (GTypeModule *type_module) +{ + static const GTypeInfo type_info = { + sizeof (EBookConfigNameSelectorEntryClass), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) book_config_name_selector_entry_class_init, + (GClassFinalizeFunc) NULL, + NULL, /* class_data */ + sizeof (EBookConfigNameSelectorEntry), + 0, /* n_preallocs */ + (GInstanceInitFunc) NULL, + NULL /* value_table */ + }; + + g_type_module_register_type ( + type_module, E_TYPE_EXTENSION, + "EBookConfigNameSelectorEntry", &type_info, 0); +} diff --git a/modules/addressbook/e-book-config-name-selector-entry.h b/modules/addressbook/e-book-config-name-selector-entry.h new file mode 100644 index 0000000000..e61bc028db --- /dev/null +++ b/modules/addressbook/e-book-config-name-selector-entry.h @@ -0,0 +1,30 @@ +/* + * e-book-config-name-selector-entry.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_BOOK_CONFIG_NAME_SELECTOR_ENTRY_H +#define E_BOOK_CONFIG_NAME_SELECTOR_ENTRY_H + +#include <glib-object.h> + +G_BEGIN_DECLS + +void e_book_config_name_selector_entry_register_type (GTypeModule *type_module); + +G_END_DECLS + +#endif /* E_BOOK_CONFIG_NAME_SELECTOR_ENTRY_H */ diff --git a/modules/addressbook/evolution-module-addressbook.c b/modules/addressbook/evolution-module-addressbook.c index 1caf7ddf08..ebfdc07d36 100644 --- a/modules/addressbook/evolution-module-addressbook.c +++ b/modules/addressbook/evolution-module-addressbook.c @@ -24,6 +24,7 @@ #endif #include "e-book-config-hook.h" +#include "e-book-config-name-selector-entry.h" #include "e-book-shell-view.h" #include "e-book-shell-backend.h" @@ -40,6 +41,7 @@ e_module_load (GTypeModule *type_module) /* Register dynamically loaded types. */ e_book_config_hook_register_type (type_module); + e_book_config_name_selector_entry_register_type (type_module); e_book_shell_view_register_type (type_module); e_book_shell_backend_type_register (type_module); |