diff options
author | Christopher James Lahey <clahey@ximian.com> | 2001-06-09 14:31:55 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2001-06-09 14:31:55 +0800 |
commit | 5c58686c8ef72be5ed8a2d4469b3556f80d4b81c (patch) | |
tree | 0f708cfe4db04dad2e15a4bb44aa58772aaf3b21 /addressbook/gui/merging | |
parent | 7343d66ba7149b389b86508d188bab9c4bfe28dc (diff) | |
download | gsoc2013-evolution-5c58686c8ef72be5ed8a2d4469b3556f80d4b81c.tar gsoc2013-evolution-5c58686c8ef72be5ed8a2d4469b3556f80d4b81c.tar.gz gsoc2013-evolution-5c58686c8ef72be5ed8a2d4469b3556f80d4b81c.tar.bz2 gsoc2013-evolution-5c58686c8ef72be5ed8a2d4469b3556f80d4b81c.tar.lz gsoc2013-evolution-5c58686c8ef72be5ed8a2d4469b3556f80d4b81c.tar.xz gsoc2013-evolution-5c58686c8ef72be5ed8a2d4469b3556f80d4b81c.tar.zst gsoc2013-evolution-5c58686c8ef72be5ed8a2d4469b3556f80d4b81c.zip |
Null terminate the strv here. (e_card_locate_match): ref here instead of
2001-06-09 Christopher James Lahey <clahey@ximian.com>
* backend/ebook/e-card-compare.c (use_common_book_cb): Null
terminate the strv here.
(e_card_locate_match): ref here instead of unref.
* backend/ebook/e-card-simple.c (e_card_simple_get): Handle a NULL
card here.
* contact-editor/Makefile.am (INCLUDES), gui/widgets/Makefile.am
(INCLUDES): Added addressbook/gui/merging here.
* contact-editor/e-contact-quick-add.c (book_ready_cb),
gui/component/addressbook-component.c (dnd_drop_book_open_cb),
gui/widgets/e-addressbook-table-adapter.c
(addressbook_append_row), gui/widgets/e-addressbook-util.c
(add_card_cb), gui/widgets/e-addressbook-view.c
(selection_received), gui/widgets/e-minicard-control.c
(book_open_cb): Use e_card_merging_book_add_card instead of
e_book_add_card here.
* gui/Makefile.am (SUBDIRS): Added merging.
* gui/component/Makefile.am (evolution_addressbook_LDADD),
gui/widgets/Makefile.am (minicard_test_LDADD,
minicard_widget_test_LDADD): Added libecardmerging.a here.
* gui/merging/, gui/merging/.cvsignore, gui/merging/Makefile.am:
New addressbook library.
* gui/merging/e-card-duplicate-detected.glade: Glade file for
duplicate detected dialog.
* gui/merging/e-card-merging.c, gui/merging/e-card-merging.h: New
files for detecting duplicates before adding and putting up a
dialog if duplicates are found.
* gui/widgets/e-minicard-view.c: Include e-addressbook-util.h
here.
svn path=/trunk/; revision=10170
Diffstat (limited to 'addressbook/gui/merging')
-rw-r--r-- | addressbook/gui/merging/.cvsignore | 6 | ||||
-rw-r--r-- | addressbook/gui/merging/Makefile.am | 22 | ||||
-rw-r--r-- | addressbook/gui/merging/e-card-duplicate-detected.glade | 255 | ||||
-rw-r--r-- | addressbook/gui/merging/e-card-merging.c | 100 | ||||
-rw-r--r-- | addressbook/gui/merging/e-card-merging.h | 27 |
5 files changed, 410 insertions, 0 deletions
diff --git a/addressbook/gui/merging/.cvsignore b/addressbook/gui/merging/.cvsignore new file mode 100644 index 0000000000..09980ae6ba --- /dev/null +++ b/addressbook/gui/merging/.cvsignore @@ -0,0 +1,6 @@ +.deps +.libs +Makefile +Makefile.in +*.lo +*.la diff --git a/addressbook/gui/merging/Makefile.am b/addressbook/gui/merging/Makefile.am new file mode 100644 index 0000000000..493edc0002 --- /dev/null +++ b/addressbook/gui/merging/Makefile.am @@ -0,0 +1,22 @@ +INCLUDES = \ + -DG_LOG_DOMAIN=\"e-card-gui\" \ + -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \ + -DEVOLUTION_DATADIR=\""$(datadir)"\" \ + -I$(top_srcdir) \ + -I$(top_srcdir)/addressbook/backend/ebook \ + $(BONOBO_GNOME_CFLAGS) \ + $(EXTRA_GNOME_CFLAGS) + +noinst_LIBRARIES = \ + libecardmerging.a + +libecardmerging_a_SOURCES = \ + e-card-merging.c \ + e-card-merging.h + + +gladedir = $(datadir)/evolution/glade +glade_DATA = e-card-duplicate-detected.glade + +EXTRA_DIST = \ + $(glade_DATA) diff --git a/addressbook/gui/merging/e-card-duplicate-detected.glade b/addressbook/gui/merging/e-card-duplicate-detected.glade new file mode 100644 index 0000000000..bc6624e8fd --- /dev/null +++ b/addressbook/gui/merging/e-card-duplicate-detected.glade @@ -0,0 +1,255 @@ +<?xml version="1.0"?> +<GTK-Interface> + +<project> + <name>e-card-duplicate-detected</name> + <program_name>e-card-duplicate-detected</program_name> + <directory></directory> + <source_directory>src</source_directory> + <pixmaps_directory>pixmaps</pixmaps_directory> + <language>C</language> + <gnome_support>True</gnome_support> + <gettext_support>True</gettext_support> + <use_widget_names>True</use_widget_names> + <output_main_file>False</output_main_file> + <output_support_files>False</output_support_files> + <output_build_files>False</output_build_files> + <gnome_help_support>True</gnome_help_support> +</project> + +<widget> + <class>GnomeDialog</class> + <name>dialog-duplicate-contact</name> + <title>Duplicate Contact Detected</title> + <type>GTK_WINDOW_POPUP</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + <auto_close>False</auto_close> + <hide_on_close>False</hide_on_close> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDialog:vbox</child_name> + <name>dialog-vbox1</name> + <homogeneous>False</homogeneous> + <spacing>8</spacing> + <child> + <padding>4</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHButtonBox</class> + <child_name>GnomeDialog:action_area</child_name> + <name>dialog-action_area1</name> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>8</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkButton</class> + <name>button3</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>Add Anyway</label> + <stock_pixmap>GNOME_STOCK_PIXMAP_ADD</stock_pixmap> + </widget> + + <widget> + <class>GtkButton</class> + <name>button4</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button> + </widget> + </widget> + + <widget> + <class>GtkTable</class> + <name>table1</name> + <rows>5</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>6</row_spacing> + <column_spacing>6</column_spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>Custom</class> + <name>custom-old-card</name> + <creation_function>e_card_merging_create_old_card</creation_function> + <int1>0</int1> + <int2>0</int2> + <last_modification_time>Fri, 08 Jun 2001 01:33:22 GMT</last_modification_time> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>4</top_attach> + <bottom_attach>5</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label1</name> + <label>The name or email address of this contact already exists +in this folder. Would you like to add it anyway?</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</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> + + <widget> + <class>GtkLabel</class> + <name>label3</name> + <label>Original Contact:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</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> + + <widget> + <class>GtkLabel</class> + <name>label4</name> + <label>New Contact:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>Custom</class> + <name>custom-new-card</name> + <creation_function>e_card_merging_create_old_card</creation_function> + <int1>0</int1> + <int2>0</int2> + <last_modification_time>Fri, 08 Jun 2001 01:33:22 GMT</last_modification_time> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment1</name> + <xalign>0.5</xalign> + <yalign>0</yalign> + <xscale>1</xscale> + <yscale>0</yscale> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>5</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>Custom</class> + <name>custom2</name> + <creation_function>e_create_image_widget</creation_function> + <string1>malehead.png</string1> + <int1>0</int1> + <int2>0</int2> + <last_modification_time>Fri, 08 Jun 2001 00:18:39 GMT</last_modification_time> + </widget> + </widget> + </widget> + </widget> +</widget> + +</GTK-Interface> diff --git a/addressbook/gui/merging/e-card-merging.c b/addressbook/gui/merging/e-card-merging.c new file mode 100644 index 0000000000..701ab69da9 --- /dev/null +++ b/addressbook/gui/merging/e-card-merging.c @@ -0,0 +1,100 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Code for checking for duplicates when doing ECard work. + * + * Author: + * Christopher James Lahey <clahey@ximian.com> + * + * Copyright 2001, Ximian, Inc. + */ + +#include <config.h> + +#include "e-card-merging.h" +#include <libgnomeui/gnome-dialog.h> +#include "e-card-compare.h" +#include <glade/glade.h> +#include <gtk/gtksignal.h> +#include "addressbook/gui/widgets/e-minicard-widget.h" + +typedef struct { + EBook *book; + ECard *card; + EBookIdCallback cb; + gpointer closure; +} ECardMergingLookup; + +static void +clicked (GnomeDialog *dialog, int button, ECardMergingLookup *lookup) +{ + switch (button) { + case 0: + e_book_add_card (lookup->book, lookup->card, lookup->cb, lookup->closure); + break; + case 1: + if (lookup->cb) + lookup->cb (lookup->book, E_BOOK_STATUS_CANCELLED, NULL, lookup->closure); + break; + } + g_free (lookup); + gnome_dialog_close (dialog); +} + +static void +match_query_callback (ECard *card, ECard *match, ECardMatchType type, gpointer closure) +{ + ECardMergingLookup *lookup = closure; + if (type == E_CARD_MATCH_NONE) { + e_book_add_card (lookup->book, card, lookup->cb, lookup->closure); + g_free (lookup); + } else { + GladeXML *ui = glade_xml_new (EVOLUTION_GLADEDIR "/e-card-duplicate-detected.glade", NULL); + GtkWidget *widget; + + widget = glade_xml_get_widget (ui, "custom-old-card"); + gtk_object_set (GTK_OBJECT (widget), + "card", match, + NULL); + + widget = glade_xml_get_widget (ui, "custom-new-card"); + gtk_object_set (GTK_OBJECT (widget), + "card", card, + NULL); + + widget = glade_xml_get_widget (ui, "dialog-duplicate-contact"); + + gtk_signal_connect (GTK_OBJECT (widget), "clicked", + GTK_SIGNAL_FUNC (clicked), lookup); + } +} + +gboolean +e_card_merging_book_add_card (EBook *book, + ECard *card, + EBookIdCallback cb, + gpointer closure) +{ + ECardMergingLookup *lookup; + lookup = g_new (ECardMergingLookup, 1); + + lookup->book = book; + lookup->card = card; + lookup->cb = cb; + lookup->closure = closure; + + e_card_locate_match (card, match_query_callback, lookup); + return TRUE; +} + +GtkWidget * +e_card_merging_create_old_card(gchar *name, + gchar *string1, gchar *string2, + gint int1, gint int2); + +GtkWidget * +e_card_merging_create_old_card(gchar *name, + gchar *string1, gchar *string2, + gint int1, gint int2) +{ + return e_minicard_widget_new (); +} diff --git a/addressbook/gui/merging/e-card-merging.h b/addressbook/gui/merging/e-card-merging.h new file mode 100644 index 0000000000..022cad0099 --- /dev/null +++ b/addressbook/gui/merging/e-card-merging.h @@ -0,0 +1,27 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * The Evolution addressbook client object. + * + * Author: + * Christopher James Lahey <clahey@ximian.com> + * + * Copyright 2001, Ximian, Inc. + */ + +#ifndef __E_CARD_MERGING_H__ +#define __E_CARD_MERGING_H__ + +#include <libgnome/gnome-defs.h> + +#include <addressbook/backend/ebook/e-book.h> + +BEGIN_GNOME_DECLS + +gboolean e_card_merging_book_add_card (EBook *book, + ECard *card, + EBookIdCallback cb, + gpointer closure); + +END_GNOME_DECLS + +#endif /* ! __E_CARD_MERGING_H__ */ |