File indexing completed on 2025-12-07 04:08:27

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2009-04-19
0007  * Description : Qt item view for items - the delegate (private container)
0008  *
0009  * SPDX-FileCopyrightText: 2002-2005 by Renchi Raju <renchi dot raju at gmail dot com>
0010  * SPDX-FileCopyrightText: 2009      by Andi Clemens <andi dot clemens at gmail dot com>
0011  * SPDX-FileCopyrightText: 2002-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0012  * SPDX-FileCopyrightText: 2006-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
0013  *
0014  * SPDX-License-Identifier: GPL-2.0-or-later
0015  *
0016  * ============================================================ */
0017 
0018 #ifndef DIGIKAM_ITEM_VIEW_DELEGATE_P_H
0019 #define DIGIKAM_ITEM_VIEW_DELEGATE_P_H
0020 
0021 #include "itemviewdelegate.h"
0022 
0023 // Qt includes
0024 
0025 #include <QCache>
0026 #include <QFont>
0027 #include <QWidget>
0028 #include <QPainter>
0029 #include <QPolygon>
0030 
0031 // Local includes
0032 
0033 #include "digikam_debug.h"
0034 #include "digikam_export.h"
0035 
0036 namespace Digikam
0037 {
0038 
0039 class ItemViewDelegate;
0040 
0041 class DIGIKAM_EXPORT ItemViewDelegatePrivate
0042 {
0043 public:
0044 
0045     explicit ItemViewDelegatePrivate();
0046     virtual ~ItemViewDelegatePrivate() = default;
0047 
0048     void init(ItemViewDelegate* const _q, QWidget* const _widget);
0049 
0050     void makeStarPolygon();
0051 
0052     /**
0053      * Resets cached rects. Remember to reimplement in subclass for added rects.
0054      */
0055     virtual void clearRects();
0056 
0057 public:
0058 
0059     int                       spacing;
0060     QSize                     gridSize;
0061 
0062     QRect                     rect;
0063     QRect                     ratingRect;
0064 
0065     QPixmap                   regPixmap;
0066     QPixmap                   selPixmap;
0067     QVector<QPixmap>          ratingPixmaps;
0068 
0069     QFont                     font;
0070     QFont                     fontReg;
0071     QFont                     fontCom;
0072     QFont                     fontXtra;
0073 
0074     QPolygon                  starPolygon;
0075     QSize                     starPolygonSize;
0076 
0077     ThumbnailSize             thumbSize;
0078 
0079     QPersistentModelIndex     editingRating;
0080 
0081     ItemViewDelegate*         q;
0082 
0083     QWidget*                  displayWidget;
0084 
0085     QRect                     oneRowRegRect;
0086     QRect                     oneRowComRect;
0087     QRect                     oneRowXtraRect;
0088 
0089     /// constant values for drawing
0090     int                       radius;
0091     int                       margin;
0092 
0093 private:
0094 
0095     Q_DISABLE_COPY(ItemViewDelegatePrivate)
0096 };
0097 
0098 } // namespace Digikam
0099 
0100 #endif // DIGIKAM_ITEM_VIEW_DELEGATE_P_H