summaryrefslogtreecommitdiff
path: root/libopie2/opieui/ocheckitem.cpp
Side-by-side diff
Diffstat (limited to 'libopie2/opieui/ocheckitem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/ocheckitem.cpp127
1 files changed, 127 insertions, 0 deletions
diff --git a/libopie2/opieui/ocheckitem.cpp b/libopie2/opieui/ocheckitem.cpp
new file mode 100644
index 0000000..45f27ee
--- a/dev/null
+++ b/libopie2/opieui/ocheckitem.cpp
@@ -0,0 +1,127 @@
+/*
+ This file is part of the Opie Project
+ Copyright (C) Stefan Eilers <eilers.stefan@epost.de>
+ =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
+ .=l.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This program 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
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#include <opie2/ocheckitem.h>
+
+/* QT */
+#include <qpainter.h>
+
+using namespace Opie;
+
+/**
+ * Constructs an CheckItem with a QTable as parent
+ * and a sort key for.
+ * The sort key will be used by QTable to sort the table later
+ * @param t The parent QTable where the check item belongs
+ * @param key A sort key
+ */
+OCheckItem::OCheckItem( QTable *t, const QString &key )
+ :QTableItem( t, Never, "" ), m_checked( FALSE ), m_sortKey( key )
+{}
+
+/**
+ * reimplemted for internal reasons
+ * @return Returns the sort key of the Item
+ * @see QTableItem
+ */
+QString OCheckItem::key() const
+{
+ return m_sortKey;
+}
+
+/**
+ * This method can check or uncheck the item. It will
+ * call QTable to update the cell.
+ *
+ * @param b Whether to check or uncheck the item
+ */
+void OCheckItem::setChecked( bool b )
+{
+ m_checked = b;
+ table()->updateCell( row(), col() );
+}
+
+/**
+ * This will toggle the item. If it is checked it'll get
+ * unchecked by this method or vice versa.
+ */
+void OCheckItem::toggle()
+{
+ m_checked = !m_checked;
+}
+
+/**
+ * This will return the state of the item.
+ *
+ * @return Returns true if the item is checked
+ */
+bool OCheckItem::isChecked() const
+{
+ return m_checked;
+}
+
+/**
+ * @internal
+ * This paints the item
+ */
+void OCheckItem::paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool )
+{
+ p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) );
+
+ int marg = ( cr.width() - BoxSize ) / 2;
+ int x = 0;
+ int y = ( cr.height() - BoxSize ) / 2;
+ p->setPen( QPen( cg.text() ) );
+ p->drawRect( x + marg, y, BoxSize, BoxSize );
+ p->drawRect( x + marg+1, y+1, BoxSize-2, BoxSize-2 );
+ p->setPen( darkGreen );
+ x += 1;
+ y += 1;
+ if ( m_checked )
+ {
+ QPointArray a( 7*2 );
+ int i, xx, yy;
+ xx = x+1+marg;
+ yy = y+2;
+ for ( i=0; i<3; i++ )
+ {
+ a.setPoint( 2*i, xx, yy );
+ a.setPoint( 2*i+1, xx, yy+2 );
+ xx++; yy++;
+ }
+ yy -= 2;
+ for ( i=3; i<7; i++ )
+ {
+ a.setPoint( 2*i, xx, yy );
+ a.setPoint( 2*i+1, xx, yy+2 );
+ xx++; yy--;
+ }
+ p->drawLineSegments( a );
+ }
+}