aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--ChangeLog.ja8
-rw-r--r--src/addressbook.c10
-rw-r--r--src/importcsv.c30
4 files changed, 47 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 668f3d46..cb4d21e7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2007-04-10
+ * src/addressbook.c: also delete physical files when deleting data
+ sources. Bring addressbook window in front after closing the import
+ dialogs.
+ * src/importcsv.c: imp_csv_load_fields(): implemented case:
+ CSV columns < address book fileds.
+
+2007-04-10
+
* src/importldif.c
src/importcsv.c: convert filename from/to UTF-8.
diff --git a/ChangeLog.ja b/ChangeLog.ja
index 4e80f9c6..38fa8a7d 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,13 @@
2007-04-10
+ * src/addressbook.c: データソース削除時に物理ファイルも削除する
+ ようにした。インポートダイアログを閉じたときにアドレス帳ウィンドウ
+ を前面に持ってくるようにした。
+ * src/importcsv.c: imp_csv_load_fields(): CSV カラム数 < アドレス帳
+ フィールド数の場合を実装。
+
+2007-04-10
+
* src/importldif.c
src/importcsv.c: ファイル名を UTF-8 から/に変換。
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);