summaryrefslogtreecommitdiffabout
path: root/kaddressbook/views
Unidiff
Diffstat (limited to 'kaddressbook/views') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/views/kaddressbooktableview.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/kaddressbook/views/kaddressbooktableview.cpp b/kaddressbook/views/kaddressbooktableview.cpp
index 02fc40a..272f2eb 100644
--- a/kaddressbook/views/kaddressbooktableview.cpp
+++ b/kaddressbook/views/kaddressbooktableview.cpp
@@ -1,490 +1,492 @@
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}
54void KAddressBookTableView::setFocusAV() 54void KAddressBookTableView::setFocusAV()
55{ 55{
56 if ( mListView ) 56 if ( mListView )
57 mListView->setFocus(); 57 mListView->setFocus();
58 58
59} 59}
60void KAddressBookTableView::scrollUP() 60void KAddressBookTableView::scrollUP()
61{ 61{
62 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); 62 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 );
63 QApplication::postEvent( mListView, ev ); 63 QApplication::postEvent( mListView, ev );
64 ev = new QKeyEvent ( QEvent::KeyRelease, Qt::Key_Up, 0,0 ); 64 ev = new QKeyEvent ( QEvent::KeyRelease, Qt::Key_Up, 0,0 );
65 QApplication::postEvent( mListView, ev ); 65 QApplication::postEvent( mListView, ev );
66} 66}
67void KAddressBookTableView::scrollDOWN() 67void KAddressBookTableView::scrollDOWN()
68{ 68{
69 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); 69 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 );
70 QApplication::postEvent( mListView, ev ); 70 QApplication::postEvent( mListView, ev );
71 ev = new QKeyEvent ( QEvent::KeyRelease, Qt::Key_Down, 0,0 ); 71 ev = new QKeyEvent ( QEvent::KeyRelease, Qt::Key_Down, 0,0 );
72 QApplication::postEvent( mListView, ev ); 72 QApplication::postEvent( mListView, ev );
73} 73}
74void KAddressBookTableView::reconstructListView() 74void KAddressBookTableView::reconstructListView()
75{ 75{
76 if (mListView) 76 if (mListView)
77 { 77 {
78 disconnect(mListView, SIGNAL(selectionChanged()), 78 disconnect(mListView, SIGNAL(selectionChanged()),
79 this, SLOT(addresseeSelected())); 79 this, SLOT(addresseeSelected()));
80 disconnect(mListView, SIGNAL(executed(QListViewItem*)), 80 disconnect(mListView, SIGNAL(executed(QListViewItem*)),
81 this, SLOT(addresseeExecuted(QListViewItem*))); 81 this, SLOT(addresseeExecuted(QListViewItem*)));
82 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 82 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
83 this, SLOT(addresseeExecuted(QListViewItem*))); 83 this, SLOT(addresseeExecuted(QListViewItem*)));
84 disconnect(mListView, SIGNAL(startAddresseeDrag()), this, 84 disconnect(mListView, SIGNAL(startAddresseeDrag()), this,
85 SIGNAL(startDrag())); 85 SIGNAL(startDrag()));
86 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)), 86 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)),
87 this, SLOT(addresseeExecuted(QListViewItem*))); 87 this, SLOT(addresseeExecuted(QListViewItem*)));
88 88
89 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 89 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
90 SIGNAL(dropped(QDropEvent*))); 90 SIGNAL(dropped(QDropEvent*)));
91 delete mListView; 91 delete mListView;
92 } 92 }
93 93
94 mListView = new ContactListView( this, addressBook(), viewWidget() ); 94 mListView = new ContactListView( this, addressBook(), viewWidget() );
95 95
96 connect(this, SIGNAL(printView()), 96 connect(this, SIGNAL(printView()),
97 mListView , SLOT(printMe())); 97 mListView , SLOT(printMe()));
98 //US set singleClick manually, because it is no global configparameter in embedded space 98 //US set singleClick manually, because it is no global configparameter in embedded space
99 mListView->setSingleClick(KABPrefs::instance()->mHonorSingleClick); 99 mListView->setSingleClick(KABPrefs::instance()->mHonorSingleClick);
100 100
101 // Add the columns 101 // Add the columns
102 KABC::Field::List fieldList = fields(); 102 KABC::Field::List fieldList = fields();
103 KABC::Field::List::ConstIterator it; 103 KABC::Field::List::ConstIterator it;
104 104
105 int c = 0; 105 int c = 0;
106 for( it = fieldList.begin(); it != fieldList.end(); ++it ) { 106 for( it = fieldList.begin(); it != fieldList.end(); ++it ) {
107 mListView->addColumn( (*it)->label() ); 107 mListView->addColumn( (*it)->label() );
108 mListView->setColumnWidthMode(c++, QListView::Manual); 108 mListView->setColumnWidthMode(c++, QListView::Manual);
109//US 109//US
110 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); 110 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1());
111 } 111 }
112 112
113 connect(mListView, SIGNAL(selectionChanged()), 113 connect(mListView, SIGNAL(selectionChanged()),
114 this, SLOT(addresseeSelected())); 114 this, SLOT(addresseeSelected()));
115 connect(mListView, SIGNAL(startAddresseeDrag()), this, 115 connect(mListView, SIGNAL(startAddresseeDrag()), this,
116 SIGNAL(startDrag())); 116 SIGNAL(startDrag()));
117 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 117 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
118 SIGNAL(dropped(QDropEvent*))); 118 SIGNAL(dropped(QDropEvent*)));
119 119
120 if (KABPrefs::instance()->mHonorSingleClick) { 120 if (KABPrefs::instance()->mHonorSingleClick) {
121 // qDebug("KAddressBookTableView::reconstructListView single"); 121 // qDebug("KAddressBookTableView::reconstructListView single");
122 connect(mListView, SIGNAL(executed(QListViewItem*)), 122 connect(mListView, SIGNAL(executed(QListViewItem*)),
123 this, SLOT(addresseeExecuted(QListViewItem*))); 123 this, SLOT(addresseeExecuted(QListViewItem*)));
124 } else { 124 } else {
125 // qDebug("KAddressBookTableView::reconstructListView double"); 125 // qDebug("KAddressBookTableView::reconstructListView double");
126 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 126 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
127 this, SLOT(addresseeExecuted(QListViewItem*))); 127 this, SLOT(addresseeExecuted(QListViewItem*)));
128 } 128 }
129 connect(mListView, SIGNAL(returnPressed(QListViewItem*)), 129 connect(mListView, SIGNAL(returnPressed(QListViewItem*)),
130 this, SLOT(addresseeExecuted(QListViewItem*))); 130 this, SLOT(addresseeExecuted(QListViewItem*)));
131 connect(mListView, SIGNAL(signalDelete()), 131 connect(mListView, SIGNAL(signalDelete()),
132 this, SLOT(addresseeDeleted())); 132 this, SLOT(addresseeDeleted()));
133 133
134//US performceimprovement. Refresh is done from the outside 134//US performceimprovement. Refresh is done from the outside
135//US refresh(); 135//US refresh();
136 136
137 mListView->setSorting( 0, true ); 137 mListView->setSorting( 0, true );
138 mainLayout->addWidget( mListView ); 138 mainLayout->addWidget( mListView );
139 mainLayout->activate(); 139 mainLayout->activate();
140 mListView->show(); 140 mListView->show();
141} 141}
142 142
143void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field ) 143void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field )
144{ 144{
145 mListView->clear(); 145 mListView->clear();
146 if ( s.isEmpty() || s == "*" ) { 146 if ( s.isEmpty() || s == "*" ) {
147 refresh(); 147 refresh();
148 return; 148 return;
149 } 149 }
150 QRegExp re = getRegExp( s ); 150 QRegExp re = getRegExp( s );
151 if (!re.isValid()) 151 if (!re.isValid())
152 return; 152 return;
153 KABC::Addressee::List addresseeList = addressees(); 153 KABC::Addressee::List addresseeList = addressees();
154 KABC::Addressee::List::Iterator it; 154 KABC::Addressee::List::Iterator it;
155 if ( field ) { 155 if ( field ) {
156 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 156 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
157 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 157 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
158 continue; 158 continue;
159#if QT_VERSION >= 0x030000 159#if QT_VERSION >= 0x030000
160 if (re.search(field->value( *it ).lower()) == 0) 160 if (re.search(field->value( *it ).lower()) == 0)
161#else 161#else
162 if (re.match(field->value( *it ).lower()) == 0) 162 if (re.match(field->value( *it ).lower()) == 0)
163#endif 163#endif
164 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 164 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
165 165
166 } 166 }
167 } else { 167 } else {
168 KABC::Field::List fieldList = allFields(); 168 KABC::Field::List fieldList = allFields();
169 KABC::Field::List::ConstIterator fieldIt; 169 KABC::Field::List::ConstIterator fieldIt;
170 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 170 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
171 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 171 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
172 continue; 172 continue;
173 bool match = false; 173 bool match = false;
174 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 174 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
175#if QT_VERSION >= 0x030000 175#if QT_VERSION >= 0x030000
176 if (re.search((*fieldIt)->value( *it ).lower()) == 0) 176 if (re.search((*fieldIt)->value( *it ).lower()) == 0)
177#else 177#else
178 if (re.match((*fieldIt)->value( *it ).lower()) == 0) 178 if (re.match((*fieldIt)->value( *it ).lower()) == 0)
179#endif 179#endif
180 { 180 {
181 //qDebug("match %s %s %s", pattern.latin1(), (*fieldIt)->value( *it ).latin1(), (*fieldIt)->label().latin1() ); 181 //qDebug("match %s %s %s", pattern.latin1(), (*fieldIt)->value( *it ).latin1(), (*fieldIt)->label().latin1() );
182 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 182 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
183 match = true; 183 match = true;
184 break; 184 break;
185 } 185 }
186 } 186 }
187 if ( ! match ) { 187 if ( ! match ) {
188 if ( (*it).matchPhoneNumber( &re ) ) { 188 if ( (*it).matchPhoneNumber( &re ) ) {
189 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 189 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
190 match = true; 190 match = true;
191 break; 191 break;
192 } 192 }
193 } 193 }
194 if ( ! match ) { 194 if ( ! match ) {
195 if ( (*it).matchAddress( &re ) ) { 195 if ( (*it).matchAddress( &re ) ) {
196 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 196 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
197 match = true; 197 match = true;
198 break; 198 break;
199 } 199 }
200 } 200 }
201 } 201 }
202 } 202 }
203 // Sometimes the background pixmap gets messed up when we add lots 203 // Sometimes the background pixmap gets messed up when we add lots
204 // of items. 204 // of items.
205 //mListView->repaint(); 205 //mListView->repaint();
206 if ( mListView->firstChild() ) { 206 if ( mListView->firstChild() ) {
207 mListView->setCurrentItem ( mListView->firstChild() ); 207 mListView->setCurrentItem ( mListView->firstChild() );
208 mListView->setSelected ( mListView->firstChild(), true ); 208 mListView->setSelected ( mListView->firstChild(), true );
209 } 209 }
210 else 210 else
211 emit selected(QString::null); 211 emit selected(QString::null);
212 212
213} 213}
214void KAddressBookTableView::writeConfig(KConfig *config) 214void KAddressBookTableView::writeConfig(KConfig *config)
215{ 215{
216 KAddressBookView::writeConfig(config); 216 KAddressBookView::writeConfig(config);
217 217
218 mListView->saveLayout(config, config->group()); 218 mListView->saveLayout(config, config->group());
219} 219}
220 220
221void KAddressBookTableView::readConfig(KConfig *config) 221void KAddressBookTableView::readConfig(KConfig *config)
222{ 222{
223 KAddressBookView::readConfig( config ); 223 KAddressBookView::readConfig( config );
224 // The config could have changed the fields, so we need to reconstruct 224 // The config could have changed the fields, so we need to reconstruct
225 // the listview. 225 // the listview.
226 reconstructListView(); 226 reconstructListView();
227 227
228 // costum colors? 228 // costum colors?
229 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 229 if ( config->readBoolEntry( "EnableCustomColors", false ) )
230 { 230 {
231 QPalette p( mListView->palette() ); 231 QPalette p( mListView->palette() );
232 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 232 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
233 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 233 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
234 c = p.color(QPalette::Normal, QColorGroup::Text ); 234 c = p.color(QPalette::Normal, QColorGroup::Text );
235 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 235 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
236 c = p.color(QPalette::Normal, QColorGroup::Button ); 236 c = p.color(QPalette::Normal, QColorGroup::Button );
237 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 237 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
238 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 238 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
239 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); 239 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) );
240 c = p.color(QPalette::Normal, QColorGroup::Highlight ); 240 c = p.color(QPalette::Normal, QColorGroup::Highlight );
241 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); 241 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) );
242 c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); 242 c = p.color(QPalette::Normal, QColorGroup::HighlightedText );
243 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); 243 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) );
244#ifndef KAB_EMBEDDED 244#ifndef KAB_EMBEDDED
245 c = KGlobalSettings::alternateBackgroundColor(); 245 c = KGlobalSettings::alternateBackgroundColor();
246#else //KAB_EMBEDDED 246#else //KAB_EMBEDDED
247 c = QColor(240, 240, 240); 247 c = QColor(240, 240, 240);
248#endif //KAB_EMBEDDED 248#endif //KAB_EMBEDDED
249 c = config->readColorEntry ("AlternatingBackgroundColor", &c); 249 c = config->readColorEntry ("AlternatingBackgroundColor", &c);
250 mListView->setAlternateColor(c); 250 mListView->setAlternateColor(c);
251 251
252 252
253 //US mListView->viewport()->setPalette( p ); 253 //US mListView->viewport()->setPalette( p );
254 mListView->setPalette( p ); 254 mListView->setPalette( p );
255 } 255 }
256 else 256 else
257 { 257 {
258 // needed if turned off during a session. 258 // needed if turned off during a session.
259 //US mListView->viewport()->setPalette( mListView->palette() ); 259 //US mListView->viewport()->setPalette( mListView->palette() );
260 mListView->setPalette( mListView->palette() ); 260 mListView->setPalette( mListView->palette() );
261 } 261 }
262 262
263 //custom fonts? 263 //custom fonts?
264 QFont f( font() ); 264 QFont f( font() );
265 if ( config->readBoolEntry( "EnableCustomFonts", false ) ) 265 if ( config->readBoolEntry( "EnableCustomFonts", false ) )
266 { 266 {
267 mListView->setFont( config->readFontEntry( "TextFont", &f) ); 267 mListView->setFont( config->readFontEntry( "TextFont", &f) );
268 f.setBold( true ); 268 f.setBold( true );
269 //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); 269 //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) );
270 mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) ); 270 mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) );
271 } 271 }
272 else 272 else
273 { 273 {
274 mListView->setFont( f ); 274 mListView->setFont( f );
275 f.setBold( true ); 275 f.setBold( true );
276 //US mListView->setHeaderFont( f ); 276 //US mListView->setHeaderFont( f );
277 mListView->header()->setFont( f ); 277 mListView->header()->setFont( f );
278 } 278 }
279 279
280 // Set the list view options 280 // Set the list view options
281 mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground", 281 mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground",
282 true)); 282 true));
283 mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false)); 283 mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false));
284 mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true)); 284 mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true));
285 285
286 if (config->readBoolEntry("Background", false)) 286 if (config->readBoolEntry("Background", false))
287 mListView->setBackgroundPixmap(config->readEntry("BackgroundName")); 287 mListView->setBackgroundPixmap(config->readEntry("BackgroundName"));
288 288
289 // Restore the layout of the listview 289 // Restore the layout of the listview
290 mListView->restoreLayout(config, config->group()); 290 mListView->restoreLayout(config, config->group());
291} 291}
292 292
293void KAddressBookTableView::refresh(QString uid) 293void KAddressBookTableView::refresh(QString uid)
294{ 294{
295 // For now just repopulate. In reality this method should 295 // For now just repopulate. In reality this method should
296 // check the value of uid, and if valid iterate through 296 // check the value of uid, and if valid iterate through
297 // the listview to find the entry, then tell it to refresh. 297 // the listview to find the entry, then tell it to refresh.
298 298
299 if (uid.isNull()) { 299 if (uid.isNull()) {
300 // Clear the list view 300 // Clear the list view
301 QString currentUID, nextUID; 301 QString currentUID, nextUID;
302#ifndef KAB_EMBEDDED 302#ifndef KAB_EMBEDDED
303 ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() ); 303 ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() );
304#else //KAB_EMBEDDED 304#else //KAB_EMBEDDED
305 ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() ); 305 ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() );
306#endif //KAB_EMBEDDED 306#endif //KAB_EMBEDDED
307 307
308 if ( currentItem ) { 308 if ( currentItem ) {
309#ifndef KAB_EMBEDDED 309#ifndef KAB_EMBEDDED
310 ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() ); 310 ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() );
311#else //KAB_EMBEDDED 311#else //KAB_EMBEDDED
312 ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() ); 312 ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() );
313#endif //KAB_EMBEDDED 313#endif //KAB_EMBEDDED
314 if ( nextItem ) 314 if ( nextItem )
315 nextUID = nextItem->addressee().uid(); 315 nextUID = nextItem->addressee().uid();
316 currentUID = currentItem->addressee().uid(); 316 currentUID = currentItem->addressee().uid();
317 } 317 }
318 318
319 mListView->clear(); 319 mListView->clear();
320 320
321 currentItem = 0; 321 currentItem = 0;
322 KABC::Addressee::List addresseeList = addressees(); 322 KABC::Addressee::List addresseeList = addressees();
323 KABC::Addressee::List::Iterator it; 323 KABC::Addressee::List::Iterator it;
324 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 324 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
325 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 325 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
326 continue; 326 continue;
327 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 327 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
328 if ( (*it).uid() == currentUID ) 328 if ( (*it).uid() == currentUID )
329 currentItem = item; 329 currentItem = item;
330 else if ( (*it).uid() == nextUID && !currentItem ) 330 else if ( (*it).uid() == nextUID && !currentItem )
331 currentItem = item; 331 currentItem = item;
332 } 332 }
333 333
334 // Sometimes the background pixmap gets messed up when we add lots 334 // Sometimes the background pixmap gets messed up when we add lots
335 // of items. 335 // of items.
336 mListView->repaint(); 336 mListView->repaint();
337 337 if ( !currentItem )
338 currentItem = (ContactListViewItem *)mListView->firstChild();
338 if ( currentItem ) { 339 if ( currentItem ) {
339 mListView->setCurrentItem( currentItem ); 340 mListView->setCurrentItem( currentItem );
340 mListView->ensureItemVisible( currentItem ); 341 mListView->ensureItemVisible( currentItem );
342 mListView->setSelected( currentItem, true );
341 } 343 }
342 } else { 344 } else {
343 // Only need to update on entry. Iterate through and try to find it 345 // Only need to update on entry. Iterate through and try to find it
344 ContactListViewItem *ceItem; 346 ContactListViewItem *ceItem;
345 QListViewItemIterator it( mListView ); 347 QListViewItemIterator it( mListView );
346 while ( it.current() ) { 348 while ( it.current() ) {
347#ifndef KAB_EMBEDDED 349#ifndef KAB_EMBEDDED
348 ceItem = dynamic_cast<ContactListViewItem*>( it.current() ); 350 ceItem = dynamic_cast<ContactListViewItem*>( it.current() );
349#else //KAB_EMBEDDED 351#else //KAB_EMBEDDED
350 ceItem = (ContactListViewItem*)( it.current() ); 352 ceItem = (ContactListViewItem*)( it.current() );
351#endif //KAB_EMBEDDED 353#endif //KAB_EMBEDDED
352 354
353 if ( ceItem && ceItem->addressee().uid() == uid ) { 355 if ( ceItem && ceItem->addressee().uid() == uid ) {
354 ceItem->refresh(); 356 ceItem->refresh();
355 return; 357 return;
356 } 358 }
357 ++it; 359 ++it;
358 } 360 }
359 361
360 refresh( QString::null ); 362 refresh( QString::null );
361 } 363 }
362} 364}
363 365
364QStringList KAddressBookTableView::selectedUids() 366QStringList KAddressBookTableView::selectedUids()
365{ 367{
366 QStringList uidList; 368 QStringList uidList;
367 QListViewItem *item; 369 QListViewItem *item;
368 ContactListViewItem *ceItem; 370 ContactListViewItem *ceItem;
369 371
370 for(item = mListView->firstChild(); item; item = item->itemBelow()) 372 for(item = mListView->firstChild(); item; item = item->itemBelow())
371 { 373 {
372 if (mListView->isSelected( item )) 374 if (mListView->isSelected( item ))
373 { 375 {
374#ifndef KAB_EMBEDDED 376#ifndef KAB_EMBEDDED
375 ceItem = dynamic_cast<ContactListViewItem*>(item); 377 ceItem = dynamic_cast<ContactListViewItem*>(item);
376#else //KAB_EMBEDDED 378#else //KAB_EMBEDDED
377 ceItem = (ContactListViewItem*)(item); 379 ceItem = (ContactListViewItem*)(item);
378#endif //KAB_EMBEDDED 380#endif //KAB_EMBEDDED
379 381
380 if (ceItem != 0L) 382 if (ceItem != 0L)
381 uidList << ceItem->addressee().uid(); 383 uidList << ceItem->addressee().uid();
382 } 384 }
383 } 385 }
384 if ( uidList.count() == 0 ) 386 if ( uidList.count() == 0 )
385 if ( mListView->currentItem() ) { 387 if ( mListView->currentItem() ) {
386 ceItem = (ContactListViewItem*)(mListView->currentItem()) ; 388 ceItem = (ContactListViewItem*)(mListView->currentItem()) ;
387 uidList << ceItem->addressee().uid(); 389 uidList << ceItem->addressee().uid();
388 } 390 }
389 391
390 return uidList; 392 return uidList;
391} 393}
392 394
393void KAddressBookTableView::setSelected(QString uid, bool selected) 395void KAddressBookTableView::setSelected(QString uid, bool selected)
394{ 396{
395 QListViewItem *item; 397 QListViewItem *item;
396 ContactListViewItem *ceItem; 398 ContactListViewItem *ceItem;
397 399
398 if (uid.isNull()) 400 if (uid.isNull())
399 { 401 {
400 mListView->selectAll(selected); 402 mListView->selectAll(selected);
401 } 403 }
402 else 404 else
403 { 405 {
404 for(item = mListView->firstChild(); item; item = item->itemBelow()) 406 for(item = mListView->firstChild(); item; item = item->itemBelow())
405 { 407 {
406#ifndef KAB_EMBEDDED 408#ifndef KAB_EMBEDDED
407 ceItem = dynamic_cast<ContactListViewItem*>(item); 409 ceItem = dynamic_cast<ContactListViewItem*>(item);
408#else //KAB_EMBEDDED 410#else //KAB_EMBEDDED
409 ceItem = (ContactListViewItem*)(item); 411 ceItem = (ContactListViewItem*)(item);
410#endif //KAB_EMBEDDED 412#endif //KAB_EMBEDDED
411 413
412 414
413 if ((ceItem != 0L) && (ceItem->addressee().uid() == uid)) 415 if ((ceItem != 0L) && (ceItem->addressee().uid() == uid))
414 { 416 {
415 mListView->setSelected(item, selected); 417 mListView->setSelected(item, selected);
416 418
417 if (selected) 419 if (selected)
418 mListView->ensureItemVisible(item); 420 mListView->ensureItemVisible(item);
419 } 421 }
420 } 422 }
421 } 423 }
422} 424}
423 425
424void KAddressBookTableView::addresseeSelected() 426void KAddressBookTableView::addresseeSelected()
425{ 427{
426 // We need to try to find the first selected item. This might not be the 428 // We need to try to find the first selected item. This might not be the
427 // last selected item, but when QListView is in multiselection mode, 429 // last selected item, but when QListView is in multiselection mode,
428 // there is no way to figure out which one was 430 // there is no way to figure out which one was
429 // selected last. 431 // selected last.
430 QListViewItem *item; 432 QListViewItem *item;
431 bool found =false; 433 bool found =false;
432 for (item = mListView->firstChild(); item && !found; 434 for (item = mListView->firstChild(); item && !found;
433 item = item->nextSibling()) 435 item = item->nextSibling())
434 { 436 {
435 if (item->isSelected()) 437 if (item->isSelected())
436 { 438 {
437 found = true; 439 found = true;
438#ifndef KAB_EMBEDDED 440#ifndef KAB_EMBEDDED
439 ContactListViewItem *ceItem 441 ContactListViewItem *ceItem
440 = dynamic_cast<ContactListViewItem*>(item); 442 = dynamic_cast<ContactListViewItem*>(item);
441#else //KAB_EMBEDDED 443#else //KAB_EMBEDDED
442 ContactListViewItem *ceItem 444 ContactListViewItem *ceItem
443 = (ContactListViewItem*)(item); 445 = (ContactListViewItem*)(item);
444#endif //KAB_EMBEDDED 446#endif //KAB_EMBEDDED
445 447
446 if ( ceItem ) emit selected(ceItem->addressee().uid()); 448 if ( ceItem ) emit selected(ceItem->addressee().uid());
447 } 449 }
448 } 450 }
449 451
450 if (!found) 452 if (!found)
451 emit selected(QString::null); 453 emit selected(QString::null);
452} 454}
453 455
454void KAddressBookTableView::addresseeExecuted(QListViewItem *item) 456void KAddressBookTableView::addresseeExecuted(QListViewItem *item)
455{ 457{
456 if (item) 458 if (item)
457 { 459 {
458#ifndef KAB_EMBEDDED 460#ifndef KAB_EMBEDDED
459 ContactListViewItem *ceItem 461 ContactListViewItem *ceItem
460 = dynamic_cast<ContactListViewItem*>(item); 462 = dynamic_cast<ContactListViewItem*>(item);
461#else //KAB_EMBEDDED 463#else //KAB_EMBEDDED
462 ContactListViewItem *ceItem 464 ContactListViewItem *ceItem
463 = (ContactListViewItem*)(item); 465 = (ContactListViewItem*)(item);
464#endif //KAB_EMBEDDED 466#endif //KAB_EMBEDDED
465 467
466 if (ceItem) 468 if (ceItem)
467 { 469 {
468 emit executed(ceItem->addressee().uid()); 470 emit executed(ceItem->addressee().uid());
469 } 471 }
470 } 472 }
471 else 473 else
472 { 474 {
473 emit executed(QString::null); 475 emit executed(QString::null);
474 } 476 }
475} 477}
476 478
477void KAddressBookTableView::addresseeDeleted() 479void KAddressBookTableView::addresseeDeleted()
478{ 480{
479 481
480 emit deleteRequest(); 482 emit deleteRequest();
481 483
482} 484}
483 485
484 486
485 487
486 488
487 489
488#ifndef KAB_EMBEDDED 490#ifndef KAB_EMBEDDED
489#include "kaddressbooktableview.moc" 491#include "kaddressbooktableview.moc"
490#endif //KAB_EMBEDDED 492#endif //KAB_EMBEDDED