summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ocheckitem.cpp75
-rw-r--r--libopie/ocheckitem.h41
2 files changed, 116 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}
diff --git a/libopie/ocheckitem.h b/libopie/ocheckitem.h
new file mode 100644
index 0000000..7885032
--- a/dev/null
+++ b/libopie/ocheckitem.h
@@ -0,0 +1,41 @@
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#include <qtable.h>
13
14#ifndef CHECKITEM_H__
15#define CHECKITEM_H__
16
17class OCheckItem : public QTableItem
18{
19public:
20 enum Size { BoxSize = 10 };
21 OCheckItem( QTable *t, const QString &sortkey );
22
23 virtual void setChecked( bool b );
24 virtual void toggle();
25 bool isChecked() const;
26 void setKey( const QString &key ) { m_sortKey = key; }
27 virtual QString key() const;
28
29 void paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected );
30
31 //static const int BoxSize = 10;
32
33private:
34 class OCheckItemPrivate;
35 OCheckItemPrivate *d;
36 bool m_checked: 1;
37 QString m_sortKey;
38
39};
40
41#endif