summaryrefslogtreecommitdiffabout
path: root/kaddressbook/views
Unidiff
Diffstat (limited to 'kaddressbook/views') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/views/kaddressbookcardview.cpp2
-rw-r--r--kaddressbook/views/kaddressbookiconview.cpp7
-rw-r--r--kaddressbook/views/kaddressbooktableview.cpp2
3 files changed, 9 insertions, 2 deletions
diff --git a/kaddressbook/views/kaddressbookcardview.cpp b/kaddressbook/views/kaddressbookcardview.cpp
index 8d0fca1..4babf67 100644
--- a/kaddressbook/views/kaddressbookcardview.cpp
+++ b/kaddressbook/views/kaddressbookcardview.cpp
@@ -78,369 +78,371 @@ class AddresseeCardViewItem : public CardViewItem
78 { 78 {
79 clearFields(); 79 clearFields();
80 80
81 // Try all the selected fields until we find one with text. 81 // Try all the selected fields until we find one with text.
82 // This will limit the number of unlabeled icons in the view 82 // This will limit the number of unlabeled icons in the view
83 KABC::Field::List::Iterator iter; 83 KABC::Field::List::Iterator iter;
84 for (iter = mFields.begin(); iter != mFields.end(); ++iter) 84 for (iter = mFields.begin(); iter != mFields.end(); ++iter)
85 { 85 {
86 // insert empty fields or not? not doing so saves a bit of memory and CPU 86 // insert empty fields or not? not doing so saves a bit of memory and CPU
87 // (during geometry calculations), but prevents having equally 87 // (during geometry calculations), but prevents having equally
88 // wide label columns in all cards, unless CardViewItem/CardView search 88 // wide label columns in all cards, unless CardViewItem/CardView search
89 // globally for the widest label. (anders) 89 // globally for the widest label. (anders)
90 //if (mShowEmptyFields || !(*iter)->value( mAddressee ).isEmpty()) 90 //if (mShowEmptyFields || !(*iter)->value( mAddressee ).isEmpty())
91 insertField((*iter)->label(), (*iter)->value( mAddressee )); 91 insertField((*iter)->label(), (*iter)->value( mAddressee ));
92 } 92 }
93 93
94 // We might want to make this the first field. hmm... -mpilone 94 // We might want to make this the first field. hmm... -mpilone
95 setCaption( mAddressee.realName() ); 95 setCaption( mAddressee.realName() );
96 } 96 }
97 } 97 }
98 98
99 private: 99 private:
100 KABC::Field::List mFields; 100 KABC::Field::List mFields;
101 bool mShowEmptyFields; 101 bool mShowEmptyFields;
102 KABC::AddressBook *mDocument; 102 KABC::AddressBook *mDocument;
103 KABC::Addressee mAddressee; 103 KABC::Addressee mAddressee;
104}; 104};
105 105
106/////////////////////////////// 106///////////////////////////////
107// AddresseeCardView 107// AddresseeCardView
108 108
109AddresseeCardView::AddresseeCardView(QWidget *parent, const char *name) 109AddresseeCardView::AddresseeCardView(QWidget *parent, const char *name)
110 : CardView(parent, name) 110 : CardView(parent, name)
111{ 111{
112 setAcceptDrops(true); 112 setAcceptDrops(true);
113} 113}
114 114
115AddresseeCardView::~AddresseeCardView() 115AddresseeCardView::~AddresseeCardView()
116{ 116{
117} 117}
118 118
119 119
120void AddresseeCardView::dragEnterEvent(QDragEnterEvent *e) 120void AddresseeCardView::dragEnterEvent(QDragEnterEvent *e)
121{ 121{
122#ifndef KAB_EMBEDDED 122#ifndef KAB_EMBEDDED
123 if (QTextDrag::canDecode(e)) 123 if (QTextDrag::canDecode(e))
124 e->accept(); 124 e->accept();
125#else //KAB_EMBEDDED 125#else //KAB_EMBEDDED
126qDebug("AddresseeCardView::dragEnterEvent drag&drop is not implemented"); 126qDebug("AddresseeCardView::dragEnterEvent drag&drop is not implemented");
127#endif //KAB_EMBEDDED 127#endif //KAB_EMBEDDED
128} 128}
129 129
130void AddresseeCardView::dropEvent(QDropEvent *e) 130void AddresseeCardView::dropEvent(QDropEvent *e)
131{ 131{
132 emit addresseeDropped(e); 132 emit addresseeDropped(e);
133} 133}
134 134
135void AddresseeCardView::startDrag() 135void AddresseeCardView::startDrag()
136{ 136{
137 emit startAddresseeDrag(); 137 emit startAddresseeDrag();
138} 138}
139 139
140 140
141/////////////////////////////// 141///////////////////////////////
142// KAddressBookCardView 142// KAddressBookCardView
143 143
144KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab, 144KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab,
145 QWidget *parent, const char *name ) 145 QWidget *parent, const char *name )
146 : KAddressBookView( ab, parent, name ) 146 : KAddressBookView( ab, parent, name )
147{ 147{
148 mShowEmptyFields = false; 148 mShowEmptyFields = false;
149 149
150 // Init the GUI 150 // Init the GUI
151 QVBoxLayout *layout = new QVBoxLayout(viewWidget()); 151 QVBoxLayout *layout = new QVBoxLayout(viewWidget());
152 152
153 mCardView = new AddresseeCardView(viewWidget(), "mCardView"); 153 mCardView = new AddresseeCardView(viewWidget(), "mCardView");
154 mCardView->setSelectionMode(CardView::Extended); 154 mCardView->setSelectionMode(CardView::Extended);
155 layout->addWidget(mCardView); 155 layout->addWidget(mCardView);
156 156
157 // Connect up the signals 157 // Connect up the signals
158 connect(mCardView, SIGNAL(executed(CardViewItem *)), 158 connect(mCardView, SIGNAL(executed(CardViewItem *)),
159 this, SLOT(addresseeExecuted(CardViewItem *))); 159 this, SLOT(addresseeExecuted(CardViewItem *)));
160 connect(mCardView, SIGNAL(selectionChanged()), 160 connect(mCardView, SIGNAL(selectionChanged()),
161 this, SLOT(addresseeSelected())); 161 this, SLOT(addresseeSelected()));
162 connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)), 162 connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)),
163 this, SIGNAL(dropped(QDropEvent*))); 163 this, SIGNAL(dropped(QDropEvent*)));
164 connect(mCardView, SIGNAL(startAddresseeDrag()), 164 connect(mCardView, SIGNAL(startAddresseeDrag()),
165 this, SIGNAL(startDrag())); 165 this, SIGNAL(startDrag()));
166} 166}
167 167
168KAddressBookCardView::~KAddressBookCardView() 168KAddressBookCardView::~KAddressBookCardView()
169{ 169{
170} 170}
171 171
172void KAddressBookCardView::readConfig(KConfig *config) 172void KAddressBookCardView::readConfig(KConfig *config)
173{ 173{
174 KAddressBookView::readConfig(config); 174 KAddressBookView::readConfig(config);
175 175
176 // costum colors? 176 // costum colors?
177 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 177 if ( config->readBoolEntry( "EnableCustomColors", false ) )
178 { 178 {
179 QPalette p( mCardView->palette() ); 179 QPalette p( mCardView->palette() );
180 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 180 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
181 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 181 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
182 c = p.color(QPalette::Normal, QColorGroup::Text ); 182 c = p.color(QPalette::Normal, QColorGroup::Text );
183 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 183 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
184 c = p.color(QPalette::Normal, QColorGroup::Button ); 184 c = p.color(QPalette::Normal, QColorGroup::Button );
185 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 185 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
186 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 186 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
187 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); 187 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) );
188 c = p.color(QPalette::Normal, QColorGroup::Highlight ); 188 c = p.color(QPalette::Normal, QColorGroup::Highlight );
189 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); 189 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) );
190 c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); 190 c = p.color(QPalette::Normal, QColorGroup::HighlightedText );
191 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); 191 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) );
192 mCardView->viewport()->setPalette( p ); 192 mCardView->viewport()->setPalette( p );
193 } 193 }
194 else 194 else
195 { 195 {
196 // needed if turned off during a session. 196 // needed if turned off during a session.
197 mCardView->viewport()->setPalette( mCardView->palette() ); 197 mCardView->viewport()->setPalette( mCardView->palette() );
198 } 198 }
199 199
200 //custom fonts? 200 //custom fonts?
201 QFont f( font() ); 201 QFont f( font() );
202 if ( config->readBoolEntry( "EnableCustomFonts", false ) ) 202 if ( config->readBoolEntry( "EnableCustomFonts", false ) )
203 { 203 {
204 mCardView->setFont( config->readFontEntry( "TextFont", &f) ); 204 mCardView->setFont( config->readFontEntry( "TextFont", &f) );
205 f.setBold( true ); 205 f.setBold( true );
206 mCardView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); 206 mCardView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) );
207 } 207 }
208 else 208 else
209 { 209 {
210 mCardView->setFont( f ); 210 mCardView->setFont( f );
211 f.setBold( true ); 211 f.setBold( true );
212 mCardView->setHeaderFont( f ); 212 mCardView->setHeaderFont( f );
213 } 213 }
214 214
215 mCardView->setDrawCardBorder(config->readBoolEntry("DrawBorder", true)); 215 mCardView->setDrawCardBorder(config->readBoolEntry("DrawBorder", true));
216 mCardView->setDrawColSeparators(config->readBoolEntry("DrawSeparators", 216 mCardView->setDrawColSeparators(config->readBoolEntry("DrawSeparators",
217 true)); 217 true));
218 mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false)); 218 mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false));
219 mShowEmptyFields = config->readBoolEntry("ShowEmptyFields", false); 219 mShowEmptyFields = config->readBoolEntry("ShowEmptyFields", false);
220 220
221 mCardView->setShowEmptyFields( mShowEmptyFields ); 221 mCardView->setShowEmptyFields( mShowEmptyFields );
222 222
223 mCardView->setItemWidth( config->readNumEntry( "ItemWidth", 200 ) ); 223 mCardView->setItemWidth( config->readNumEntry( "ItemWidth", 200 ) );
224 mCardView->setItemMargin( config->readNumEntry( "ItemMargin", 0 ) ); 224 mCardView->setItemMargin( config->readNumEntry( "ItemMargin", 0 ) );
225 mCardView->setItemSpacing( config->readNumEntry( "ItemSpacing", 10 ) ); 225 mCardView->setItemSpacing( config->readNumEntry( "ItemSpacing", 10 ) );
226 mCardView->setSeparatorWidth( config->readNumEntry( "SeparatorWidth", 2 ) ); 226 mCardView->setSeparatorWidth( config->readNumEntry( "SeparatorWidth", 2 ) );
227 227
228 disconnect(mCardView, SIGNAL(executed(CardViewItem *)), 228 disconnect(mCardView, SIGNAL(executed(CardViewItem *)),
229 this, SLOT(addresseeExecuted(CardViewItem *))); 229 this, SLOT(addresseeExecuted(CardViewItem *)));
230 230
231 if (KABPrefs::instance()->mHonorSingleClick) 231 if (KABPrefs::instance()->mHonorSingleClick)
232 connect(mCardView, SIGNAL(executed(CardViewItem *)), 232 connect(mCardView, SIGNAL(executed(CardViewItem *)),
233 this, SLOT(addresseeExecuted(CardViewItem *))); 233 this, SLOT(addresseeExecuted(CardViewItem *)));
234 else 234 else
235 connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)), 235 connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)),
236 this, SLOT(addresseeExecuted(CardViewItem *))); 236 this, SLOT(addresseeExecuted(CardViewItem *)));
237 237
238} 238}
239 239
240void KAddressBookCardView::writeConfig( KConfig *config ) 240void KAddressBookCardView::writeConfig( KConfig *config )
241{ 241{
242 config->writeEntry( "ItemWidth", mCardView->itemWidth() ); 242 config->writeEntry( "ItemWidth", mCardView->itemWidth() );
243 KAddressBookView::writeConfig( config ); 243 KAddressBookView::writeConfig( config );
244} 244}
245void KAddressBookCardView::doSearch( const QString& s,KABC::Field *field ) 245void KAddressBookCardView::doSearch( const QString& s,KABC::Field *field )
246{ 246{
247 mCardView->clear(); 247 mCardView->clear();
248 if ( s.isEmpty() || s == "*" ) { 248 if ( s.isEmpty() || s == "*" ) {
249 refresh(); 249 refresh();
250 return; 250 return;
251 } 251 }
252 QString pattern = s.lower()+"*"; 252 QString pattern = s.lower()+"*";
253 QRegExp re; 253 QRegExp re;
254 re.setWildcard(true); // most people understand these better. 254 re.setWildcard(true); // most people understand these better.
255 re.setCaseSensitive(false); 255 re.setCaseSensitive(false);
256 re.setPattern( pattern ); 256 re.setPattern( pattern );
257 if (!re.isValid()) 257 if (!re.isValid())
258 return; 258 return;
259 mCardView->viewport()->setUpdatesEnabled( false ); 259 mCardView->viewport()->setUpdatesEnabled( false );
260 KABC::Addressee::List addresseeList = addressees(); 260 KABC::Addressee::List addresseeList = addressees();
261 KABC::Addressee::List::Iterator it; 261 KABC::Addressee::List::Iterator it;
262 if ( field ) { 262 if ( field ) {
263 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 263 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
264#if QT_VERSION >= 300 264#if QT_VERSION >= 300
265 if (re.search(field->value( *it ).lower()) != -1) 265 if (re.search(field->value( *it ).lower()) != -1)
266#else 266#else
267 if (re.match(field->value( *it ).lower()) != -1) 267 if (re.match(field->value( *it ).lower()) != -1)
268#endif 268#endif
269 new AddresseeCardViewItem(fields(), mShowEmptyFields, 269 new AddresseeCardViewItem(fields(), mShowEmptyFields,
270 addressBook(), *it, mCardView); 270 addressBook(), *it, mCardView);
271 271
272 } 272 }
273 } else { 273 } else {
274 KABC::Field::List fieldList = fields(); 274 KABC::Field::List fieldList = fields();
275 KABC::Field::List::ConstIterator fieldIt; 275 KABC::Field::List::ConstIterator fieldIt;
276 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 276 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
277 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 277 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
278#if QT_VERSION >= 300 278#if QT_VERSION >= 300
279 if (re.search((*fieldIt)->value( *it ).lower()) != -1) 279 if (re.search((*fieldIt)->value( *it ).lower()) != -1)
280#else 280#else
281 if (re.match((*fieldIt)->value( *it ).lower()) != -1) 281 if (re.match((*fieldIt)->value( *it ).lower()) != -1)
282#endif 282#endif
283 { 283 {
284 new AddresseeCardViewItem(fields(), mShowEmptyFields, 284 new AddresseeCardViewItem(fields(), mShowEmptyFields,
285 addressBook(), *it, mCardView); 285 addressBook(), *it, mCardView);
286 continue; 286 continue;
287 } 287 }
288 } 288 }
289 } 289 }
290 } 290 }
291 mCardView->viewport()->setUpdatesEnabled( true ); 291 mCardView->viewport()->setUpdatesEnabled( true );
292 mCardView->viewport()->update(); 292 mCardView->viewport()->update();
293 // by default nothing is selected 293 // by default nothing is selected
294 emit selected(QString::null); 294 emit selected(QString::null);
295} 295}
296QStringList KAddressBookCardView::selectedUids() 296QStringList KAddressBookCardView::selectedUids()
297{ 297{
298 QStringList uidList; 298 QStringList uidList;
299 CardViewItem *item; 299 CardViewItem *item;
300 AddresseeCardViewItem *aItem; 300 AddresseeCardViewItem *aItem;
301 301
302 for (item = mCardView->firstItem(); item; item = item->nextItem()) 302 for (item = mCardView->firstItem(); item; item = item->nextItem())
303 { 303 {
304 if (item->isSelected()) 304 if (item->isSelected())
305 { 305 {
306#ifndef KAB_EMBEDDED 306#ifndef KAB_EMBEDDED
307 aItem = dynamic_cast<AddresseeCardViewItem*>(item); 307 aItem = dynamic_cast<AddresseeCardViewItem*>(item);
308#else //KAB_EMBEDDED 308#else //KAB_EMBEDDED
309 aItem = (AddresseeCardViewItem*)(item); 309 aItem = (AddresseeCardViewItem*)(item);
310#endif //KAB_EMBEDDED 310#endif //KAB_EMBEDDED
311 if (aItem) 311 if (aItem)
312 uidList << aItem->addressee().uid(); 312 uidList << aItem->addressee().uid();
313 } 313 }
314 } 314 }
315 315
316 return uidList; 316 return uidList;
317} 317}
318 318
319void KAddressBookCardView::refresh(QString uid) 319void KAddressBookCardView::refresh(QString uid)
320{ 320{
321 CardViewItem *item; 321 CardViewItem *item;
322 AddresseeCardViewItem *aItem; 322 AddresseeCardViewItem *aItem;
323 323
324 if (uid.isNull()) 324 if (uid.isNull())
325 { 325 {
326 // Rebuild the view 326 // Rebuild the view
327 mCardView->viewport()->setUpdatesEnabled( false ); 327 mCardView->viewport()->setUpdatesEnabled( false );
328 mCardView->clear(); 328 mCardView->clear();
329 329
330 KABC::Addressee::List addresseeList = addressees(); 330 KABC::Addressee::List addresseeList = addressees();
331 KABC::Addressee::List::Iterator iter; 331 KABC::Addressee::List::Iterator iter;
332 for (iter = addresseeList.begin(); iter != addresseeList.end(); ++iter) 332 for (iter = addresseeList.begin(); iter != addresseeList.end(); ++iter)
333 { 333 {
334 if ( (*iter).uid().left(2) == "la" && (*iter).uid().left(19) == QString("last-syncAddressee-") )
335 continue;
334 aItem = new AddresseeCardViewItem(fields(), mShowEmptyFields, 336 aItem = new AddresseeCardViewItem(fields(), mShowEmptyFields,
335 addressBook(), *iter, mCardView); 337 addressBook(), *iter, mCardView);
336 } 338 }
337 mCardView->viewport()->setUpdatesEnabled( true ); 339 mCardView->viewport()->setUpdatesEnabled( true );
338 mCardView->viewport()->update(); 340 mCardView->viewport()->update();
339 341
340 // by default nothing is selected 342 // by default nothing is selected
341 emit selected(QString::null); 343 emit selected(QString::null);
342 } 344 }
343 else 345 else
344 { 346 {
345 // Try to find the one to refresh 347 // Try to find the one to refresh
346 bool found = false; 348 bool found = false;
347 for (item = mCardView->firstItem(); item && !found; 349 for (item = mCardView->firstItem(); item && !found;
348 item = item->nextItem()) 350 item = item->nextItem())
349 { 351 {
350#ifndef KAB_EMBEDDED 352#ifndef KAB_EMBEDDED
351 aItem = dynamic_cast<AddresseeCardViewItem*>(item); 353 aItem = dynamic_cast<AddresseeCardViewItem*>(item);
352#else //KAB_EMBEDDED 354#else //KAB_EMBEDDED
353 aItem = (AddresseeCardViewItem*)(item); 355 aItem = (AddresseeCardViewItem*)(item);
354#endif //KAB_EMBEDDED 356#endif //KAB_EMBEDDED
355 357
356 if ((aItem) && (aItem->addressee().uid() == uid)) 358 if ((aItem) && (aItem->addressee().uid() == uid))
357 { 359 {
358 aItem->refresh(); 360 aItem->refresh();
359 found = true; 361 found = true;
360 } 362 }
361 } 363 }
362 } 364 }
363} 365}
364 366
365void KAddressBookCardView::setSelected(QString uid, bool selected) 367void KAddressBookCardView::setSelected(QString uid, bool selected)
366{ 368{
367 CardViewItem *item; 369 CardViewItem *item;
368 AddresseeCardViewItem *aItem; 370 AddresseeCardViewItem *aItem;
369 371
370 if (uid.isNull()) 372 if (uid.isNull())
371 { 373 {
372 mCardView->selectAll(selected); 374 mCardView->selectAll(selected);
373 } 375 }
374 else 376 else
375 { 377 {
376 bool found = false; 378 bool found = false;
377 for (item = mCardView->firstItem(); item && !found; 379 for (item = mCardView->firstItem(); item && !found;
378 item = item->nextItem()) 380 item = item->nextItem())
379 { 381 {
380#ifndef KAB_EMBEDDED 382#ifndef KAB_EMBEDDED
381 aItem = dynamic_cast<AddresseeCardViewItem*>(item); 383 aItem = dynamic_cast<AddresseeCardViewItem*>(item);
382#else //KAB_EMBEDDED 384#else //KAB_EMBEDDED
383 aItem = (AddresseeCardViewItem*)(item); 385 aItem = (AddresseeCardViewItem*)(item);
384#endif //KAB_EMBEDDED 386#endif //KAB_EMBEDDED
385 387
386 if ((aItem) && (aItem->addressee().uid() == uid)) 388 if ((aItem) && (aItem->addressee().uid() == uid))
387 { 389 {
388 mCardView->setSelected(aItem, selected); 390 mCardView->setSelected(aItem, selected);
389 mCardView->ensureItemVisible(item); 391 mCardView->ensureItemVisible(item);
390 found = true; 392 found = true;
391 } 393 }
392 } 394 }
393 } 395 }
394} 396}
395 397
396//US added an additional method without parameter 398//US added an additional method without parameter
397void KAddressBookCardView::setSelected() 399void KAddressBookCardView::setSelected()
398{ 400{
399 setSelected(QString::null, true); 401 setSelected(QString::null, true);
400} 402}
401 403
402void KAddressBookCardView::addresseeExecuted(CardViewItem *item) 404void KAddressBookCardView::addresseeExecuted(CardViewItem *item)
403{ 405{
404#ifndef KAB_EMBEDDED 406#ifndef KAB_EMBEDDED
405 AddresseeCardViewItem *aItem = dynamic_cast<AddresseeCardViewItem*>(item); 407 AddresseeCardViewItem *aItem = dynamic_cast<AddresseeCardViewItem*>(item);
406#else //KAB_EMBEDDED 408#else //KAB_EMBEDDED
407 AddresseeCardViewItem *aItem = (AddresseeCardViewItem*)(item); 409 AddresseeCardViewItem *aItem = (AddresseeCardViewItem*)(item);
408#endif //KAB_EMBEDDED 410#endif //KAB_EMBEDDED
409 if (aItem) 411 if (aItem)
410 { 412 {
411 //kdDebug()<<"... even has a valid item:)"<<endl; 413 //kdDebug()<<"... even has a valid item:)"<<endl;
412 emit executed(aItem->addressee().uid()); 414 emit executed(aItem->addressee().uid());
413 } 415 }
414} 416}
415 417
416void KAddressBookCardView::addresseeSelected() 418void KAddressBookCardView::addresseeSelected()
417{ 419{
418 CardViewItem *item; 420 CardViewItem *item;
419 AddresseeCardViewItem *aItem; 421 AddresseeCardViewItem *aItem;
420 422
421 bool found = false; 423 bool found = false;
422 for (item = mCardView->firstItem(); item && !found; 424 for (item = mCardView->firstItem(); item && !found;
423 item = item->nextItem()) 425 item = item->nextItem())
424 { 426 {
425 if (item->isSelected()) 427 if (item->isSelected())
426 { 428 {
427#ifndef KAB_EMBEDDED 429#ifndef KAB_EMBEDDED
428 aItem = dynamic_cast<AddresseeCardViewItem*>(item); 430 aItem = dynamic_cast<AddresseeCardViewItem*>(item);
429#else //KAB_EMBEDDED 431#else //KAB_EMBEDDED
430 aItem = (AddresseeCardViewItem*)(item); 432 aItem = (AddresseeCardViewItem*)(item);
431#endif //KAB_EMBEDDED 433#endif //KAB_EMBEDDED
432 if ( aItem ) 434 if ( aItem )
433 { 435 {
434 emit selected(aItem->addressee().uid()); 436 emit selected(aItem->addressee().uid());
435 found = true; 437 found = true;
436 } 438 }
437 } 439 }
438 } 440 }
439 441
440 if (!found) 442 if (!found)
441 emit selected(QString::null); 443 emit selected(QString::null);
442 444
443} 445}
444#ifndef KAB_EMBEDDED 446#ifndef KAB_EMBEDDED
445#include "kaddressbookcardview.moc" 447#include "kaddressbookcardview.moc"
446#endif //KAB_EMBEDDED 448#endif //KAB_EMBEDDED
diff --git a/kaddressbook/views/kaddressbookiconview.cpp b/kaddressbook/views/kaddressbookiconview.cpp
index 0ffc674..fdc0db9 100644
--- a/kaddressbook/views/kaddressbookiconview.cpp
+++ b/kaddressbook/views/kaddressbookiconview.cpp
@@ -63,364 +63,367 @@ extern "C" {
63 { 63 {
64 return ( new IconViewFactory ); 64 return ( new IconViewFactory );
65 } 65 }
66} 66}
67 67
68//////////////////////////////// 68////////////////////////////////
69// AddresseeIconView (internal class) 69// AddresseeIconView (internal class)
70#ifndef KAB_EMBEDDED 70#ifndef KAB_EMBEDDED
71AddresseeIconView::AddresseeIconView(QWidget *parent, const char *name) 71AddresseeIconView::AddresseeIconView(QWidget *parent, const char *name)
72 : KIconView(parent, name) 72 : KIconView(parent, name)
73#else //KAB_EMBEDDED 73#else //KAB_EMBEDDED
74AddresseeIconView::AddresseeIconView(QWidget *parent, const char *name) 74AddresseeIconView::AddresseeIconView(QWidget *parent, const char *name)
75 : QIconView(parent, name) 75 : QIconView(parent, name)
76#endif //KAB_EMBEDDED 76#endif //KAB_EMBEDDED
77 77
78{ 78{
79 setSelectionMode( QIconView::Extended ); 79 setSelectionMode( QIconView::Extended );
80 setResizeMode( QIconView::Adjust ); 80 setResizeMode( QIconView::Adjust );
81 setWordWrapIconText( true ); 81 setWordWrapIconText( true );
82 setGridX( 100 ); 82 setGridX( 100 );
83 setItemsMovable(false); 83 setItemsMovable(false);
84 setSorting(true, true); 84 setSorting(true, true);
85 85
86 86
87//US ??? setMode( KIconView::Select ); 87//US ??? setMode( KIconView::Select );
88 88
89#ifndef KAB_EMBEDDED 89#ifndef KAB_EMBEDDED
90 90
91 connect(this, SIGNAL(dropped(QDropEvent*, const QValueList<QIconDragItem>&)), 91 connect(this, SIGNAL(dropped(QDropEvent*, const QValueList<QIconDragItem>&)),
92 this, SLOT(itemDropped(QDropEvent*, const QValueList<QIconDragItem>&))); 92 this, SLOT(itemDropped(QDropEvent*, const QValueList<QIconDragItem>&)));
93#endif //KAB_EMBEDDED 93#endif //KAB_EMBEDDED
94} 94}
95 95
96AddresseeIconView::~AddresseeIconView() 96AddresseeIconView::~AddresseeIconView()
97{ 97{
98} 98}
99 99
100 100
101void AddresseeIconView::itemDropped(QDropEvent *e, 101void AddresseeIconView::itemDropped(QDropEvent *e,
102 const QValueList<QIconDragItem> &) 102 const QValueList<QIconDragItem> &)
103{ 103{
104 emit addresseeDropped(e); 104 emit addresseeDropped(e);
105} 105}
106 106
107QDragObject *AddresseeIconView::dragObject() 107QDragObject *AddresseeIconView::dragObject()
108{ 108{
109 emit startAddresseeDrag(); 109 emit startAddresseeDrag();
110 110
111 // We never want IconView to start the drag 111 // We never want IconView to start the drag
112 return 0; 112 return 0;
113} 113}
114//////////////////////////////// 114////////////////////////////////
115// AddresseeIconViewItem (internal class) 115// AddresseeIconViewItem (internal class)
116#ifndef KAB_EMBEDDED 116#ifndef KAB_EMBEDDED
117class AddresseeIconViewItem : public KIconViewItem 117class AddresseeIconViewItem : public KIconViewItem
118#else //KAB_EMBEDDED 118#else //KAB_EMBEDDED
119class AddresseeIconViewItem : public QIconViewItem 119class AddresseeIconViewItem : public QIconViewItem
120#endif //KAB_EMBEDDED 120#endif //KAB_EMBEDDED
121{ 121{
122 public: 122 public:
123#ifndef KAB_EMBEDDED 123#ifndef KAB_EMBEDDED
124 AddresseeIconViewItem(const KABC::Field::List &fields, 124 AddresseeIconViewItem(const KABC::Field::List &fields,
125 KABC::AddressBook *doc, const KABC::Addressee &a, 125 KABC::AddressBook *doc, const KABC::Addressee &a,
126 QIconView *parent) 126 QIconView *parent)
127 : KIconViewItem(parent), mFields( fields ), mDocument(doc), mAddressee(a) 127 : KIconViewItem(parent), mFields( fields ), mDocument(doc), mAddressee(a)
128#else //KAB_EMBEDDED 128#else //KAB_EMBEDDED
129 AddresseeIconViewItem(const KABC::Field::List &fields, 129 AddresseeIconViewItem(const KABC::Field::List &fields,
130 KABC::AddressBook *doc, const KABC::Addressee &a, 130 KABC::AddressBook *doc, const KABC::Addressee &a,
131 QIconView *parent) 131 QIconView *parent)
132 : QIconViewItem(parent), mFields( fields ), mDocument(doc), mAddressee(a) 132 : QIconViewItem(parent), mFields( fields ), mDocument(doc), mAddressee(a)
133#endif //KAB_EMBEDDED 133#endif //KAB_EMBEDDED
134 { 134 {
135 if ( mFields.isEmpty() ) { 135 if ( mFields.isEmpty() ) {
136 mFields = KABC::Field::defaultFields(); 136 mFields = KABC::Field::defaultFields();
137 } 137 }
138 refresh(); 138 refresh();
139 } 139 }
140 140
141 const KABC::Addressee &addressee() const { return mAddressee; } 141 const KABC::Addressee &addressee() const { return mAddressee; }
142 142
143 void refresh() 143 void refresh()
144 { 144 {
145 // Update our addressee, since it may have changed elsewhere 145 // Update our addressee, since it may have changed elsewhere
146 mAddressee = mDocument->findByUid(mAddressee.uid()); 146 mAddressee = mDocument->findByUid(mAddressee.uid());
147 147
148 if (!mAddressee.isEmpty()) 148 if (!mAddressee.isEmpty())
149 setText( mAddressee.givenName() + " " + mAddressee.familyName() ); 149 setText( mAddressee.givenName() + " " + mAddressee.familyName() );
150 150
151 QPixmap icon; 151 QPixmap icon;
152 QPixmap defaultIcon( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop, 128 ) ); 152 QPixmap defaultIcon( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop, 128 ) );
153 KABC::Picture pic = mAddressee.photo(); 153 KABC::Picture pic = mAddressee.photo();
154 if ( pic.data().isNull() ) 154 if ( pic.data().isNull() )
155 pic = mAddressee.logo(); 155 pic = mAddressee.logo();
156 156
157 if ( pic.isIntern() && !pic.data().isNull() ) { 157 if ( pic.isIntern() && !pic.data().isNull() ) {
158 QImage img = pic.data(); 158 QImage img = pic.data();
159#ifndef KAB_EMBEDDED 159#ifndef KAB_EMBEDDED
160 if ( img.width() > img.height() ) 160 if ( img.width() > img.height() )
161 icon = img.scaleWidth( 32 ); 161 icon = img.scaleWidth( 32 );
162 else 162 else
163 icon = img.scaleHeight( 32 ); 163 icon = img.scaleHeight( 32 );
164#else //KAB_EMBEDDED 164#else //KAB_EMBEDDED
165 qDebug("AddresseeIconViewItem::refresh - scale here dependend of the displaysize and the right factor"); 165 qDebug("AddresseeIconViewItem::refresh - scale here dependend of the displaysize and the right factor");
166 icon.convertFromImage(img.smoothScale(32, 32)); 166 icon.convertFromImage(img.smoothScale(32, 32));
167#endif //KAB_EMBEDDED 167#endif //KAB_EMBEDDED
168 168
169 } else 169 } else
170 icon = defaultIcon; 170 icon = defaultIcon;
171 171
172 setPixmap( icon ); 172 setPixmap( icon );
173 } 173 }
174 174
175 private: 175 private:
176 KABC::Field::List mFields; 176 KABC::Field::List mFields;
177 KABC::AddressBook *mDocument; 177 KABC::AddressBook *mDocument;
178 KABC::Addressee mAddressee; 178 KABC::Addressee mAddressee;
179}; 179};
180 180
181/////////////////////////////// 181///////////////////////////////
182// KAddressBookView 182// KAddressBookView
183 183
184KAddressBookIconView::KAddressBookIconView( KABC::AddressBook *ab, 184KAddressBookIconView::KAddressBookIconView( KABC::AddressBook *ab,
185 QWidget *parent, const char *name) 185 QWidget *parent, const char *name)
186 : KAddressBookView( ab, parent, name ) 186 : KAddressBookView( ab, parent, name )
187{ 187{
188 // Init the GUI 188 // Init the GUI
189 QVBoxLayout *layout = new QVBoxLayout(viewWidget()); 189 QVBoxLayout *layout = new QVBoxLayout(viewWidget());
190 190
191 mIconView = new AddresseeIconView(viewWidget(), "mIconView"); 191 mIconView = new AddresseeIconView(viewWidget(), "mIconView");
192 layout->addWidget(mIconView); 192 layout->addWidget(mIconView);
193 193
194 // Connect up the signals 194 // Connect up the signals
195 195
196//US method executed is part of KIconView 196//US method executed is part of KIconView
197//US connect(mIconView, SIGNAL(executed(QIconViewItem *)), 197//US connect(mIconView, SIGNAL(executed(QIconViewItem *)),
198//US this, SLOT(addresseeExecuted(QIconViewItem *))); 198//US this, SLOT(addresseeExecuted(QIconViewItem *)));
199 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 199 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
200 this, SLOT(addresseeExecuted(QIconViewItem *))); 200 this, SLOT(addresseeExecuted(QIconViewItem *)));
201 201
202 connect(mIconView, SIGNAL(selectionChanged()), 202 connect(mIconView, SIGNAL(selectionChanged()),
203 this, SLOT(addresseeSelected())); 203 this, SLOT(addresseeSelected()));
204 connect(mIconView, SIGNAL(addresseeDropped(QDropEvent*)), 204 connect(mIconView, SIGNAL(addresseeDropped(QDropEvent*)),
205 this, SIGNAL(dropped(QDropEvent*))); 205 this, SIGNAL(dropped(QDropEvent*)));
206 connect(mIconView, SIGNAL(startAddresseeDrag()), 206 connect(mIconView, SIGNAL(startAddresseeDrag()),
207 this, SIGNAL(startDrag())); 207 this, SIGNAL(startDrag()));
208} 208}
209 209
210KAddressBookIconView::~KAddressBookIconView() 210KAddressBookIconView::~KAddressBookIconView()
211{ 211{
212} 212}
213 213
214void KAddressBookIconView::readConfig(KConfig *config) 214void KAddressBookIconView::readConfig(KConfig *config)
215{ 215{
216 KAddressBookView::readConfig(config); 216 KAddressBookView::readConfig(config);
217 217
218//US method executed is part of KIconView 218//US method executed is part of KIconView
219//US disconnect(mIconView, SIGNAL(executed(QIconViewItem *)), 219//US disconnect(mIconView, SIGNAL(executed(QIconViewItem *)),
220//US this, SLOT(addresseeExecuted(QIconViewItem *))); 220//US this, SLOT(addresseeExecuted(QIconViewItem *)));
221 disconnect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 221 disconnect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
222 this, SLOT(addresseeExecuted(QIconViewItem *))); 222 this, SLOT(addresseeExecuted(QIconViewItem *)));
223 223
224//US method executed is part of KIconView. Use selectionChanged instead 224//US method executed is part of KIconView. Use selectionChanged instead
225/*US 225/*US
226 if (KABPrefs::instance()->mHonorSingleClick) 226 if (KABPrefs::instance()->mHonorSingleClick)
227 connect(mIconView, SIGNAL(executed(QIconViewItem *)), 227 connect(mIconView, SIGNAL(executed(QIconViewItem *)),
228 this, SLOT(addresseeExecuted(QIconViewItem *))); 228 this, SLOT(addresseeExecuted(QIconViewItem *)));
229 else 229 else
230 connect(mIconView, SIGNAL(doubleClicked(QIconViewItem *)), 230 connect(mIconView, SIGNAL(doubleClicked(QIconViewItem *)),
231 this, SLOT(addresseeExecuted(QIconViewItem *))); 231 this, SLOT(addresseeExecuted(QIconViewItem *)));
232*/ 232*/
233 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 233 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
234 this, SLOT(addresseeExecuted(QIconViewItem *))); 234 this, SLOT(addresseeExecuted(QIconViewItem *)));
235 235
236} 236}
237void KAddressBookIconView::doSearch( const QString& s ,KABC::Field *field ) 237void KAddressBookIconView::doSearch( const QString& s ,KABC::Field *field )
238{ 238{
239 mIconView->clear(); 239 mIconView->clear();
240 mIconList.clear(); 240 mIconList.clear();
241 if ( s.isEmpty() || s == "*" ) { 241 if ( s.isEmpty() || s == "*" ) {
242 refresh(); 242 refresh();
243 return; 243 return;
244 } 244 }
245 QString pattern = s.lower()+"*"; 245 QString pattern = s.lower()+"*";
246 QRegExp re; 246 QRegExp re;
247 re.setWildcard(true); // most people understand these better. 247 re.setWildcard(true); // most people understand these better.
248 re.setCaseSensitive(false); 248 re.setCaseSensitive(false);
249 re.setPattern( pattern ); 249 re.setPattern( pattern );
250 if (!re.isValid()) 250 if (!re.isValid())
251 return; 251 return;
252 KABC::Addressee::List addresseeList = addressees(); 252 KABC::Addressee::List addresseeList = addressees();
253 KABC::Addressee::List::Iterator it; 253 KABC::Addressee::List::Iterator it;
254 if ( field ) { 254 if ( field ) {
255 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 255 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
256#if QT_VERSION >= 300 256#if QT_VERSION >= 300
257 if (re.search(field->value( *it ).lower()) != -1) 257 if (re.search(field->value( *it ).lower()) != -1)
258#else 258#else
259 if (re.match(field->value( *it ).lower()) != -1) 259 if (re.match(field->value( *it ).lower()) != -1)
260#endif 260#endif
261 mIconList.append(new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView )); 261 mIconList.append(new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView ));
262 262
263 263
264 } 264 }
265 } else { 265 } else {
266 KABC::Field::List fieldList = fields(); 266 KABC::Field::List fieldList = fields();
267 KABC::Field::List::ConstIterator fieldIt; 267 KABC::Field::List::ConstIterator fieldIt;
268 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 268 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
269 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 269 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
270#if QT_VERSION >= 300 270#if QT_VERSION >= 300
271 if (re.search((*fieldIt)->value( *it ).lower()) != -1) 271 if (re.search((*fieldIt)->value( *it ).lower()) != -1)
272#else 272#else
273 if (re.match((*fieldIt)->value( *it ).lower()) != -1) 273 if (re.match((*fieldIt)->value( *it ).lower()) != -1)
274#endif 274#endif
275 { 275 {
276 mIconList.append( new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView )); 276 mIconList.append( new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView ));
277 continue; 277 continue;
278 } 278 }
279 } 279 }
280 } 280 }
281 } 281 }
282 mIconView->arrangeItemsInGrid( true ); 282 mIconView->arrangeItemsInGrid( true );
283} 283}
284QStringList KAddressBookIconView::selectedUids() 284QStringList KAddressBookIconView::selectedUids()
285{ 285{
286 QStringList uidList; 286 QStringList uidList;
287 QIconViewItem *item; 287 QIconViewItem *item;
288 AddresseeIconViewItem *aItem; 288 AddresseeIconViewItem *aItem;
289 289
290 for (item = mIconView->firstItem(); item; item = item->nextItem()) 290 for (item = mIconView->firstItem(); item; item = item->nextItem())
291 { 291 {
292 if (item->isSelected()) 292 if (item->isSelected())
293 { 293 {
294#ifndef KAB_EMBEDDED 294#ifndef KAB_EMBEDDED
295 aItem = dynamic_cast<AddresseeIconViewItem*>(item); 295 aItem = dynamic_cast<AddresseeIconViewItem*>(item);
296#else //KAB_EMBEDDED 296#else //KAB_EMBEDDED
297 aItem = (AddresseeIconViewItem*)(item); 297 aItem = (AddresseeIconViewItem*)(item);
298#endif //KAB_EMBEDDED 298#endif //KAB_EMBEDDED
299 if (aItem) 299 if (aItem)
300 uidList << aItem->addressee().uid(); 300 uidList << aItem->addressee().uid();
301 } 301 }
302 } 302 }
303 303
304 return uidList; 304 return uidList;
305} 305}
306 306
307void KAddressBookIconView::refresh(QString uid) 307void KAddressBookIconView::refresh(QString uid)
308{ 308{
309 QIconViewItem *item; 309 QIconViewItem *item;
310 AddresseeIconViewItem *aItem; 310 AddresseeIconViewItem *aItem;
311 311
312 if ( uid.isNull() ) { 312 if ( uid.isNull() ) {
313 // Rebuild the view 313 // Rebuild the view
314 mIconView->clear(); 314 mIconView->clear();
315 mIconList.clear(); 315 mIconList.clear();
316 316
317 KABC::Addressee::List addresseeList = addressees(); 317 KABC::Addressee::List addresseeList = addressees();
318 KABC::Addressee::List::Iterator iter; 318 KABC::Addressee::List::Iterator iter;
319 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ++iter ) 319 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ++iter ) {
320 aItem = new AddresseeIconViewItem( fields(), addressBook(), *iter, mIconView ); 320 if ( (*iter).uid().left(2) == "la" && (*iter).uid().left(19) == QString("last-syncAddressee-") )
321 continue;
322 aItem = new AddresseeIconViewItem( fields(), addressBook(), *iter, mIconView );
323 }
321 324
322 mIconView->arrangeItemsInGrid( true ); 325 mIconView->arrangeItemsInGrid( true );
323 326
324 for ( item = mIconView->firstItem(); item; item = item->nextItem() ) 327 for ( item = mIconView->firstItem(); item; item = item->nextItem() )
325 { 328 {
326#ifndef KAB_EMBEDDED 329#ifndef KAB_EMBEDDED
327 AddresseeIconViewItem* aivi = dynamic_cast<AddresseeIconViewItem*>( item ); 330 AddresseeIconViewItem* aivi = dynamic_cast<AddresseeIconViewItem*>( item );
328#else //KAB_EMBEDDED 331#else //KAB_EMBEDDED
329 AddresseeIconViewItem* aivi = (AddresseeIconViewItem*)( item ); 332 AddresseeIconViewItem* aivi = (AddresseeIconViewItem*)( item );
330#endif //KAB_EMBEDDED 333#endif //KAB_EMBEDDED
331 mIconList.append( aivi ); 334 mIconList.append( aivi );
332 } 335 }
333 336
334 } else { 337 } else {
335 // Try to find the one to refresh 338 // Try to find the one to refresh
336 for ( item = mIconView->firstItem(); item; item = item->nextItem() ) { 339 for ( item = mIconView->firstItem(); item; item = item->nextItem() ) {
337#ifndef KAB_EMBEDDED 340#ifndef KAB_EMBEDDED
338 aItem = dynamic_cast<AddresseeIconViewItem*>(item); 341 aItem = dynamic_cast<AddresseeIconViewItem*>(item);
339#else //KAB_EMBEDDED 342#else //KAB_EMBEDDED
340 aItem = (AddresseeIconViewItem*)(item); 343 aItem = (AddresseeIconViewItem*)(item);
341#endif //KAB_EMBEDDED 344#endif //KAB_EMBEDDED
342 if ((aItem) && (aItem->addressee().uid() == uid)) { 345 if ((aItem) && (aItem->addressee().uid() == uid)) {
343 aItem->refresh(); 346 aItem->refresh();
344 mIconView->arrangeItemsInGrid( true ); 347 mIconView->arrangeItemsInGrid( true );
345 return; 348 return;
346 } 349 }
347 } 350 }
348 refresh( QString::null ); 351 refresh( QString::null );
349 } 352 }
350} 353}
351 354
352void KAddressBookIconView::setSelected(QString uid, bool selected) 355void KAddressBookIconView::setSelected(QString uid, bool selected)
353{ 356{
354 QIconViewItem *item; 357 QIconViewItem *item;
355 AddresseeIconViewItem *aItem; 358 AddresseeIconViewItem *aItem;
356 359
357 if (uid.isNull()) 360 if (uid.isNull())
358 { 361 {
359 mIconView->selectAll(selected); 362 mIconView->selectAll(selected);
360 } 363 }
361 else 364 else
362 { 365 {
363 bool found = false; 366 bool found = false;
364 for (item = mIconView->firstItem(); item && !found; 367 for (item = mIconView->firstItem(); item && !found;
365 item = item->nextItem()) 368 item = item->nextItem())
366 { 369 {
367#ifndef KAB_EMBEDDED 370#ifndef KAB_EMBEDDED
368 aItem = dynamic_cast<AddresseeIconViewItem*>(item); 371 aItem = dynamic_cast<AddresseeIconViewItem*>(item);
369#else //KAB_EMBEDDED 372#else //KAB_EMBEDDED
370 aItem = (AddresseeIconViewItem*)(item); 373 aItem = (AddresseeIconViewItem*)(item);
371#endif //KAB_EMBEDDED 374#endif //KAB_EMBEDDED
372 375
373 if ((aItem) && (aItem->addressee().uid() == uid)) 376 if ((aItem) && (aItem->addressee().uid() == uid))
374 { 377 {
375 mIconView->setSelected(aItem, selected); 378 mIconView->setSelected(aItem, selected);
376 mIconView->ensureItemVisible( aItem ); 379 mIconView->ensureItemVisible( aItem );
377 found = true; 380 found = true;
378 } 381 }
379 } 382 }
380 } 383 }
381} 384}
382 385
383void KAddressBookIconView::addresseeExecuted(QIconViewItem *item) 386void KAddressBookIconView::addresseeExecuted(QIconViewItem *item)
384{ 387{
385#ifndef KAB_EMBEDDED 388#ifndef KAB_EMBEDDED
386 AddresseeIconViewItem *aItem = dynamic_cast<AddresseeIconViewItem*>(item); 389 AddresseeIconViewItem *aItem = dynamic_cast<AddresseeIconViewItem*>(item);
387#else //KAB_EMBEDDED 390#else //KAB_EMBEDDED
388 AddresseeIconViewItem *aItem = (AddresseeIconViewItem*)(item); 391 AddresseeIconViewItem *aItem = (AddresseeIconViewItem*)(item);
389#endif //KAB_EMBEDDED 392#endif //KAB_EMBEDDED
390 393
391 if (aItem) { 394 if (aItem) {
392 emit executed(aItem->addressee().uid()); 395 emit executed(aItem->addressee().uid());
393 } 396 }
394} 397}
395 398
396void KAddressBookIconView::addresseeSelected() 399void KAddressBookIconView::addresseeSelected()
397{ 400{
398 QIconViewItem *item; 401 QIconViewItem *item;
399 AddresseeIconViewItem *aItem; 402 AddresseeIconViewItem *aItem;
400 403
401 bool found = false; 404 bool found = false;
402 for (item = mIconView->firstItem(); item && !found; 405 for (item = mIconView->firstItem(); item && !found;
403 item = item->nextItem()) 406 item = item->nextItem())
404 { 407 {
405 if (item->isSelected()) 408 if (item->isSelected())
406 { 409 {
407#ifndef KAB_EMBEDDED 410#ifndef KAB_EMBEDDED
408 aItem = dynamic_cast<AddresseeIconViewItem*>(item); 411 aItem = dynamic_cast<AddresseeIconViewItem*>(item);
409#else //KAB_EMBEDDED 412#else //KAB_EMBEDDED
410 aItem = (AddresseeIconViewItem*)(item); 413 aItem = (AddresseeIconViewItem*)(item);
411#endif //KAB_EMBEDDED 414#endif //KAB_EMBEDDED
412 if (aItem) 415 if (aItem)
413 { 416 {
414 emit selected(aItem->addressee().uid()); 417 emit selected(aItem->addressee().uid());
415 found = true; 418 found = true;
416 } 419 }
417 } 420 }
418 } 421 }
419 422
420 if (!found) 423 if (!found)
421 emit selected(QString::null); 424 emit selected(QString::null);
422} 425}
423 426
424#ifndef KAB_EMBEDDED 427#ifndef KAB_EMBEDDED
425#include "kaddressbookiconview.moc" 428#include "kaddressbookiconview.moc"
426#endif //KAB_EMBEDDED 429#endif //KAB_EMBEDDED
diff --git a/kaddressbook/views/kaddressbooktableview.cpp b/kaddressbook/views/kaddressbooktableview.cpp
index 1dc9198..fbfddba 100644
--- a/kaddressbook/views/kaddressbooktableview.cpp
+++ b/kaddressbook/views/kaddressbooktableview.cpp
@@ -24,420 +24,422 @@
24#include <kmessagebox.h> 24#include <kmessagebox.h>
25#include <kurl.h> 25#include <kurl.h>
26#include <kurlrequester.h> 26#include <kurlrequester.h>
27 27
28//US#include "configuretableviewdialog.h" 28//US#include "configuretableviewdialog.h"
29#include "contactlistview.h" 29#include "contactlistview.h"
30#include "kabprefs.h" 30#include "kabprefs.h"
31#include "undocmds.h" 31#include "undocmds.h"
32#include "viewmanager.h" 32#include "viewmanager.h"
33 33
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qheader.h> 35#include <qheader.h>
36#include <qregexp.h> 36#include <qregexp.h>
37 37
38#include "kaddressbooktableview.h" 38#include "kaddressbooktableview.h"
39 39
40 40
41KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab, 41KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab,
42 QWidget *parent, const char *name ) 42 QWidget *parent, const char *name )
43 : KAddressBookView( ab, parent, name ) 43 : KAddressBookView( ab, parent, name )
44{ 44{
45 mainLayout = new QVBoxLayout( viewWidget(), 2 ); 45 mainLayout = new QVBoxLayout( viewWidget(), 2 );
46 46
47 // The list view will be created when the config is read. 47 // The list view will be created when the config is read.
48 mListView = 0; 48 mListView = 0;
49} 49}
50 50
51KAddressBookTableView::~KAddressBookTableView() 51KAddressBookTableView::~KAddressBookTableView()
52{ 52{
53} 53}
54 54
55void KAddressBookTableView::reconstructListView() 55void KAddressBookTableView::reconstructListView()
56{ 56{
57 if (mListView) 57 if (mListView)
58 { 58 {
59 disconnect(mListView, SIGNAL(selectionChanged()), 59 disconnect(mListView, SIGNAL(selectionChanged()),
60 this, SLOT(addresseeSelected())); 60 this, SLOT(addresseeSelected()));
61 disconnect(mListView, SIGNAL(executed(QListViewItem*)), 61 disconnect(mListView, SIGNAL(executed(QListViewItem*)),
62 this, SLOT(addresseeExecuted(QListViewItem*))); 62 this, SLOT(addresseeExecuted(QListViewItem*)));
63 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 63 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
64 this, SLOT(addresseeExecuted(QListViewItem*))); 64 this, SLOT(addresseeExecuted(QListViewItem*)));
65 disconnect(mListView, SIGNAL(startAddresseeDrag()), this, 65 disconnect(mListView, SIGNAL(startAddresseeDrag()), this,
66 SIGNAL(startDrag())); 66 SIGNAL(startDrag()));
67 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)), 67 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)),
68 this, SLOT(addresseeExecuted(QListViewItem*))); 68 this, SLOT(addresseeExecuted(QListViewItem*)));
69 69
70 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 70 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
71 SIGNAL(dropped(QDropEvent*))); 71 SIGNAL(dropped(QDropEvent*)));
72 delete mListView; 72 delete mListView;
73 } 73 }
74 74
75 mListView = new ContactListView( this, addressBook(), viewWidget() ); 75 mListView = new ContactListView( this, addressBook(), viewWidget() );
76 76
77 // Add the columns 77 // Add the columns
78 KABC::Field::List fieldList = fields(); 78 KABC::Field::List fieldList = fields();
79 KABC::Field::List::ConstIterator it; 79 KABC::Field::List::ConstIterator it;
80 80
81 int c = 0; 81 int c = 0;
82 for( it = fieldList.begin(); it != fieldList.end(); ++it ) { 82 for( it = fieldList.begin(); it != fieldList.end(); ++it ) {
83 mListView->addColumn( (*it)->label() ); 83 mListView->addColumn( (*it)->label() );
84 mListView->setColumnWidthMode(c++, QListView::Manual); 84 mListView->setColumnWidthMode(c++, QListView::Manual);
85//US 85//US
86 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); 86 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1());
87 } 87 }
88 88
89 connect(mListView, SIGNAL(selectionChanged()), 89 connect(mListView, SIGNAL(selectionChanged()),
90 this, SLOT(addresseeSelected())); 90 this, SLOT(addresseeSelected()));
91 connect(mListView, SIGNAL(startAddresseeDrag()), this, 91 connect(mListView, SIGNAL(startAddresseeDrag()), this,
92 SIGNAL(startDrag())); 92 SIGNAL(startDrag()));
93 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 93 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
94 SIGNAL(dropped(QDropEvent*))); 94 SIGNAL(dropped(QDropEvent*)));
95 95
96 if (KABPrefs::instance()->mHonorSingleClick) 96 if (KABPrefs::instance()->mHonorSingleClick)
97 connect(mListView, SIGNAL(executed(QListViewItem*)), 97 connect(mListView, SIGNAL(executed(QListViewItem*)),
98 this, SLOT(addresseeExecuted(QListViewItem*))); 98 this, SLOT(addresseeExecuted(QListViewItem*)));
99 else 99 else
100 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 100 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
101 this, SLOT(addresseeExecuted(QListViewItem*))); 101 this, SLOT(addresseeExecuted(QListViewItem*)));
102 connect(mListView, SIGNAL(returnPressed(QListViewItem*)), 102 connect(mListView, SIGNAL(returnPressed(QListViewItem*)),
103 this, SLOT(addresseeExecuted(QListViewItem*))); 103 this, SLOT(addresseeExecuted(QListViewItem*)));
104 connect(mListView, SIGNAL(signalDelete()), 104 connect(mListView, SIGNAL(signalDelete()),
105 this, SLOT(addresseeDeleted())); 105 this, SLOT(addresseeDeleted()));
106 106
107//US performceimprovement. Refresh is done from the outside 107//US performceimprovement. Refresh is done from the outside
108//US refresh(); 108//US refresh();
109 109
110 mListView->setSorting( 0, true ); 110 mListView->setSorting( 0, true );
111 mainLayout->addWidget( mListView ); 111 mainLayout->addWidget( mListView );
112 mainLayout->activate(); 112 mainLayout->activate();
113 mListView->show(); 113 mListView->show();
114} 114}
115 115
116void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field ) 116void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field )
117{ 117{
118 mListView->clear(); 118 mListView->clear();
119 if ( s.isEmpty() || s == "*" ) { 119 if ( s.isEmpty() || s == "*" ) {
120 refresh(); 120 refresh();
121 return; 121 return;
122 } 122 }
123 QString pattern = s.lower()+"*"; 123 QString pattern = s.lower()+"*";
124 QRegExp re; 124 QRegExp re;
125 re.setWildcard(true); // most people understand these better. 125 re.setWildcard(true); // most people understand these better.
126 re.setCaseSensitive(false); 126 re.setCaseSensitive(false);
127 re.setPattern( pattern ); 127 re.setPattern( pattern );
128 if (!re.isValid()) 128 if (!re.isValid())
129 return; 129 return;
130 KABC::Addressee::List addresseeList = addressees(); 130 KABC::Addressee::List addresseeList = addressees();
131 KABC::Addressee::List::Iterator it; 131 KABC::Addressee::List::Iterator it;
132 if ( field ) { 132 if ( field ) {
133 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 133 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
134#if QT_VERSION >= 300 134#if QT_VERSION >= 300
135 if (re.search(field->value( *it ).lower()) != -1) 135 if (re.search(field->value( *it ).lower()) != -1)
136#else 136#else
137 if (re.match(field->value( *it ).lower()) != -1) 137 if (re.match(field->value( *it ).lower()) != -1)
138#endif 138#endif
139 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 139 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
140 140
141 } 141 }
142 } else { 142 } else {
143 KABC::Field::List fieldList = fields(); 143 KABC::Field::List fieldList = fields();
144 KABC::Field::List::ConstIterator fieldIt; 144 KABC::Field::List::ConstIterator fieldIt;
145 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 145 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
146 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 146 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
147#if QT_VERSION >= 300 147#if QT_VERSION >= 300
148 if (re.search((*fieldIt)->value( *it ).lower()) != -1) 148 if (re.search((*fieldIt)->value( *it ).lower()) != -1)
149#else 149#else
150 if (re.match((*fieldIt)->value( *it ).lower()) != -1) 150 if (re.match((*fieldIt)->value( *it ).lower()) != -1)
151#endif 151#endif
152 { 152 {
153 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 153 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
154 break; 154 break;
155 } 155 }
156 } 156 }
157 } 157 }
158 } 158 }
159 // Sometimes the background pixmap gets messed up when we add lots 159 // Sometimes the background pixmap gets messed up when we add lots
160 // of items. 160 // of items.
161 mListView->repaint(); 161 mListView->repaint();
162 emit selected(QString::null); 162 emit selected(QString::null);
163 163
164} 164}
165void KAddressBookTableView::writeConfig(KConfig *config) 165void KAddressBookTableView::writeConfig(KConfig *config)
166{ 166{
167 KAddressBookView::writeConfig(config); 167 KAddressBookView::writeConfig(config);
168 168
169 mListView->saveLayout(config, config->group()); 169 mListView->saveLayout(config, config->group());
170} 170}
171 171
172void KAddressBookTableView::readConfig(KConfig *config) 172void KAddressBookTableView::readConfig(KConfig *config)
173{ 173{
174 KAddressBookView::readConfig( config ); 174 KAddressBookView::readConfig( config );
175 // The config could have changed the fields, so we need to reconstruct 175 // The config could have changed the fields, so we need to reconstruct
176 // the listview. 176 // the listview.
177 reconstructListView(); 177 reconstructListView();
178 178
179 // costum colors? 179 // costum colors?
180 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 180 if ( config->readBoolEntry( "EnableCustomColors", false ) )
181 { 181 {
182 QPalette p( mListView->palette() ); 182 QPalette p( mListView->palette() );
183 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 183 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
184 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 184 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
185 c = p.color(QPalette::Normal, QColorGroup::Text ); 185 c = p.color(QPalette::Normal, QColorGroup::Text );
186 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 186 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
187 c = p.color(QPalette::Normal, QColorGroup::Button ); 187 c = p.color(QPalette::Normal, QColorGroup::Button );
188 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 188 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
189 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 189 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
190 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); 190 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) );
191 c = p.color(QPalette::Normal, QColorGroup::Highlight ); 191 c = p.color(QPalette::Normal, QColorGroup::Highlight );
192 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); 192 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) );
193 c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); 193 c = p.color(QPalette::Normal, QColorGroup::HighlightedText );
194 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); 194 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) );
195#ifndef KAB_EMBEDDED 195#ifndef KAB_EMBEDDED
196 c = KGlobalSettings::alternateBackgroundColor(); 196 c = KGlobalSettings::alternateBackgroundColor();
197#else //KAB_EMBEDDED 197#else //KAB_EMBEDDED
198 c = QColor(240, 240, 240); 198 c = QColor(240, 240, 240);
199#endif //KAB_EMBEDDED 199#endif //KAB_EMBEDDED
200 c = config->readColorEntry ("AlternatingBackgroundColor", &c); 200 c = config->readColorEntry ("AlternatingBackgroundColor", &c);
201 mListView->setAlternateColor(c); 201 mListView->setAlternateColor(c);
202 202
203 203
204 //US mListView->viewport()->setPalette( p ); 204 //US mListView->viewport()->setPalette( p );
205 mListView->setPalette( p ); 205 mListView->setPalette( p );
206 } 206 }
207 else 207 else
208 { 208 {
209 // needed if turned off during a session. 209 // needed if turned off during a session.
210 //US mListView->viewport()->setPalette( mListView->palette() ); 210 //US mListView->viewport()->setPalette( mListView->palette() );
211 mListView->setPalette( mListView->palette() ); 211 mListView->setPalette( mListView->palette() );
212 } 212 }
213 213
214 //custom fonts? 214 //custom fonts?
215 QFont f( font() ); 215 QFont f( font() );
216 if ( config->readBoolEntry( "EnableCustomFonts", false ) ) 216 if ( config->readBoolEntry( "EnableCustomFonts", false ) )
217 { 217 {
218 mListView->setFont( config->readFontEntry( "TextFont", &f) ); 218 mListView->setFont( config->readFontEntry( "TextFont", &f) );
219 f.setBold( true ); 219 f.setBold( true );
220 //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); 220 //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) );
221 mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) ); 221 mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) );
222 } 222 }
223 else 223 else
224 { 224 {
225 mListView->setFont( f ); 225 mListView->setFont( f );
226 f.setBold( true ); 226 f.setBold( true );
227 //US mListView->setHeaderFont( f ); 227 //US mListView->setHeaderFont( f );
228 mListView->header()->setFont( f ); 228 mListView->header()->setFont( f );
229 } 229 }
230 230
231 231
232 232
233 233
234 234
235 // Set the list view options 235 // Set the list view options
236 mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground", 236 mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground",
237 true)); 237 true));
238 mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false)); 238 mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false));
239 mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true)); 239 mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true));
240 240
241 if (config->readBoolEntry("Background", false)) 241 if (config->readBoolEntry("Background", false))
242 mListView->setBackgroundPixmap(config->readEntry("BackgroundName")); 242 mListView->setBackgroundPixmap(config->readEntry("BackgroundName"));
243 243
244 // Restore the layout of the listview 244 // Restore the layout of the listview
245 mListView->restoreLayout(config, config->group()); 245 mListView->restoreLayout(config, config->group());
246} 246}
247 247
248void KAddressBookTableView::refresh(QString uid) 248void KAddressBookTableView::refresh(QString uid)
249{ 249{
250 // For now just repopulate. In reality this method should 250 // For now just repopulate. In reality this method should
251 // check the value of uid, and if valid iterate through 251 // check the value of uid, and if valid iterate through
252 // the listview to find the entry, then tell it to refresh. 252 // the listview to find the entry, then tell it to refresh.
253 253
254 if (uid.isNull()) { 254 if (uid.isNull()) {
255 // Clear the list view 255 // Clear the list view
256 QString currentUID, nextUID; 256 QString currentUID, nextUID;
257#ifndef KAB_EMBEDDED 257#ifndef KAB_EMBEDDED
258 ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() ); 258 ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() );
259#else //KAB_EMBEDDED 259#else //KAB_EMBEDDED
260 ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() ); 260 ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() );
261#endif //KAB_EMBEDDED 261#endif //KAB_EMBEDDED
262 262
263 if ( currentItem ) { 263 if ( currentItem ) {
264#ifndef KAB_EMBEDDED 264#ifndef KAB_EMBEDDED
265 ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() ); 265 ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() );
266#else //KAB_EMBEDDED 266#else //KAB_EMBEDDED
267 ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() ); 267 ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() );
268#endif //KAB_EMBEDDED 268#endif //KAB_EMBEDDED
269 if ( nextItem ) 269 if ( nextItem )
270 nextUID = nextItem->addressee().uid(); 270 nextUID = nextItem->addressee().uid();
271 currentUID = currentItem->addressee().uid(); 271 currentUID = currentItem->addressee().uid();
272 } 272 }
273 273
274 mListView->clear(); 274 mListView->clear();
275 275
276 currentItem = 0; 276 currentItem = 0;
277 KABC::Addressee::List addresseeList = addressees(); 277 KABC::Addressee::List addresseeList = addressees();
278 KABC::Addressee::List::Iterator it; 278 KABC::Addressee::List::Iterator it;
279 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 279 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
280 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
281 continue;
280 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 282 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
281 if ( (*it).uid() == currentUID ) 283 if ( (*it).uid() == currentUID )
282 currentItem = item; 284 currentItem = item;
283 else if ( (*it).uid() == nextUID && !currentItem ) 285 else if ( (*it).uid() == nextUID && !currentItem )
284 currentItem = item; 286 currentItem = item;
285 } 287 }
286 288
287 // Sometimes the background pixmap gets messed up when we add lots 289 // Sometimes the background pixmap gets messed up when we add lots
288 // of items. 290 // of items.
289 mListView->repaint(); 291 mListView->repaint();
290 292
291 if ( currentItem ) { 293 if ( currentItem ) {
292 mListView->setCurrentItem( currentItem ); 294 mListView->setCurrentItem( currentItem );
293 mListView->ensureItemVisible( currentItem ); 295 mListView->ensureItemVisible( currentItem );
294 } 296 }
295 } else { 297 } else {
296 // Only need to update on entry. Iterate through and try to find it 298 // Only need to update on entry. Iterate through and try to find it
297 ContactListViewItem *ceItem; 299 ContactListViewItem *ceItem;
298 QListViewItemIterator it( mListView ); 300 QListViewItemIterator it( mListView );
299 while ( it.current() ) { 301 while ( it.current() ) {
300#ifndef KAB_EMBEDDED 302#ifndef KAB_EMBEDDED
301 ceItem = dynamic_cast<ContactListViewItem*>( it.current() ); 303 ceItem = dynamic_cast<ContactListViewItem*>( it.current() );
302#else //KAB_EMBEDDED 304#else //KAB_EMBEDDED
303 ceItem = (ContactListViewItem*)( it.current() ); 305 ceItem = (ContactListViewItem*)( it.current() );
304#endif //KAB_EMBEDDED 306#endif //KAB_EMBEDDED
305 307
306 if ( ceItem && ceItem->addressee().uid() == uid ) { 308 if ( ceItem && ceItem->addressee().uid() == uid ) {
307 ceItem->refresh(); 309 ceItem->refresh();
308 return; 310 return;
309 } 311 }
310 ++it; 312 ++it;
311 } 313 }
312 314
313 refresh( QString::null ); 315 refresh( QString::null );
314 } 316 }
315} 317}
316 318
317QStringList KAddressBookTableView::selectedUids() 319QStringList KAddressBookTableView::selectedUids()
318{ 320{
319 QStringList uidList; 321 QStringList uidList;
320 QListViewItem *item; 322 QListViewItem *item;
321 ContactListViewItem *ceItem; 323 ContactListViewItem *ceItem;
322 324
323 for(item = mListView->firstChild(); item; item = item->itemBelow()) 325 for(item = mListView->firstChild(); item; item = item->itemBelow())
324 { 326 {
325 if (mListView->isSelected( item )) 327 if (mListView->isSelected( item ))
326 { 328 {
327#ifndef KAB_EMBEDDED 329#ifndef KAB_EMBEDDED
328 ceItem = dynamic_cast<ContactListViewItem*>(item); 330 ceItem = dynamic_cast<ContactListViewItem*>(item);
329#else //KAB_EMBEDDED 331#else //KAB_EMBEDDED
330 ceItem = (ContactListViewItem*)(item); 332 ceItem = (ContactListViewItem*)(item);
331#endif //KAB_EMBEDDED 333#endif //KAB_EMBEDDED
332 334
333 if (ceItem != 0L) 335 if (ceItem != 0L)
334 uidList << ceItem->addressee().uid(); 336 uidList << ceItem->addressee().uid();
335 } 337 }
336 } 338 }
337 if ( uidList.count() == 0 ) 339 if ( uidList.count() == 0 )
338 if ( mListView->currentItem() ) { 340 if ( mListView->currentItem() ) {
339 ceItem = (ContactListViewItem*)(mListView->currentItem()) ; 341 ceItem = (ContactListViewItem*)(mListView->currentItem()) ;
340 uidList << ceItem->addressee().uid(); 342 uidList << ceItem->addressee().uid();
341 } 343 }
342 344
343 return uidList; 345 return uidList;
344} 346}
345 347
346void KAddressBookTableView::setSelected(QString uid, bool selected) 348void KAddressBookTableView::setSelected(QString uid, bool selected)
347{ 349{
348 QListViewItem *item; 350 QListViewItem *item;
349 ContactListViewItem *ceItem; 351 ContactListViewItem *ceItem;
350 352
351 if (uid.isNull()) 353 if (uid.isNull())
352 { 354 {
353 mListView->selectAll(selected); 355 mListView->selectAll(selected);
354 } 356 }
355 else 357 else
356 { 358 {
357 for(item = mListView->firstChild(); item; item = item->itemBelow()) 359 for(item = mListView->firstChild(); item; item = item->itemBelow())
358 { 360 {
359#ifndef KAB_EMBEDDED 361#ifndef KAB_EMBEDDED
360 ceItem = dynamic_cast<ContactListViewItem*>(item); 362 ceItem = dynamic_cast<ContactListViewItem*>(item);
361#else //KAB_EMBEDDED 363#else //KAB_EMBEDDED
362 ceItem = (ContactListViewItem*)(item); 364 ceItem = (ContactListViewItem*)(item);
363#endif //KAB_EMBEDDED 365#endif //KAB_EMBEDDED
364 366
365 367
366 if ((ceItem != 0L) && (ceItem->addressee().uid() == uid)) 368 if ((ceItem != 0L) && (ceItem->addressee().uid() == uid))
367 { 369 {
368 mListView->setSelected(item, selected); 370 mListView->setSelected(item, selected);
369 371
370 if (selected) 372 if (selected)
371 mListView->ensureItemVisible(item); 373 mListView->ensureItemVisible(item);
372 } 374 }
373 } 375 }
374 } 376 }
375} 377}
376 378
377void KAddressBookTableView::addresseeSelected() 379void KAddressBookTableView::addresseeSelected()
378{ 380{
379 // We need to try to find the first selected item. This might not be the 381 // We need to try to find the first selected item. This might not be the
380 // last selected item, but when QListView is in multiselection mode, 382 // last selected item, but when QListView is in multiselection mode,
381 // there is no way to figure out which one was 383 // there is no way to figure out which one was
382 // selected last. 384 // selected last.
383 QListViewItem *item; 385 QListViewItem *item;
384 bool found =false; 386 bool found =false;
385 for (item = mListView->firstChild(); item && !found; 387 for (item = mListView->firstChild(); item && !found;
386 item = item->nextSibling()) 388 item = item->nextSibling())
387 { 389 {
388 if (item->isSelected()) 390 if (item->isSelected())
389 { 391 {
390 found = true; 392 found = true;
391#ifndef KAB_EMBEDDED 393#ifndef KAB_EMBEDDED
392 ContactListViewItem *ceItem 394 ContactListViewItem *ceItem
393 = dynamic_cast<ContactListViewItem*>(item); 395 = dynamic_cast<ContactListViewItem*>(item);
394#else //KAB_EMBEDDED 396#else //KAB_EMBEDDED
395 ContactListViewItem *ceItem 397 ContactListViewItem *ceItem
396 = (ContactListViewItem*)(item); 398 = (ContactListViewItem*)(item);
397#endif //KAB_EMBEDDED 399#endif //KAB_EMBEDDED
398 400
399 if ( ceItem ) emit selected(ceItem->addressee().uid()); 401 if ( ceItem ) emit selected(ceItem->addressee().uid());
400 } 402 }
401 } 403 }
402 404
403 if (!found) 405 if (!found)
404 emit selected(QString::null); 406 emit selected(QString::null);
405} 407}
406 408
407void KAddressBookTableView::addresseeExecuted(QListViewItem *item) 409void KAddressBookTableView::addresseeExecuted(QListViewItem *item)
408{ 410{
409 if (item) 411 if (item)
410 { 412 {
411#ifndef KAB_EMBEDDED 413#ifndef KAB_EMBEDDED
412 ContactListViewItem *ceItem 414 ContactListViewItem *ceItem
413 = dynamic_cast<ContactListViewItem*>(item); 415 = dynamic_cast<ContactListViewItem*>(item);
414#else //KAB_EMBEDDED 416#else //KAB_EMBEDDED
415 ContactListViewItem *ceItem 417 ContactListViewItem *ceItem
416 = (ContactListViewItem*)(item); 418 = (ContactListViewItem*)(item);
417#endif //KAB_EMBEDDED 419#endif //KAB_EMBEDDED
418 420
419 if (ceItem) 421 if (ceItem)
420 { 422 {
421 emit executed(ceItem->addressee().uid()); 423 emit executed(ceItem->addressee().uid());
422 } 424 }
423 } 425 }
424 else 426 else
425 { 427 {
426 emit executed(QString::null); 428 emit executed(QString::null);
427 } 429 }
428} 430}
429 431
430void KAddressBookTableView::addresseeDeleted() 432void KAddressBookTableView::addresseeDeleted()
431{ 433{
432 434
433 emit deleteRequest(); 435 emit deleteRequest();
434 436
435} 437}
436 438
437 439
438 440
439 441
440 442
441#ifndef KAB_EMBEDDED 443#ifndef KAB_EMBEDDED
442#include "kaddressbooktableview.moc" 444#include "kaddressbooktableview.moc"
443#endif //KAB_EMBEDDED 445#endif //KAB_EMBEDDED