digiKam
ditemdelegate.h
Go to the documentation of this file.
1 /* ============================================================
2  *
3  * This file is a part of digiKam project
4  * https://www.digikam.org
5  *
6  * Date : 2010-01-16
7  * Description : Qt item view for images - common delegate code
8  *
9  * Copyright (C) 2009-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10  *
11  * This program is free software; you can redistribute it
12  * and/or modify it under the terms of the GNU General
13  * Public License as published by the Free Software Foundation;
14  * either version 2, or (at your option)
15  * any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Public License for more details.
21  *
22  * ============================================================ */
23 
24 #ifndef DIGIKAM_DITEM_DELEGATE_H
25 #define DIGIKAM_DITEM_DELEGATE_H
26 
27 // Qt includes
28 
29 #include <QAbstractItemDelegate>
30 
31 // Local includes
32 
33 #include "digikam_export.h"
34 #include "thumbnailsize.h"
35 
36 namespace Digikam
37 {
38 
39 class ItemViewCategorized;
40 
41 class DIGIKAM_EXPORT DItemDelegate : public QAbstractItemDelegate
42 {
43  Q_OBJECT
44 
45 public:
46 
47  explicit DItemDelegate(QObject* const parent = nullptr);
48  ~DItemDelegate() override;
49 
53  virtual QSize gridSize() const = 0;
54  virtual QPixmap pixmapForDrag(const QStyleOptionViewItem& option, const QList<QModelIndex>& indexes) const = 0;
55 
59  virtual void setThumbnailSize(const ThumbnailSize& thumbSize) = 0;
60  virtual void setSpacing(int spacing) = 0;
61 
67  virtual void setDefaultViewOptions(const QStyleOptionViewItem& option) = 0;
68 
74  virtual bool acceptsToolTip(const QPoint& pos, const QRect& visualRect,
75  const QModelIndex& index, QRect* tooltipRect = nullptr) const = 0;
76  virtual bool acceptsActivation(const QPoint& pos, const QRect& visualRect,
77  const QModelIndex& index, QRect* activationRect = nullptr) const = 0;
78 
82  virtual void mouseMoved(QMouseEvent* e, const QRect& visualRect, const QModelIndex& index) = 0;
83 
84  static QString squeezedText(const QFontMetrics& fm, int width, const QString& text);
85  static QString dateToString(const QDateTime& datetime);
86  static QPixmap makeDragPixmap(const QStyleOptionViewItem& option, const QList<QModelIndex>& indexes,
87  const QPixmap& suggestedPixmap = QPixmap());
88 
89 Q_SIGNALS:
90 
91  void gridSizeChanged(const QSize& newSize);
92  void visualChange();
93 
94 protected:
95 
96  virtual void clearCaches();
97 
98  QString squeezedTextCached(QPainter* const p, int width, const QString& text) const;
99  QPixmap thumbnailBorderPixmap(const QSize& pixSize, bool isGrouped = false) const;
100 
101 private:
102 
103  class Private;
104  Private* const d;
105 };
106 
107 } // namespace Digikam
108 
109 #endif // DIGIKAM_DITEM_DELEGATE_H
Definition: ditemdelegate.h:42
virtual QSize gridSize() const =0
virtual bool acceptsActivation(const QPoint &pos, const QRect &visualRect, const QModelIndex &index, QRect *activationRect=nullptr) const =0
virtual void setThumbnailSize(const ThumbnailSize &thumbSize)=0
void gridSizeChanged(const QSize &newSize)
virtual void mouseMoved(QMouseEvent *e, const QRect &visualRect, const QModelIndex &index)=0
virtual void setDefaultViewOptions(const QStyleOptionViewItem &option)=0
virtual QPixmap pixmapForDrag(const QStyleOptionViewItem &option, const QList< QModelIndex > &indexes) const =0
virtual bool acceptsToolTip(const QPoint &pos, const QRect &visualRect, const QModelIndex &index, QRect *tooltipRect=nullptr) const =0
virtual void setSpacing(int spacing)=0
Definition: thumbnailsize.h:42
Definition: datefolderview.cpp:43