summaryrefslogtreecommitdiffabout
path: root/kaddressbook/views/contactlistview.h
blob: ae9c9943100a67b23c412062db97a8ff6359636e (plain)
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
#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; }
  
  /** 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