diff options
Diffstat (limited to 'addressbook/gui')
7 files changed, 64 insertions, 8 deletions
diff --git a/addressbook/gui/component/addressbook-factory.c b/addressbook/gui/component/addressbook-factory.c index 27f5adedaf..e83933debf 100644 --- a/addressbook/gui/component/addressbook-factory.c +++ b/addressbook/gui/component/addressbook-factory.c @@ -16,6 +16,7 @@ #include "addressbook.h" #include "addressbook-component.h" +#include "select-names/e-select-names-factory.h" #ifdef USING_OAF 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 c131c4d66f..94fb3d980a 100644 --- a/addressbook/gui/component/select-names/e-select-names-model.c +++ b/addressbook/gui/component/select-names/e-select-names-model.c @@ -260,6 +260,8 @@ e_select_names_model_insert (ESelectNamesModel *model, iterator = e_list_get_iterator(model->data); index = 0; + } else { + gtk_object_ref(GTK_OBJECT(iterator)); } if (strings[0]) { ESelectNamesModelData *node = (void *) e_iterator_get(iterator); @@ -288,6 +290,7 @@ e_select_names_model_insert (ESelectNamesModel *model, g_free(node); } e_select_names_model_changed(model); + gtk_object_unref(GTK_OBJECT(iterator)); } void @@ -347,6 +350,16 @@ e_select_names_model_replace (ESelectNamesModel *model, int length, char *data) { + if (iterator == NULL) { + ESelectNamesModelData new = {E_SELECT_NAMES_MODEL_DATA_TYPE_STRING_ADDRESS, NULL, ""}; + + e_list_append(model->data, &new); + iterator = e_list_get_iterator(model->data); + + index = 0; + } else { + gtk_object_ref(GTK_OBJECT(iterator)); + } while (length > 0 && e_iterator_is_valid(iterator)) { ESelectNamesModelData *node = (void *) e_iterator_get(iterator); int this_length = strlen(node->string); @@ -377,10 +390,14 @@ e_select_names_model_replace (ESelectNamesModel *model, if (!e_iterator_is_valid(iterator)) { ESelectNamesModelData *node; e_iterator_last(iterator); - node = (void *) e_iterator_get(iterator); - index = strlen(node->string); + if (e_iterator_is_valid(iterator)) { + node = (void *) e_iterator_get(iterator); + index = strlen(node->string); + } else + index = 0; } e_select_names_model_insert (model, iterator, index, data); + gtk_object_unref(GTK_OBJECT(iterator)); } diff --git a/addressbook/gui/component/select-names/e-select-names-table-model.c b/addressbook/gui/component/select-names/e-select-names-table-model.c index b6e13bf81b..2e33fdfe85 100644 --- a/addressbook/gui/component/select-names/e-select-names-table-model.c +++ b/addressbook/gui/component/select-names/e-select-names-table-model.c @@ -195,6 +195,7 @@ e_select_names_table_model_value_at (ETableModel *etc, int col, int row) { ESelectNamesTableModel *e_select_names_table_model = E_SELECT_NAMES_TABLE_MODEL(etc); if (e_select_names_table_model->data == NULL) { + fill_in_info(e_select_names_table_model); } switch (col) { case 0: diff --git a/addressbook/gui/component/select-names/e-select-names-text-model.c b/addressbook/gui/component/select-names/e-select-names-text-model.c index dd28a50239..7fa7b87892 100644 --- a/addressbook/gui/component/select-names/e-select-names-text-model.c +++ b/addressbook/gui/component/select-names/e-select-names-text-model.c @@ -123,6 +123,10 @@ e_select_names_text_model_set_text (ETextModel *model, gchar *text) { ESelectNamesModel *source = E_SELECT_NAMES_TEXT_MODEL(model)->source; EIterator *iterator = e_list_get_iterator(e_select_names_model_get_data(source)); + int length = 0; + if (model->text) { + length = strlen(model->text); + } e_iterator_reset(iterator); if (!e_iterator_is_valid(iterator)) { @@ -132,7 +136,7 @@ e_select_names_text_model_set_text (ETextModel *model, gchar *text) e_select_names_model_replace(source, iterator, 0, - strlen(model->text), + length, text); if (iterator) gtk_object_unref(GTK_OBJECT(iterator)); @@ -230,7 +234,8 @@ e_select_names_text_model_model_changed (ESelectNamesModel *source, length ++; length_count++; } - length --; + if (length > 0) + length --; g_free(model->lengths); model->lengths = g_new(int, length_count + 1); @@ -249,8 +254,10 @@ e_select_names_text_model_model_changed (ESelectNamesModel *source, *(stringp++) = ','; *(lengthsp++) = this_length; } - stringp --; - *stringp = 0; + if (stringp != string) { + stringp --; + *stringp = 0; + } *lengthsp = -1; g_free(E_TEXT_MODEL(model)->text); E_TEXT_MODEL(model)->text = string; diff --git a/addressbook/gui/component/select-names/e-select-names.c b/addressbook/gui/component/select-names/e-select-names.c index a588b10770..555f195514 100644 --- a/addressbook/gui/component/select-names/e-select-names.c +++ b/addressbook/gui/component/select-names/e-select-names.c @@ -169,6 +169,17 @@ set_current_selection(ETable *table, int row, ESelectNames *names) } static void +e_select_names_clicked(ESelectNames *dialog, gint button, ESelectNames *data) +{ + switch(button) { + case 0: + break; + case 1: + break; + } +} + +static void e_select_names_init (ESelectNames *e_select_names) { GladeXML *gui; @@ -194,6 +205,9 @@ e_select_names_init (ESelectNames *e_select_names) GNOME_STOCK_BUTTON_CANCEL, NULL); + gtk_signal_connect(GTK_OBJECT(e_select_names), "clicked", + GTK_SIGNAL_FUNC(e_select_names_clicked), e_select_names); + e_select_names->table = E_TABLE(glade_xml_get_widget(gui, "table-source")); e_select_names->model = gtk_object_get_data(GTK_OBJECT(e_select_names->table), "model"); @@ -292,6 +306,17 @@ button_clicked(GtkWidget *button, ESelectNamesChild *child) } } +static void +remove_address(ETable *table, int row, ESelectNamesChild *child) +{ + EIterator *iterator = e_list_get_iterator(e_select_names_model_get_data(child->source)); + e_iterator_reset(iterator); + for (; row > 0; row--) { + e_iterator_next(iterator); + } + e_select_names_model_remove_item(child->source, iterator); +} + void e_select_names_add_section(ESelectNames *e_select_names, char *name, char *id, ESelectNamesModel *source) { @@ -340,6 +365,9 @@ e_select_names_add_section(ESelectNames *e_select_names, char *name, char *id, E g_str_compare, TRUE), 0); etable = e_table_new (header, model, SPEC2); + gtk_signal_connect(GTK_OBJECT(etable), "double_click", + GTK_SIGNAL_FUNC(remove_address), child); + gtk_object_set(GTK_OBJECT(etable), "cursor_mode", E_TABLE_CURSOR_LINE, NULL); diff --git a/addressbook/gui/component/select-names/select-names.glade b/addressbook/gui/component/select-names/select-names.glade index 46da911228..90ca93bd3a 100644 --- a/addressbook/gui/component/select-names/select-names.glade +++ b/addressbook/gui/component/select-names/select-names.glade @@ -114,6 +114,7 @@ <widget> <class>GtkEntry</class> <name>entry-find</name> + <visible>False</visible> <can_focus>True</can_focus> <has_focus>True</has_focus> <editable>True</editable> @@ -130,6 +131,7 @@ <widget> <class>GtkButton</class> <name>button-find</name> + <visible>False</visible> <can_focus>True</can_focus> <label>Find...</label> <child> @@ -143,7 +145,7 @@ <widget> <class>GtkAccelLabel</class> <name>accellabel1</name> - <label>T_ype name or select from List:</label> + <label>Select name from List:</label> <justify>GTK_JUSTIFY_LEFT</justify> <wrap>False</wrap> <xalign>0</xalign> diff --git a/addressbook/gui/component/select-names/select-names.glade.h b/addressbook/gui/component/select-names/select-names.glade.h index a21ddce689..1cb9702956 100644 --- a/addressbook/gui/component/select-names/select-names.glade.h +++ b/addressbook/gui/component/select-names/select-names.glade.h @@ -6,5 +6,5 @@ gchar *s = N_("Select Names"); gchar *s = N_("Find..."); -gchar *s = N_("T_ype name or select from List:"); +gchar *s = N_("Select name from List:"); gchar *s = N_("Message Recipients"); |