21 #include <tqpainter.h>
23 #include <kcolordialog.h>
24 #include <kcolordrag.h>
26 #include "colorlistbox.h"
28 ColorListBox::ColorListBox( TQWidget *parent,
const char *name, WFlags f )
29 :TDEListBox( parent, name, f ), mCurrentOnDragEnter(-1)
31 connect(
this, TQ_SIGNAL(selected(
int)),
this, TQ_SLOT(newColor(
int)) );
32 setAcceptDrops(
true);
36 void ColorListBox::setEnabled(
bool state )
38 if( state == isEnabled() )
43 TQListBox::setEnabled( state );
44 for( uint i=0; i<count(); i++ )
51 void ColorListBox::setColor( uint index,
const TQColor &color )
55 ColorListItem *colorItem = (ColorListItem*)item(index);
56 colorItem->setColor(color);
57 updateItem( colorItem );
62 TQColor ColorListBox::color( uint index )
const
66 ColorListItem *colorItem = (ColorListItem*)item(index);
67 return( colorItem->color() );
76 void ColorListBox::newColor(
int index )
78 if( isEnabled() ==
false )
83 if( (uint)index < count() )
85 TQColor c = color( index );
86 if( KColorDialog::getColor( c,
this ) != TQDialog::Rejected )
94 void ColorListBox::dragEnterEvent( TQDragEnterEvent *e )
96 if( KColorDrag::canDecode(e) && isEnabled() )
98 mCurrentOnDragEnter = currentItem();
103 mCurrentOnDragEnter = -1;
109 void ColorListBox::dragLeaveEvent( TQDragLeaveEvent * )
111 if( mCurrentOnDragEnter != -1 )
113 setCurrentItem( mCurrentOnDragEnter );
114 mCurrentOnDragEnter = -1;
119 void ColorListBox::dragMoveEvent( TQDragMoveEvent *e )
121 if( KColorDrag::canDecode(e) && isEnabled() )
123 ColorListItem *item = (ColorListItem*)itemAt( e->pos() );
126 setCurrentItem ( item );
132 void ColorListBox::dropEvent( TQDropEvent *e )
135 if( KColorDrag::decode( e, color ) )
137 int index = currentItem();
140 ColorListItem *colorItem = (ColorListItem*)item(index);
141 colorItem->setColor(color);
142 triggerUpdate(
false );
144 mCurrentOnDragEnter = -1;
150 ColorListItem::ColorListItem(
const TQString &text,
const TQColor &color )
151 : TQListBoxItem(), mColor( color ), mBoxWidth( 30 )
157 const TQColor &ColorListItem::color(
void )
163 void ColorListItem::setColor(
const TQColor &color )
169 void ColorListItem::paint( TQPainter *p )
171 TQFontMetrics fm = p->fontMetrics();
174 p->drawText( mBoxWidth+3*2, fm.ascent() + fm.leading()/2, text() );
176 p->setPen( TQt::black );
177 p->drawRect( 3, 1, mBoxWidth, h-1 );
178 p->fillRect( 4, 2, mBoxWidth-2, h-3, mColor );
182 int ColorListItem::height(
const TQListBox *lb )
const
184 return( lb->fontMetrics().lineSpacing()+1 );
188 int ColorListItem::width(
const TQListBox *lb )
const
190 return( mBoxWidth + lb->fontMetrics().width( text() ) + 6 );
193 #include "colorlistbox.moc"