1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#ifndef CONTACTLISTVIEW_H
#define CONTACTLISTVIEW_H
#include <qcolor.h>
#include <qpixmap.h>
#include <qtooltip.h>
#include <qstring.h>
#include <klistview.h>
#include <kabc/field.h>
#include <kabc/addressee.h>
#include <kabc/addressbook.h>
class QDropEvent;
class KAddressBookTableView;
class ContactListView;
/** The whole tooltip design needs a lot of work. Currently it is
* hacked together to function.
*/
class DynamicTip : public QToolTip
{
public:
DynamicTip( ContactListView * parent );
protected:
void maybeTip( const QPoint & );
private:
};
class ContactListViewItem : public KListViewItem
{
public:
ContactListViewItem(const KABC::Addressee &a, ContactListView* parent,
KABC::AddressBook *doc, const KABC::Field::List &fields );
const KABC::Addressee &addressee() const { return mAddressee; }
virtual void refresh();
virtual ContactListView* parent();
virtual QString key ( int, bool ) const;
/** Adds the border around the cell if the user wants it.
* This is how the single line config option is implemented.
*/
virtual void paintCell(QPainter * p, const QColorGroup & cg,
int column, int width, int align );
private:
KABC::Addressee mAddressee;
KABC::Field::List mFields;
ContactListView *parentListView;
KABC::AddressBook *mDocument;
};
/////////////////////////////////////////////
// ContactListView
class ContactListView : public KListView
{
Q_OBJECT
public:
ContactListView(KAddressBookTableView *view,
KABC::AddressBook *doc,
QWidget *parent,
const char *name = 0L );
virtual ~ContactListView() {}
//void resort();
/** Returns true if tooltips should be displayed, false otherwise
*/
bool tooltips() const { return mToolTips; }
void setToolTipsEnabled(bool enabled) { mToolTips = enabled; }
bool alternateBackground() const { return mABackground; }
void setAlternateBackgroundEnabled(bool enabled);
bool singleLine() const { return mSingleLine; }
void setSingleLineEnabled(bool enabled) { mSingleLine = enabled; }
const QColor &alternateColor() const { return mAlternateColor; }
void setAlternateColor(const QColor &mAlternateColor);
/** Sets the background pixmap to <i>filename</i>. If the
* QString is empty (QString::isEmpty()), then the background
* pixmap will be disabled.
*/
void setBackgroundPixmap(const QString &filename);
protected:
/** Paints the background pixmap in the empty area. This method is needed
* since Qt::FixedPixmap will not scroll with the list view.
*/
virtual void paintEmptyArea( QPainter * p, const QRect & rect );
virtual void contentsMousePressEvent(QMouseEvent*);
void contentsMouseMoveEvent( QMouseEvent *e );
void contentsDropEvent( QDropEvent *e );
virtual bool acceptDrag(QDropEvent *e) const;
protected slots:
void itemDropped(QDropEvent *e);
public slots:
signals:
void startAddresseeDrag();
void addresseeDropped(QDropEvent *);
private:
KAddressBookTableView *pabWidget;
int oldColumn;
int column;
bool ascending;
bool mABackground;
bool mSingleLine;
bool mToolTips;
QColor mAlternateColor;
QPoint presspos;
};
#endif
|