Bug #707121 - Merge contacts dialogs indefinitely expands by itself
This commit is contained in:
@ -87,13 +87,8 @@ dist-hook:
|
||||
|
||||
etspec_DATA= e-addressbook-view.etspec
|
||||
|
||||
ui_DATA = \
|
||||
eab-contact-duplicate-detected.ui \
|
||||
eab-contact-commit-duplicate-detected.ui
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(etspec_DATA) \
|
||||
$(rule_DATA) \
|
||||
$(ui_DATA)
|
||||
$(rule_DATA)
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
||||
@ -1,185 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--*- mode: xml -*-->
|
||||
<interface>
|
||||
<object class="GtkDialog" id="dialog-duplicate-contact">
|
||||
<property name="border_width">6</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="title" translatable="yes">Duplicate Contact Detected</property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
|
||||
<property name="modal">False</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="dialog-vbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="dialog-action_area1">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="button3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-cancel</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="button4">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-save</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTable" id="table1">
|
||||
<property name="border_width">6</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">5</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<property name="column_spacing">6</property>
|
||||
<child>
|
||||
<object class="EABContactDisplay" type-func="eab_contact_display_get_type" id="custom-old-contact">
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">The name or email of this contact already exists in this folder. Would you like to save the changes anyway?</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label3">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes" comments="Translators: Heading of the contact which has same name or email address in this folder already.">Conflicting Contact:</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_CENTER</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Changed Contact:</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_CENTER</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="EABContactDisplay" type-func="eab_contact_display_get_type" id="custom-new-contact">
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment1">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="xscale">1</property>
|
||||
<property name="yscale">0</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="custom2">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">avatar-default</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="1">button3</action-widget>
|
||||
<action-widget response="0">button4</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
</interface>
|
||||
@ -1,219 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--*- mode: xml -*-->
|
||||
<interface>
|
||||
<object class="GtkDialog" id="dialog-duplicate-contact">
|
||||
<property name="visible">True</property>
|
||||
<property name="title" translatable="yes">Duplicate Contact Detected</property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_NONE</property>
|
||||
<property name="modal">False</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
<property name="decorated">True</property>
|
||||
<property name="skip_taskbar_hint">False</property>
|
||||
<property name="skip_pager_hint">False</property>
|
||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
||||
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
||||
<property name="height-request">400</property>
|
||||
<property name="width-request">500</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="dialog-vbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">0</property>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkHButtonBox" id="dialog-action_area1">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="button4">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-cancel</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="button3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-add</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="button5">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Merge</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="shadow_type">GTK_SHADOW_IN</property>
|
||||
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
||||
<child>
|
||||
<object class="GtkViewport" id="viewport1">
|
||||
<child>
|
||||
<object class="GtkTable" id="table1">
|
||||
<property name="border_width">12</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">5</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<property name="column_spacing">12</property>
|
||||
<child>
|
||||
<object class="EABContactDisplay" type-func="eab_contact_display_get_type" id="custom-old-contact">
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">The name or email address of this contact already exists
|
||||
in this folder. Would you like to add it anyway?</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label3">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Original Contact:</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_CENTER</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">New Contact:</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_CENTER</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="EABContactDisplay" type-func="eab_contact_display_get_type" id="custom-new-contact">
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment1">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="xscale">1</property>
|
||||
<property name="yscale">0</property>
|
||||
<property name="top_padding">0</property>
|
||||
<property name="bottom_padding">0</property>
|
||||
<property name="left_padding">0</property>
|
||||
<property name="right_padding">0</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="custom2">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">avatar-default</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="1">button4</action-widget>
|
||||
<action-widget response="0">button3</action-widget>
|
||||
<action-widget response="2">button5</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
</interface>
|
||||
@ -597,28 +597,210 @@ check_if_same (EContact *contact,
|
||||
return res;
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
create_iconic_button (const gchar *label,
|
||||
const gchar *icon_name)
|
||||
{
|
||||
GtkWidget *button, *image;
|
||||
|
||||
button = gtk_button_new_with_mnemonic (label);
|
||||
|
||||
if (icon_name) {
|
||||
image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON);
|
||||
gtk_button_set_image (GTK_BUTTON (button), image);
|
||||
}
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
create_duplicate_contact_detected_dialog (EContact *old_contact,
|
||||
EContact *new_contact,
|
||||
gboolean disable_merge,
|
||||
gboolean is_for_commit)
|
||||
{
|
||||
GtkWidget *widget, *scrolled;
|
||||
GtkContainer *container;
|
||||
GtkDialog *dialog;
|
||||
const gchar *text;
|
||||
|
||||
widget = gtk_dialog_new ();
|
||||
dialog = GTK_DIALOG (widget);
|
||||
|
||||
g_object_set (G_OBJECT (dialog),
|
||||
"title", _("Duplicate Contact Detected"),
|
||||
"default-width", 500,
|
||||
"default-height", 400,
|
||||
NULL);
|
||||
|
||||
gtk_dialog_add_action_widget (dialog, create_iconic_button (_("_Cancel"), GTK_STOCK_CANCEL), GTK_RESPONSE_CANCEL);
|
||||
|
||||
if (is_for_commit) {
|
||||
gtk_dialog_add_action_widget (dialog, create_iconic_button (_("_Save"), "document-save"), GTK_RESPONSE_OK);
|
||||
} else {
|
||||
gtk_dialog_add_action_widget (dialog, create_iconic_button (_("_Add"), "list-add"), GTK_RESPONSE_OK);
|
||||
gtk_dialog_add_action_widget (dialog, create_iconic_button (_("_Merge"), NULL), GTK_RESPONSE_APPLY);
|
||||
}
|
||||
|
||||
if (disable_merge)
|
||||
gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_APPLY, FALSE);
|
||||
|
||||
container = GTK_CONTAINER (gtk_dialog_get_content_area (dialog));
|
||||
|
||||
widget = gtk_grid_new ();
|
||||
g_object_set (G_OBJECT (widget),
|
||||
"orientation", GTK_ORIENTATION_HORIZONTAL,
|
||||
"hexpand", TRUE,
|
||||
"halign", GTK_ALIGN_FILL,
|
||||
"vexpand", TRUE,
|
||||
"valign", GTK_ALIGN_FILL,
|
||||
"margin", 12,
|
||||
NULL);
|
||||
|
||||
gtk_container_add (container, widget);
|
||||
container = GTK_CONTAINER (widget);
|
||||
|
||||
widget = gtk_image_new_from_icon_name ("avatar-default", GTK_ICON_SIZE_BUTTON);
|
||||
g_object_set (G_OBJECT (widget),
|
||||
"hexpand", FALSE,
|
||||
"halign", GTK_ALIGN_START,
|
||||
"vexpand", FALSE,
|
||||
"valign", GTK_ALIGN_START,
|
||||
"margin-right", 12,
|
||||
NULL);
|
||||
gtk_container_add (container, widget);
|
||||
|
||||
widget = gtk_grid_new ();
|
||||
g_object_set (G_OBJECT (widget),
|
||||
"orientation", GTK_ORIENTATION_VERTICAL,
|
||||
"hexpand", TRUE,
|
||||
"halign", GTK_ALIGN_FILL,
|
||||
"vexpand", TRUE,
|
||||
"valign", GTK_ALIGN_FILL,
|
||||
NULL);
|
||||
|
||||
gtk_container_add (container, widget);
|
||||
container = GTK_CONTAINER (widget);
|
||||
|
||||
if (is_for_commit)
|
||||
text = _("The name or email address of this contact already exists\n"
|
||||
"in this folder. Would you like to save the changes anyway?");
|
||||
else
|
||||
text = _("The name or email address of this contact already exists\n"
|
||||
"in this folder. Would you like to add it anyway?");
|
||||
|
||||
widget = gtk_label_new (text);
|
||||
g_object_set (G_OBJECT (widget),
|
||||
"hexpand", FALSE,
|
||||
"halign", GTK_ALIGN_START,
|
||||
"vexpand", FALSE,
|
||||
"valign", GTK_ALIGN_START,
|
||||
"margin-bottom", 6,
|
||||
NULL);
|
||||
gtk_container_add (container, widget);
|
||||
|
||||
if (is_for_commit)
|
||||
text = _("Changed Contact:");
|
||||
else
|
||||
text = _("New Contact:");
|
||||
|
||||
widget = gtk_label_new (text);
|
||||
g_object_set (G_OBJECT (widget),
|
||||
"hexpand", FALSE,
|
||||
"halign", GTK_ALIGN_START,
|
||||
"vexpand", FALSE,
|
||||
"valign", GTK_ALIGN_START,
|
||||
"margin-bottom", 6,
|
||||
NULL);
|
||||
gtk_container_add (container, widget);
|
||||
|
||||
scrolled = gtk_scrolled_window_new (NULL, NULL);
|
||||
g_object_set (G_OBJECT (scrolled),
|
||||
"hexpand", TRUE,
|
||||
"halign", GTK_ALIGN_FILL,
|
||||
"hscrollbar-policy", GTK_POLICY_AUTOMATIC,
|
||||
"vexpand", TRUE,
|
||||
"valign", GTK_ALIGN_FILL,
|
||||
"vscrollbar-policy", GTK_POLICY_AUTOMATIC,
|
||||
"margin-bottom", 6,
|
||||
NULL);
|
||||
gtk_container_add (container, scrolled);
|
||||
|
||||
widget = eab_contact_display_new ();
|
||||
g_object_set (G_OBJECT (widget),
|
||||
"hexpand", TRUE,
|
||||
"halign", GTK_ALIGN_FILL,
|
||||
"vexpand", TRUE,
|
||||
"valign", GTK_ALIGN_FILL,
|
||||
"contact", new_contact,
|
||||
"mode", EAB_CONTACT_DISPLAY_RENDER_COMPACT,
|
||||
NULL);
|
||||
gtk_container_add (GTK_CONTAINER (scrolled), widget);
|
||||
|
||||
if (is_for_commit)
|
||||
text = _("Conflicting Contact:");
|
||||
else
|
||||
text = _("Old Contact:");
|
||||
|
||||
widget = gtk_label_new (text);
|
||||
g_object_set (G_OBJECT (widget),
|
||||
"hexpand", FALSE,
|
||||
"halign", GTK_ALIGN_START,
|
||||
"vexpand", FALSE,
|
||||
"valign", GTK_ALIGN_START,
|
||||
"margin-bottom", 6,
|
||||
NULL);
|
||||
gtk_container_add (container, widget);
|
||||
|
||||
scrolled = gtk_scrolled_window_new (NULL, NULL);
|
||||
g_object_set (G_OBJECT (scrolled),
|
||||
"hexpand", TRUE,
|
||||
"halign", GTK_ALIGN_FILL,
|
||||
"hscrollbar-policy", GTK_POLICY_AUTOMATIC,
|
||||
"vexpand", TRUE,
|
||||
"valign", GTK_ALIGN_FILL,
|
||||
"vscrollbar-policy", GTK_POLICY_AUTOMATIC,
|
||||
NULL);
|
||||
gtk_container_add (container, scrolled);
|
||||
|
||||
widget = eab_contact_display_new ();
|
||||
g_object_set (G_OBJECT (widget),
|
||||
"hexpand", TRUE,
|
||||
"halign", GTK_ALIGN_FILL,
|
||||
"vexpand", TRUE,
|
||||
"valign", GTK_ALIGN_FILL,
|
||||
"contact", old_contact,
|
||||
"mode", EAB_CONTACT_DISPLAY_RENDER_COMPACT,
|
||||
NULL);
|
||||
gtk_container_add (GTK_CONTAINER (scrolled), widget);
|
||||
|
||||
gtk_widget_show_all (gtk_dialog_get_content_area (dialog));
|
||||
|
||||
return GTK_WIDGET (dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
response (GtkWidget *dialog,
|
||||
gint response,
|
||||
EContactMergingLookup *lookup)
|
||||
{
|
||||
static gint merge_response;
|
||||
|
||||
switch (response) {
|
||||
case 0:
|
||||
case GTK_RESPONSE_OK:
|
||||
doit (lookup, FALSE);
|
||||
break;
|
||||
case 1:
|
||||
case GTK_RESPONSE_CANCEL:
|
||||
cancelit (lookup);
|
||||
break;
|
||||
case 2:
|
||||
merge_response = mergeit (lookup);
|
||||
if (merge_response)
|
||||
case GTK_RESPONSE_APPLY:
|
||||
if (mergeit (lookup))
|
||||
break;
|
||||
return;
|
||||
case GTK_RESPONSE_DELETE_EVENT:
|
||||
cancelit (lookup);
|
||||
break;
|
||||
default:
|
||||
g_warn_if_reached ();
|
||||
break;
|
||||
}
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
@ -631,7 +813,7 @@ match_query_callback (EContact *contact,
|
||||
gpointer closure)
|
||||
{
|
||||
EContactMergingLookup *lookup = closure;
|
||||
gint flag;
|
||||
gboolean flag;
|
||||
gboolean same_uids;
|
||||
|
||||
if (lookup->op == E_CONTACT_MERGING_FIND) {
|
||||
@ -656,63 +838,25 @@ match_query_callback (EContact *contact,
|
||||
if ((gint) type <= (gint) EAB_CONTACT_MATCH_VAGUE || same_uids) {
|
||||
doit (lookup, same_uids);
|
||||
} else {
|
||||
GtkBuilder *builder;
|
||||
GtkWidget *container;
|
||||
GtkWidget *merge_button;
|
||||
GtkWidget *widget;
|
||||
|
||||
builder = gtk_builder_new ();
|
||||
GtkWidget *dialog;
|
||||
|
||||
lookup->match = g_object_ref (match);
|
||||
if (lookup->op == E_CONTACT_MERGING_ADD) {
|
||||
/* Compares all the values of contacts and return true, if they match */
|
||||
flag = check_if_same (contact, match);
|
||||
e_load_ui_builder_definition (
|
||||
builder, "eab-contact-duplicate-detected.ui");
|
||||
merge_button = e_builder_get_widget (builder, "button5");
|
||||
/* Merge Button not sensitive when all values are same */
|
||||
if (flag)
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (merge_button), FALSE);
|
||||
dialog = create_duplicate_contact_detected_dialog (match, contact, flag, FALSE);
|
||||
} else if (lookup->op == E_CONTACT_MERGING_COMMIT) {
|
||||
e_load_ui_builder_definition (
|
||||
builder, "eab-contact-commit-duplicate-detected.ui");
|
||||
dialog = create_duplicate_contact_detected_dialog (match, contact, FALSE, TRUE);
|
||||
} else {
|
||||
doit (lookup, FALSE);
|
||||
g_object_unref (builder);
|
||||
return;
|
||||
}
|
||||
|
||||
widget = e_builder_get_widget (builder, "custom-old-contact");
|
||||
eab_contact_display_set_mode (
|
||||
EAB_CONTACT_DISPLAY (widget),
|
||||
EAB_CONTACT_DISPLAY_RENDER_COMPACT);
|
||||
eab_contact_display_set_contact (
|
||||
EAB_CONTACT_DISPLAY (widget), match);
|
||||
|
||||
widget = e_builder_get_widget (builder, "custom-new-contact");
|
||||
eab_contact_display_set_mode (
|
||||
EAB_CONTACT_DISPLAY (widget),
|
||||
EAB_CONTACT_DISPLAY_RENDER_COMPACT);
|
||||
eab_contact_display_set_contact (
|
||||
EAB_CONTACT_DISPLAY (widget), contact);
|
||||
|
||||
widget = e_builder_get_widget (builder, "dialog-duplicate-contact");
|
||||
|
||||
gtk_widget_ensure_style (widget);
|
||||
|
||||
container = gtk_dialog_get_action_area (GTK_DIALOG (widget));
|
||||
gtk_container_set_border_width (GTK_CONTAINER (container), 12);
|
||||
|
||||
container = gtk_dialog_get_content_area (GTK_DIALOG (widget));
|
||||
gtk_container_set_border_width (GTK_CONTAINER (container), 0);
|
||||
|
||||
g_signal_connect (
|
||||
widget, "response",
|
||||
dialog, "response",
|
||||
G_CALLBACK (response), lookup);
|
||||
|
||||
gtk_widget_show_all (widget);
|
||||
|
||||
g_object_unref (builder);
|
||||
gtk_widget_show_all (dialog);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -9,8 +9,6 @@ addressbook/gui/contact-editor/e-contact-quick-add.c
|
||||
[type: gettext/glade]addressbook/gui/contact-editor/fullname.ui
|
||||
[type: gettext/glade]addressbook/gui/contact-list-editor/contact-list-editor.ui
|
||||
addressbook/gui/contact-list-editor/e-contact-list-editor.c
|
||||
[type: gettext/glade]addressbook/gui/widgets/eab-contact-commit-duplicate-detected.ui
|
||||
[type: gettext/glade]addressbook/gui/widgets/eab-contact-duplicate-detected.ui
|
||||
addressbook/gui/widgets/eab-contact-merging.c
|
||||
addressbook/gui/widgets/addresstypes.xml
|
||||
addressbook/gui/widgets/e-addressbook-model.c
|
||||
|
||||
Reference in New Issue
Block a user