-rw-r--r-- | kaddressbook/xxport/csvimportdialog.cpp | 4 | ||||
-rw-r--r-- | kaddressbook/xxport/csvimportdialog.h | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/kaddressbook/xxport/csvimportdialog.cpp b/kaddressbook/xxport/csvimportdialog.cpp index 4044fa8..862241e 100644 --- a/kaddressbook/xxport/csvimportdialog.cpp +++ b/kaddressbook/xxport/csvimportdialog.cpp | |||
@@ -1,552 +1,552 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressBook. | 2 | This file is part of KAddressBook. |
3 | Copyright (C) 2003 Tobias Koenig <tokoe@kde.org> | 3 | Copyright (C) 2003 Tobias Koenig <tokoe@kde.org> |
4 | based on the code of KSpread's CSV Import Dialog | 4 | based on the code of KSpread's CSV Import Dialog |
5 | 5 | ||
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License as published by the Free Software Foundation; either | 8 | License as published by the Free Software Foundation; either |
9 | version 2 of the License, or (at your option) any later version. | 9 | version 2 of the License, or (at your option) any later version. |
10 | 10 | ||
11 | This library is distributed in the hope that it will be useful, | 11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Library General Public License for more details. | 14 | Library General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU Library General Public License | 16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to | 17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
19 | Boston, MA 02111-1307, USA. | 19 | Boston, MA 02111-1307, USA. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | /* | 22 | /* |
23 | Enhanced Version of the file for platform independent KDE tools. | 23 | Enhanced Version of the file for platform independent KDE tools. |
24 | Copyright (c) 2004 Ulf Schenk | 24 | Copyright (c) 2004 Ulf Schenk |
25 | 25 | ||
26 | $Id$ | 26 | $Id$ |
27 | */ | 27 | */ |
28 | 28 | ||
29 | 29 | ||
30 | #include <qbuttongroup.h> | 30 | #include <qbuttongroup.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 <qtable.h> |
43 | #include <qlayout.h> | 43 | #include <qlayout.h> |
44 | #include <qtextstream.h> | 44 | #include <qtextstream.h> |
45 | #include <qfile.h> | 45 | #include <qfile.h> |
46 | 46 | ||
47 | #include <kapplication.h> | 47 | #include <kapplication.h> |
48 | #include <kdebug.h> | 48 | #include <kdebug.h> |
49 | #include <kdialogbase.h> | 49 | #include <kdialogbase.h> |
50 | #include <kfiledialog.h> | 50 | #include <kfiledialog.h> |
51 | #include <klineedit.h> | 51 | #include <klineedit.h> |
52 | #include <klocale.h> | 52 | #include <klocale.h> |
53 | #include <kglobal.h> | 53 | #include <kglobal.h> |
54 | #include <kmessagebox.h> | 54 | #include <kmessagebox.h> |
55 | #include <kstandarddirs.h> | 55 | #include <kstandarddirs.h> |
56 | #include <kurlrequester.h> | 56 | #include <kurlrequester.h> |
57 | 57 | ||
58 | #ifdef DESKTOP_VERSION | 58 | #ifdef DESKTOP_VERSION |
59 | #include "qtable.h" | 59 | #include "qtable.h" |
60 | #else | 60 | #else |
61 | #include "qcombotableitem.h" | 61 | #include "qcombotableitem.h" |
62 | #endif | 62 | #endif |
63 | #include "csvimportdialog.h" | 63 | #include "csvimportdialog.h" |
64 | 64 | ||
65 | CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, | 65 | CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, |
66 | const char * name ) | 66 | const char * name ) |
67 | : KDialogBase( Plain, i18n ( "CSV Import Dialog" ), Ok | Cancel | User1 | | 67 | : KDialogBase( Plain, i18n ( "CSV Import Dialog" ), Ok | Cancel | User1 | |
68 | User2, Ok, parent, name, true, true ), | 68 | User2, Ok, parent, name, true, true ), |
69 | mAdjustRows( false ), | 69 | mAdjustRows( false ), |
70 | mStartLine( 0 ), | 70 | mStartLine( 0 ), |
71 | mTextQuote( '"' ), | 71 | mTextQuote( '"' ), |
72 | mDelimiter( "," ), | 72 | mDelimiter( "," ), |
73 | mAddressBook( ab ) | 73 | mAddressBook( ab ) |
74 | { | 74 | { |
75 | initGUI(); | 75 | initGUI(); |
76 | 76 | ||
77 | mTypeMap.insert( i18n( "Undefined" ), Undefined ); | 77 | mTypeMap.insert( i18n( "Undefined" ), Undefined ); |
78 | mTypeMap.insert( KABC::Addressee::formattedNameLabel(), FormattedName ); | 78 | mTypeMap.insert( KABC::Addressee::formattedNameLabel(), FormattedName ); |
79 | mTypeMap.insert( KABC::Addressee::familyNameLabel(), FamilyName ); | 79 | mTypeMap.insert( KABC::Addressee::familyNameLabel(), FamilyName ); |
80 | mTypeMap.insert( KABC::Addressee::givenNameLabel(), GivenName ); | 80 | mTypeMap.insert( KABC::Addressee::givenNameLabel(), GivenName ); |
81 | mTypeMap.insert( KABC::Addressee::additionalNameLabel(), AdditionalName ); | 81 | mTypeMap.insert( KABC::Addressee::additionalNameLabel(), AdditionalName ); |
82 | mTypeMap.insert( KABC::Addressee::prefixLabel(), Prefix ); | 82 | mTypeMap.insert( KABC::Addressee::prefixLabel(), Prefix ); |
83 | mTypeMap.insert( KABC::Addressee::suffixLabel(), Suffix ); | 83 | mTypeMap.insert( KABC::Addressee::suffixLabel(), Suffix ); |
84 | mTypeMap.insert( KABC::Addressee::nickNameLabel(), NickName ); | 84 | mTypeMap.insert( KABC::Addressee::nickNameLabel(), NickName ); |
85 | mTypeMap.insert( KABC::Addressee::birthdayLabel(), Birthday ); | 85 | mTypeMap.insert( KABC::Addressee::birthdayLabel(), Birthday ); |
86 | 86 | ||
87 | mTypeMap.insert( KABC::Addressee::homeAddressStreetLabel(), HomeAddressStreet ); | 87 | mTypeMap.insert( KABC::Addressee::homeAddressStreetLabel(), HomeAddressStreet ); |
88 | mTypeMap.insert( KABC::Addressee::homeAddressLocalityLabel(), | 88 | mTypeMap.insert( KABC::Addressee::homeAddressLocalityLabel(), |
89 | HomeAddressLocality ); | 89 | HomeAddressLocality ); |
90 | mTypeMap.insert( KABC::Addressee::homeAddressRegionLabel(), HomeAddressRegion ); | 90 | mTypeMap.insert( KABC::Addressee::homeAddressRegionLabel(), HomeAddressRegion ); |
91 | mTypeMap.insert( KABC::Addressee::homeAddressPostalCodeLabel(), | 91 | mTypeMap.insert( KABC::Addressee::homeAddressPostalCodeLabel(), |
92 | HomeAddressPostalCode ); | 92 | HomeAddressPostalCode ); |
93 | mTypeMap.insert( KABC::Addressee::homeAddressCountryLabel(), | 93 | mTypeMap.insert( KABC::Addressee::homeAddressCountryLabel(), |
94 | HomeAddressCountry ); | 94 | HomeAddressCountry ); |
95 | mTypeMap.insert( KABC::Addressee::homeAddressLabelLabel(), HomeAddressLabel ); | 95 | mTypeMap.insert( KABC::Addressee::homeAddressLabelLabel(), HomeAddressLabel ); |
96 | 96 | ||
97 | mTypeMap.insert( KABC::Addressee::businessAddressStreetLabel(), | 97 | mTypeMap.insert( KABC::Addressee::businessAddressStreetLabel(), |
98 | BusinessAddressStreet ); | 98 | BusinessAddressStreet ); |
99 | mTypeMap.insert( KABC::Addressee::businessAddressLocalityLabel(), | 99 | mTypeMap.insert( KABC::Addressee::businessAddressLocalityLabel(), |
100 | BusinessAddressLocality ); | 100 | BusinessAddressLocality ); |
101 | mTypeMap.insert( KABC::Addressee::businessAddressRegionLabel(), | 101 | mTypeMap.insert( KABC::Addressee::businessAddressRegionLabel(), |
102 | BusinessAddressRegion ); | 102 | BusinessAddressRegion ); |
103 | mTypeMap.insert( KABC::Addressee::businessAddressPostalCodeLabel(), | 103 | mTypeMap.insert( KABC::Addressee::businessAddressPostalCodeLabel(), |
104 | BusinessAddressPostalCode ); | 104 | BusinessAddressPostalCode ); |
105 | mTypeMap.insert( KABC::Addressee::businessAddressCountryLabel(), | 105 | mTypeMap.insert( KABC::Addressee::businessAddressCountryLabel(), |
106 | BusinessAddressCountry ); | 106 | BusinessAddressCountry ); |
107 | mTypeMap.insert( KABC::Addressee::businessAddressLabelLabel(), | 107 | mTypeMap.insert( KABC::Addressee::businessAddressLabelLabel(), |
108 | BusinessAddressLabel ); | 108 | BusinessAddressLabel ); |
109 | 109 | ||
110 | mTypeMap.insert( KABC::Addressee::homePhoneLabel(), HomePhone ); | 110 | mTypeMap.insert( KABC::Addressee::homePhoneLabel(), HomePhone ); |
111 | mTypeMap.insert( KABC::Addressee::businessPhoneLabel(), BusinessPhone ); | 111 | mTypeMap.insert( KABC::Addressee::businessPhoneLabel(), BusinessPhone ); |
112 | mTypeMap.insert( KABC::Addressee::mobilePhoneLabel(), MobilePhone ); | 112 | mTypeMap.insert( KABC::Addressee::mobilePhoneLabel(), MobilePhone ); |
113 | mTypeMap.insert( KABC::Addressee::homeFaxLabel(), HomeFax ); | 113 | mTypeMap.insert( KABC::Addressee::homeFaxLabel(), HomeFax ); |
114 | mTypeMap.insert( KABC::Addressee::businessFaxLabel(), BusinessFax ); | 114 | mTypeMap.insert( KABC::Addressee::businessFaxLabel(), BusinessFax ); |
115 | mTypeMap.insert( KABC::Addressee::carPhoneLabel(), CarPhone ); | 115 | mTypeMap.insert( KABC::Addressee::mobileWorkPhoneLabel(), MobileWorkPhone ); |
116 | mTypeMap.insert( KABC::Addressee::isdnLabel(), Isdn ); | 116 | mTypeMap.insert( KABC::Addressee::isdnLabel(), Isdn ); |
117 | mTypeMap.insert( KABC::Addressee::pagerLabel(), Pager ); | 117 | mTypeMap.insert( KABC::Addressee::pagerLabel(), Pager ); |
118 | mTypeMap.insert( KABC::Addressee::emailLabel(), Email ); | 118 | mTypeMap.insert( KABC::Addressee::emailLabel(), Email ); |
119 | mTypeMap.insert( KABC::Addressee::mailerLabel(), Mailer ); | 119 | mTypeMap.insert( KABC::Addressee::mailerLabel(), Mailer ); |
120 | mTypeMap.insert( KABC::Addressee::titleLabel(), Title ); | 120 | mTypeMap.insert( KABC::Addressee::titleLabel(), Title ); |
121 | mTypeMap.insert( KABC::Addressee::roleLabel(), Role ); | 121 | mTypeMap.insert( KABC::Addressee::roleLabel(), Role ); |
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 | mTypeMap.insert( KABC::Addressee::categoryLabel(), Categories ); |
126 | 126 | ||
127 | mCustomCounter = mTypeMap.count(); | 127 | mCustomCounter = mTypeMap.count(); |
128 | int count = mCustomCounter; | 128 | int count = mCustomCounter; |
129 | 129 | ||
130 | KABC::Field::List fields = mAddressBook->fields( KABC::Field::CustomCategory ); | 130 | KABC::Field::List fields = mAddressBook->fields( KABC::Field::CustomCategory ); |
131 | KABC::Field::List::Iterator it; | 131 | KABC::Field::List::Iterator it; |
132 | for ( it = fields.begin(); it != fields.end(); ++it, ++count ) | 132 | for ( it = fields.begin(); it != fields.end(); ++it, ++count ) |
133 | mTypeMap.insert( (*it)->label(), count ); | 133 | mTypeMap.insert( (*it)->label(), count ); |
134 | 134 | ||
135 | connect( mDelimiterBox, SIGNAL( clicked( int ) ), | 135 | connect( mDelimiterBox, SIGNAL( clicked( int ) ), |
136 | this, SLOT( delimiterClicked( int ) ) ); | 136 | this, SLOT( delimiterClicked( int ) ) ); |
137 | connect( mDelimiterEdit, SIGNAL( returnPressed() ), | 137 | connect( mDelimiterEdit, SIGNAL( returnPressed() ), |
138 | this, SLOT( returnPressed() ) ); | 138 | this, SLOT( returnPressed() ) ); |
139 | connect( mDelimiterEdit, SIGNAL( textChanged ( const QString& ) ), | 139 | connect( mDelimiterEdit, SIGNAL( textChanged ( const QString& ) ), |
140 | this, SLOT( textChanged ( const QString& ) ) ); | 140 | this, SLOT( textChanged ( const QString& ) ) ); |
141 | connect( mComboLine, SIGNAL( activated( const QString& ) ), | 141 | connect( mComboLine, SIGNAL( activated( const QString& ) ), |
142 | this, SLOT( lineSelected( const QString& ) ) ); | 142 | this, SLOT( lineSelected( const QString& ) ) ); |
143 | connect( mComboCodec, SIGNAL( activated( const QString& ) ), | 143 | connect( mComboCodec, SIGNAL( activated( const QString& ) ), |
144 | this, SLOT( codecChanged( const QString& ) ) ); | 144 | this, SLOT( codecChanged( const QString& ) ) ); |
145 | connect( mComboQuote, SIGNAL( activated( const QString& ) ), | 145 | connect( mComboQuote, SIGNAL( activated( const QString& ) ), |
146 | this, SLOT( textquoteSelected( const QString& ) ) ); | 146 | this, SLOT( textquoteSelected( const QString& ) ) ); |
147 | connect( mIgnoreDuplicates, SIGNAL( stateChanged( int ) ), | 147 | connect( mIgnoreDuplicates, SIGNAL( stateChanged( int ) ), |
148 | this, SLOT( ignoreDuplicatesChanged( int ) ) ); | 148 | this, SLOT( ignoreDuplicatesChanged( int ) ) ); |
149 | 149 | ||
150 | connect( mUrlRequester, SIGNAL( returnPressed( const QString& ) ), | 150 | connect( mUrlRequester, SIGNAL( returnPressed( const QString& ) ), |
151 | this, SLOT( setFile( const QString& ) ) ); | 151 | this, SLOT( setFile( const QString& ) ) ); |
152 | connect( mUrlRequester, SIGNAL( urlSelected( const QString& ) ), | 152 | connect( mUrlRequester, SIGNAL( urlSelected( const QString& ) ), |
153 | this, SLOT( setFile( const QString& ) ) ); | 153 | this, SLOT( setFile( const QString& ) ) ); |
154 | connect( mUrlRequester->lineEdit(), SIGNAL( textChanged ( const QString& ) ), | 154 | connect( mUrlRequester->lineEdit(), SIGNAL( textChanged ( const QString& ) ), |
155 | this, SLOT( urlChanged( const QString& ) ) ); | 155 | this, SLOT( urlChanged( const QString& ) ) ); |
156 | 156 | ||
157 | connect( this, SIGNAL( user1Clicked() ), | 157 | connect( this, SIGNAL( user1Clicked() ), |
158 | this, SLOT( applyTemplate() ) ); | 158 | this, SLOT( applyTemplate() ) ); |
159 | 159 | ||
160 | connect( this, SIGNAL( user2Clicked() ), | 160 | connect( this, SIGNAL( user2Clicked() ), |
161 | this, SLOT( saveTemplate() ) ); | 161 | this, SLOT( saveTemplate() ) ); |
162 | 162 | ||
163 | // if ( QApplication::desktop()->width() < 321 ) | 163 | // if ( QApplication::desktop()->width() < 321 ) |
164 | QIconSet icon = SmallIcon("filesave"); | 164 | QIconSet icon = SmallIcon("filesave"); |
165 | 165 | ||
166 | findButton( User2 )->setIconSet (icon ) ; | 166 | findButton( User2 )->setIconSet (icon ) ; |
167 | icon = SmallIcon("fileopen"); | 167 | icon = SmallIcon("fileopen"); |
168 | findButton( User1 )->setIconSet (icon ) ; | 168 | findButton( User1 )->setIconSet (icon ) ; |
169 | int wid = findButton( User2 )->sizeHint().height(); | 169 | int wid = findButton( User2 )->sizeHint().height(); |
170 | findButton( User2 )->setMaximumWidth( wid+4 ); | 170 | findButton( User2 )->setMaximumWidth( wid+4 ); |
171 | findButton( User1 )->setMaximumWidth( wid+4 ); | 171 | findButton( User1 )->setMaximumWidth( wid+4 ); |
172 | } | 172 | } |
173 | 173 | ||
174 | CSVImportDialog::~CSVImportDialog() | 174 | CSVImportDialog::~CSVImportDialog() |
175 | { | 175 | { |
176 | } | 176 | } |
177 | 177 | ||
178 | KABC::AddresseeList CSVImportDialog::contacts() const | 178 | KABC::AddresseeList CSVImportDialog::contacts() const |
179 | { | 179 | { |
180 | KABC::AddresseeList contacts; | 180 | KABC::AddresseeList contacts; |
181 | 181 | ||
182 | for ( int row = 1; row < mTable->numRows(); ++row ) { | 182 | for ( int row = 1; row < mTable->numRows(); ++row ) { |
183 | KABC::Addressee a; | 183 | KABC::Addressee a; |
184 | bool emptyRow = true; | 184 | bool emptyRow = true; |
185 | KABC::Address addrHome( KABC::Address::Home ); | 185 | KABC::Address addrHome( KABC::Address::Home ); |
186 | KABC::Address addrWork( KABC::Address::Work ); | 186 | KABC::Address addrWork( KABC::Address::Work ); |
187 | for ( int col = 0; col < mTable->numCols(); ++col ) { | 187 | for ( int col = 0; col < mTable->numCols(); ++col ) { |
188 | 188 | ||
189 | QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, col ) ); | 189 | QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, col ) ); |
190 | 190 | ||
191 | if ( !item ) { | 191 | if ( !item ) { |
192 | qDebug( "ERROR: item cast failed" ); | 192 | qDebug( "ERROR: item cast failed" ); |
193 | continue; | 193 | continue; |
194 | } | 194 | } |
195 | 195 | ||
196 | QString value = mTable->text( row, col ); | 196 | QString value = mTable->text( row, col ); |
197 | if ( !value.isEmpty() ) | 197 | if ( !value.isEmpty() ) |
198 | emptyRow = false; | 198 | emptyRow = false; |
199 | 199 | ||
200 | switch ( posToType( item->currentItem() ) ) | 200 | switch ( posToType( item->currentItem() ) ) |
201 | { | 201 | { |
202 | case Undefined: | 202 | case Undefined: |
203 | continue; | 203 | continue; |
204 | break; | 204 | break; |
205 | case FormattedName: | 205 | case FormattedName: |
206 | a.setFormattedName( value ); | 206 | a.setFormattedName( value ); |
207 | break; | 207 | break; |
208 | case GivenName: | 208 | case GivenName: |
209 | a.setGivenName( value ); | 209 | a.setGivenName( value ); |
210 | break; | 210 | break; |
211 | case FamilyName: | 211 | case FamilyName: |
212 | a.setFamilyName( value ); | 212 | a.setFamilyName( value ); |
213 | break; | 213 | break; |
214 | case AdditionalName: | 214 | case AdditionalName: |
215 | a.setAdditionalName( value ); | 215 | a.setAdditionalName( value ); |
216 | break; | 216 | break; |
217 | case Prefix: | 217 | case Prefix: |
218 | a.setPrefix( value ); | 218 | a.setPrefix( value ); |
219 | break; | 219 | break; |
220 | case Suffix: | 220 | case Suffix: |
221 | a.setSuffix( value ); | 221 | a.setSuffix( value ); |
222 | break; | 222 | break; |
223 | case NickName: | 223 | case NickName: |
224 | a.setNickName( value ); | 224 | a.setNickName( value ); |
225 | break; | 225 | break; |
226 | case Birthday: | 226 | case Birthday: |
227 | //US | 227 | //US |
228 | //the generated code had the following format: a.setBirthday( QDate::fromString( value, Qt::ISODate ) ); | 228 | //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 ? | 229 | // But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ? |
230 | { | 230 | { |
231 | QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate | 231 | QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate |
232 | a.setBirthday(dt); | 232 | a.setBirthday(dt); |
233 | } | 233 | } |
234 | break; | 234 | break; |
235 | case Email: | 235 | case Email: |
236 | if ( !value.isEmpty() ) | 236 | if ( !value.isEmpty() ) |
237 | a.insertEmail( value, true ); | 237 | a.insertEmail( value, true ); |
238 | break; | 238 | break; |
239 | case Role: | 239 | case Role: |
240 | a.setRole( value ); | 240 | a.setRole( value ); |
241 | break; | 241 | break; |
242 | case Title: | 242 | case Title: |
243 | a.setTitle( value ); | 243 | a.setTitle( value ); |
244 | break; | 244 | break; |
245 | case Mailer: | 245 | case Mailer: |
246 | a.setMailer( value ); | 246 | a.setMailer( value ); |
247 | break; | 247 | break; |
248 | case URL: | 248 | case URL: |
249 | a.setUrl( value ); | 249 | a.setUrl( value ); |
250 | break; | 250 | break; |
251 | case Organization: | 251 | case Organization: |
252 | a.setOrganization( value ); | 252 | a.setOrganization( value ); |
253 | break; | 253 | break; |
254 | case Note: | 254 | case Note: |
255 | if ( a.note().isEmpty() ) | 255 | if ( a.note().isEmpty() ) |
256 | a.setNote( value ); | 256 | a.setNote( value ); |
257 | else { | 257 | else { |
258 | a.setNote( a.note()+"\n"+value ); | 258 | a.setNote( a.note()+"\n"+value ); |
259 | } | 259 | } |
260 | break; | 260 | break; |
261 | case Categories: | 261 | case Categories: |
262 | a.insertCategory( value ); | 262 | a.insertCategory( value ); |
263 | break; | 263 | break; |
264 | case HomePhone: | 264 | case HomePhone: |
265 | if ( !value.isEmpty() ) { | 265 | if ( !value.isEmpty() ) { |
266 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Home ); | 266 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Home ); |
267 | a.insertPhoneNumber( number ); | 267 | a.insertPhoneNumber( number ); |
268 | } | 268 | } |
269 | break; | 269 | break; |
270 | case BusinessPhone: | 270 | case BusinessPhone: |
271 | if ( !value.isEmpty() ) { | 271 | if ( !value.isEmpty() ) { |
272 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Work ); | 272 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Work ); |
273 | a.insertPhoneNumber( number ); | 273 | a.insertPhoneNumber( number ); |
274 | } | 274 | } |
275 | break; | 275 | break; |
276 | case MobilePhone: | 276 | case MobilePhone: |
277 | if ( !value.isEmpty() ) { | 277 | if ( !value.isEmpty() ) { |
278 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Cell ); | 278 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Cell ); |
279 | a.insertPhoneNumber( number ); | 279 | a.insertPhoneNumber( number ); |
280 | } | 280 | } |
281 | break; | 281 | break; |
282 | case HomeFax: | 282 | case HomeFax: |
283 | if ( !value.isEmpty() ) { | 283 | if ( !value.isEmpty() ) { |
284 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Home | | 284 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Home | |
285 | KABC::PhoneNumber::Fax ); | 285 | KABC::PhoneNumber::Fax ); |
286 | a.insertPhoneNumber( number ); | 286 | a.insertPhoneNumber( number ); |
287 | } | 287 | } |
288 | break; | 288 | break; |
289 | case BusinessFax: | 289 | case BusinessFax: |
290 | if ( !value.isEmpty() ) { | 290 | if ( !value.isEmpty() ) { |
291 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Work | | 291 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Work | |
292 | KABC::PhoneNumber::Fax ); | 292 | KABC::PhoneNumber::Fax ); |
293 | a.insertPhoneNumber( number ); | 293 | a.insertPhoneNumber( number ); |
294 | } | 294 | } |
295 | break; | 295 | break; |
296 | case CarPhone: | 296 | case MobileWorkPhone: |
297 | if ( !value.isEmpty() ) { | 297 | if ( !value.isEmpty() ) { |
298 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Car ); | 298 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Car ); |
299 | a.insertPhoneNumber( number ); | 299 | a.insertPhoneNumber( number ); |
300 | } | 300 | } |
301 | break; | 301 | break; |
302 | case Isdn: | 302 | case Isdn: |
303 | if ( !value.isEmpty() ) { | 303 | if ( !value.isEmpty() ) { |
304 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Isdn ); | 304 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Isdn ); |
305 | a.insertPhoneNumber( number ); | 305 | a.insertPhoneNumber( number ); |
306 | } | 306 | } |
307 | break; | 307 | break; |
308 | case Pager: | 308 | case Pager: |
309 | if ( !value.isEmpty() ) { | 309 | if ( !value.isEmpty() ) { |
310 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Pager ); | 310 | KABC::PhoneNumber number( value, KABC::PhoneNumber::Pager ); |
311 | a.insertPhoneNumber( number ); | 311 | a.insertPhoneNumber( number ); |
312 | } | 312 | } |
313 | break; | 313 | break; |
314 | 314 | ||
315 | case HomeAddressStreet: | 315 | case HomeAddressStreet: |
316 | addrHome.setStreet( value ); | 316 | addrHome.setStreet( value ); |
317 | break; | 317 | break; |
318 | case HomeAddressLocality: | 318 | case HomeAddressLocality: |
319 | addrHome.setLocality( value ); | 319 | addrHome.setLocality( value ); |
320 | break; | 320 | break; |
321 | case HomeAddressRegion: | 321 | case HomeAddressRegion: |
322 | addrHome.setRegion( value ); | 322 | addrHome.setRegion( value ); |
323 | break; | 323 | break; |
324 | case HomeAddressPostalCode: | 324 | case HomeAddressPostalCode: |
325 | addrHome.setPostalCode( value ); | 325 | addrHome.setPostalCode( value ); |
326 | break; | 326 | break; |
327 | case HomeAddressCountry: | 327 | case HomeAddressCountry: |
328 | addrHome.setCountry( value ); | 328 | addrHome.setCountry( value ); |
329 | break; | 329 | break; |
330 | case HomeAddressLabel: | 330 | case HomeAddressLabel: |
331 | addrHome.setLabel( value ); | 331 | addrHome.setLabel( value ); |
332 | break; | 332 | break; |
333 | 333 | ||
334 | case BusinessAddressStreet: | 334 | case BusinessAddressStreet: |
335 | addrWork.setStreet( value ); | 335 | addrWork.setStreet( value ); |
336 | break; | 336 | break; |
337 | case BusinessAddressLocality: | 337 | case BusinessAddressLocality: |
338 | addrWork.setLocality( value ); | 338 | addrWork.setLocality( value ); |
339 | break; | 339 | break; |
340 | case BusinessAddressRegion: | 340 | case BusinessAddressRegion: |
341 | addrWork.setRegion( value ); | 341 | addrWork.setRegion( value ); |
342 | break; | 342 | break; |
343 | case BusinessAddressPostalCode: | 343 | case BusinessAddressPostalCode: |
344 | addrWork.setPostalCode( value ); | 344 | addrWork.setPostalCode( value ); |
345 | break; | 345 | break; |
346 | case BusinessAddressCountry: | 346 | case BusinessAddressCountry: |
347 | addrWork.setCountry( value ); | 347 | addrWork.setCountry( value ); |
348 | break; | 348 | break; |
349 | case BusinessAddressLabel: | 349 | case BusinessAddressLabel: |
350 | addrWork.setLabel( value ); | 350 | addrWork.setLabel( value ); |
351 | break; | 351 | break; |
352 | default: | 352 | default: |
353 | KABC::Field::List fields = mAddressBook->fields( KABC::Field::CustomCategory ); | 353 | KABC::Field::List fields = mAddressBook->fields( KABC::Field::CustomCategory ); |
354 | KABC::Field::List::Iterator it; | 354 | KABC::Field::List::Iterator it; |
355 | 355 | ||
356 | int counter = 0; | 356 | int counter = 0; |
357 | for ( it = fields.begin(); it != fields.end(); ++it ) { | 357 | for ( it = fields.begin(); it != fields.end(); ++it ) { |
358 | if ( counter == (int)( posToType( item->currentItem() ) - mCustomCounter ) ) | 358 | if ( counter == (int)( posToType( item->currentItem() ) - mCustomCounter ) ) |
359 | { | 359 | { |
360 | (*it)->setValue( a, value ); | 360 | (*it)->setValue( a, value ); |
361 | break; | 361 | break; |
362 | } | 362 | } |
363 | ++counter; | 363 | ++counter; |
364 | } | 364 | } |
365 | break; | 365 | break; |
366 | } | 366 | } |
367 | } | 367 | } |
368 | 368 | ||
369 | if ( !addrHome.isEmpty() ) | 369 | if ( !addrHome.isEmpty() ) |
370 | a.insertAddress( addrHome ); | 370 | a.insertAddress( addrHome ); |
371 | if ( !addrWork.isEmpty() ) | 371 | if ( !addrWork.isEmpty() ) |
372 | a.insertAddress( addrWork ); | 372 | a.insertAddress( addrWork ); |
373 | 373 | ||
374 | if ( !emptyRow && !a.isEmpty() ) | 374 | if ( !emptyRow && !a.isEmpty() ) |
375 | contacts.append( a ); | 375 | contacts.append( a ); |
376 | } | 376 | } |
377 | 377 | ||
378 | return contacts; | 378 | return contacts; |
379 | } | 379 | } |
380 | 380 | ||
381 | void CSVImportDialog::initGUI() | 381 | void CSVImportDialog::initGUI() |
382 | { | 382 | { |
383 | QWidget* page = plainPage(); | 383 | QWidget* page = plainPage(); |
384 | 384 | ||
385 | QGridLayout *layout = new QGridLayout( page, 1, 1, marginHintSmall(), | 385 | QGridLayout *layout = new QGridLayout( page, 1, 1, marginHintSmall(), |
386 | spacingHintSmall() ); | 386 | spacingHintSmall() ); |
387 | QHBoxLayout *hbox = new QHBoxLayout(); | 387 | QHBoxLayout *hbox = new QHBoxLayout(); |
388 | hbox->setSpacing( spacingHint() ); | 388 | hbox->setSpacing( spacingHint() ); |
389 | 389 | ||
390 | QLabel *label = new QLabel( i18n( "File to import:" ), page ); | 390 | QLabel *label = new QLabel( i18n( "File to import:" ), page ); |
391 | hbox->addWidget( label ); | 391 | hbox->addWidget( label ); |
392 | 392 | ||
393 | mUrlRequester = new KURLRequester( page ); | 393 | mUrlRequester = new KURLRequester( page ); |
394 | mUrlRequester->setFilter( "*.csv" ); | 394 | mUrlRequester->setFilter( "*.csv" ); |
395 | hbox->addWidget( mUrlRequester ); | 395 | hbox->addWidget( mUrlRequester ); |
396 | 396 | ||
397 | layout->addMultiCellLayout( hbox, 0, 0, 0, 2 ); | 397 | layout->addMultiCellLayout( hbox, 0, 0, 0, 2 ); |
398 | 398 | ||
399 | // Delimiter: comma, semicolon, tab, space, other | 399 | // Delimiter: comma, semicolon, tab, space, other |
400 | mDelimiterBox = new QButtonGroup( i18n( "Delimiter" ), page ); | 400 | mDelimiterBox = new QButtonGroup( i18n( "Delimiter" ), page ); |
401 | mDelimiterBox->setColumnLayout( 0, Qt::Vertical ); | 401 | mDelimiterBox->setColumnLayout( 0, Qt::Vertical ); |
402 | mDelimiterBox->layout()->setSpacing( spacingHint() ); | 402 | mDelimiterBox->layout()->setSpacing( spacingHint() ); |
403 | mDelimiterBox->layout()->setMargin( marginHint() ); | 403 | mDelimiterBox->layout()->setMargin( marginHint() ); |
404 | QGridLayout *delimiterLayout = new QGridLayout( mDelimiterBox->layout() ); | 404 | QGridLayout *delimiterLayout = new QGridLayout( mDelimiterBox->layout() ); |
405 | delimiterLayout->setAlignment( Qt::AlignTop ); | 405 | delimiterLayout->setAlignment( Qt::AlignTop ); |
406 | layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 2 ); | 406 | layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 2 ); |
407 | 407 | ||
408 | mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox ); | 408 | mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox ); |
409 | mRadioComma->setChecked( true ); | 409 | mRadioComma->setChecked( true ); |
410 | delimiterLayout->addWidget( mRadioComma, 0, 0 ); | 410 | delimiterLayout->addWidget( mRadioComma, 0, 0 ); |
411 | 411 | ||
412 | mRadioSemicolon = new QRadioButton( i18n( "Semicolon" ), mDelimiterBox ); | 412 | mRadioSemicolon = new QRadioButton( i18n( "Semicolon" ), mDelimiterBox ); |
413 | delimiterLayout->addWidget( mRadioSemicolon, 0, 1 ); | 413 | delimiterLayout->addWidget( mRadioSemicolon, 0, 1 ); |
414 | 414 | ||
415 | mRadioTab = new QRadioButton( i18n( "Tabulator" ), mDelimiterBox ); | 415 | mRadioTab = new QRadioButton( i18n( "Tabulator" ), mDelimiterBox ); |
416 | delimiterLayout->addWidget( mRadioTab, 1, 0 ); | 416 | delimiterLayout->addWidget( mRadioTab, 1, 0 ); |
417 | 417 | ||
418 | mRadioSpace = new QRadioButton( i18n( "Space" ), mDelimiterBox ); | 418 | mRadioSpace = new QRadioButton( i18n( "Space" ), mDelimiterBox ); |
419 | delimiterLayout->addWidget( mRadioSpace, 1, 1 ); | 419 | delimiterLayout->addWidget( mRadioSpace, 1, 1 ); |
420 | 420 | ||
421 | mRadioOther = new QRadioButton( i18n( "Other" ), mDelimiterBox ); | 421 | mRadioOther = new QRadioButton( i18n( "Other" ), mDelimiterBox ); |
422 | delimiterLayout->addWidget( mRadioOther, 0, 2 ); | 422 | delimiterLayout->addWidget( mRadioOther, 0, 2 ); |
423 | 423 | ||
424 | mDelimiterEdit = new QLineEdit( mDelimiterBox ); | 424 | mDelimiterEdit = new QLineEdit( mDelimiterBox ); |
425 | delimiterLayout->addWidget( mDelimiterEdit, 1, 2 ); | 425 | delimiterLayout->addWidget( mDelimiterEdit, 1, 2 ); |
426 | 426 | ||
427 | mComboLine = new QComboBox( false, page ); | 427 | mComboLine = new QComboBox( false, page ); |
428 | mComboLine->insertItem( i18n( "1" ) ); | 428 | mComboLine->insertItem( i18n( "1" ) ); |
429 | layout->addWidget( mComboLine, 3, 1 ); | 429 | layout->addWidget( mComboLine, 3, 1 ); |
430 | 430 | ||
431 | mComboQuote = new QComboBox( false, page ); | 431 | mComboQuote = new QComboBox( false, page ); |
432 | mComboQuote->insertItem( i18n( "\"" ), 0 ); | 432 | mComboQuote->insertItem( i18n( "\"" ), 0 ); |
433 | mComboQuote->insertItem( i18n( "'" ), 1 ); | 433 | mComboQuote->insertItem( i18n( "'" ), 1 ); |
434 | mComboQuote->insertItem( i18n( "None" ), 2 ); | 434 | mComboQuote->insertItem( i18n( "None" ), 2 ); |
435 | layout->addWidget( mComboQuote, 3, 0 ); | 435 | layout->addWidget( mComboQuote, 3, 0 ); |
436 | mComboCodec = new QComboBox( false, page ); | 436 | mComboCodec = new QComboBox( false, page ); |
437 | mComboCodec->insertItem( i18n( "UTF8" ), 0 ); | 437 | mComboCodec->insertItem( i18n( "UTF8" ), 0 ); |
438 | mComboCodec->insertItem( i18n( "LATIN1" ), 1 ); | 438 | mComboCodec->insertItem( i18n( "LATIN1" ), 1 ); |
439 | mComboCodec->insertItem( i18n( "LOCALE" ), 2 ); | 439 | mComboCodec->insertItem( i18n( "LOCALE" ), 2 ); |
440 | layout->addWidget( mComboCodec, 3, 2 ); | 440 | layout->addWidget( mComboCodec, 3, 2 ); |
441 | label = new QLabel( i18n( "Start at line:" ), page ); | 441 | label = new QLabel( i18n( "Start at line:" ), page ); |
442 | layout->addWidget( label, 2, 1 ); | 442 | layout->addWidget( label, 2, 1 ); |
443 | 443 | ||
444 | label = new QLabel( i18n( "Textquote:" ), page ); | 444 | label = new QLabel( i18n( "Textquote:" ), page ); |
445 | layout->addWidget( label, 2, 0 ); | 445 | layout->addWidget( label, 2, 0 ); |
446 | label = new QLabel( i18n( "Codec:" ), page ); | 446 | label = new QLabel( i18n( "Codec:" ), page ); |
447 | layout->addWidget( label, 2, 2 ); | 447 | layout->addWidget( label, 2, 2 ); |
448 | 448 | ||
449 | mIgnoreDuplicates = new QCheckBox( page ); | 449 | mIgnoreDuplicates = new QCheckBox( page ); |
450 | mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) ); | 450 | mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) ); |
451 | layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 2 ); | 451 | layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 2 ); |
452 | 452 | ||
453 | mTable = new QTable( 0, 0, page ); | 453 | mTable = new QTable( 0, 0, page ); |
454 | mTable->setSelectionMode( QTable::NoSelection ); | 454 | mTable->setSelectionMode( QTable::NoSelection ); |
455 | //mTable->horizontalHeader()->hide(); | 455 | //mTable->horizontalHeader()->hide(); |
456 | layout->addMultiCellWidget( mTable, 5, 5, 0, 2 ); | 456 | layout->addMultiCellWidget( mTable, 5, 5, 0, 2 ); |
457 | /*US | 457 | /*US |
458 | setButtonText( User1, i18n( "Apply Template" ) ); | 458 | setButtonText( User1, i18n( "Apply Template" ) ); |
459 | setButtonText( User2, i18n( "Save Template" ) ); | 459 | setButtonText( User2, i18n( "Save Template" ) ); |
460 | */ | 460 | */ |
461 | 461 | ||
462 | enableButtonOK( false ); | 462 | enableButtonOK( false ); |
463 | 463 | ||
464 | findButton( User1 )->setEnabled( false ); | 464 | findButton( User1 )->setEnabled( false ); |
465 | findButton( User2 )->setEnabled( false ); | 465 | findButton( User2 )->setEnabled( false ); |
466 | 466 | ||
467 | #ifdef DESKTOP_VERSION | 467 | #ifdef DESKTOP_VERSION |
468 | resize( 640, 480 ); | 468 | resize( 640, 480 ); |
469 | #else | 469 | #else |
470 | showMaximized(); | 470 | showMaximized(); |
471 | #endif | 471 | #endif |
472 | } | 472 | } |
473 | 473 | ||
474 | void CSVImportDialog::fillTable() | 474 | void CSVImportDialog::fillTable() |
475 | { | 475 | { |
476 | int row, column; | 476 | int row, column; |
477 | bool lastCharDelimiter = false; | 477 | bool lastCharDelimiter = false; |
478 | bool ignoreDups = mIgnoreDuplicates->isChecked(); | 478 | bool ignoreDups = mIgnoreDuplicates->isChecked(); |
479 | enum { S_START, S_QUOTED_FIELD, S_MAYBE_END_OF_QUOTED_FIELD, S_END_OF_QUOTED_FIELD, | 479 | enum { S_START, S_QUOTED_FIELD, S_MAYBE_END_OF_QUOTED_FIELD, S_END_OF_QUOTED_FIELD, |
480 | S_MAYBE_NORMAL_FIELD, S_NORMAL_FIELD } state = S_START; | 480 | S_MAYBE_NORMAL_FIELD, S_NORMAL_FIELD } state = S_START; |
481 | 481 | ||
482 | QChar x; | 482 | QChar x; |
483 | QString field = ""; | 483 | QString field = ""; |
484 | 484 | ||
485 | // store previous assignment | 485 | // store previous assignment |
486 | QValueList<int> mTypeOld = mTypeStore; | 486 | QValueList<int> mTypeOld = mTypeStore; |
487 | 487 | ||
488 | mTypeStore.clear(); | 488 | mTypeStore.clear(); |
489 | for ( column = 0; column < mTable->numCols(); ++column ) { | 489 | for ( column = 0; column < mTable->numCols(); ++column ) { |
490 | QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, column ) ); | 490 | QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, column ) ); |
491 | 491 | ||
492 | if ( !item || mClearTypeStore ) | 492 | if ( !item || mClearTypeStore ) |
493 | mTypeStore.append( typeToPos( Undefined ) ); | 493 | mTypeStore.append( typeToPos( Undefined ) ); |
494 | else if ( item ) | 494 | else if ( item ) |
495 | mTypeStore.append( item->currentItem() ); | 495 | mTypeStore.append( item->currentItem() ); |
496 | } | 496 | } |
497 | 497 | ||
498 | clearTable(); | 498 | clearTable(); |
499 | 499 | ||
500 | row = column = 1; | 500 | row = column = 1; |
501 | if ( mComboCodec->currentItem () == 0 ) { | 501 | if ( mComboCodec->currentItem () == 0 ) { |
502 | mData = QString::fromUtf8( mFileArray.data() ); | 502 | mData = QString::fromUtf8( mFileArray.data() ); |
503 | } else if ( mComboCodec->currentItem () == 1 ) { | 503 | } else if ( mComboCodec->currentItem () == 1 ) { |
504 | mData = QString::fromLatin1( mFileArray.data() ); | 504 | mData = QString::fromLatin1( mFileArray.data() ); |
505 | } else { | 505 | } else { |
506 | mData = QString::fromLocal8Bit( mFileArray.data() ); | 506 | mData = QString::fromLocal8Bit( mFileArray.data() ); |
507 | } | 507 | } |
508 | 508 | ||
509 | QTextStream inputStream( mData, IO_ReadOnly ); | 509 | QTextStream inputStream( mData, IO_ReadOnly ); |
510 | 510 | ||
511 | if ( mComboCodec->currentItem () == 0 ) { | 511 | if ( mComboCodec->currentItem () == 0 ) { |
512 | inputStream.setEncoding( QTextStream::UnicodeUTF8 ); | 512 | inputStream.setEncoding( QTextStream::UnicodeUTF8 ); |
513 | } else if ( mComboCodec->currentItem () == 1 ) { | 513 | } else if ( mComboCodec->currentItem () == 1 ) { |
514 | inputStream.setEncoding( QTextStream::Latin1 ); | 514 | inputStream.setEncoding( QTextStream::Latin1 ); |
515 | } else { | 515 | } else { |
516 | inputStream.setEncoding( QTextStream::Locale ); | 516 | inputStream.setEncoding( QTextStream::Locale ); |
517 | } | 517 | } |
518 | 518 | ||
519 | int maxColumn = 0; | 519 | int maxColumn = 0; |
520 | while ( !inputStream.atEnd() ) { | 520 | while ( !inputStream.atEnd() ) { |
521 | inputStream >> x; // read one char | 521 | inputStream >> x; // read one char |
522 | 522 | ||
523 | if ( x == '\r' ) inputStream >> x; // eat '\r', to handle DOS/LOSEDOWS files correctly | 523 | if ( x == '\r' ) inputStream >> x; // eat '\r', to handle DOS/LOSEDOWS files correctly |
524 | 524 | ||
525 | switch ( state ) { | 525 | switch ( state ) { |
526 | case S_START : | 526 | case S_START : |
527 | if ( x == mTextQuote ) { | 527 | if ( x == mTextQuote ) { |
528 | state = S_QUOTED_FIELD; | 528 | state = S_QUOTED_FIELD; |
529 | } else if ( x == mDelimiter ) { | 529 | } else if ( x == mDelimiter ) { |
530 | if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) ) | 530 | if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) ) |
531 | ++column; | 531 | ++column; |
532 | lastCharDelimiter = true; | 532 | lastCharDelimiter = true; |
533 | } else if ( x == '\n' ) { | 533 | } else if ( x == '\n' ) { |
534 | ++row; | 534 | ++row; |
535 | column = 1; | 535 | column = 1; |
536 | } else { | 536 | } else { |
537 | field += x; | 537 | field += x; |
538 | state = S_MAYBE_NORMAL_FIELD; | 538 | state = S_MAYBE_NORMAL_FIELD; |
539 | } | 539 | } |
540 | break; | 540 | break; |
541 | case S_QUOTED_FIELD : | 541 | case S_QUOTED_FIELD : |
542 | if ( x == mTextQuote ) { | 542 | if ( x == mTextQuote ) { |
543 | state = S_MAYBE_END_OF_QUOTED_FIELD; | 543 | state = S_MAYBE_END_OF_QUOTED_FIELD; |
544 | } else if ( x == '\n' && mTextQuote.isNull() ) { | 544 | } else if ( x == '\n' && mTextQuote.isNull() ) { |
545 | setText( row - mStartLine + 1, column, field ); | 545 | setText( row - mStartLine + 1, column, field ); |
546 | field = ""; | 546 | field = ""; |
547 | if ( x == '\n' ) { | 547 | if ( x == '\n' ) { |
548 | ++row; | 548 | ++row; |
549 | column = 1; | 549 | column = 1; |
550 | } else { | 550 | } else { |
551 | if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) ) | 551 | if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) ) |
552 | ++column; | 552 | ++column; |
diff --git a/kaddressbook/xxport/csvimportdialog.h b/kaddressbook/xxport/csvimportdialog.h index 5f55ab2..2661420 100644 --- a/kaddressbook/xxport/csvimportdialog.h +++ b/kaddressbook/xxport/csvimportdialog.h | |||
@@ -1,126 +1,126 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressBook. | 2 | This file is part of KAddressBook. |
3 | Copyright (C) 2003 Tobias Koenig <tokoe@kde.org> | 3 | Copyright (C) 2003 Tobias Koenig <tokoe@kde.org> |
4 | based on the code of KSpread's CSV Import Dialog | 4 | based on the code of KSpread's CSV Import Dialog |
5 | 5 | ||
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License as published by the Free Software Foundation; either | 8 | License as published by the Free Software Foundation; either |
9 | version 2 of the License, or (at your option) any later version. | 9 | version 2 of the License, or (at your option) any later version. |
10 | 10 | ||
11 | This library is distributed in the hope that it will be useful, | 11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Library General Public License for more details. | 14 | Library General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU Library General Public License | 16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to | 17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
19 | Boston, MA 02111-1307, USA. | 19 | Boston, MA 02111-1307, USA. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | /* | 22 | /* |
23 | Enhanced Version of the file for platform independent KDE tools. | 23 | Enhanced Version of the file for platform independent KDE tools. |
24 | Copyright (c) 2004 Ulf Schenk | 24 | Copyright (c) 2004 Ulf Schenk |
25 | 25 | ||
26 | $Id$ | 26 | $Id$ |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #ifndef CSV_IMPORT_DLG_H | 29 | #ifndef CSV_IMPORT_DLG_H |
30 | #define CSV_IMPORT_DLG_H | 30 | #define CSV_IMPORT_DLG_H |
31 | 31 | ||
32 | #include <kabc/addressbook.h> | 32 | #include <kabc/addressbook.h> |
33 | #include <kabc/addresseelist.h> | 33 | #include <kabc/addresseelist.h> |
34 | #include <kdialogbase.h> | 34 | #include <kdialogbase.h> |
35 | 35 | ||
36 | #include <qvaluelist.h> | 36 | #include <qvaluelist.h> |
37 | 37 | ||
38 | class KURLRequester; | 38 | class KURLRequester; |
39 | 39 | ||
40 | class QButtonGroup; | 40 | class QButtonGroup; |
41 | class QComboBox; | 41 | class QComboBox; |
42 | class QCheckBox; | 42 | class QCheckBox; |
43 | class QLineEdit; | 43 | class QLineEdit; |
44 | class QPushButton; | 44 | class QPushButton; |
45 | class QRadioButton; | 45 | class QRadioButton; |
46 | class QTable; | 46 | class QTable; |
47 | 47 | ||
48 | class CSVImportDialog : public KDialogBase | 48 | class CSVImportDialog : public KDialogBase |
49 | { | 49 | { |
50 | Q_OBJECT | 50 | Q_OBJECT |
51 | 51 | ||
52 | public: | 52 | public: |
53 | CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, | 53 | CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, |
54 | const char *name = 0 ); | 54 | const char *name = 0 ); |
55 | ~CSVImportDialog(); | 55 | ~CSVImportDialog(); |
56 | 56 | ||
57 | KABC::AddresseeList contacts() const; | 57 | KABC::AddresseeList contacts() const; |
58 | 58 | ||
59 | protected slots: | 59 | protected slots: |
60 | virtual void slotOk(); | 60 | virtual void slotOk(); |
61 | 61 | ||
62 | private slots: | 62 | private slots: |
63 | void returnPressed(); | 63 | void returnPressed(); |
64 | void delimiterClicked( int id ); | 64 | void delimiterClicked( int id ); |
65 | void lineSelected( const QString& line ); | 65 | void lineSelected( const QString& line ); |
66 | void textquoteSelected( const QString& mark ); | 66 | void textquoteSelected( const QString& mark ); |
67 | void textChanged ( const QString & ); | 67 | void textChanged ( const QString & ); |
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 | void codecChanged ( const QString& ); |
72 | 72 | ||
73 | void applyTemplate(); | 73 | void applyTemplate(); |
74 | void saveTemplate(); | 74 | void saveTemplate(); |
75 | 75 | ||
76 | private: | 76 | private: |
77 | enum { Undefined, FormattedName, FamilyName, GivenName, AdditionalName, | 77 | enum { Undefined, FormattedName, FamilyName, GivenName, AdditionalName, |
78 | Prefix, Suffix, NickName, Birthday, | 78 | Prefix, Suffix, NickName, Birthday, |
79 | HomeAddressStreet, HomeAddressLocality, HomeAddressRegion, | 79 | HomeAddressStreet, HomeAddressLocality, HomeAddressRegion, |
80 | HomeAddressPostalCode, HomeAddressCountry, HomeAddressLabel, | 80 | HomeAddressPostalCode, HomeAddressCountry, HomeAddressLabel, |
81 | BusinessAddressStreet, BusinessAddressLocality, BusinessAddressRegion, | 81 | BusinessAddressStreet, BusinessAddressLocality, BusinessAddressRegion, |
82 | BusinessAddressPostalCode, BusinessAddressCountry, | 82 | BusinessAddressPostalCode, BusinessAddressCountry, |
83 | BusinessAddressLabel, | 83 | BusinessAddressLabel, |
84 | HomePhone, BusinessPhone, MobilePhone, HomeFax, BusinessFax, CarPhone, | 84 | HomePhone, BusinessPhone, MobilePhone, HomeFax, BusinessFax, MobileWorkPhone, |
85 | Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL, Categories | 85 | Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL, Categories |
86 | }; | 86 | }; |
87 | 87 | ||
88 | QTable* mTable; | 88 | QTable* mTable; |
89 | QButtonGroup* mDelimiterBox; | 89 | QButtonGroup* mDelimiterBox; |
90 | QRadioButton* mRadioComma; | 90 | QRadioButton* mRadioComma; |
91 | QRadioButton* mRadioSemicolon; | 91 | QRadioButton* mRadioSemicolon; |
92 | QRadioButton* mRadioTab; | 92 | QRadioButton* mRadioTab; |
93 | QRadioButton* mRadioSpace; | 93 | QRadioButton* mRadioSpace; |
94 | QRadioButton* mRadioOther; | 94 | QRadioButton* mRadioOther; |
95 | QLineEdit* mDelimiterEdit; | 95 | QLineEdit* mDelimiterEdit; |
96 | QComboBox* mComboLine; | 96 | QComboBox* mComboLine; |
97 | QComboBox* mComboQuote; | 97 | QComboBox* mComboQuote; |
98 | QComboBox* mComboCodec; | 98 | QComboBox* mComboCodec; |
99 | QCheckBox* mIgnoreDuplicates; | 99 | QCheckBox* mIgnoreDuplicates; |
100 | KURLRequester* mUrlRequester; | 100 | KURLRequester* mUrlRequester; |
101 | 101 | ||
102 | void initGUI(); | 102 | void initGUI(); |
103 | void fillTable(); | 103 | void fillTable(); |
104 | void clearTable(); | 104 | void clearTable(); |
105 | void fillComboBox(); | 105 | void fillComboBox(); |
106 | void setText( int row, int col, const QString& text ); | 106 | void setText( int row, int col, const QString& text ); |
107 | void adjustRows( int rows ); | 107 | void adjustRows( int rows ); |
108 | QString getText( int row, int col ); | 108 | QString getText( int row, int col ); |
109 | uint posToType( int pos ) const; | 109 | uint posToType( int pos ) const; |
110 | int typeToPos( uint type ) const; | 110 | int typeToPos( uint type ) const; |
111 | 111 | ||
112 | bool mAdjustRows; | 112 | bool mAdjustRows; |
113 | int mStartLine; | 113 | int mStartLine; |
114 | QChar mTextQuote; | 114 | QChar mTextQuote; |
115 | QString mDelimiter; | 115 | QString mDelimiter; |
116 | QString mData; | 116 | QString mData; |
117 | QByteArray mFileArray; | 117 | QByteArray mFileArray; |
118 | QMap<QString, uint> mTypeMap; | 118 | QMap<QString, uint> mTypeMap; |
119 | KABC::AddressBook *mAddressBook; | 119 | KABC::AddressBook *mAddressBook; |
120 | int mCustomCounter; | 120 | int mCustomCounter; |
121 | bool mClearTypeStore; | 121 | bool mClearTypeStore; |
122 | QValueList<int> mTypeStore; | 122 | QValueList<int> mTypeStore; |
123 | 123 | ||
124 | }; | 124 | }; |
125 | 125 | ||
126 | #endif | 126 | #endif |