aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/gui')
-rw-r--r--addressbook/gui/component/select-names/e-select-names-model.c81
-rw-r--r--addressbook/gui/component/select-names/e-select-names-model.h2
-rw-r--r--addressbook/gui/contact-editor/contact-editor.glade82
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c89
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.h3
-rw-r--r--addressbook/gui/widgets/Makefile.am112
6 files changed, 235 insertions, 134 deletions
diff --git a/addressbook/gui/component/select-names/e-select-names-model.c b/addressbook/gui/component/select-names/e-select-names-model.c
index d562b40a64..8c10aa6035 100644
--- a/addressbook/gui/component/select-names/e-select-names-model.c
+++ b/addressbook/gui/component/select-names/e-select-names-model.c
@@ -202,6 +202,34 @@ e_select_names_model_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
}
}
+
+static void
+e_select_names_model_changed (ESelectNamesModel *model)
+{
+ g_free (model->priv->text);
+ model->priv->text = NULL;
+
+ g_free (model->priv->addr_text);
+ model->priv->addr_text = NULL;
+
+#if 0
+ {
+ GList *i = model->priv->data;
+ gint j = 0;
+ g_print ("ESelectNamesModel state:\n");
+ while (i) {
+ EDestination *dest = (EDestination *) i->data;
+ g_print ("%d: %s <%s>\n", j, e_destination_get_string (dest), e_destination_get_email (dest));
+ i = g_list_next (i);
+ ++j;
+ }
+ g_print ("\n");
+ }
+#endif
+
+ gtk_signal_emit (GTK_OBJECT(model), e_select_names_model_signals[E_SELECT_NAMES_MODEL_CHANGED]);
+}
+
/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/
ESelectNamesModel *
@@ -342,6 +370,32 @@ e_select_names_model_export_destinationv (ESelectNamesModel *model)
return str;
}
+static
+void send_changed (EDestination *dest, ECard *card, gpointer closure)
+{
+ ESelectNamesModel *model = closure;
+ e_select_names_model_changed (model);
+}
+
+void
+e_select_names_model_import_destinationv (ESelectNamesModel *model,
+ gchar *destinationv)
+{
+ EDestination **destv;
+ gint i;
+
+ g_return_if_fail (model && E_IS_SELECT_NAMES_MODEL (model));
+
+ destv = e_destination_importv (destinationv);
+
+ e_select_names_model_delete_all (model);
+ for (i = 0; destv[i]; i++) {
+ e_destination_use_card (destv[i], send_changed, model);
+ e_select_names_model_append (model, destv[i]);
+ }
+ g_free (destv);
+}
+
ECard *
e_select_names_model_get_card (ESelectNamesModel *model, gint index)
{
@@ -370,33 +424,6 @@ e_select_names_model_get_string (ESelectNamesModel *model, gint index)
return dest ? e_destination_get_string (dest) : "";
}
-static void
-e_select_names_model_changed (ESelectNamesModel *model)
-{
- g_free (model->priv->text);
- model->priv->text = NULL;
-
- g_free (model->priv->addr_text);
- model->priv->addr_text = NULL;
-
-#if 0
- {
- GList *i = model->priv->data;
- gint j = 0;
- g_print ("ESelectNamesModel state:\n");
- while (i) {
- EDestination *dest = (EDestination *) i->data;
- g_print ("%d: %s <%s>\n", j, e_destination_get_string (dest), e_destination_get_email (dest));
- i = g_list_next (i);
- ++j;
- }
- g_print ("\n");
- }
-#endif
-
- gtk_signal_emit (GTK_OBJECT(model), e_select_names_model_signals[E_SELECT_NAMES_MODEL_CHANGED]);
-}
-
void
e_select_names_model_insert (ESelectNamesModel *model, gint index, EDestination *dest)
{
diff --git a/addressbook/gui/component/select-names/e-select-names-model.h b/addressbook/gui/component/select-names/e-select-names-model.h
index 417ec7abb1..989a829223 100644
--- a/addressbook/gui/component/select-names/e-select-names-model.h
+++ b/addressbook/gui/component/select-names/e-select-names-model.h
@@ -52,6 +52,8 @@ const gchar *e_select_names_model_get_address_text (ESelectNamesModel *model);
gint e_select_names_model_count (ESelectNamesModel *model);
const EDestination *e_select_names_model_get_destination (ESelectNamesModel *model, gint index);
gchar *e_select_names_model_export_destinationv (ESelectNamesModel *model);
+void e_select_names_model_import_destinationv (ESelectNamesModel *model,
+ gchar *destinationv);
ECard *e_select_names_model_get_card (ESelectNamesModel *model, gint index);
const gchar *e_select_names_model_get_string (ESelectNamesModel *model, gint index);
diff --git a/addressbook/gui/contact-editor/contact-editor.glade b/addressbook/gui/contact-editor/contact-editor.glade
index af5d17d954..eb351d8bcc 100644
--- a/addressbook/gui/contact-editor/contact-editor.glade
+++ b/addressbook/gui/contact-editor/contact-editor.glade
@@ -1334,39 +1334,6 @@
<widget>
<class>GtkAlignment</class>
- <name>alignment14</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>0</yscale>
- <child>
- <left_attach>3</left_attach>
- <right_attach>4</right_attach>
- <top_attach>12</top_attach>
- <bottom_attach>13</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkEntry</class>
- <name>entry-contacts</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
<name>alignment16</name>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
@@ -1651,6 +1618,39 @@
<yfill>True</yfill>
</child>
</widget>
+
+ <widget>
+ <class>GtkAlignment</class>
+ <name>alignment17</name>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xscale>1</xscale>
+ <yscale>0</yscale>
+ <child>
+ <left_attach>3</left_attach>
+ <right_attach>4</right_attach>
+ <top_attach>12</top_attach>
+ <bottom_attach>13</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkTable</class>
+ <name>table-contacts</name>
+ <rows>1</rows>
+ <columns>1</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>0</row_spacing>
+ <column_spacing>0</column_spacing>
+ </widget>
+ </widget>
</widget>
<widget>
@@ -2257,16 +2257,16 @@
<widget>
<class>Custom</class>
- <name>dateedit-anniversary</name>
+ <name>dateedit-birthday</name>
<creation_function>e_contact_editor_create_date</creation_function>
<int1>0</int1>
<int2>0</int2>
- <last_modification_time>Tue, 05 Jun 2001 02:36:32 GMT</last_modification_time>
+ <last_modification_time>Tue, 05 Jun 2001 02:36:27 GMT</last_modification_time>
<child>
<left_attach>4</left_attach>
<right_attach>6</right_attach>
- <top_attach>5</top_attach>
- <bottom_attach>6</bottom_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>True</xexpand>
@@ -2280,16 +2280,16 @@
<widget>
<class>Custom</class>
- <name>dateedit-birthday</name>
+ <name>dateedit-anniversary</name>
<creation_function>e_contact_editor_create_date</creation_function>
<int1>0</int1>
<int2>0</int2>
- <last_modification_time>Tue, 05 Jun 2001 02:36:27 GMT</last_modification_time>
+ <last_modification_time>Tue, 05 Jun 2001 02:36:32 GMT</last_modification_time>
<child>
<left_attach>4</left_attach>
<right_attach>6</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
+ <top_attach>5</top_attach>
+ <bottom_attach>6</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>True</xexpand>
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index 41a58e0ca4..2b9c22a249 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -37,6 +37,9 @@
#include <gal/widgets/e-categories.h>
#include <gal/widgets/e-gui-utils.h>
#include <gal/widgets/e-unicode.h>
+#include <gal/e-text/e-entry.h>
+
+#include <e-util/e-categories-master-list-wombat.h>
#include "addressbook/printing/e-contact-print.h"
#include "addressbook/printing/e-contact-print-envelope.h"
@@ -643,10 +646,11 @@ full_addr_clicked(GtkWidget *button, EContactEditor *editor)
static void
categories_clicked(GtkWidget *button, EContactEditor *editor)
{
- char *categories;
+ char *categories = NULL;
GnomeDialog *dialog;
int result;
GtkWidget *entry = glade_xml_get_widget(editor->gui, "entry-categories");
+ ECategoriesMasterList *ecml;
if (entry && GTK_IS_ENTRY(entry))
categories = e_utf8_gtk_entry_get_text(GTK_ENTRY(entry));
else if (editor->card)
@@ -654,9 +658,12 @@ categories_clicked(GtkWidget *button, EContactEditor *editor)
"categories", &categories,
NULL);
dialog = GNOME_DIALOG(e_categories_new(categories));
+ ecml = e_categories_master_list_wombat_new ();
gtk_object_set(GTK_OBJECT(dialog),
"header", _("This contact belongs to these categories:"),
+ "ecml", ecml,
NULL);
+ gtk_object_unref (GTK_OBJECT (ecml));
gtk_widget_show(GTK_WIDGET(dialog));
result = gnome_dialog_run (dialog);
g_free (categories);
@@ -673,12 +680,43 @@ categories_clicked(GtkWidget *button, EContactEditor *editor)
g_free(categories);
}
gtk_object_destroy(GTK_OBJECT(dialog));
-#if 0
- if (!entry)
- g_free(categories);
-#endif
}
+static void
+ensure_select_names_contact (EContactEditor *editor)
+{
+ if (editor->select_names_contacts == NULL) {
+ editor->select_names_contacts = e_select_names_manager_new ();
+ e_select_names_manager_add_section (editor->select_names_contacts,
+ "contacts",
+ "Related Contacts");
+ }
+}
+
+static void
+contacts_clicked (GtkWidget *button, EContactEditor *editor)
+{
+ ensure_select_names_contact (editor);
+ e_select_names_manager_activate_dialog (editor->select_names_contacts,
+ "contacts");
+}
+
+static void
+add_lists (EContactEditor *editor)
+{
+ GtkWidget *table = glade_xml_get_widget (editor->gui, "table-contacts");
+ if (table && GTK_IS_TABLE (table)) {
+ GtkWidget *entry;
+
+ ensure_select_names_contact (editor);
+ entry = e_select_names_manager_create_entry (editor->select_names_contacts,
+ "contacts");
+ gtk_table_attach_defaults (GTK_TABLE (table), entry, 0, 1, 0, 1);
+ gtk_widget_show (entry);
+ }
+}
+
+
typedef struct {
EContactEditor *ce;
gboolean should_close;
@@ -1032,6 +1070,7 @@ e_contact_editor_init (EContactEditor *e_contact_editor)
e_contact_editor);
_replace_buttons(e_contact_editor);
+ add_lists (e_contact_editor);
set_entry_changed_signals(e_contact_editor);
wants_html = glade_xml_get_widget(e_contact_editor->gui, "checkbutton-htmlmail");
@@ -1054,6 +1093,11 @@ e_contact_editor_init (EContactEditor *e_contact_editor)
gtk_signal_connect(GTK_OBJECT(widget), "clicked",
categories_clicked, e_contact_editor);
+ widget = glade_xml_get_widget(e_contact_editor->gui, "button-contacts");
+ if (widget && GTK_IS_BUTTON(widget))
+ gtk_signal_connect(GTK_OBJECT(widget), "clicked",
+ contacts_clicked, e_contact_editor);
+
/* Construct the app */
bonobo_win = bonobo_window_new ("contact-editor-dialog", "Contact Editor");
@@ -2080,6 +2124,7 @@ fill_in_info(EContactEditor *editor)
ECard *card = editor->card;
if (card) {
char *file_as;
+ char *related_contacts;
ECardName *name;
const ECardDate *anniversary;
const ECardDate *bday;
@@ -2089,12 +2134,13 @@ fill_in_info(EContactEditor *editor)
gboolean wants_html, wants_html_set;
gtk_object_get(GTK_OBJECT(card),
- "file_as", &file_as,
- "name", &name,
- "anniversary", &anniversary,
- "birth_date", &bday,
- "wants_html_set",&wants_html_set,
- "wants_html", &wants_html,
+ "file_as", &file_as,
+ "related_contacts", &related_contacts,
+ "name", &name,
+ "anniversary", &anniversary,
+ "birth_date", &bday,
+ "wants_html_set", &wants_html_set,
+ "wants_html", &wants_html,
NULL);
for (i = 0; i < sizeof(field_mapping) / sizeof(field_mapping[0]); i++) {
@@ -2146,6 +2192,12 @@ fill_in_info(EContactEditor *editor)
e_date_edit_set_time (dateedit, -1);
}
+ if (editor->select_names_contacts && related_contacts && *related_contacts) {
+ ESelectNamesModel *model = e_select_names_manager_get_source (editor->select_names_contacts,
+ "contacts");
+ e_select_names_model_import_destinationv (model, related_contacts);
+ }
+
set_fields(editor);
}
}
@@ -2226,6 +2278,21 @@ extract_info(EContactEditor *editor)
extract_single_field(editor, list->data);
}
+ if (editor->select_names_contacts) {
+ ESelectNamesModel *model = e_select_names_manager_get_source (editor->select_names_contacts,
+ "contacts");
+ char *string = e_select_names_model_export_destinationv (model);
+ if (string && *string)
+ gtk_object_set (GTK_OBJECT (card),
+ "related_contacts", string,
+ NULL);
+ else
+ gtk_object_set (GTK_OBJECT (card),
+ "related_contacts", NULL,
+ NULL);
+ g_free (string);
+ }
+
if (editor->name)
gtk_object_set(GTK_OBJECT(card),
"name", editor->name,
diff --git a/addressbook/gui/contact-editor/e-contact-editor.h b/addressbook/gui/contact-editor/e-contact-editor.h
index d4ebd7d676..5f9ac77435 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.h
+++ b/addressbook/gui/contact-editor/e-contact-editor.h
@@ -26,6 +26,7 @@
#include <bonobo/bonobo-ui-component.h>
#include <glade/glade.h>
+#include "addressbook/gui/component/select-names/e-select-names-manager.h"
#include "addressbook/backend/ebook/e-book.h"
#include "addressbook/backend/ebook/e-card.h"
#include "addressbook/backend/ebook/e-card-simple.h"
@@ -78,6 +79,8 @@ struct _EContactEditor
GList *phone_list;
GList *address_list;
+ ESelectNamesManager *select_names_contacts;
+
ECardName *name;
char *company;
diff --git a/addressbook/gui/widgets/Makefile.am b/addressbook/gui/widgets/Makefile.am
index 8d86b99109..dc84125c39 100644
--- a/addressbook/gui/widgets/Makefile.am
+++ b/addressbook/gui/widgets/Makefile.am
@@ -42,42 +42,43 @@ libeminicard_a_SOURCES = \
gal-view-minicard.c \
gal-view-minicard.h
-noinst_PROGRAMS = \
- minicard-widget-test \
- minicard-label-test \
- minicard-test
-# reflow-test
-# minicard-view-test
-
-minicard_label_test_SOURCES = \
- test-minicard-label.c
-
-minicard_label_test_LDADD = \
- libeminicard.a \
- $(EXTRA_GNOME_LIBS) \
- $(BONOBO_GNOME_LIBS) \
- $(top_builddir)/e-util/libeutil.la
-
-minicard_test_SOURCES = \
- test-minicard.c
-
-minicard_test_LDADD = \
- libeminicard.a \
- $(top_builddir)/addressbook/backend/ebook/libebook.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libversit/libversit.la \
- $(top_builddir)/e-util/ename/libename.la \
- $(top_builddir)/addressbook/gui/contact-editor/libecontacteditor.a \
- $(top_builddir)/addressbook/gui/contact-list-editor/libecontactlisteditor.a \
- $(top_builddir)/addressbook/printing/libecontactprint.a \
- $(top_builddir)/addressbook/gui/merging/libecardmerging.a \
- $(top_builddir)/widgets/misc/libemiscwidgets.a \
- $(top_builddir)/e-util/libeutil.la \
- $(EXTRA_GNOME_LIBS) \
- $(BONOBO_GNOME_LIBS) \
- $(GNOME_PRINT_LIBS) \
- libeminicard.a
-
+#noinst_PROGRAMS = \
+# minicard-widget-test \
+# minicard-label-test \
+# minicard-test
+## reflow-test
+## minicard-view-test
+#
+#minicard_label_test_SOURCES = \
+# test-minicard-label.c
+#
+#minicard_label_test_LDADD = \
+# libeminicard.a \
+# $(EXTRA_GNOME_LIBS) \
+# $(BONOBO_GNOME_LIBS) \
+# $(top_builddir)/e-util/libeutil.la
+#
+#minicard_test_SOURCES = \
+# test-minicard.c
+#
+#minicard_test_LDADD = \
+# libeminicard.a \
+# $(top_builddir)/addressbook/backend/ebook/libebook.la \
+# $(top_builddir)/e-util/libeutil.la \
+# $(top_builddir)/libversit/libversit.la \
+# $(top_builddir)/e-util/ename/libename.la \
+# $(top_builddir)/addressbook/gui/contact-editor/libecontacteditor.a \
+# $(top_builddir)/addressbook/gui/contact-list-editor/libecontactlisteditor.a \
+# $(top_builddir)/addressbook/printing/libecontactprint.a \
+# $(top_builddir)/addressbook/gui/merging/libecardmerging.a \
+# $(top_builddir)/widgets/misc/libemiscwidgets.a \
+# $(top_builddir)/addressbook/gui/component/select-names/libeselectnames.la \
+# $(top_builddir)/e-util/libeutil.la \
+# $(EXTRA_GNOME_LIBS) \
+# $(BONOBO_GNOME_LIBS) \
+# $(GNOME_PRINT_LIBS) \
+# libeminicard.a
+#
#reflow_test_SOURCES = \
# test-reflow.c
#
@@ -110,25 +111,26 @@ minicard_test_LDADD = \
# $(top_builddir)/addressbook/printing/libecontactprint.a \
# $(top_builddir)/widgets/misc/libemiscwidgets.a \
# $(top_builddir)/e-util/libeutil.la
-
-minicard_widget_test_SOURCES = \
- e-minicard-widget-test.c
-
-minicard_widget_test_LDADD = \
- libeminicard.a \
- $(top_builddir)/addressbook/backend/ebook/libebook.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libversit/libversit.la \
- $(top_builddir)/e-util/ename/libename.la \
- $(top_builddir)/addressbook/gui/contact-editor/libecontacteditor.a \
- $(top_builddir)/addressbook/gui/contact-list-editor/libecontactlisteditor.a \
- $(top_builddir)/addressbook/printing/libecontactprint.a \
- $(top_builddir)/widgets/misc/libemiscwidgets.a \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/addressbook/gui/merging/libecardmerging.a \
- $(EXTRA_GNOME_LIBS) \
- $(BONOBO_GNOME_LIBS) \
- $(GNOME_PRINT_LIBS)
+#
+#minicard_widget_test_SOURCES = \
+# e-minicard-widget-test.c
+#
+#minicard_widget_test_LDADD = \
+# libeminicard.a \
+# $(top_builddir)/addressbook/backend/ebook/libebook.la \
+# $(top_builddir)/e-util/libeutil.la \
+# $(top_builddir)/libversit/libversit.la \
+# $(top_builddir)/e-util/ename/libename.la \
+# $(top_builddir)/addressbook/gui/contact-editor/libecontacteditor.a \
+# $(top_builddir)/addressbook/gui/contact-list-editor/libecontactlisteditor.a \
+# $(top_builddir)/addressbook/gui/component/select-names/libeselectnames.la \
+# $(top_builddir)/addressbook/printing/libecontactprint.a \
+# $(top_builddir)/widgets/misc/libemiscwidgets.a \
+# $(top_builddir)/e-util/libeutil.la \
+# $(top_builddir)/addressbook/gui/merging/libecardmerging.a \
+# $(EXTRA_GNOME_LIBS) \
+# $(BONOBO_GNOME_LIBS) \
+# $(GNOME_PRINT_LIBS)
gladedir = $(datadir)/evolution/glade
glade_DATA = alphabet.glade