From 16167e67b513a6a75c3a477b5bce03c49789c64c Mon Sep 17 00:00:00 2001 From: hiro Date: Tue, 10 Apr 2007 06:33:21 +0000 Subject: also delete physical files when deleting data sources. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1606 ee746299-78ed-0310-b773-934348b2243d --- src/addressbook.c | 10 ++++++++++ src/importcsv.c | 30 +++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/addressbook.c b/src/addressbook.c index 2946b84b..94efd5c8 100644 --- a/src/addressbook.c +++ b/src/addressbook.c @@ -1679,6 +1679,14 @@ static void addressbook_treenode_delete_cb(gpointer data, guint action, /* Remove data source. */ if( addrindex_index_remove_datasource( _addressIndex_, ds ) ) { addressbook_free_child_adapters( node ); + abf = addressbook_get_book_file(); + if( abf ) { + gchar *bookFile; + bookFile = g_strconcat( abf->path, G_DIR_SEPARATOR_S, abf->fileName, NULL ); + debug_print("removing %s\n", bookFile); + g_unlink( bookFile ); + g_free( bookFile ); + } remFlag = TRUE; } } @@ -3590,6 +3598,7 @@ static void addressbook_import_ldif_cb() { if ( !adapter || !adapter->treeNode ) return; abf = addressbook_imp_ldif( _addressIndex_ ); + gtk_window_present( GTK_WINDOW(addrbook.window) ); if ( !abf ) return; ds = addrindex_index_add_datasource( _addressIndex_, ADDR_IF_BOOK, abf ); @@ -3620,6 +3629,7 @@ static void addressbook_import_csv_cb() { if ( !adapter || !adapter->treeNode ) return; abf = addressbook_imp_csv( _addressIndex_ ); + gtk_window_present( GTK_WINDOW(addrbook.window) ); if ( !abf ) return; ds = addrindex_index_add_datasource( _addressIndex_, ADDR_IF_BOOK, abf ); diff --git a/src/importcsv.c b/src/importcsv.c index 6b51b5dc..8c1a53dc 100644 --- a/src/importcsv.c +++ b/src/importcsv.c @@ -175,9 +175,6 @@ static gboolean imp_csv_load_fields( gchar *sFile ) { GtkCList *clist = GTK_CLIST(impcsv_dlg.clist_field); FILE *fp; gchar buf[BUFFSIZE]; - gchar *text[ FIELDS_N_COLS ]; - gint i; - gchar **strv; CharSet enc; g_return_val_if_fail(sFile != NULL, FALSE); @@ -192,8 +189,14 @@ static gboolean imp_csv_load_fields( gchar *sFile ) { return FALSE; } - while (fgets(buf, sizeof(buf), fp) != NULL) { + if (fgets(buf, sizeof(buf), fp) != NULL) { gchar *str; + gchar **strv; + gchar *text[ FIELDS_N_COLS ]; + gint i; + guint fields_len; + guint data_len = 0; + guint len; strretchomp(buf); if (enc == C_UTF_8) @@ -202,17 +205,26 @@ static gboolean imp_csv_load_fields( gchar *sFile ) { str = conv_localetodisp(buf, NULL); g_print("%s\n", str); strv = g_strsplit(str, ",", 0); + fields_len = sizeof(imp_csv_attrib) / sizeof(imp_csv_attrib[0]); + while (strv[data_len]) + ++data_len; + len = MAX(fields_len, data_len); - for (i = 0; strv[i] != NULL; i++) { + for (i = 0; i < len; i++) { text[ FIELD_COL_SELECT ] = ""; - text[ FIELD_COL_FIELD ] = strv[i]; - text[ FIELD_COL_ATTRIB ] = - i < N_CSV_ATTRIB ? gettext(imp_csv_attrib[i].name) : ""; + if (i < data_len) + text[ FIELD_COL_FIELD ] = strv[i]; + else + text[ FIELD_COL_FIELD ] = ""; + if (i < fields_len) + text[ FIELD_COL_ATTRIB ] = + gettext(imp_csv_attrib[i].name); + else + text[ FIELD_COL_ATTRIB ] = ""; gtk_clist_append( clist, text ); } g_strfreev(strv); g_free(str); - break; } fclose(fp); -- cgit v1.2.3