summaryrefslogtreecommitdiffabout
path: root/kaddressbook/xxport/csvimportdialog.cpp
Unidiff
Diffstat (limited to 'kaddressbook/xxport/csvimportdialog.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kaddressbook/xxport/csvimportdialog.cpp66
1 files changed, 35 insertions, 31 deletions
diff --git a/kaddressbook/xxport/csvimportdialog.cpp b/kaddressbook/xxport/csvimportdialog.cpp
index 862241e..7959cac 100644
--- a/kaddressbook/xxport/csvimportdialog.cpp
+++ b/kaddressbook/xxport/csvimportdialog.cpp
@@ -24,28 +24,32 @@ Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29 29
30#include <qbuttongroup.h> 30#include <q3buttongroup.h>
31#include <qcheckbox.h> 31#include <qcheckbox.h>
32#include <qcombobox.h> 32#include <qcombobox.h>
33#ifdef DESKTOP_VERSION 33#ifdef DESKTOP_VERSION
34#include <qinputdialog.h> 34#include <qinputdialog.h>
35#else 35#else
36#include <qtcompat/qinputdialog.h> 36#include <qtcompat/qinputdialog.h>
37#endif 37#endif
38#include <qlabel.h> 38#include <qlabel.h>
39#include <qlineedit.h> 39#include <qlineedit.h>
40#include <qpushbutton.h> 40#include <qpushbutton.h>
41#include <qradiobutton.h> 41#include <qradiobutton.h>
42#include <qtable.h> 42#include <q3table.h>
43#include <qlayout.h> 43#include <qlayout.h>
44#include <qtextstream.h> 44#include <q3textstream.h>
45#include <qfile.h> 45#include <qfile.h>
46//Added by qt3to4:
47#include <Q3HBoxLayout>
48#include <Q3ValueList>
49#include <Q3GridLayout>
46 50
47#include <kapplication.h> 51#include <kapplication.h>
48#include <kdebug.h> 52#include <kdebug.h>
49#include <kdialogbase.h> 53#include <kdialogbase.h>
50#include <kfiledialog.h> 54#include <kfiledialog.h>
51#include <klineedit.h> 55#include <klineedit.h>
@@ -53,13 +57,13 @@ $Id$
53#include <kglobal.h> 57#include <kglobal.h>
54#include <kmessagebox.h> 58#include <kmessagebox.h>
55#include <kstandarddirs.h> 59#include <kstandarddirs.h>
56#include <kurlrequester.h> 60#include <kurlrequester.h>
57 61
58#ifdef DESKTOP_VERSION 62#ifdef DESKTOP_VERSION
59#include "qtable.h" 63#include "q3table.h"
60#else 64#else
61#include "qcombotableitem.h" 65#include "qcombotableitem.h"
62#endif 66#endif
63#include "csvimportdialog.h" 67#include "csvimportdialog.h"
64 68
65CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, 69CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent,
@@ -158,13 +162,13 @@ CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent,
158 this, SLOT( applyTemplate() ) ); 162 this, SLOT( applyTemplate() ) );
159 163
160 connect( this, SIGNAL( user2Clicked() ), 164 connect( this, SIGNAL( user2Clicked() ),
161 this, SLOT( saveTemplate() ) ); 165 this, SLOT( saveTemplate() ) );
162 166
163 // if ( QApplication::desktop()->width() < 321 ) 167 // if ( QApplication::desktop()->width() < 321 )
164 QIconSet icon = SmallIcon("filesave"); 168 QIcon icon = SmallIcon("filesave");
165 169
166 findButton( User2 )->setIconSet (icon ) ; 170 findButton( User2 )->setIconSet (icon ) ;
167 icon = SmallIcon("fileopen"); 171 icon = SmallIcon("fileopen");
168 findButton( User1 )->setIconSet (icon ) ; 172 findButton( User1 )->setIconSet (icon ) ;
169 int wid = findButton( User2 )->sizeHint().height(); 173 int wid = findButton( User2 )->sizeHint().height();
170 findButton( User2 )->setMaximumWidth( wid+4 ); 174 findButton( User2 )->setMaximumWidth( wid+4 );
@@ -183,13 +187,13 @@ KABC::AddresseeList CSVImportDialog::contacts() const
183 KABC::Addressee a; 187 KABC::Addressee a;
184 bool emptyRow = true; 188 bool emptyRow = true;
185 KABC::Address addrHome( KABC::Address::Home ); 189 KABC::Address addrHome( KABC::Address::Home );
186 KABC::Address addrWork( KABC::Address::Work ); 190 KABC::Address addrWork( KABC::Address::Work );
187 for ( int col = 0; col < mTable->numCols(); ++col ) { 191 for ( int col = 0; col < mTable->numCols(); ++col ) {
188 192
189 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, col ) ); 193 Q3ComboTableItem *item = static_cast<Q3ComboTableItem*>( mTable->item( 0, col ) );
190 194
191 if ( !item ) { 195 if ( !item ) {
192 qDebug( "ERROR: item cast failed" ); 196 qDebug( "ERROR: item cast failed" );
193 continue; 197 continue;
194 } 198 }
195 199
@@ -226,13 +230,13 @@ KABC::AddresseeList CSVImportDialog::contacts() const
226 case Birthday: 230 case Birthday:
227//US 231//US
228//the generated code had the following format: a.setBirthday( QDate::fromString( value, Qt::ISODate ) ); 232//the generated code had the following format: a.setBirthday( QDate::fromString( value, Qt::ISODate ) );
229// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ? 233// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ?
230 { 234 {
231 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate 235 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate
232 a.setBirthday(dt); 236 a.setBirthday(QDateTime(dt));
233 } 237 }
234 break; 238 break;
235 case Email: 239 case Email:
236 if ( !value.isEmpty() ) 240 if ( !value.isEmpty() )
237 a.insertEmail( value, true ); 241 a.insertEmail( value, true );
238 break; 242 break;
@@ -379,32 +383,32 @@ KABC::AddresseeList CSVImportDialog::contacts() const
379} 383}
380 384
381void CSVImportDialog::initGUI() 385void CSVImportDialog::initGUI()
382{ 386{
383 QWidget* page = plainPage(); 387 QWidget* page = plainPage();
384 388
385 QGridLayout *layout = new QGridLayout( page, 1, 1, marginHintSmall(), 389 Q3GridLayout *layout = new Q3GridLayout( page, 1, 1, marginHintSmall(),
386 spacingHintSmall() ); 390 spacingHintSmall() );
387 QHBoxLayout *hbox = new QHBoxLayout(); 391 Q3HBoxLayout *hbox = new Q3HBoxLayout();
388 hbox->setSpacing( spacingHint() ); 392 hbox->setSpacing( spacingHint() );
389 393
390 QLabel *label = new QLabel( i18n( "File to import:" ), page ); 394 QLabel *label = new QLabel( i18n( "File to import:" ), page );
391 hbox->addWidget( label ); 395 hbox->addWidget( label );
392 396
393 mUrlRequester = new KURLRequester( page ); 397 mUrlRequester = new KURLRequester( page );
394 mUrlRequester->setFilter( "*.csv" ); 398 mUrlRequester->setFilter( "*.csv" );
395 hbox->addWidget( mUrlRequester ); 399 hbox->addWidget( mUrlRequester );
396 400
397 layout->addMultiCellLayout( hbox, 0, 0, 0, 2 ); 401 layout->addMultiCellLayout( hbox, 0, 0, 0, 2 );
398 402
399 // Delimiter: comma, semicolon, tab, space, other 403 // Delimiter: comma, semicolon, tab, space, other
400 mDelimiterBox = new QButtonGroup( i18n( "Delimiter" ), page ); 404 mDelimiterBox = new Q3ButtonGroup( i18n( "Delimiter" ), page );
401 mDelimiterBox->setColumnLayout( 0, Qt::Vertical ); 405 mDelimiterBox->setColumnLayout( 0, Qt::Vertical );
402 mDelimiterBox->layout()->setSpacing( spacingHint() ); 406 mDelimiterBox->layout()->setSpacing( spacingHint() );
403 mDelimiterBox->layout()->setMargin( marginHint() ); 407 mDelimiterBox->layout()->setMargin( marginHint() );
404 QGridLayout *delimiterLayout = new QGridLayout( mDelimiterBox->layout() ); 408 Q3GridLayout *delimiterLayout = new Q3GridLayout( mDelimiterBox->layout() );
405 delimiterLayout->setAlignment( Qt::AlignTop ); 409 delimiterLayout->setAlignment( Qt::AlignTop );
406 layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 2 ); 410 layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 2 );
407 411
408 mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox ); 412 mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox );
409 mRadioComma->setChecked( true ); 413 mRadioComma->setChecked( true );
410 delimiterLayout->addWidget( mRadioComma, 0, 0 ); 414 delimiterLayout->addWidget( mRadioComma, 0, 0 );
@@ -447,14 +451,14 @@ void CSVImportDialog::initGUI()
447 layout->addWidget( label, 2, 2 ); 451 layout->addWidget( label, 2, 2 );
448 452
449 mIgnoreDuplicates = new QCheckBox( page ); 453 mIgnoreDuplicates = new QCheckBox( page );
450 mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) ); 454 mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) );
451 layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 2 ); 455 layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 2 );
452 456
453 mTable = new QTable( 0, 0, page ); 457 mTable = new Q3Table( 0, 0, page );
454 mTable->setSelectionMode( QTable::NoSelection ); 458 mTable->setSelectionMode( Q3Table::NoSelection );
455 //mTable->horizontalHeader()->hide(); 459 //mTable->horizontalHeader()->hide();
456 layout->addMultiCellWidget( mTable, 5, 5, 0, 2 ); 460 layout->addMultiCellWidget( mTable, 5, 5, 0, 2 );
457/*US 461/*US
458 setButtonText( User1, i18n( "Apply Template" ) ); 462 setButtonText( User1, i18n( "Apply Template" ) );
459 setButtonText( User2, i18n( "Save Template" ) ); 463 setButtonText( User2, i18n( "Save Template" ) );
460*/ 464*/
@@ -480,17 +484,17 @@ void CSVImportDialog::fillTable()
480 S_MAYBE_NORMAL_FIELD, S_NORMAL_FIELD } state = S_START; 484 S_MAYBE_NORMAL_FIELD, S_NORMAL_FIELD } state = S_START;
481 485
482 QChar x; 486 QChar x;
483 QString field = ""; 487 QString field = "";
484 488
485 // store previous assignment 489 // store previous assignment
486 QValueList<int> mTypeOld = mTypeStore; 490 Q3ValueList<int> mTypeOld = mTypeStore;
487 491
488 mTypeStore.clear(); 492 mTypeStore.clear();
489 for ( column = 0; column < mTable->numCols(); ++column ) { 493 for ( column = 0; column < mTable->numCols(); ++column ) {
490 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, column ) ); 494 Q3ComboTableItem *item = static_cast<Q3ComboTableItem*>( mTable->item( 0, column ) );
491 495
492 if ( !item || mClearTypeStore ) 496 if ( !item || mClearTypeStore )
493 mTypeStore.append( typeToPos( Undefined ) ); 497 mTypeStore.append( typeToPos( Undefined ) );
494 else if ( item ) 498 else if ( item )
495 mTypeStore.append( item->currentItem() ); 499 mTypeStore.append( item->currentItem() );
496 } 500 }
@@ -503,33 +507,33 @@ void CSVImportDialog::fillTable()
503 } else if ( mComboCodec->currentItem () == 1 ) { 507 } else if ( mComboCodec->currentItem () == 1 ) {
504 mData = QString::fromLatin1( mFileArray.data() ); 508 mData = QString::fromLatin1( mFileArray.data() );
505 } else { 509 } else {
506 mData = QString::fromLocal8Bit( mFileArray.data() ); 510 mData = QString::fromLocal8Bit( mFileArray.data() );
507 } 511 }
508 512
509 QTextStream inputStream( mData, IO_ReadOnly ); 513 Q3TextStream inputStream( mData, QIODevice::ReadOnly );
510 514
511 if ( mComboCodec->currentItem () == 0 ) { 515 if ( mComboCodec->currentItem () == 0 ) {
512 inputStream.setEncoding( QTextStream::UnicodeUTF8 ); 516 inputStream.setEncoding( Q3TextStream::UnicodeUTF8 );
513 } else if ( mComboCodec->currentItem () == 1 ) { 517 } else if ( mComboCodec->currentItem () == 1 ) {
514 inputStream.setEncoding( QTextStream::Latin1 ); 518 inputStream.setEncoding( Q3TextStream::Latin1 );
515 } else { 519 } else {
516 inputStream.setEncoding( QTextStream::Locale ); 520 inputStream.setEncoding( Q3TextStream::Locale );
517 } 521 }
518 522
519 int maxColumn = 0; 523 int maxColumn = 0;
520 while ( !inputStream.atEnd() ) { 524 while ( !inputStream.atEnd() ) {
521 inputStream >> x; // read one char 525 inputStream >> x; // read one char
522 526
523 if ( x == '\r' ) inputStream >> x; // eat '\r', to handle DOS/LOSEDOWS files correctly 527 if ( x == '\r' ) inputStream >> x; // eat '\r', to handle DOS/LOSEDOWS files correctly
524 528
525 switch ( state ) { 529 switch ( state ) {
526 case S_START : 530 case S_START :
527 if ( x == mTextQuote ) { 531 if ( x == mTextQuote ) {
528 state = S_QUOTED_FIELD; 532 state = S_QUOTED_FIELD;
529 } else if ( x == mDelimiter ) { 533 } else if ( QString(x) == mDelimiter ) {
530 if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) ) 534 if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) )
531 ++column; 535 ++column;
532 lastCharDelimiter = true; 536 lastCharDelimiter = true;
533 } else if ( x == '\n' ) { 537 } else if ( x == '\n' ) {
534 ++row; 538 ++row;
535 column = 1; 539 column = 1;
@@ -558,13 +562,13 @@ void CSVImportDialog::fillTable()
558 } 562 }
559 break; 563 break;
560 case S_MAYBE_END_OF_QUOTED_FIELD : 564 case S_MAYBE_END_OF_QUOTED_FIELD :
561 if ( x == mTextQuote ) { 565 if ( x == mTextQuote ) {
562 field += x; 566 field += x;
563 state = S_QUOTED_FIELD; 567 state = S_QUOTED_FIELD;
564 } else if ( x == mDelimiter || x == '\n' ) { 568 } else if ( QString(x) == mDelimiter || x == '\n' ) {
565 setText( row - mStartLine + 1, column, field ); 569 setText( row - mStartLine + 1, column, field );
566 field = ""; 570 field = "";
567 if ( x == '\n' ) { 571 if ( x == '\n' ) {
568 ++row; 572 ++row;
569 column = 1; 573 column = 1;
570 } else { 574 } else {
@@ -575,13 +579,13 @@ void CSVImportDialog::fillTable()
575 state = S_START; 579 state = S_START;
576 } else { 580 } else {
577 state = S_END_OF_QUOTED_FIELD; 581 state = S_END_OF_QUOTED_FIELD;
578 } 582 }
579 break; 583 break;
580 case S_END_OF_QUOTED_FIELD : 584 case S_END_OF_QUOTED_FIELD :
581 if ( x == mDelimiter || x == '\n' ) { 585 if ( QString(x) == mDelimiter || x == '\n' ) {
582 setText( row - mStartLine + 1, column, field ); 586 setText( row - mStartLine + 1, column, field );
583 field = ""; 587 field = "";
584 if ( x == '\n' ) { 588 if ( x == '\n' ) {
585 ++row; 589 ++row;
586 column = 1; 590 column = 1;
587 } else { 591 } else {
@@ -598,13 +602,13 @@ void CSVImportDialog::fillTable()
598 if ( x == mTextQuote ) { 602 if ( x == mTextQuote ) {
599 field = ""; 603 field = "";
600 state = S_QUOTED_FIELD; 604 state = S_QUOTED_FIELD;
601 break; 605 break;
602 } 606 }
603 case S_NORMAL_FIELD : 607 case S_NORMAL_FIELD :
604 if ( x == mDelimiter || x == '\n' ) { 608 if ( QString(x) == mDelimiter || x == '\n' ) {
605 setText( row - mStartLine + 1, column, field ); 609 setText( row - mStartLine + 1, column, field );
606 field = ""; 610 field = "";
607 if ( x == '\n' ) { 611 if ( x == '\n' ) {
608 ++row; 612 ++row;
609 column = 1; 613 column = 1;
610 } else { 614 } else {
@@ -614,13 +618,13 @@ void CSVImportDialog::fillTable()
614 } 618 }
615 state = S_START; 619 state = S_START;
616 } else { 620 } else {
617 field += x; 621 field += x;
618 } 622 }
619 } 623 }
620 if ( x != mDelimiter ) 624 if ( QString(x) != mDelimiter )
621 lastCharDelimiter = false; 625 lastCharDelimiter = false;
622 626
623 if ( column > maxColumn ) 627 if ( column > maxColumn )
624 maxColumn = column; 628 maxColumn = column;
625 } 629 }
626 630
@@ -646,13 +650,13 @@ void CSVImportDialog::fillTable()
646 keys[( it.data() )] = it.key(); 650 keys[( it.data() )] = it.key();
647//US end 651//US end
648 652
649 for ( column = 0; column < mTable->numCols(); ++column ) { 653 for ( column = 0; column < mTable->numCols(); ++column ) {
650 654
651//US QComboTableItem *item = new QComboTableItem( mTable, mTypeMap.keys() ); 655//US QComboTableItem *item = new QComboTableItem( mTable, mTypeMap.keys() );
652 QComboTableItem *item = new QComboTableItem( mTable, keys ); 656 Q3ComboTableItem *item = new Q3ComboTableItem( mTable, keys );
653 mTable->setItem( 0, column, item ); 657 mTable->setItem( 0, column, item );
654 if ( column < mTypeStore.count() ) 658 if ( column < mTypeStore.count() )
655 item->setCurrentItem( mTypeStore[ column ] ); 659 item->setCurrentItem( mTypeStore[ column ] );
656 else 660 else
657 item->setCurrentItem( typeToPos( Undefined ) ); 661 item->setCurrentItem( typeToPos( Undefined ) );
658 662
@@ -761,13 +765,13 @@ void CSVImportDialog::lineSelected( const QString& line )
761 765
762void CSVImportDialog::slotOk() 766void CSVImportDialog::slotOk()
763{ 767{
764 bool assigned = false; 768 bool assigned = false;
765 769
766 for ( int column = 0; column < mTable->numCols(); ++column ) { 770 for ( int column = 0; column < mTable->numCols(); ++column ) {
767 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, 771 Q3ComboTableItem *item = static_cast<Q3ComboTableItem*>( mTable->item( 0,
768 column ) ); 772 column ) );
769 if ( item && posToType( item->currentItem() ) != Undefined ) 773 if ( item && posToType( item->currentItem() ) != Undefined )
770 assigned = true; 774 assigned = true;
771 } 775 }
772 776
773 if ( assigned ) 777 if ( assigned )
@@ -833,13 +837,13 @@ void CSVImportDialog::applyTemplate()
833 columnMap.insert( i, col ); 837 columnMap.insert( i, col );
834 } 838 }
835 839
836 // apply the column map 840 // apply the column map
837 for ( uint column = 0; column < columnMap.count(); ++column ) { 841 for ( uint column = 0; column < columnMap.count(); ++column ) {
838 int type = columnMap[ column ]; 842 int type = columnMap[ column ];
839 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, 843 Q3ComboTableItem *item = static_cast<Q3ComboTableItem*>( mTable->item( 0,
840 column ) ); 844 column ) );
841 if ( item ) 845 if ( item )
842 item->setCurrentItem( typeToPos( type ) ); 846 item->setCurrentItem( typeToPos( type ) );
843 } 847 }
844} 848}
845 849
@@ -875,13 +879,13 @@ void CSVImportDialog::saveTemplate()
875 config.setGroup( "Misc" ); 879 config.setGroup( "Misc" );
876 config.writeEntry( "Name", name ); 880 config.writeEntry( "Name", name );
877 881
878 config.setGroup( "csv column map" ); 882 config.setGroup( "csv column map" );
879 883
880 for ( uint column = 0; column < mTable->numCols(); ++column ) { 884 for ( uint column = 0; column < mTable->numCols(); ++column ) {
881 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, 885 Q3ComboTableItem *item = static_cast<Q3ComboTableItem*>( mTable->item( 0,
882 column ) ); 886 column ) );
883 if ( item ) 887 if ( item )
884 config.writeEntry( QString::number( column ), posToType( 888 config.writeEntry( QString::number( column ), posToType(
885 item->currentItem() ) ); 889 item->currentItem() ) );
886 else 890 else
887 config.writeEntry( QString::number( column ), 0 ); 891 config.writeEntry( QString::number( column ), 0 );
@@ -931,13 +935,13 @@ void CSVImportDialog::ignoreDuplicatesChanged( int )
931void CSVImportDialog::setFile( const QString &fileName ) 935void CSVImportDialog::setFile( const QString &fileName )
932{ 936{
933 if ( fileName.isEmpty() ) 937 if ( fileName.isEmpty() )
934 return; 938 return;
935 939
936 QFile file( fileName ); 940 QFile file( fileName );
937 if ( !file.open( IO_ReadOnly ) ) { 941 if ( !file.open( QIODevice::ReadOnly ) ) {
938 KMessageBox::sorry( this, i18n( "Cannot open input file!" ) ); 942 KMessageBox::sorry( this, i18n( "Cannot open input file!" ) );
939 file.close(); 943 file.close();
940 return; 944 return;
941 } 945 }
942 946
943 mFileArray = file.readAll(); 947 mFileArray = file.readAll();
@@ -961,9 +965,9 @@ void CSVImportDialog::urlChanged( const QString &file )
961 965
962 findButton( User1 )->setEnabled( state ); 966 findButton( User1 )->setEnabled( state );
963 findButton( User2 )->setEnabled( state ); 967 findButton( User2 )->setEnabled( state );
964 968
965} 969}
966 970
967#ifndef KAB_EMBEDDED 971#ifndef KAB_EMBEDDED_
968#include <csvimportdialog.moc> 972#include <moc_csvimportdialog.cpp>
969#endif //KAB_EMBEDDED 973#endif //KAB_EMBEDDED