File: IconViewItem.h

package info (click to toggle)
qtop 2.3.4-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,976 kB
  • sloc: cpp: 40,477; makefile: 7
file content (148 lines) | stat: -rw-r--r-- 2,984 bytes parent folder | download | duplicates (3)
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#ifndef IconViewItem_h
#define IconViewItem_h

/******************************************************************************
*
* Copyright (C) 2002 Hugo PEREIRA <mailto: hugo.pereira@free.fr>
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT
* Any WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program.  If not, see <http://www.gnu.org/licenses/>.
*
*******************************************************************************/

#include "Counter.h"
#include "CustomPixmap.h"

#include <QRect>

#include <QPainter>
#include <QStyleOption>

//* graphics item
class IconViewItem final: private Base::Counter<IconViewItem>
{

    public:

    //* constructor
    explicit IconViewItem():
        Counter( "IconView::Item" )
    {}

    //*@name accessors
    //@{

    //* icon
    const CustomPixmap& pixmap() const
    { return pixmap_; }

    //* text
    const QString& text() const
    { return text_; }

    //* position
    QPoint position() const
    { return position_; }

    //* row
    int row() const
    { return row_; }

    //* column
    int column() const
    { return column_; }

    //* bounding rect
    QRect boundingRect() const;

    //@}

    //*@name modifiers
    //@{

    //* set icon
    void setPixmap( const CustomPixmap& pixmap )
    {
        const bool changed( pixmap_.size() != pixmap.size() );
        pixmap_ = pixmap;
        if( changed ) dirty_ = true;
    }

    //* set text
    void setText( const QString& text )
    {
        if( text_ == text ) return;
        text_ = text;
        dirty_ = true;
    }

    //* set position
    void setPosition( const QPoint& position )
    { position_ = position; }

    //* set location
    void setLocation( int row, int column )
    {
        row_ = row;
        column_ = column;
    }

    //@}

    //* item map
    using Map = QMap<int, IconViewItem>;

    //* item list
    using List = QList<IconViewItem>;

    //* paint
    void paint( QPainter*, const QStyleOption*, QWidget* ) const;

    //*@name metrics
    //@{
    static const int margin;
    static const int spacing;
    static const int maxTextWidth;
    //@}

    protected:

    //* update bounding rect
    void _updateBoundingRect();

    private:

    //* dirty
    bool dirty_ = true;

    //* pixmap
    CustomPixmap pixmap_;

    //* text
    QString text_;

    //* bounding rect
    QRect boundingRect_;

    //* position
    QPoint position_;

    //* row and column index
    int row_ = -1;

    //* column
    int column_ = -1;

};

#endif