summaryrefslogtreecommitdiffstats
path: root/filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp')
-rw-r--r--filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp159
1 files changed, 159 insertions, 0 deletions
diff --git a/filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp b/filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp
new file mode 100644
index 00000000..187289b6
--- /dev/null
+++ b/filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp
@@ -0,0 +1,159 @@
+/***************************************************************************
+ qmultichecklistitem.cpp - description
+ -------------------
+ begin : Sun Jan 26 2003
+ copyright : (C) 2003 by Jan Sch�fer
+ email : janschaefer@users.sourceforge.net
+ ***************************************************************************/
+
+/******************************************************************************
+ * *
+ * This file is part of KSambaPlugin. *
+ * *
+ * KSambaPlugin is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * KSambaPlugin 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with KSambaPlugin; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ * *
+ ******************************************************************************/
+
+#include <tqpen.h>
+#include <tqpainter.h>
+#include <tqvbox.h>
+#include <tqheader.h>
+
+#include <kdebug.h>
+#include <kmessagebox.h>
+
+#include "qmultichecklistitem.moc"
+#include "qmultichecklistitem.h"
+
+static const int BoxSize = 16;
+
+
+QMultiCheckListItem::QMultiCheckListItem( TQListView *parent=0) :
+ TQListViewItem(parent) {
+}
+
+void QMultiCheckListItem::setOn(int column, bool b) {
+ if (column >= (int) checkBoxColumns.size()) {
+ checkBoxColumns.resize(column*2);
+ checkStates.resize(column*2);
+ }
+
+ checkStates.setBit(column,b);
+ checkBoxColumns.setBit(column);
+ kdDebug(5009) << "setOn : " << column << endl;
+ repaint();
+}
+
+bool QMultiCheckListItem::isOn(int column) {
+ return checkStates.testBit(column);
+}
+
+bool QMultiCheckListItem::isDisabled(int column) {
+ return disableStates.testBit(column);
+}
+
+void QMultiCheckListItem::toggle(int column) {
+ if (column >= (int) checkBoxColumns.size()) {
+ checkBoxColumns.resize(column*2);
+ checkStates.resize(column*2);
+ }
+
+ checkBoxColumns.setBit(column);
+ checkStates.toggleBit(column);
+ emit stateChanged(column,checkStates.testBit(column));
+
+ repaint();
+}
+
+void QMultiCheckListItem::setDisabled(int column, bool b) {
+ if (column >= (int) disableStates.size()) {
+ disableStates.resize(column*2);
+ }
+
+ disableStates.setBit(column,b);
+// KMessageBox::information(0L,TQString("setDisabled"),TQString("disable %1 ").arg(column));
+ repaint();
+}
+
+void QMultiCheckListItem::paintCell(TQPainter *p,const TQColorGroup & cg, int col, int width, int align)
+{
+
+ if ( !p )
+ return;
+
+ TQListView *lv = listView();
+ if ( !lv )
+ return;
+
+ TQListViewItem::paintCell(p,cg,col,width,align );
+
+ int marg = lv->itemMargin();
+// int width = BoxSize + marg*2;
+ // use a provate color group and set the text/highlighted text colors
+ TQColorGroup mcg = cg;
+
+ if (checkBoxColumns.testBit(col)) {
+ // Bold/Italic/use default checkboxes
+ // code allmost identical to TQCheckListItem
+ Q_ASSERT( lv ); //###
+ // I use the text color of defaultStyles[0], normalcol in parent listview
+// mcg.setColor( TQColorGroup::Text, ((StyleListView*)lv)->normalcol );
+ int x = 0;
+ if ( align == AlignCenter ) {
+ TQFontMetrics fm( lv->font() );
+ x = (width - BoxSize - fm.width(text(0)))/2;
+ }
+ int y = (height() - BoxSize) / 2;
+
+ if ( !isEnabled() || disableStates.testBit(col))
+ p->setPen( TQPen( lv->palette().color( TQPalette::Disabled, TQColorGroup::Text ), 2 ) );
+ else
+ p->setPen( TQPen( mcg.text(), 2 ) );
+
+ if ( isSelected() && lv->header()->mapToSection( 0 ) != 0 ) {
+ p->fillRect( 0, 0, x + marg + BoxSize + 4, height(),
+ mcg.brush( TQColorGroup::Highlight ) );
+ if ( isEnabled() )
+ p->setPen( TQPen( mcg.highlightedText(), 2 ) ); // FIXME! - use defaultstyles[0].selecol. luckily not used :)
+ }
+ p->drawRect( x+marg, y+2, BoxSize-4, BoxSize-4 );
+ x++;
+ y++;
+ if ( checkStates.testBit(col) ) {
+ TQPointArray a( 7*2 );
+ int i, xx, yy;
+ xx = x+1+marg;
+ yy = y+5;
+ 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 );
+ }
+
+ }
+
+
+}
+
+
+