summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorzautrix <zautrix>2004-10-07 22:37:40 (UTC)
committer zautrix <zautrix>2004-10-07 22:37:40 (UTC)
commit21ec296f7f2832920dac336bb9f9476c80d746f5 (patch) (unidiff)
tree69b2897665d70ad45da249b1cf374a01d3be6dc4 /kaddressbook
parent4a01915314201cbe2461ce68cdf9c556c687d727 (diff)
downloadkdepimpi-21ec296f7f2832920dac336bb9f9476c80d746f5.zip
kdepimpi-21ec296f7f2832920dac336bb9f9476c80d746f5.tar.gz
kdepimpi-21ec296f7f2832920dac336bb9f9476c80d746f5.tar.bz2
ab view fixes
Diffstat (limited to 'kaddressbook') (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
@@ -1,446 +1,448 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qdragobject.h> 24#include <qdragobject.h>
25#include <qevent.h> 25#include <qevent.h>
26#include <qiconview.h> 26#include <qiconview.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qstringlist.h> 28#include <qstringlist.h>
29#include <qregexp.h> 29#include <qregexp.h>
30 30
31#include <kabc/addressbook.h> 31#include <kabc/addressbook.h>
32#include <kabc/addressee.h> 32#include <kabc/addressee.h>
33#include <kconfig.h> 33#include <kconfig.h>
34#include <kdebug.h> 34#include <kdebug.h>
35#include <klocale.h> 35#include <klocale.h>
36 36
37#include "kabprefs.h" 37#include "kabprefs.h"
38#include "viewmanager.h" 38#include "viewmanager.h"
39 39
40#include "kaddressbookcardview.h" 40#include "kaddressbookcardview.h"
41 41
42#ifndef KAB_EMBEDDED 42#ifndef KAB_EMBEDDED
43extern "C" { 43extern "C" {
44 void *init_libkaddrbk_cardview() 44 void *init_libkaddrbk_cardview()
45 { 45 {
46 return ( new CardViewFactory ); 46 return ( new CardViewFactory );
47 } 47 }
48} 48}
49#endif //KAB_EMBEDDED 49#endif //KAB_EMBEDDED
50 50
51//////////////////////////////// 51////////////////////////////////
52// AddresseeCardViewItem (internal class) 52// AddresseeCardViewItem (internal class)
53class AddresseeCardViewItem : public CardViewItem 53class AddresseeCardViewItem : public CardViewItem
54{ 54{
55 public: 55 public:
56 AddresseeCardViewItem(const KABC::Field::List &fields, 56 AddresseeCardViewItem(const KABC::Field::List &fields,
57 bool showEmptyFields, 57 bool showEmptyFields,
58 KABC::AddressBook *doc, const KABC::Addressee &a, 58 KABC::AddressBook *doc, const KABC::Addressee &a,
59 CardView *parent) 59 CardView *parent)
60 : CardViewItem(parent, a.formattedName()), 60 : CardViewItem(parent, a.formattedName()),
61 mFields( fields ), mShowEmptyFields(showEmptyFields), 61 mFields( fields ), mShowEmptyFields(showEmptyFields),
62 mDocument(doc), mAddressee(a) 62 mDocument(doc), mAddressee(a)
63 { 63 {
64 if ( mFields.isEmpty() ) { 64 if ( mFields.isEmpty() ) {
65 mFields = KABC::Field::defaultFields(); 65 mFields = KABC::Field::defaultFields();
66 } 66 }
67 refresh(); 67 refresh();
68 } 68 }
69 69
70 const KABC::Addressee &addressee() const { return mAddressee; } 70 const KABC::Addressee &addressee() const { return mAddressee; }
71 71
72 void refresh() 72 void refresh()
73 { 73 {
74 // Update our addressee, since it may have changed elsewhere 74 // Update our addressee, since it may have changed elsewhere
75 mAddressee = mDocument->findByUid(mAddressee.uid()); 75 mAddressee = mDocument->findByUid(mAddressee.uid());
76 76
77 if (!mAddressee.isEmpty()) 77 if (!mAddressee.isEmpty())
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
@@ -1,426 +1,429 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef KAB_EMBEDDED 24#ifndef KAB_EMBEDDED
25#include <qiconview.h> 25#include <qiconview.h>
26#include <qstringlist.h> 26#include <qstringlist.h>
27 27
28#include <kabc/addressee.h> 28#include <kabc/addressee.h>
29#include <kconfig.h> 29#include <kconfig.h>
30#include <kdebug.h> 30#include <kdebug.h>
31#include <kglobal.h> 31#include <kglobal.h>
32#include <kiconloader.h> 32#include <kiconloader.h>
33#include <klocale.h> 33#include <klocale.h>
34 34
35#else //KAB_EMBEDDED 35#else //KAB_EMBEDDED
36#endif //KAB_EMBEDDED 36#endif //KAB_EMBEDDED
37 37
38#include <kabc/addressbook.h> 38#include <kabc/addressbook.h>
39#include "kabprefs.h" 39#include "kabprefs.h"
40#include "viewmanager.h" 40#include "viewmanager.h"
41#include "kaddressbookiconview.h" 41#include "kaddressbookiconview.h"
42#include <qlayout.h> 42#include <qlayout.h>
43#include <qregexp.h> 43#include <qregexp.h>
44#include <kglobal.h> 44#include <kglobal.h>
45/*US transfered to the headerfile 45/*US transfered to the headerfile
46class IconViewFactory : public ViewFactory 46class IconViewFactory : public ViewFactory
47{ 47{
48 public: 48 public:
49 KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, const char *name ) 49 KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, const char *name )
50 { 50 {
51 return new KAddressBookIconView( ab, parent, name ); 51 return new KAddressBookIconView( ab, parent, name );
52 } 52 }
53 53
54 QString type() const { return "Icon"; } 54 QString type() const { return "Icon"; }
55 55
56 QString description() const { return i18n( "Icons represent contacts. Very simple view." ); } 56 QString description() const { return i18n( "Icons represent contacts. Very simple view." ); }
57}; 57};
58 58
59*/ 59*/
60 60
61extern "C" { 61extern "C" {
62 void *init_libkaddrbk_iconview() 62 void *init_libkaddrbk_iconview()
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
@@ -1,443 +1,445 @@
1// $Id$ 1// $Id$
2 2
3#include <qvbox.h> 3#include <qvbox.h>
4#include <qlistbox.h> 4#include <qlistbox.h>
5#include <qwidget.h> 5#include <qwidget.h>
6#include <qfile.h> 6#include <qfile.h>
7#include <qimage.h> 7#include <qimage.h>
8#include <qcombobox.h> 8#include <qcombobox.h>
9#include <qapplication.h> 9#include <qapplication.h>
10#include <qdragobject.h> 10#include <qdragobject.h>
11#include <qevent.h> 11#include <qevent.h>
12#include <qurl.h> 12#include <qurl.h>
13#include <qpixmap.h> 13#include <qpixmap.h>
14 14
15#include <kabc/addressbook.h> 15#include <kabc/addressbook.h>
16#include <kapplication.h> 16#include <kapplication.h>
17#include <kconfig.h> 17#include <kconfig.h>
18#include <kcolorbutton.h> 18#include <kcolorbutton.h>
19#include <kdebug.h> 19#include <kdebug.h>
20#include <kglobal.h> 20#include <kglobal.h>
21#include <kiconloader.h> 21#include <kiconloader.h>
22#include <klineedit.h> 22#include <klineedit.h>
23#include <klocale.h> 23#include <klocale.h>
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