-rw-r--r-- | kaddressbook/xxport/csvimportdialog.cpp | 67 | ||||
-rw-r--r-- | kaddressbook/xxport/csvimportdialog.h | 4 |
2 files changed, 58 insertions, 13 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 @@ -123,4 +123,5 @@ CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, mTypeMap.insert( KABC::Addressee::noteLabel(), Note ); mTypeMap.insert( KABC::Addressee::urlLabel(), URL ); + mTypeMap.insert( KABC::Addressee::categoryLabel(), Categories ); mCustomCounter = mTypeMap.count(); @@ -140,4 +141,6 @@ CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, connect( mComboLine, SIGNAL( activated( const QString& ) ), this, SLOT( lineSelected( const QString& ) ) ); + connect( mComboCodec, SIGNAL( activated( const QString& ) ), + this, SLOT( codecChanged( const QString& ) ) ); connect( mComboQuote, SIGNAL( activated( const QString& ) ), this, SLOT( textquoteSelected( const QString& ) ) ); @@ -250,7 +253,13 @@ KABC::AddresseeList CSVImportDialog::contacts() const break; case Note: + if ( a.note().isEmpty() ) a.setNote( value ); + else { + a.setNote( a.note()+"\n"+value ); + } + break; + case Categories: + a.insertCategory( value ); break; - case HomePhone: if ( !value.isEmpty() ) { @@ -386,5 +395,5 @@ void CSVImportDialog::initGUI() hbox->addWidget( mUrlRequester ); - layout->addMultiCellLayout( hbox, 0, 0, 0, 1 ); + layout->addMultiCellLayout( hbox, 0, 0, 0, 2 ); // Delimiter: comma, semicolon, tab, space, other @@ -395,5 +404,5 @@ void CSVImportDialog::initGUI() QGridLayout *delimiterLayout = new QGridLayout( mDelimiterBox->layout() ); delimiterLayout->setAlignment( Qt::AlignTop ); - layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 1 ); + layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 2 ); mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox ); @@ -425,5 +434,9 @@ void CSVImportDialog::initGUI() mComboQuote->insertItem( i18n( "None" ), 2 ); layout->addWidget( mComboQuote, 3, 0 ); - + mComboCodec = new QComboBox( false, page ); + mComboCodec->insertItem( i18n( "UTF8" ), 0 ); + mComboCodec->insertItem( i18n( "LATIN1" ), 1 ); + mComboCodec->insertItem( i18n( "LOCALE" ), 2 ); + layout->addWidget( mComboCodec, 3, 2 ); label = new QLabel( i18n( "Start at line:" ), page ); layout->addWidget( label, 2, 1 ); @@ -431,13 +444,15 @@ void CSVImportDialog::initGUI() label = new QLabel( i18n( "Textquote:" ), page ); layout->addWidget( label, 2, 0 ); + label = new QLabel( i18n( "Codec:" ), page ); + layout->addWidget( label, 2, 2 ); mIgnoreDuplicates = new QCheckBox( page ); mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) ); - layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 1 ); + layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 2 ); mTable = new QTable( 0, 0, page ); mTable->setSelectionMode( QTable::NoSelection ); //mTable->horizontalHeader()->hide(); - layout->addMultiCellWidget( mTable, 5, 5, 0, 1 ); + layout->addMultiCellWidget( mTable, 5, 5, 0, 2 ); /*US setButtonText( User1, i18n( "Apply Template" ) ); @@ -451,5 +466,5 @@ void CSVImportDialog::initGUI() #ifdef DESKTOP_VERSION - resize( 500, 300 ); + resize( 640, 480 ); #else showMaximized(); @@ -484,8 +499,21 @@ void CSVImportDialog::fillTable() row = column = 1; - mData = QString( mFileArray ); + if ( mComboCodec->currentItem () == 0 ) { + mData = QString::fromUtf8( mFileArray.data() ); + } else if ( mComboCodec->currentItem () == 1 ) { + mData = QString::fromLatin1( mFileArray.data() ); + } else { + mData = QString::fromLocal8Bit( mFileArray.data() ); + } QTextStream inputStream( mData, IO_ReadOnly ); + + if ( mComboCodec->currentItem () == 0 ) { + inputStream.setEncoding( QTextStream::UnicodeUTF8 ); + } else if ( mComboCodec->currentItem () == 1 ) { + inputStream.setEncoding( QTextStream::Latin1 ); + } else { inputStream.setEncoding( QTextStream::Locale ); + } int maxColumn = 0; @@ -609,7 +637,12 @@ void CSVImportDialog::fillTable() //US begin QStringList keys; + uint iii = 0, count = mTypeMap.count(); + while ( iii < count ) { + keys << "dummy"; + ++iii; + } QMap<QString, uint>::ConstIterator it; for ( it = mTypeMap.begin(); it != mTypeMap.end(); ++it) - keys << it.key(); + keys[( it.data() )] = it.key(); //US end @@ -683,4 +716,8 @@ void CSVImportDialog::textChanged ( const QString& ) delimiterClicked( 4 ); // other } +void CSVImportDialog::codecChanged ( const QString& ) +{ + fillTable(); +} void CSVImportDialog::delimiterClicked( int id ) @@ -755,5 +792,5 @@ void CSVImportDialog::applyTemplate() for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { - qDebug("for "); + //US KSimpleConfig config( *it, true ); KConfig config( *it ); @@ -766,10 +803,10 @@ void CSVImportDialog::applyTemplate() fileMap.insert( config.readEntry( "Name" ), *it ); } - qDebug("weiter "); + // let the user chose, what to take bool ok = false; QString tmp; tmp = QInputDialog::getItem( i18n( "Template Selection" ), - i18n( "Please select a template, that matches the CSV file." ), + i18n( "Please select a template\nthat matches the CSV file." ), templates, 0, false, &ok, this ); @@ -861,4 +898,6 @@ QString CSVImportDialog::getText( int row, int col ) uint CSVImportDialog::posToType( int pos ) const { + return pos; +#if 0 uint counter = 0; QMap<QString, uint>::ConstIterator it; @@ -868,8 +907,11 @@ uint CSVImportDialog::posToType( int pos ) const return 0; +#endif } int CSVImportDialog::typeToPos( uint type ) const { + return type; +#if 0 uint counter = 0; QMap<QString, uint>::ConstIterator it; @@ -879,4 +921,5 @@ int CSVImportDialog::typeToPos( uint type ) const return -1; +#endif } 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 @@ -69,4 +69,5 @@ class CSVImportDialog : public KDialogBase void setFile( const QString& ); void urlChanged( const QString& ); + void codecChanged ( const QString& ); void applyTemplate(); @@ -82,5 +83,5 @@ class CSVImportDialog : public KDialogBase BusinessAddressLabel, HomePhone, BusinessPhone, MobilePhone, HomeFax, BusinessFax, CarPhone, - Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL + Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL, Categories }; @@ -95,4 +96,5 @@ class CSVImportDialog : public KDialogBase QComboBox* mComboLine; QComboBox* mComboQuote; + QComboBox* mComboCodec; QCheckBox* mIgnoreDuplicates; KURLRequester* mUrlRequester; |