summaryrefslogtreecommitdiff
path: root/noncore/unsupported/libopie/ocheckitem.cpp
Side-by-side diff
Diffstat (limited to 'noncore/unsupported/libopie/ocheckitem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/libopie/ocheckitem.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/noncore/unsupported/libopie/ocheckitem.cpp b/noncore/unsupported/libopie/ocheckitem.cpp
new file mode 100644
index 0000000..cd763c1
--- a/dev/null
+++ b/noncore/unsupported/libopie/ocheckitem.cpp
@@ -0,0 +1,105 @@
+/**********************************************************************
+** Copyright (C) 2002 Stefan Eilers (se, eilers.stefan@epost.de
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU Library General Public License version 2 as published by the
+** Free Software Foundation and appearing in the file LICENSE.GPL
+** included in the packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**********************************************************************/
+
+
+#include "ocheckitem.h"
+
+/**
+ * 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 );
+ }
+}