diff options
Diffstat (limited to 'filesharing/advanced/kcm_sambaconf/qmultichectdelistitem.cpp')
-rw-r--r-- | filesharing/advanced/kcm_sambaconf/qmultichectdelistitem.cpp | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/filesharing/advanced/kcm_sambaconf/qmultichectdelistitem.cpp b/filesharing/advanced/kcm_sambaconf/qmultichectdelistitem.cpp new file mode 100644 index 00000000..187289b6 --- /dev/null +++ b/filesharing/advanced/kcm_sambaconf/qmultichectdelistitem.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 ); + } + + } + + +} + + + |