summaryrefslogtreecommitdiff
path: root/libopie/ocheckitem.cpp
Unidiff
Diffstat (limited to 'libopie/ocheckitem.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libopie/ocheckitem.cpp75
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
17OCheckItem::OCheckItem( QTable *t, const QString &key )
18 : QTableItem( t, Never, "" ), m_checked( FALSE ), m_sortKey( key )
19{
20}
21
22QString OCheckItem::key() const
23{
24 return m_sortKey;
25}
26
27void OCheckItem::setChecked( bool b )
28{
29 m_checked = b;
30 table()->updateCell( row(), col() );
31}
32
33void OCheckItem::toggle()
34{
35 m_checked = !m_checked;
36}
37
38bool OCheckItem::isChecked() const
39{
40 return m_checked;
41}
42
43void 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}