summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/views/contactlistview.cpp5
-rw-r--r--kaddressbook/views/contactlistview.h1
-rw-r--r--kaddressbook/views/kaddressbooktableview.cpp29
3 files changed, 26 insertions, 9 deletions
diff --git a/kaddressbook/views/contactlistview.cpp b/kaddressbook/views/contactlistview.cpp
index 9804e28..4cc22ea 100644
--- a/kaddressbook/views/contactlistview.cpp
+++ b/kaddressbook/views/contactlistview.cpp
@@ -125,216 +125,221 @@ void DynamicTip::maybeTip( const QPoint &pos )
125 } 125 }
126 126
127 if ( notes[i] == '\n' || doBreak ) { 127 if ( notes[i] == '\n' || doBreak ) {
128 s += notes.mid( a, i - a + (doBreak?1:0) ) +"\n"; 128 s += notes.mid( a, i - a + (doBreak?1:0) ) +"\n";
129 129
130 a = i + 1; 130 a = i + 1;
131 lastSpace = a; 131 lastSpace = a;
132 linew = 0; 132 linew = 0;
133 } 133 }
134 134
135 if ( notes[i].isSpace() ) { 135 if ( notes[i].isSpace() ) {
136 lastSpace = i; 136 lastSpace = i;
137 lastw = linew; 137 lastw = linew;
138 } 138 }
139 139
140 if ( lastSpace <= a ) { 140 if ( lastSpace <= a ) {
141 lastw = linew; 141 lastw = linew;
142 } 142 }
143 143
144 ++i; 144 ++i;
145 } 145 }
146 } 146 }
147 147
148 tip( r, s ); 148 tip( r, s );
149 } 149 }
150 else 150 else
151 hide(); 151 hide();
152 ishidden = !ishidden; 152 ishidden = !ishidden;
153 153
154} 154}
155 155
156/////////////////////////// 156///////////////////////////
157// ContactListViewItem Methods 157// ContactListViewItem Methods
158 158
159ContactListViewItem::ContactListViewItem(const KABC::Addressee &a, 159ContactListViewItem::ContactListViewItem(const KABC::Addressee &a,
160 ContactListView *parent, 160 ContactListView *parent,
161 KABC::AddressBook *doc, 161 KABC::AddressBook *doc,
162 const KABC::Field::List &fields ) 162 const KABC::Field::List &fields )
163 : KListViewItem(parent), mAddressee(a), mFields( fields ), 163 : KListViewItem(parent), mAddressee(a), mFields( fields ),
164 parentListView( parent ), mDocument(doc) 164 parentListView( parent ), mDocument(doc)
165{ 165{
166 refresh(); 166 refresh();
167} 167}
168 168
169QString ContactListViewItem::key(int column, bool ascending) const 169QString ContactListViewItem::key(int column, bool ascending) const
170{ 170{
171 return QListViewItem::key(column, ascending).lower(); 171 return QListViewItem::key(column, ascending).lower();
172} 172}
173 173
174void ContactListViewItem::paintCell(QPainter * p, 174void ContactListViewItem::paintCell(QPainter * p,
175 const QColorGroup & cg, 175 const QColorGroup & cg,
176 int column, 176 int column,
177 int width, 177 int width,
178 int align) 178 int align)
179{ 179{
180 KListViewItem::paintCell(p, cg, column, width, align); 180 KListViewItem::paintCell(p, cg, column, width, align);
181 181
182 if ( !p ) 182 if ( !p )
183 return; 183 return;
184 184
185 if (parentListView->singleLine()) { 185 if (parentListView->singleLine()) {
186 p->setPen( parentListView->alternateColor() ); 186 p->setPen( parentListView->alternateColor() );
187 p->drawLine( 0, height() - 1, width, height() - 1 ); 187 p->drawLine( 0, height() - 1, width, height() - 1 );
188 } 188 }
189} 189}
190 190
191 191
192ContactListView *ContactListViewItem::parent() 192ContactListView *ContactListViewItem::parent()
193{ 193{
194 return parentListView; 194 return parentListView;
195} 195}
196 196
197 197
198void ContactListViewItem::refresh() 198void ContactListViewItem::refresh()
199{ 199{
200 // Update our addressee, since it may have changed else were 200 // Update our addressee, since it may have changed else were
201 mAddressee = mDocument->findByUid(mAddressee.uid()); 201 mAddressee = mDocument->findByUid(mAddressee.uid());
202 if (mAddressee.isEmpty()) 202 if (mAddressee.isEmpty())
203 return; 203 return;
204 204
205 int i = 0; 205 int i = 0;
206 KABC::Field::List::ConstIterator it; 206 KABC::Field::List::ConstIterator it;
207 for( it = mFields.begin(); it != mFields.end(); ++it ) { 207 for( it = mFields.begin(); it != mFields.end(); ++it ) {
208 setText( i++, (*it)->value( mAddressee ) ); 208 setText( i++, (*it)->value( mAddressee ) );
209 } 209 }
210} 210}
211 211
212/////////////////////////////// 212///////////////////////////////
213// ContactListView 213// ContactListView
214 214
215ContactListView::ContactListView(KAddressBookTableView *view, 215ContactListView::ContactListView(KAddressBookTableView *view,
216 KABC::AddressBook* /* doc */, 216 KABC::AddressBook* /* doc */,
217 QWidget *parent, 217 QWidget *parent,
218 const char *name ) 218 const char *name )
219 : KListView( parent, name ), 219 : KListView( parent, name ),
220 pabWidget( view ), 220 pabWidget( view ),
221 oldColumn( 0 ) 221 oldColumn( 0 )
222{ 222{
223 mABackground = true; 223 mABackground = true;
224 mSingleLine = false; 224 mSingleLine = false;
225 mToolTips = true; 225 mToolTips = true;
226#ifndef KAB_EMBEDDED 226#ifndef KAB_EMBEDDED
227 mAlternateColor = KGlobalSettings::alternateBackgroundColor(); 227 mAlternateColor = KGlobalSettings::alternateBackgroundColor();
228#else //KAB_EMBEDDED 228#else //KAB_EMBEDDED
229 mAlternateColor = QColor(240, 240, 240); 229 mAlternateColor = QColor(240, 240, 240);
230#endif //KAB_EMBEDDED 230#endif //KAB_EMBEDDED
231 231
232 setAlternateBackgroundEnabled(mABackground); 232 setAlternateBackgroundEnabled(mABackground);
233 setAcceptDrops( true ); 233 setAcceptDrops( true );
234 viewport()->setAcceptDrops( true ); 234 viewport()->setAcceptDrops( true );
235 setAllColumnsShowFocus( true ); 235 setAllColumnsShowFocus( true );
236 setShowSortIndicator(true); 236 setShowSortIndicator(true);
237 237
238 setSelectionModeExt( KListView::Extended ); 238 setSelectionModeExt( KListView::Extended );
239 setDropVisualizer(false); 239 setDropVisualizer(false);
240 // setFrameStyle(QFrame::NoFrame); 240 // setFrameStyle(QFrame::NoFrame);
241 //setLineWidth ( 0 ); 241 //setLineWidth ( 0 );
242 //setMidLineWidth ( 0 ); 242 //setMidLineWidth ( 0 );
243 //setMargin ( 0 ); 243 //setMargin ( 0 );
244#ifndef KAB_EMBEDDED 244#ifndef KAB_EMBEDDED
245 connect(this, SIGNAL(dropped(QDropEvent*)), 245 connect(this, SIGNAL(dropped(QDropEvent*)),
246 this, SLOT(itemDropped(QDropEvent*))); 246 this, SLOT(itemDropped(QDropEvent*)));
247#endif //KAB_EMBEDDED 247#endif //KAB_EMBEDDED
248 248
249 249
250 new DynamicTip( this ); 250 new DynamicTip( this );
251} 251}
252 252
253void ContactListView::setAlternateColor(const QColor &m_AlternateColor)
254{
255 mAlternateColor = m_AlternateColor;
256}
257
253void ContactListView::paintEmptyArea( QPainter * p, const QRect & rect ) 258void ContactListView::paintEmptyArea( QPainter * p, const QRect & rect )
254{ 259{
255 QBrush b = palette().brush(QPalette::Active, QColorGroup::Base); 260 QBrush b = palette().brush(QPalette::Active, QColorGroup::Base);
256 261
257 // Get the brush, which will have the background pixmap if there is one. 262 // Get the brush, which will have the background pixmap if there is one.
258 if (b.pixmap()) 263 if (b.pixmap())
259 { 264 {
260 p->drawTiledPixmap( rect.left(), rect.top(), rect.width(), rect.height(), 265 p->drawTiledPixmap( rect.left(), rect.top(), rect.width(), rect.height(),
261 *(b.pixmap()), 266 *(b.pixmap()),
262 rect.left() + contentsX(), 267 rect.left() + contentsX(),
263 rect.top() + contentsY() ); 268 rect.top() + contentsY() );
264 } 269 }
265 270
266 else 271 else
267 { 272 {
268 // Do a normal paint 273 // Do a normal paint
269 KListView::paintEmptyArea(p, rect); 274 KListView::paintEmptyArea(p, rect);
270 } 275 }
271} 276}
272 277
273void ContactListView::contentsMousePressEvent(QMouseEvent* e) 278void ContactListView::contentsMousePressEvent(QMouseEvent* e)
274{ 279{
275 presspos = e->pos(); 280 presspos = e->pos();
276 KListView::contentsMousePressEvent(e); 281 KListView::contentsMousePressEvent(e);
277} 282}
278 283
279 284
280// To initiate a drag operation 285// To initiate a drag operation
281void ContactListView::contentsMouseMoveEvent( QMouseEvent *e ) 286void ContactListView::contentsMouseMoveEvent( QMouseEvent *e )
282{ 287{
283 if ((e->state() & LeftButton) && (e->pos() - presspos).manhattanLength() > 4 ) { 288 if ((e->state() & LeftButton) && (e->pos() - presspos).manhattanLength() > 4 ) {
284 emit startAddresseeDrag(); 289 emit startAddresseeDrag();
285 } 290 }
286 else 291 else
287 KListView::contentsMouseMoveEvent( e ); 292 KListView::contentsMouseMoveEvent( e );
288} 293}
289 294
290bool ContactListView::acceptDrag(QDropEvent *e) const 295bool ContactListView::acceptDrag(QDropEvent *e) const
291{ 296{
292#ifndef KAB_EMBEDDED 297#ifndef KAB_EMBEDDED
293 return QTextDrag::canDecode(e); 298 return QTextDrag::canDecode(e);
294#else //KAB_EMBEDDED 299#else //KAB_EMBEDDED
295qDebug("ContactListView::acceptDrag has to be fixed"); 300qDebug("ContactListView::acceptDrag has to be fixed");
296 return false; 301 return false;
297#endif //KAB_EMBEDDED 302#endif //KAB_EMBEDDED
298} 303}
299 304
300void ContactListView::itemDropped(QDropEvent *e) 305void ContactListView::itemDropped(QDropEvent *e)
301{ 306{
302 contentsDropEvent(e); 307 contentsDropEvent(e);
303} 308}
304 309
305void ContactListView::contentsDropEvent( QDropEvent *e ) 310void ContactListView::contentsDropEvent( QDropEvent *e )
306{ 311{
307 emit addresseeDropped(e); 312 emit addresseeDropped(e);
308} 313}
309 314
310void ContactListView::setAlternateBackgroundEnabled(bool enabled) 315void ContactListView::setAlternateBackgroundEnabled(bool enabled)
311{ 316{
312 mABackground = enabled; 317 mABackground = enabled;
313 318
314 if (mABackground) 319 if (mABackground)
315 { 320 {
316 setAlternateBackground(mAlternateColor); 321 setAlternateBackground(mAlternateColor);
317 } 322 }
318 else 323 else
319 { 324 {
320 setAlternateBackground(QColor()); 325 setAlternateBackground(QColor());
321 } 326 }
322} 327}
323 328
324void ContactListView::setBackgroundPixmap(const QString &filename) 329void ContactListView::setBackgroundPixmap(const QString &filename)
325{ 330{
326 if (filename.isEmpty()) 331 if (filename.isEmpty())
327 { 332 {
328 unsetPalette(); 333 unsetPalette();
329 } 334 }
330 else 335 else
331 { 336 {
332 qDebug("ContactListView::setBackgroundPixmap has to be verified"); 337 qDebug("ContactListView::setBackgroundPixmap has to be verified");
333//US setPaletteBackgroundPixmap(QPixmap(filename)); 338//US setPaletteBackgroundPixmap(QPixmap(filename));
334 KListView::setBackgroundPixmap((const QPixmap&)QPixmap(filename)); 339 KListView::setBackgroundPixmap((const QPixmap&)QPixmap(filename));
335 } 340 }
336 341
337} 342}
338#ifndef KAB_EMBEDDED 343#ifndef KAB_EMBEDDED
339#include "contactlistview.moc" 344#include "contactlistview.moc"
340#endif //KAB_EMBEDDED 345#endif //KAB_EMBEDDED
diff --git a/kaddressbook/views/contactlistview.h b/kaddressbook/views/contactlistview.h
index ae9c994..fad7f38 100644
--- a/kaddressbook/views/contactlistview.h
+++ b/kaddressbook/views/contactlistview.h
@@ -1,128 +1,129 @@
1#ifndef CONTACTLISTVIEW_H 1#ifndef CONTACTLISTVIEW_H
2#define CONTACTLISTVIEW_H 2#define CONTACTLISTVIEW_H
3 3
4#include <qcolor.h> 4#include <qcolor.h>
5#include <qpixmap.h> 5#include <qpixmap.h>
6#include <qtooltip.h> 6#include <qtooltip.h>
7#include <qstring.h> 7#include <qstring.h>
8 8
9#include <klistview.h> 9#include <klistview.h>
10 10
11#include <kabc/field.h> 11#include <kabc/field.h>
12#include <kabc/addressee.h> 12#include <kabc/addressee.h>
13#include <kabc/addressbook.h> 13#include <kabc/addressbook.h>
14 14
15 15
16class QDropEvent; 16class QDropEvent;
17class KAddressBookTableView; 17class KAddressBookTableView;
18class ContactListView; 18class ContactListView;
19 19
20/** The whole tooltip design needs a lot of work. Currently it is 20/** The whole tooltip design needs a lot of work. Currently it is
21* hacked together to function. 21* hacked together to function.
22*/ 22*/
23class DynamicTip : public QToolTip 23class DynamicTip : public QToolTip
24{ 24{
25 public: 25 public:
26 DynamicTip( ContactListView * parent ); 26 DynamicTip( ContactListView * parent );
27 27
28 protected: 28 protected:
29 void maybeTip( const QPoint & ); 29 void maybeTip( const QPoint & );
30 30
31 private: 31 private:
32}; 32};
33 33
34class ContactListViewItem : public KListViewItem 34class ContactListViewItem : public KListViewItem
35{ 35{
36 36
37public: 37public:
38 ContactListViewItem(const KABC::Addressee &a, ContactListView* parent, 38 ContactListViewItem(const KABC::Addressee &a, ContactListView* parent,
39 KABC::AddressBook *doc, const KABC::Field::List &fields ); 39 KABC::AddressBook *doc, const KABC::Field::List &fields );
40 const KABC::Addressee &addressee() const { return mAddressee; } 40 const KABC::Addressee &addressee() const { return mAddressee; }
41 virtual void refresh(); 41 virtual void refresh();
42 virtual ContactListView* parent(); 42 virtual ContactListView* parent();
43 virtual QString key ( int, bool ) const; 43 virtual QString key ( int, bool ) const;
44 44
45 /** Adds the border around the cell if the user wants it. 45 /** Adds the border around the cell if the user wants it.
46 * This is how the single line config option is implemented. 46 * This is how the single line config option is implemented.
47 */ 47 */
48 virtual void paintCell(QPainter * p, const QColorGroup & cg, 48 virtual void paintCell(QPainter * p, const QColorGroup & cg,
49 int column, int width, int align ); 49 int column, int width, int align );
50 50
51private: 51private:
52 KABC::Addressee mAddressee; 52 KABC::Addressee mAddressee;
53 KABC::Field::List mFields; 53 KABC::Field::List mFields;
54 ContactListView *parentListView; 54 ContactListView *parentListView;
55 KABC::AddressBook *mDocument; 55 KABC::AddressBook *mDocument;
56}; 56};
57 57
58 58
59///////////////////////////////////////////// 59/////////////////////////////////////////////
60// ContactListView 60// ContactListView
61 61
62class ContactListView : public KListView 62class ContactListView : public KListView
63{ 63{
64 Q_OBJECT 64 Q_OBJECT
65 65
66public: 66public:
67 ContactListView(KAddressBookTableView *view, 67 ContactListView(KAddressBookTableView *view,
68 KABC::AddressBook *doc, 68 KABC::AddressBook *doc,
69 QWidget *parent, 69 QWidget *parent,
70 const char *name = 0L ); 70 const char *name = 0L );
71 virtual ~ContactListView() {} 71 virtual ~ContactListView() {}
72 //void resort(); 72 //void resort();
73 73
74 /** Returns true if tooltips should be displayed, false otherwise 74 /** Returns true if tooltips should be displayed, false otherwise
75 */ 75 */
76 bool tooltips() const { return mToolTips; } 76 bool tooltips() const { return mToolTips; }
77 void setToolTipsEnabled(bool enabled) { mToolTips = enabled; } 77 void setToolTipsEnabled(bool enabled) { mToolTips = enabled; }
78 78
79 bool alternateBackground() const { return mABackground; } 79 bool alternateBackground() const { return mABackground; }
80 void setAlternateBackgroundEnabled(bool enabled); 80 void setAlternateBackgroundEnabled(bool enabled);
81 81
82 bool singleLine() const { return mSingleLine; } 82 bool singleLine() const { return mSingleLine; }
83 void setSingleLineEnabled(bool enabled) { mSingleLine = enabled; } 83 void setSingleLineEnabled(bool enabled) { mSingleLine = enabled; }
84 84
85 const QColor &alternateColor() const { return mAlternateColor; } 85 const QColor &alternateColor() const { return mAlternateColor; }
86 void setAlternateColor(const QColor &mAlternateColor);
86 87
87 /** Sets the background pixmap to <i>filename</i>. If the 88 /** Sets the background pixmap to <i>filename</i>. If the
88 * QString is empty (QString::isEmpty()), then the background 89 * QString is empty (QString::isEmpty()), then the background
89 * pixmap will be disabled. 90 * pixmap will be disabled.
90 */ 91 */
91 void setBackgroundPixmap(const QString &filename); 92 void setBackgroundPixmap(const QString &filename);
92 93
93protected: 94protected:
94 /** Paints the background pixmap in the empty area. This method is needed 95 /** Paints the background pixmap in the empty area. This method is needed
95 * since Qt::FixedPixmap will not scroll with the list view. 96 * since Qt::FixedPixmap will not scroll with the list view.
96 */ 97 */
97 virtual void paintEmptyArea( QPainter * p, const QRect & rect ); 98 virtual void paintEmptyArea( QPainter * p, const QRect & rect );
98 virtual void contentsMousePressEvent(QMouseEvent*); 99 virtual void contentsMousePressEvent(QMouseEvent*);
99 void contentsMouseMoveEvent( QMouseEvent *e ); 100 void contentsMouseMoveEvent( QMouseEvent *e );
100 void contentsDropEvent( QDropEvent *e ); 101 void contentsDropEvent( QDropEvent *e );
101 virtual bool acceptDrag(QDropEvent *e) const; 102 virtual bool acceptDrag(QDropEvent *e) const;
102 103
103protected slots: 104protected slots:
104 void itemDropped(QDropEvent *e); 105 void itemDropped(QDropEvent *e);
105 106
106public slots: 107public slots:
107 108
108signals: 109signals:
109 void startAddresseeDrag(); 110 void startAddresseeDrag();
110 void addresseeDropped(QDropEvent *); 111 void addresseeDropped(QDropEvent *);
111 112
112private: 113private:
113 KAddressBookTableView *pabWidget; 114 KAddressBookTableView *pabWidget;
114 int oldColumn; 115 int oldColumn;
115 int column; 116 int column;
116 bool ascending; 117 bool ascending;
117 118
118 bool mABackground; 119 bool mABackground;
119 bool mSingleLine; 120 bool mSingleLine;
120 bool mToolTips; 121 bool mToolTips;
121 122
122 QColor mAlternateColor; 123 QColor mAlternateColor;
123 124
124 QPoint presspos; 125 QPoint presspos;
125}; 126};
126 127
127 128
128#endif 129#endif
diff --git a/kaddressbook/views/kaddressbooktableview.cpp b/kaddressbook/views/kaddressbooktableview.cpp
index 0847b64..ab11e2a 100644
--- a/kaddressbook/views/kaddressbooktableview.cpp
+++ b/kaddressbook/views/kaddressbooktableview.cpp
@@ -1,295 +1,306 @@
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 35#include <qheader.h>
36 36
37#include "kaddressbooktableview.h" 37#include "kaddressbooktableview.h"
38 38
39 39
40KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab, 40KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab,
41 QWidget *parent, const char *name ) 41 QWidget *parent, const char *name )
42 : KAddressBookView( ab, parent, name ) 42 : KAddressBookView( ab, parent, name )
43{ 43{
44 mainLayout = new QVBoxLayout( viewWidget(), 2 ); 44 mainLayout = new QVBoxLayout( viewWidget(), 2 );
45 45
46 // The list view will be created when the config is read. 46 // The list view will be created when the config is read.
47 mListView = 0; 47 mListView = 0;
48} 48}
49 49
50KAddressBookTableView::~KAddressBookTableView() 50KAddressBookTableView::~KAddressBookTableView()
51{ 51{
52} 52}
53 53
54void KAddressBookTableView::reconstructListView() 54void KAddressBookTableView::reconstructListView()
55{ 55{
56 if (mListView) 56 if (mListView)
57 { 57 {
58 disconnect(mListView, SIGNAL(selectionChanged()), 58 disconnect(mListView, SIGNAL(selectionChanged()),
59 this, SLOT(addresseeSelected())); 59 this, SLOT(addresseeSelected()));
60 disconnect(mListView, SIGNAL(executed(QListViewItem*)), 60 disconnect(mListView, SIGNAL(executed(QListViewItem*)),
61 this, SLOT(addresseeExecuted(QListViewItem*))); 61 this, SLOT(addresseeExecuted(QListViewItem*)));
62 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 62 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
63 this, SLOT(addresseeExecuted(QListViewItem*))); 63 this, SLOT(addresseeExecuted(QListViewItem*)));
64 disconnect(mListView, SIGNAL(startAddresseeDrag()), this, 64 disconnect(mListView, SIGNAL(startAddresseeDrag()), this,
65 SIGNAL(startDrag())); 65 SIGNAL(startDrag()));
66 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)), 66 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)),
67 this, SLOT(addresseeExecuted(QListViewItem*))); 67 this, SLOT(addresseeExecuted(QListViewItem*)));
68 68
69 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 69 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
70 SIGNAL(dropped(QDropEvent*))); 70 SIGNAL(dropped(QDropEvent*)));
71 delete mListView; 71 delete mListView;
72 } 72 }
73 73
74 mListView = new ContactListView( this, addressBook(), viewWidget() ); 74 mListView = new ContactListView( this, addressBook(), viewWidget() );
75 75
76 // Add the columns 76 // Add the columns
77 KABC::Field::List fieldList = fields(); 77 KABC::Field::List fieldList = fields();
78 KABC::Field::List::ConstIterator it; 78 KABC::Field::List::ConstIterator it;
79 79
80 int c = 0; 80 int c = 0;
81 for( it = fieldList.begin(); it != fieldList.end(); ++it ) { 81 for( it = fieldList.begin(); it != fieldList.end(); ++it ) {
82 mListView->addColumn( (*it)->label() ); 82 mListView->addColumn( (*it)->label() );
83 mListView->setColumnWidthMode(c++, QListView::Manual); 83 mListView->setColumnWidthMode(c++, QListView::Manual);
84//US 84//US
85 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); 85 // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1());
86 } 86 }
87 87
88 connect(mListView, SIGNAL(selectionChanged()), 88 connect(mListView, SIGNAL(selectionChanged()),
89 this, SLOT(addresseeSelected())); 89 this, SLOT(addresseeSelected()));
90 connect(mListView, SIGNAL(startAddresseeDrag()), this, 90 connect(mListView, SIGNAL(startAddresseeDrag()), this,
91 SIGNAL(startDrag())); 91 SIGNAL(startDrag()));
92 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 92 connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
93 SIGNAL(dropped(QDropEvent*))); 93 SIGNAL(dropped(QDropEvent*)));
94 94
95 if (KABPrefs::instance()->mHonorSingleClick) 95 if (KABPrefs::instance()->mHonorSingleClick)
96 connect(mListView, SIGNAL(executed(QListViewItem*)), 96 connect(mListView, SIGNAL(executed(QListViewItem*)),
97 this, SLOT(addresseeExecuted(QListViewItem*))); 97 this, SLOT(addresseeExecuted(QListViewItem*)));
98 else 98 else
99 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 99 connect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
100 this, SLOT(addresseeExecuted(QListViewItem*))); 100 this, SLOT(addresseeExecuted(QListViewItem*)));
101 connect(mListView, SIGNAL(returnPressed(QListViewItem*)), 101 connect(mListView, SIGNAL(returnPressed(QListViewItem*)),
102 this, SLOT(addresseeExecuted(QListViewItem*))); 102 this, SLOT(addresseeExecuted(QListViewItem*)));
103 connect(mListView, SIGNAL(signalDelete()), 103 connect(mListView, SIGNAL(signalDelete()),
104 this, SLOT(addresseeDeleted())); 104 this, SLOT(addresseeDeleted()));
105 105
106//US performceimprovement. Refresh is done from the outside 106//US performceimprovement. Refresh is done from the outside
107//US refresh(); 107//US refresh();
108 108
109 mListView->setSorting( 0, true ); 109 mListView->setSorting( 0, true );
110 mainLayout->addWidget( mListView ); 110 mainLayout->addWidget( mListView );
111 mainLayout->activate(); 111 mainLayout->activate();
112 mListView->show(); 112 mListView->show();
113} 113}
114 114
115void KAddressBookTableView::writeConfig(KConfig *config) 115void KAddressBookTableView::writeConfig(KConfig *config)
116{ 116{
117 KAddressBookView::writeConfig(config); 117 KAddressBookView::writeConfig(config);
118 118
119 mListView->saveLayout(config, config->group()); 119 mListView->saveLayout(config, config->group());
120} 120}
121 121
122void KAddressBookTableView::readConfig(KConfig *config) 122void KAddressBookTableView::readConfig(KConfig *config)
123{ 123{
124 KAddressBookView::readConfig( config ); 124 KAddressBookView::readConfig( config );
125 // The config could have changed the fields, so we need to reconstruct 125 // The config could have changed the fields, so we need to reconstruct
126 // the listview. 126 // the listview.
127 reconstructListView(); 127 reconstructListView();
128 128
129 // costum colors? 129 // costum colors?
130 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 130 if ( config->readBoolEntry( "EnableCustomColors", false ) )
131 { 131 {
132 QPalette p( mListView->palette() ); 132 QPalette p( mListView->palette() );
133 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 133 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
134 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 134 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
135 c = p.color(QPalette::Normal, QColorGroup::Text ); 135 c = p.color(QPalette::Normal, QColorGroup::Text );
136 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 136 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
137 c = p.color(QPalette::Normal, QColorGroup::Button ); 137 c = p.color(QPalette::Normal, QColorGroup::Button );
138 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 138 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
139 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 139 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
140 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); 140 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) );
141 c = p.color(QPalette::Normal, QColorGroup::Highlight ); 141 c = p.color(QPalette::Normal, QColorGroup::Highlight );
142 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); 142 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) );
143 c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); 143 c = p.color(QPalette::Normal, QColorGroup::HighlightedText );
144 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); 144 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) );
145 c = p.color(QPalette::Normal, QColorGroup::Base ); 145#ifndef KAB_EMBEDDED
146 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "AlternatingBackgroundColor", &c ) ); 146 c = KGlobalSettings::alternateBackgroundColor();
147 mListView->viewport()->setPalette( p ); 147#else //KAB_EMBEDDED
148 c = QColor(240, 240, 240);
149#endif //KAB_EMBEDDED
150 c = config->readColorEntry ("AlternatingBackgroundColor", &c);
151 mListView->setAlternateColor(c);
152
153
154 //US mListView->viewport()->setPalette( p );
155 mListView->setPalette( p );
148 } 156 }
149 else 157 else
150 { 158 {
151 // needed if turned off during a session. 159 // needed if turned off during a session.
152 mListView->viewport()->setPalette( mListView->palette() ); 160 //US mListView->viewport()->setPalette( mListView->palette() );
161 mListView->setPalette( mListView->palette() );
153 } 162 }
154 163
155 //custom fonts? 164 //custom fonts?
156 QFont f( font() ); 165 QFont f( font() );
157 if ( config->readBoolEntry( "EnableCustomFonts", false ) ) 166 if ( config->readBoolEntry( "EnableCustomFonts", false ) )
158 { 167 {
159 // mListView->setFont( config->readFontEntry( "TextFont", &f) ); 168 mListView->setFont( config->readFontEntry( "TextFont", &f) );
160 f.setBold( true ); 169 f.setBold( true );
161 // mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); 170 //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) );
171 mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) );
162 } 172 }
163 else 173 else
164 { 174 {
165 // mListView->setFont( f ); 175 mListView->setFont( f );
166 f.setBold( true ); 176 f.setBold( true );
167 // mListView->setHeaderFont( f ); 177 //US mListView->setHeaderFont( f );
178 mListView->header()->setFont( f );
168 } 179 }
169 180
170 181
171 182
172 183
173 184
174 // Set the list view options 185 // Set the list view options
175 mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground", 186 mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground",
176 true)); 187 true));
177 mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false)); 188 mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false));
178 mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true)); 189 mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true));
179 190
180 if (config->readBoolEntry("Background", false)) 191 if (config->readBoolEntry("Background", false))
181 mListView->setBackgroundPixmap(config->readEntry("BackgroundName")); 192 mListView->setBackgroundPixmap(config->readEntry("BackgroundName"));
182 193
183 // Restore the layout of the listview 194 // Restore the layout of the listview
184 mListView->restoreLayout(config, config->group()); 195 mListView->restoreLayout(config, config->group());
185} 196}
186 197
187void KAddressBookTableView::refresh(QString uid) 198void KAddressBookTableView::refresh(QString uid)
188{ 199{
189 // For now just repopulate. In reality this method should 200 // For now just repopulate. In reality this method should
190 // check the value of uid, and if valid iterate through 201 // check the value of uid, and if valid iterate through
191 // the listview to find the entry, then tell it to refresh. 202 // the listview to find the entry, then tell it to refresh.
192 203
193 if (uid.isNull()) { 204 if (uid.isNull()) {
194 // Clear the list view 205 // Clear the list view
195 QString currentUID, nextUID; 206 QString currentUID, nextUID;
196#ifndef KAB_EMBEDDED 207#ifndef KAB_EMBEDDED
197 ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() ); 208 ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() );
198#else //KAB_EMBEDDED 209#else //KAB_EMBEDDED
199 ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() ); 210 ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() );
200#endif //KAB_EMBEDDED 211#endif //KAB_EMBEDDED
201 212
202 if ( currentItem ) { 213 if ( currentItem ) {
203#ifndef KAB_EMBEDDED 214#ifndef KAB_EMBEDDED
204 ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() ); 215 ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() );
205#else //KAB_EMBEDDED 216#else //KAB_EMBEDDED
206 ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() ); 217 ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() );
207#endif //KAB_EMBEDDED 218#endif //KAB_EMBEDDED
208 if ( nextItem ) 219 if ( nextItem )
209 nextUID = nextItem->addressee().uid(); 220 nextUID = nextItem->addressee().uid();
210 currentUID = currentItem->addressee().uid(); 221 currentUID = currentItem->addressee().uid();
211 } 222 }
212 223
213 mListView->clear(); 224 mListView->clear();
214 225
215 currentItem = 0; 226 currentItem = 0;
216 KABC::Addressee::List addresseeList = addressees(); 227 KABC::Addressee::List addresseeList = addressees();
217 KABC::Addressee::List::Iterator it; 228 KABC::Addressee::List::Iterator it;
218 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { 229 for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) {
219 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); 230 ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields());
220 if ( (*it).uid() == currentUID ) 231 if ( (*it).uid() == currentUID )
221 currentItem = item; 232 currentItem = item;
222 else if ( (*it).uid() == nextUID && !currentItem ) 233 else if ( (*it).uid() == nextUID && !currentItem )
223 currentItem = item; 234 currentItem = item;
224 } 235 }
225 236
226 // Sometimes the background pixmap gets messed up when we add lots 237 // Sometimes the background pixmap gets messed up when we add lots
227 // of items. 238 // of items.
228 mListView->repaint(); 239 mListView->repaint();
229 240
230 if ( currentItem ) { 241 if ( currentItem ) {
231 mListView->setCurrentItem( currentItem ); 242 mListView->setCurrentItem( currentItem );
232 mListView->ensureItemVisible( currentItem ); 243 mListView->ensureItemVisible( currentItem );
233 } 244 }
234 } else { 245 } else {
235 // Only need to update on entry. Iterate through and try to find it 246 // Only need to update on entry. Iterate through and try to find it
236 ContactListViewItem *ceItem; 247 ContactListViewItem *ceItem;
237 QListViewItemIterator it( mListView ); 248 QListViewItemIterator it( mListView );
238 while ( it.current() ) { 249 while ( it.current() ) {
239#ifndef KAB_EMBEDDED 250#ifndef KAB_EMBEDDED
240 ceItem = dynamic_cast<ContactListViewItem*>( it.current() ); 251 ceItem = dynamic_cast<ContactListViewItem*>( it.current() );
241#else //KAB_EMBEDDED 252#else //KAB_EMBEDDED
242 ceItem = (ContactListViewItem*)( it.current() ); 253 ceItem = (ContactListViewItem*)( it.current() );
243#endif //KAB_EMBEDDED 254#endif //KAB_EMBEDDED
244 255
245 if ( ceItem && ceItem->addressee().uid() == uid ) { 256 if ( ceItem && ceItem->addressee().uid() == uid ) {
246 ceItem->refresh(); 257 ceItem->refresh();
247 return; 258 return;
248 } 259 }
249 ++it; 260 ++it;
250 } 261 }
251 262
252 refresh( QString::null ); 263 refresh( QString::null );
253 } 264 }
254} 265}
255 266
256QStringList KAddressBookTableView::selectedUids() 267QStringList KAddressBookTableView::selectedUids()
257{ 268{
258 QStringList uidList; 269 QStringList uidList;
259 QListViewItem *item; 270 QListViewItem *item;
260 ContactListViewItem *ceItem; 271 ContactListViewItem *ceItem;
261 272
262 for(item = mListView->firstChild(); item; item = item->itemBelow()) 273 for(item = mListView->firstChild(); item; item = item->itemBelow())
263 { 274 {
264 if (mListView->isSelected( item )) 275 if (mListView->isSelected( item ))
265 { 276 {
266#ifndef KAB_EMBEDDED 277#ifndef KAB_EMBEDDED
267 ceItem = dynamic_cast<ContactListViewItem*>(item); 278 ceItem = dynamic_cast<ContactListViewItem*>(item);
268#else //KAB_EMBEDDED 279#else //KAB_EMBEDDED
269 ceItem = (ContactListViewItem*)(item); 280 ceItem = (ContactListViewItem*)(item);
270#endif //KAB_EMBEDDED 281#endif //KAB_EMBEDDED
271 282
272 if (ceItem != 0L) 283 if (ceItem != 0L)
273 uidList << ceItem->addressee().uid(); 284 uidList << ceItem->addressee().uid();
274 } 285 }
275 } 286 }
276 if ( uidList.count() == 0 ) 287 if ( uidList.count() == 0 )
277 if ( mListView->currentItem() ) { 288 if ( mListView->currentItem() ) {
278 ceItem = (ContactListViewItem*)(mListView->currentItem()) ; 289 ceItem = (ContactListViewItem*)(mListView->currentItem()) ;
279 uidList << ceItem->addressee().uid(); 290 uidList << ceItem->addressee().uid();
280 } 291 }
281 292
282 return uidList; 293 return uidList;
283} 294}
284 295
285void KAddressBookTableView::setSelected(QString uid, bool selected) 296void KAddressBookTableView::setSelected(QString uid, bool selected)
286{ 297{
287 QListViewItem *item; 298 QListViewItem *item;
288 ContactListViewItem *ceItem; 299 ContactListViewItem *ceItem;
289 300
290 if (uid.isNull()) 301 if (uid.isNull())
291 { 302 {
292 mListView->selectAll(selected); 303 mListView->selectAll(selected);
293 } 304 }
294 else 305 else
295 { 306 {