aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/component/select-names/e-select-names.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/gui/component/select-names/e-select-names.c')
-rw-r--r--addressbook/gui/component/select-names/e-select-names.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/addressbook/gui/component/select-names/e-select-names.c b/addressbook/gui/component/select-names/e-select-names.c
index 095d928a41..9a0d9f6805 100644
--- a/addressbook/gui/component/select-names/e-select-names.c
+++ b/addressbook/gui/component/select-names/e-select-names.c
@@ -53,6 +53,7 @@ static void e_select_names_class_init (ESelectNamesClass *klass);
static void e_select_names_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
static void e_select_names_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
static void e_select_names_destroy (GtkObject *object);
+static void update_query (GtkWidget *button, ESelectNames *e_select_names);
static GnomeDialogClass *parent_class = NULL;
#define PARENT_TYPE gnome_dialog_get_type()
@@ -128,17 +129,29 @@ e_select_names_class_init (ESelectNamesClass *klass)
GtkWidget *e_addressbook_create_ebook_table(char *name, char *string1, char *string2, int num1, int num2);
static void
-set_book(EBook *book, EBookStatus status, EAddressbookModel *model)
+set_book(EBook *book, EBookStatus status, ESelectNames *esn)
+{
+ gtk_object_set(GTK_OBJECT(esn->model),
+ "book", book,
+ NULL);
+ update_query (NULL, esn);
+ gtk_object_unref(GTK_OBJECT(book));
+ gtk_object_unref(GTK_OBJECT(esn));
+}
+
+static void
+set_book_with_model_data(EBook *book, EBookStatus status, EAddressbookModel *model)
{
gtk_object_set(GTK_OBJECT(model),
"book", book,
+ "query", "(contains \"email\" \"\")",
NULL);
gtk_object_unref(GTK_OBJECT(book));
gtk_object_unref(GTK_OBJECT(model));
}
static void
-addressbook_model_set_uri(EAddressbookModel *model, char *uri)
+addressbook_model_set_uri(ESelectNames *e_select_names, EAddressbookModel *model, char *uri)
{
EBook *book;
@@ -151,8 +164,13 @@ addressbook_model_set_uri(EAddressbookModel *model, char *uri)
}
book = e_book_new();
- gtk_object_ref(GTK_OBJECT(model));
- addressbook_load_uri(book, uri, (EBookCallback) set_book, model);
+ if (e_select_names) {
+ gtk_object_ref(GTK_OBJECT(e_select_names));
+ addressbook_load_uri(book, uri, (EBookCallback) set_book, e_select_names);
+ } else {
+ gtk_object_ref(GTK_OBJECT(model));
+ addressbook_load_uri(book, uri, (EBookCallback) set_book_with_model_data, model);
+ }
}
static void *
@@ -288,14 +306,13 @@ e_addressbook_create_ebook_table(char *name, char *string1, char *string2, int n
filename = gnome_util_prepend_user_home("evolution/local/Contacts/addressbook.db");
uri = g_strdup_printf("file://%s", filename);
- addressbook_model_set_uri(model, uri);
+ addressbook_model_set_uri(NULL, model, uri);
g_free(uri);
g_free(filename);
gtk_object_set(GTK_OBJECT(model),
"editable", FALSE,
- "query", "(contains \"email\" \"\")",
NULL);
without = e_table_without_new (adapter,
@@ -339,7 +356,7 @@ e_select_names_option_activated(GtkWidget *widget, ESelectNames *e_select_names)
{
ESelectNamesFolder *e_folder = gtk_object_get_data (GTK_OBJECT (widget), "EsnChoiceFolder");
- addressbook_model_set_uri(e_select_names->model, e_folder->uri);
+ addressbook_model_set_uri(e_select_names, e_select_names->model, e_folder->uri);
}
typedef struct {