00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef CARDVIEW_H
00025
#define CARDVIEW_H
00026
00027
#include <qscrollview.h>
00028
#include <qptrlist.h>
00029
#include <qstring.h>
00030
#include <qrect.h>
00031
#include <qpair.h>
00032
#include <qpoint.h>
00033
00034
class QLabel;
00035
class QPainter;
00036
class QResizeEvent;
00037
class QMouseEvent;
00038
class CardView;
00039
class CardViewPrivate;
00040
class CardViewItemPrivate;
00041
class CardViewTip;
00042
00047 class CardViewItem
00048 {
00049
friend class CardView;
00050
00051
public:
00055 typedef QPair<QString, QString> Field;
00056
00064
CardViewItem(
CardView *parent,
QString caption = QString::null);
00065
virtual ~
CardViewItem();
00066
00070
const QString &
caption() const;
00071
00076
void setCaption(const
QString &caption);
00077
00081 virtual
void paintCard(
QPainter *p,
QColorGroup &cg);
00082
00086 virtual
void repaintCard();
00087
00094
void insertField(const
QString &label, const
QString &value);
00095
00098
void removeField(const
QString &label);
00099
00102
QString fieldValue(const
QString &label);
00103
00106
void clearFields();
00107
00112
CardViewItem *nextItem();
00113
00116
bool isSelected() const;
00117
00122
void showFullString( const
QPoint &pos, CardViewTip *tip );
00123
00128
Field *fieldAt( const
QPoint &itempos ) const;
00129
00130
CardView *cardView() {
return mView; };
00131
00139
int height(
bool allowCache=
true )
const;
00140
00141
protected:
00145
void setSelected(
bool selected);
00146
00147
private:
00150
void initialize();
00151
00157
QString trimString(
const QString &text,
int width,
QFontMetrics &fm);
00158
00159 CardViewItemPrivate *d;
00160
CardView *mView;
00161 };
00162
00174 class CardView :
public QScrollView
00175 {
00176
friend class CardViewItem;
00177
00178 Q_OBJECT
00179
00180
public:
00183
CardView(
QWidget *parent,
const char *name);
00184
virtual ~
CardView();
00185
00190
void insertItem(
CardViewItem *item);
00191
00195
void takeItem(
CardViewItem *item);
00196
00199
void clear();
00200
00206
CardViewItem *
currentItem();
00207
00210
void setCurrentItem(
CardViewItem *item );
00211
00215
CardViewItem *
itemAt(
const QPoint &viewPos);
00216
00219
QRect itemRect(
const CardViewItem *item);
00220
00223
void ensureItemVisible(
const CardViewItem *item);
00224
00227
void repaintItem(
const CardViewItem *item);
00228
00229
enum SelectionMode { Single, Multi, Extended, NoSelection };
00230
00235
void setSelectionMode(SelectionMode mode);
00236
00239 SelectionMode
selectionMode()
const;
00240
00244
void setSelected(
CardViewItem *item,
bool selected);
00245
00248
void selectAll(
bool state);
00249
00252
bool isSelected(
CardViewItem *item)
const;
00253
00258
CardViewItem *
selectedItem()
const;
00259
00264
CardViewItem *
firstItem()
const;
00265
00269
CardViewItem *
itemAfter(
CardViewItem *item);
00270
00273
int childCount()
const;
00274
00283
CardViewItem *
findItem(
const QString &text,
const QString &label,
00284 Qt::StringComparisonMode compare = Qt::BeginsWith);
00285
00292 uint
columnWidth();
00293
00298
void setDrawCardBorder(
bool enabled);
00299
00302
bool drawCardBorder()
const;
00303
00309
void setDrawColSeparators(
bool enabled);
00310
00313
bool drawColSeparators()
const;
00314
00320
void setDrawFieldLabels(
bool enabled);
00321
00324
bool drawFieldLabels()
const;
00325
00329
void setShowEmptyFields(
bool show);
00330
00333
bool showEmptyFields()
const;
00334
00345 uint
itemMargin();
00346
00349
void setItemMargin( uint margin );
00350
00359 uint
itemSpacing();
00360
00364
void setItemSpacing( uint spacing );
00365
00367
int itemWidth()
const;
00368
00370
void setItemWidth(
int width );
00371
00373
void setHeaderFont(
const QFont &fnt );
00374
00376
QFont headerFont()
const;
00377
00379
void setFont(
const QFont &fnt );
00380
00382
void setSeparatorWidth(
int width );
00383
00385
int separatorWidth();
00386
00390
void setMaxFieldLines(
int howmany );
00391
00393
int maxFieldLines()
const;
00394
00395 signals:
00399
void selectionChanged();
00400
00405
void selectionChanged(
CardViewItem *);
00406
00409
void clicked(
CardViewItem *);
00410
00415
void executed(
CardViewItem *);
00416
00419
void doubleClicked(
CardViewItem *);
00420
00423
void currentChanged(
CardViewItem * );
00424
00427
void returnPressed(
CardViewItem * );
00428
00431
void contextMenuRequested(
CardViewItem*,
const QPoint& );
00432
00433
protected:
00437
void drawContents(
QPainter *p,
int clipx,
int clipy,
int clipw,
int cliph);
00438
00441
void resizeEvent(
QResizeEvent *e);
00442
00445
void contentsWheelEvent(
QWheelEvent *e);
00446
00449
void setLayoutDirty(
bool dirty);
00450
00455
void calcLayout();
00456
00457
00458
00459
00460
00461
virtual void contentsMousePressEvent(
QMouseEvent *e);
00462
virtual void contentsMouseMoveEvent(
QMouseEvent *e);
00463
virtual void contentsMouseReleaseEvent(
QMouseEvent *e);
00464
virtual void contentsMouseDoubleClickEvent(
QMouseEvent *e);
00465
00466
virtual void enterEvent(
QEvent * );
00467
virtual void leaveEvent(
QEvent * );
00468
00469
virtual void focusInEvent(
QFocusEvent * );
00470
virtual void focusOutEvent(
QFocusEvent * );
00471
00472
virtual void keyPressEvent(
QKeyEvent * );
00473
00478
virtual void startDrag();
00479
00480
private slots:
00485
void tryShowFullText();
00486
00487
private:
00493
void drawRubberBands(
int pos );
00494
00495 CardViewPrivate *d;
00496 };
00497
00498
#endif