aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-04-10 06:33:21 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-04-10 06:33:21 +0000
commit16167e67b513a6a75c3a477b5bce03c49789c64c (patch)
treec6ea7cd2c2b83ff467cdc35de8723af80a6aa0d5 /src
parent5ff17ba27424a29ae8e0ff3776944ea2a64dcab6 (diff)
also delete physical files when deleting data sources.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1606 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r--src/addressbook.c10
-rw-r--r--src/importcsv.c30
2 files changed, 31 insertions, 9 deletions
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);