25 #include <tqpainter.h>
27 #include <kcolordialog.h>
28 #include <kcolordrag.h>
30 #include "colorlistbox.h"
32 ColorListBox::ColorListBox( TQWidget *parent,
const char *name, WFlags f )
33 :TDEListBox( parent, name, f ), mCurrentOnDragEnter(-1)
35 connect(
this, TQ_SIGNAL(selected(
int)),
this, TQ_SLOT(newColor(
int)) );
36 setAcceptDrops(
true);
40 void ColorListBox::setEnabled(
bool state )
42 if( state == isEnabled() )
47 TQListBox::setEnabled( state );
48 for( uint i=0; i<count(); i++ )
55 void ColorListBox::setColor( uint index,
const TQColor &color )
59 ColorListItem *colorItem = (ColorListItem*)item(index);
60 colorItem->setColor(color);
61 updateItem( colorItem );
67 TQColor ColorListBox::color( uint index )
const
71 ColorListItem *colorItem = (ColorListItem*)item(index);
72 return( colorItem->color() );
81 void ColorListBox::newColor(
int index )
83 if( isEnabled() ==
false )
88 if( (uint)index < count() )
90 TQColor c = color( index );
91 if( KColorDialog::getColor( c,
this ) != TQDialog::Rejected )
99 void ColorListBox::dragEnterEvent( TQDragEnterEvent *e )
101 if( KColorDrag::canDecode(e) && isEnabled() )
103 mCurrentOnDragEnter = currentItem();
108 mCurrentOnDragEnter = -1;
114 void ColorListBox::dragLeaveEvent( TQDragLeaveEvent * )
116 if( mCurrentOnDragEnter != -1 )
118 setCurrentItem( mCurrentOnDragEnter );
119 mCurrentOnDragEnter = -1;
124 void ColorListBox::dragMoveEvent( TQDragMoveEvent *e )
126 if( KColorDrag::canDecode(e) && isEnabled() )
128 ColorListItem *item = (ColorListItem*)itemAt( e->pos() );
131 setCurrentItem ( item );
137 void ColorListBox::dropEvent( TQDropEvent *e )
140 if( KColorDrag::decode( e, color ) )
142 int index = currentItem();
145 ColorListItem *colorItem = (ColorListItem*)item(index);
146 colorItem->setColor(color);
147 triggerUpdate(
false );
149 mCurrentOnDragEnter = -1;
155 ColorListItem::ColorListItem(
const TQString &text,
const TQColor &color )
156 : TQListBoxItem(), mColor( color ), mBoxWidth( 30 )
162 const TQColor &ColorListItem::color(
void )
168 void ColorListItem::setColor(
const TQColor &color )
174 void ColorListItem::paint( TQPainter *p )
176 TQFontMetrics fm = p->fontMetrics();
179 p->drawText( mBoxWidth+3*2, fm.ascent() + fm.leading()/2, text() );
181 p->setPen( TQt::black );
182 p->drawRect( 3, 1, mBoxWidth, h-1 );
183 p->fillRect( 4, 2, mBoxWidth-2, h-3, mColor );
187 int ColorListItem::height(
const TQListBox *lb )
const
189 return( lb->fontMetrics().lineSpacing()+1 );
193 int ColorListItem::width(
const TQListBox *lb )
const
195 return( mBoxWidth + lb->fontMetrics().width( text() ) + 6 );
198 #include "colorlistbox.moc"