cardview.h
00001 #ifndef CARDVIEW_H
00002 #define CARDVIEW_H
00003
00004 #include <qscrollview.h>
00005 #include <qptrlist.h>
00006 #include <qstring.h>
00007 #include <qrect.h>
00008 #include <qpair.h>
00009
00010 class QPainter;
00011 class QResizeEvent;
00012 class QMouseEvent;
00013 class CardView;
00014 class CardViewPrivate;
00015 class CardViewItemPrivate;
00016
00021 class CardViewItem
00022 {
00023 friend class CardView;
00024
00025 public:
00029 typedef QPair<QString, QString> Field;
00030
00038 CardViewItem(CardView *parent, QString caption = QString::null);
00039 virtual ~CardViewItem();
00040
00044 const QString &caption() const;
00045
00050 void setCaption(const QString &caption);
00051
00055 virtual void paintCard(QPainter *p, QColorGroup &cg);
00056
00060 virtual void repaintCard();
00061
00068 void insertField(const QString &label, const QString &value);
00069
00072 void removeField(const QString &label);
00073
00076 QString fieldValue(const QString &label);
00077
00080 void clearFields();
00081
00086 CardViewItem *nextItem();
00087
00090 bool isSelected() const;
00091
00092 protected:
00096 void setSelected(bool selected);
00097
00098 private:
00101 void initialize();
00102
00106 void calcRect();
00107
00113 QString trimString(const QString &text, int width, QFontMetrics &fm);
00114
00115 CardViewItemPrivate *d;
00116 CardView *mView;
00117 };
00118
00130 class CardView : public QScrollView
00131 {
00132 friend class CardViewItem;
00133
00134 Q_OBJECT
00135
00136 public:
00139 CardView(QWidget *parent, const char *name);
00140 virtual ~CardView();
00141
00146 void insertItem(CardViewItem *item);
00147
00151 void takeItem(CardViewItem *item);
00152
00155 void clear();
00156
00160 CardViewItem *itemAt(const QPoint &viewPos);
00161
00164 QRect itemRect(const CardViewItem *item);
00165
00168 void ensureItemVisible(const CardViewItem *item);
00169
00170 enum SelectionMode { Single, Multi, Extended, NoSelection };
00171
00176 void setSelectionMode(SelectionMode mode);
00177
00180 SelectionMode selectionMode() const;
00181
00185 void setSelected(CardViewItem *item, bool selected);
00186
00189 void selectAll(bool state);
00190
00193 bool isSelected(CardViewItem *item) const;
00194
00199 CardViewItem *selectedItem() const;
00200
00205 CardViewItem *firstItem() const;
00206
00210 CardViewItem *itemAfter(CardViewItem *item);
00211
00214 int childCount() const;
00215
00224 CardViewItem *findItem(const QString &text, const QString &label,
00225 Qt::StringComparisonMode compare = Qt::BeginsWith);
00226
00231 void setDrawCardBorder(bool enabled);
00232
00235 bool drawCardBorder() const;
00236
00242 void setDrawColSeparators(bool enabled);
00243
00246 bool drawColSeparators() const;
00247
00253 void setDrawFieldLabels(bool enabled);
00254
00257 bool drawFieldLabels() const;
00258
00259 signals:
00263 void selectionChanged();
00264
00269 void selectionChanged(CardViewItem *);
00270
00273 void clicked(CardViewItem *);
00274
00278 void executed(CardViewItem *);
00279
00282 void doubleClicked(CardViewItem *);
00283
00284 protected:
00288 virtual void viewportPaintEvent( QPaintEvent * );
00289
00292 void resizeEvent(QResizeEvent *e);
00293
00296 void setLayoutDirty(bool dirty);
00297
00302 void calcLayout();
00303
00304 virtual void mousePressEvent(QMouseEvent *e);
00305 virtual void mouseReleaseEvent(QMouseEvent *e);
00306 virtual void mouseDoubleClickEvent(QMouseEvent *e);
00307 virtual void mouseMoveEvent(QMouseEvent *e);
00308
00313 virtual void startDrag();
00314
00315 private:
00316 CardViewPrivate *d;
00317 };
00318
00319 #endif
This file is part of the documentation for kdelibs Version 3.1.5.