summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Unidiff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/csvimportdialog.cpp73
-rw-r--r--kaddressbook/xxport/csvimportdialog.h4
2 files changed, 61 insertions, 16 deletions
diff --git a/kaddressbook/xxport/csvimportdialog.cpp b/kaddressbook/xxport/csvimportdialog.cpp
index cc55a24..41e2612 100644
--- a/kaddressbook/xxport/csvimportdialog.cpp
+++ b/kaddressbook/xxport/csvimportdialog.cpp
@@ -122,6 +122,7 @@ CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent,
122 mTypeMap.insert( KABC::Addressee::organizationLabel(), Organization ); 122 mTypeMap.insert( KABC::Addressee::organizationLabel(), Organization );
123 mTypeMap.insert( KABC::Addressee::noteLabel(), Note ); 123 mTypeMap.insert( KABC::Addressee::noteLabel(), Note );
124 mTypeMap.insert( KABC::Addressee::urlLabel(), URL ); 124 mTypeMap.insert( KABC::Addressee::urlLabel(), URL );
125 mTypeMap.insert( KABC::Addressee::categoryLabel(), Categories );
125 126
126 mCustomCounter = mTypeMap.count(); 127 mCustomCounter = mTypeMap.count();
127 int count = mCustomCounter; 128 int count = mCustomCounter;
@@ -139,6 +140,8 @@ CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent,
139 this, SLOT( textChanged ( const QString& ) ) ); 140 this, SLOT( textChanged ( const QString& ) ) );
140 connect( mComboLine, SIGNAL( activated( const QString& ) ), 141 connect( mComboLine, SIGNAL( activated( const QString& ) ),
141 this, SLOT( lineSelected( const QString& ) ) ); 142 this, SLOT( lineSelected( const QString& ) ) );
143 connect( mComboCodec, SIGNAL( activated( const QString& ) ),
144 this, SLOT( codecChanged( const QString& ) ) );
142 connect( mComboQuote, SIGNAL( activated( const QString& ) ), 145 connect( mComboQuote, SIGNAL( activated( const QString& ) ),
143 this, SLOT( textquoteSelected( const QString& ) ) ); 146 this, SLOT( textquoteSelected( const QString& ) ) );
144 connect( mIgnoreDuplicates, SIGNAL( stateChanged( int ) ), 147 connect( mIgnoreDuplicates, SIGNAL( stateChanged( int ) ),
@@ -249,9 +252,15 @@ KABC::AddresseeList CSVImportDialog::contacts() const
249 a.setOrganization( value ); 252 a.setOrganization( value );
250 break; 253 break;
251 case Note: 254 case Note:
252 a.setNote( value ); 255 if ( a.note().isEmpty() )
256 a.setNote( value );
257 else {
258 a.setNote( a.note()+"\n"+value );
259 }
260 break;
261 case Categories:
262 a.insertCategory( value );
253 break; 263 break;
254
255 case HomePhone: 264 case HomePhone:
256 if ( !value.isEmpty() ) { 265 if ( !value.isEmpty() ) {
257 KABC::PhoneNumber number( value, KABC::PhoneNumber::Home ); 266 KABC::PhoneNumber number( value, KABC::PhoneNumber::Home );
@@ -385,7 +394,7 @@ void CSVImportDialog::initGUI()
385 mUrlRequester->setFilter( "*.csv" ); 394 mUrlRequester->setFilter( "*.csv" );
386 hbox->addWidget( mUrlRequester ); 395 hbox->addWidget( mUrlRequester );
387 396
388 layout->addMultiCellLayout( hbox, 0, 0, 0, 1 ); 397 layout->addMultiCellLayout( hbox, 0, 0, 0, 2 );
389 398
390 // Delimiter: comma, semicolon, tab, space, other 399 // Delimiter: comma, semicolon, tab, space, other
391 mDelimiterBox = new QButtonGroup( i18n( "Delimiter" ), page ); 400 mDelimiterBox = new QButtonGroup( i18n( "Delimiter" ), page );
@@ -394,7 +403,7 @@ void CSVImportDialog::initGUI()
394 mDelimiterBox->layout()->setMargin( marginHint() ); 403 mDelimiterBox->layout()->setMargin( marginHint() );
395 QGridLayout *delimiterLayout = new QGridLayout( mDelimiterBox->layout() ); 404 QGridLayout *delimiterLayout = new QGridLayout( mDelimiterBox->layout() );
396 delimiterLayout->setAlignment( Qt::AlignTop ); 405 delimiterLayout->setAlignment( Qt::AlignTop );
397 layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 1 ); 406 layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 2 );
398 407
399 mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox ); 408 mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox );
400 mRadioComma->setChecked( true ); 409 mRadioComma->setChecked( true );
@@ -424,21 +433,27 @@ void CSVImportDialog::initGUI()
424 mComboQuote->insertItem( i18n( "'" ), 1 ); 433 mComboQuote->insertItem( i18n( "'" ), 1 );
425 mComboQuote->insertItem( i18n( "None" ), 2 ); 434 mComboQuote->insertItem( i18n( "None" ), 2 );
426 layout->addWidget( mComboQuote, 3, 0 ); 435 layout->addWidget( mComboQuote, 3, 0 );
427 436 mComboCodec = new QComboBox( false, page );
437 mComboCodec->insertItem( i18n( "UTF8" ), 0 );
438 mComboCodec->insertItem( i18n( "LATIN1" ), 1 );
439 mComboCodec->insertItem( i18n( "LOCALE" ), 2 );
440 layout->addWidget( mComboCodec, 3, 2 );
428 label = new QLabel( i18n( "Start at line:" ), page ); 441 label = new QLabel( i18n( "Start at line:" ), page );
429 layout->addWidget( label, 2, 1 ); 442 layout->addWidget( label, 2, 1 );
430 443
431 label = new QLabel( i18n( "Textquote:" ), page ); 444 label = new QLabel( i18n( "Textquote:" ), page );
432 layout->addWidget( label, 2, 0 ); 445 layout->addWidget( label, 2, 0 );
446 label = new QLabel( i18n( "Codec:" ), page );
447 layout->addWidget( label, 2, 2 );
433 448
434 mIgnoreDuplicates = new QCheckBox( page ); 449 mIgnoreDuplicates = new QCheckBox( page );
435 mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) ); 450 mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) );
436 layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 1 ); 451 layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 2 );
437 452
438 mTable = new QTable( 0, 0, page ); 453 mTable = new QTable( 0, 0, page );
439 mTable->setSelectionMode( QTable::NoSelection ); 454 mTable->setSelectionMode( QTable::NoSelection );
440 //mTable->horizontalHeader()->hide(); 455 //mTable->horizontalHeader()->hide();
441 layout->addMultiCellWidget( mTable, 5, 5, 0, 1 ); 456 layout->addMultiCellWidget( mTable, 5, 5, 0, 2 );
442/*US 457/*US
443 setButtonText( User1, i18n( "Apply Template" ) ); 458 setButtonText( User1, i18n( "Apply Template" ) );
444 setButtonText( User2, i18n( "Save Template" ) ); 459 setButtonText( User2, i18n( "Save Template" ) );
@@ -450,7 +465,7 @@ void CSVImportDialog::initGUI()
450 findButton( User2 )->setEnabled( false ); 465 findButton( User2 )->setEnabled( false );
451 466
452#ifdef DESKTOP_VERSION 467#ifdef DESKTOP_VERSION
453 resize( 500, 300 ); 468 resize( 640, 480 );
454#else 469#else
455 showMaximized(); 470 showMaximized();
456#endif 471#endif
@@ -483,10 +498,23 @@ void CSVImportDialog::fillTable()
483 clearTable(); 498 clearTable();
484 499
485 row = column = 1; 500 row = column = 1;
486 mData = QString( mFileArray ); 501 if ( mComboCodec->currentItem () == 0 ) {
502 mData = QString::fromUtf8( mFileArray.data() );
503 } else if ( mComboCodec->currentItem () == 1 ) {
504 mData = QString::fromLatin1( mFileArray.data() );
505 } else {
506 mData = QString::fromLocal8Bit( mFileArray.data() );
507 }
487 508
488 QTextStream inputStream( mData, IO_ReadOnly ); 509 QTextStream inputStream( mData, IO_ReadOnly );
489 inputStream.setEncoding( QTextStream::Locale ); 510
511 if ( mComboCodec->currentItem () == 0 ) {
512 inputStream.setEncoding( QTextStream::UnicodeUTF8 );
513 } else if ( mComboCodec->currentItem () == 1 ) {
514 inputStream.setEncoding( QTextStream::Latin1 );
515 } else {
516 inputStream.setEncoding( QTextStream::Locale );
517 }
490 518
491 int maxColumn = 0; 519 int maxColumn = 0;
492 while ( !inputStream.atEnd() ) { 520 while ( !inputStream.atEnd() ) {
@@ -608,9 +636,14 @@ void CSVImportDialog::fillTable()
608 636
609//US begin 637//US begin
610 QStringList keys; 638 QStringList keys;
639 uint iii = 0, count = mTypeMap.count();
640 while ( iii < count ) {
641 keys << "dummy";
642 ++iii;
643 }
611 QMap<QString, uint>::ConstIterator it; 644 QMap<QString, uint>::ConstIterator it;
612 for ( it = mTypeMap.begin(); it != mTypeMap.end(); ++it) 645 for ( it = mTypeMap.begin(); it != mTypeMap.end(); ++it)
613 keys << it.key(); 646 keys[( it.data() )] = it.key();
614//US end 647//US end
615 648
616 for ( column = 0; column < mTable->numCols(); ++column ) { 649 for ( column = 0; column < mTable->numCols(); ++column ) {
@@ -682,6 +715,10 @@ void CSVImportDialog::textChanged ( const QString& )
682 mRadioOther->setChecked ( true ); 715 mRadioOther->setChecked ( true );
683 delimiterClicked( 4 ); // other 716 delimiterClicked( 4 ); // other
684} 717}
718void CSVImportDialog::codecChanged ( const QString& )
719{
720 fillTable();
721}
685 722
686void CSVImportDialog::delimiterClicked( int id ) 723void CSVImportDialog::delimiterClicked( int id )
687{ 724{
@@ -754,7 +791,7 @@ void CSVImportDialog::applyTemplate()
754 791
755 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 792 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
756 { 793 {
757 qDebug("for "); 794
758//US KSimpleConfig config( *it, true ); 795//US KSimpleConfig config( *it, true );
759 KConfig config( *it ); 796 KConfig config( *it );
760 797
@@ -765,12 +802,12 @@ void CSVImportDialog::applyTemplate()
765 templates.append( config.readEntry( "Name" ) ); 802 templates.append( config.readEntry( "Name" ) );
766 fileMap.insert( config.readEntry( "Name" ), *it ); 803 fileMap.insert( config.readEntry( "Name" ), *it );
767 } 804 }
768 qDebug("weiter "); 805
769 // let the user chose, what to take 806 // let the user chose, what to take
770 bool ok = false; 807 bool ok = false;
771 QString tmp; 808 QString tmp;
772 tmp = QInputDialog::getItem( i18n( "Template Selection" ), 809 tmp = QInputDialog::getItem( i18n( "Template Selection" ),
773 i18n( "Please select a template, that matches the CSV file." ), 810 i18n( "Please select a template\nthat matches the CSV file." ),
774 templates, 0, false, &ok, this ); 811 templates, 0, false, &ok, this );
775 812
776 if ( !ok ) 813 if ( !ok )
@@ -820,7 +857,7 @@ void CSVImportDialog::saveTemplate()
820 if ( fileName.isEmpty() ) 857 if ( fileName.isEmpty() )
821 return; 858 return;
822 859
823 if ( !fileName.contains( ".desktop" ) ) 860 if ( !fileName.contains( ".desktop" ) )
824 fileName += ".desktop"; 861 fileName += ".desktop";
825 862
826 QString name = QInputDialog::getText( i18n( "Template name" ), i18n( "Please enter a name for the template" ) ); 863 QString name = QInputDialog::getText( i18n( "Template name" ), i18n( "Please enter a name for the template" ) );
@@ -860,6 +897,8 @@ QString CSVImportDialog::getText( int row, int col )
860 897
861uint CSVImportDialog::posToType( int pos ) const 898uint CSVImportDialog::posToType( int pos ) const
862{ 899{
900 return pos;
901#if 0
863 uint counter = 0; 902 uint counter = 0;
864 QMap<QString, uint>::ConstIterator it; 903 QMap<QString, uint>::ConstIterator it;
865 for ( it = mTypeMap.begin(); it != mTypeMap.end(); ++it, ++counter ) 904 for ( it = mTypeMap.begin(); it != mTypeMap.end(); ++it, ++counter )
@@ -867,10 +906,13 @@ uint CSVImportDialog::posToType( int pos ) const
867 return it.data(); 906 return it.data();
868 907
869 return 0; 908 return 0;
909#endif
870} 910}
871 911
872int CSVImportDialog::typeToPos( uint type ) const 912int CSVImportDialog::typeToPos( uint type ) const
873{ 913{
914 return type;
915#if 0
874 uint counter = 0; 916 uint counter = 0;
875 QMap<QString, uint>::ConstIterator it; 917 QMap<QString, uint>::ConstIterator it;
876 for ( it = mTypeMap.begin(); it != mTypeMap.end(); ++it, ++counter ) 918 for ( it = mTypeMap.begin(); it != mTypeMap.end(); ++it, ++counter )
@@ -878,6 +920,7 @@ int CSVImportDialog::typeToPos( uint type ) const
878 return counter; 920 return counter;
879 921
880 return -1; 922 return -1;
923#endif
881} 924}
882 925
883void CSVImportDialog::ignoreDuplicatesChanged( int ) 926void CSVImportDialog::ignoreDuplicatesChanged( int )
diff --git a/kaddressbook/xxport/csvimportdialog.h b/kaddressbook/xxport/csvimportdialog.h
index 545b5f9..5f55ab2 100644
--- a/kaddressbook/xxport/csvimportdialog.h
+++ b/kaddressbook/xxport/csvimportdialog.h
@@ -68,6 +68,7 @@ class CSVImportDialog : public KDialogBase
68 void ignoreDuplicatesChanged( int ); 68 void ignoreDuplicatesChanged( int );
69 void setFile( const QString& ); 69 void setFile( const QString& );
70 void urlChanged( const QString& ); 70 void urlChanged( const QString& );
71 void codecChanged ( const QString& );
71 72
72 void applyTemplate(); 73 void applyTemplate();
73 void saveTemplate(); 74 void saveTemplate();
@@ -81,7 +82,7 @@ class CSVImportDialog : public KDialogBase
81 BusinessAddressPostalCode, BusinessAddressCountry, 82 BusinessAddressPostalCode, BusinessAddressCountry,
82 BusinessAddressLabel, 83 BusinessAddressLabel,
83 HomePhone, BusinessPhone, MobilePhone, HomeFax, BusinessFax, CarPhone, 84 HomePhone, BusinessPhone, MobilePhone, HomeFax, BusinessFax, CarPhone,
84 Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL 85 Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL, Categories
85 }; 86 };
86 87
87 QTable* mTable; 88 QTable* mTable;
@@ -94,6 +95,7 @@ class CSVImportDialog : public KDialogBase
94 QLineEdit* mDelimiterEdit; 95 QLineEdit* mDelimiterEdit;
95 QComboBox* mComboLine; 96 QComboBox* mComboLine;
96 QComboBox* mComboQuote; 97 QComboBox* mComboQuote;
98 QComboBox* mComboCodec;
97 QCheckBox* mIgnoreDuplicates; 99 QCheckBox* mIgnoreDuplicates;
98 KURLRequester* mUrlRequester; 100 KURLRequester* mUrlRequester;
99 101