-rw-r--r-- | libopie/ocheckitem.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/libopie/ocheckitem.cpp b/libopie/ocheckitem.cpp new file mode 100644 index 0000000..d6ddc79 --- a/dev/null +++ b/libopie/ocheckitem.cpp | |||
@@ -0,0 +1,75 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2002 Stefan Eilers (se, eilers.stefan@epost.de | ||
3 | ** | ||
4 | ** This file may be distributed and/or modified under the terms of the | ||
5 | ** GNU Library General Public License version 2 as published by the | ||
6 | ** Free Software Foundation and appearing in the file LICENSE.GPL | ||
7 | ** included in the packaging of this file. | ||
8 | ** | ||
9 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
10 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
11 | **********************************************************************/ | ||
12 | |||
13 | #include <qpainter.h> | ||
14 | |||
15 | #include "ocheckitem.h" | ||
16 | |||
17 | OCheckItem::OCheckItem( QTable *t, const QString &key ) | ||
18 | : QTableItem( t, Never, "" ), m_checked( FALSE ), m_sortKey( key ) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | QString OCheckItem::key() const | ||
23 | { | ||
24 | return m_sortKey; | ||
25 | } | ||
26 | |||
27 | void OCheckItem::setChecked( bool b ) | ||
28 | { | ||
29 | m_checked = b; | ||
30 | table()->updateCell( row(), col() ); | ||
31 | } | ||
32 | |||
33 | void OCheckItem::toggle() | ||
34 | { | ||
35 | m_checked = !m_checked; | ||
36 | } | ||
37 | |||
38 | bool OCheckItem::isChecked() const | ||
39 | { | ||
40 | return m_checked; | ||
41 | } | ||
42 | |||
43 | void OCheckItem::paint( QPainter *p, const QColorGroup &cg, const QRect &cr, | ||
44 | bool ) | ||
45 | { | ||
46 | p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) ); | ||
47 | |||
48 | int marg = ( cr.width() - BoxSize ) / 2; | ||
49 | int x = 0; | ||
50 | int y = ( cr.height() - BoxSize ) / 2; | ||
51 | p->setPen( QPen( cg.text() ) ); | ||
52 | p->drawRect( x + marg, y, BoxSize, BoxSize ); | ||
53 | p->drawRect( x + marg+1, y+1, BoxSize-2, BoxSize-2 ); | ||
54 | p->setPen( darkGreen ); | ||
55 | x += 1; | ||
56 | y += 1; | ||
57 | if ( m_checked ) { | ||
58 | QPointArray a( 7*2 ); | ||
59 | int i, xx, yy; | ||
60 | xx = x+1+marg; | ||
61 | yy = y+2; | ||
62 | for ( i=0; i<3; i++ ) { | ||
63 | a.setPoint( 2*i, xx, yy ); | ||
64 | a.setPoint( 2*i+1, xx, yy+2 ); | ||
65 | xx++; yy++; | ||
66 | } | ||
67 | yy -= 2; | ||
68 | for ( i=3; i<7; i++ ) { | ||
69 | a.setPoint( 2*i, xx, yy ); | ||
70 | a.setPoint( 2*i+1, xx, yy+2 ); | ||
71 | xx++; yy--; | ||
72 | } | ||
73 | p->drawLineSegments( a ); | ||
74 | } | ||
75 | } | ||