diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | bcb704366cb5e333a626c18c308c7e0448a8e69f (patch) | |
tree | f0d6ab7d78ecdd9207cf46536376b44b91a1ca71 /filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp | |
download | tdenetwork-bcb704366cb5e333a626c18c308c7e0448a8e69f.tar.gz tdenetwork-bcb704366cb5e333a626c18c308c7e0448a8e69f.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdenetwork@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp')
-rw-r--r-- | filesharing/advanced/kcm_sambaconf/qmultichecklistitem.cpp | 159 |
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..44383f6d --- /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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ******************************************************************************/ + +#include <qpen.h> +#include <qpainter.h> +#include <qvbox.h> +#include <qheader.h> + +#include <kdebug.h> +#include <kmessagebox.h> + +#include "qmultichecklistitem.moc" +#include "qmultichecklistitem.h" + +static const int BoxSize = 16; + + +QMultiCheckListItem::QMultiCheckListItem( QListView *parent=0) : + QListViewItem(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,QString("setDisabled"),QString("disable %1 ").arg(column)); + repaint(); +} + +void QMultiCheckListItem::paintCell(QPainter *p,const QColorGroup & cg, int col, int width, int align) +{ + + if ( !p ) + return; + + QListView *lv = listView(); + if ( !lv ) + return; + + QListViewItem::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 + QColorGroup mcg = cg; + + if (checkBoxColumns.testBit(col)) { + // Bold/Italic/use default checkboxes + // code allmost identical to QCheckListItem + Q_ASSERT( lv ); //### + // I use the text color of defaultStyles[0], normalcol in parent listview +// mcg.setColor( QColorGroup::Text, ((StyleListView*)lv)->normalcol ); + int x = 0; + if ( align == AlignCenter ) { + QFontMetrics fm( lv->font() ); + x = (width - BoxSize - fm.width(text(0)))/2; + } + int y = (height() - BoxSize) / 2; + + if ( !isEnabled() || disableStates.testBit(col)) + p->setPen( QPen( lv->palette().color( QPalette::Disabled, QColorGroup::Text ), 2 ) ); + else + p->setPen( QPen( mcg.text(), 2 ) ); + + if ( isSelected() && lv->header()->mapToSection( 0 ) != 0 ) { + p->fillRect( 0, 0, x + marg + BoxSize + 4, height(), + mcg.brush( QColorGroup::Highlight ) ); + if ( isEnabled() ) + p->setPen( QPen( 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) ) { + QPointArray 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 ); + } + + } + + +} + + + |