Source Code (Use browser search to find items of interest.)
Class Index
khexedit'CDragLabel (./kdeutils/khexedit/draglabel.h:31)
class CDragLabel: public QLabel
{
Q_OBJECT
public:
CDragLabel( QWidget *parent, const char *name = 0 );
~CDragLabel( void );
void setUrl( const QString &url );
void setDragMask( const QPixmap pix );
protected:
void mousePressEvent( QMouseEvent * );
void mouseMoveEvent( QMouseEvent * );
void mouseReleaseEvent( QMouseEvent * );
private:
void prepPixmap( QUriDrag &uriDrag );
private:
bool mValid;
QString mUrl;
QBitmap mDragMask;
bool mDragPending;
QPoint mDragOrigin;
};
khexedit'CDragLabel::CDragLabel() (./kdeutils/khexedit/draglabel.cc:35)
CDragLabel::CDragLabel( QWidget *parent, const char *name )
: QLabel( "draglabel", parent, name )
{
mValid = true;
mDragPending = false;
}
khexedit'CDragLabel::~CDragLabel() (./kdeutils/khexedit/draglabel.cc:43)
CDragLabel::~CDragLabel( void )
{
}
khexedit'CDragLabel::mousePressEvent() (./kdeutils/khexedit/draglabel.cc:48)
void CDragLabel::mousePressEvent( QMouseEvent *e )
{
if( mValid == false || e->button() != LeftButton || mUrl.isEmpty() == true )
{
return;
}
mDragOrigin = e->pos();
mDragPending = true;
}
khexedit'CDragLabel::mouseMoveEvent() (./kdeutils/khexedit/draglabel.cc:60)
void CDragLabel::mouseMoveEvent( QMouseEvent *e )
{
if( mDragPending == true )
{
if( abs(e->x() - mDragOrigin.x()) + abs(e->y() - mDragOrigin.y()) > 5 )
{
mDragPending = false;
QStringList list;
list.append( mUrl );
//
// Make drag object, assign pixmap and grab keyboard. The grabbing
// will allow ESC to abort the drag
//
QUriDrag *uriDrag = new QUriDrag( this );
if( uriDrag == 0 ) { return; }
uriDrag->setUnicodeUris( list );
prepPixmap( *uriDrag );
grabKeyboard();
uriDrag->drag();
releaseKeyboard();
}
}
}
khexedit'CDragLabel::mouseReleaseEvent() (./kdeutils/khexedit/draglabel.cc:86)
void CDragLabel::mouseReleaseEvent( QMouseEvent * )
{
mDragPending = false;
}
khexedit'CDragLabel::setUrl() (./kdeutils/khexedit/draglabel.cc:92)
void CDragLabel::setUrl( const QString &url )
{
mUrl = url;
}
khexedit'CDragLabel::setDragMask() (./kdeutils/khexedit/draglabel.cc:98)
void CDragLabel::setDragMask( const QPixmap pix )
{
mDragMask = pix;
}
khexedit'CDragLabel::prepPixmap() (./kdeutils/khexedit/draglabel.cc:104)
void CDragLabel::prepPixmap( QUriDrag &uriDrag )
{
if( pixmap() == 0 )
{
return;
}
QString text;
int index = mUrl.findRev( '/', mUrl.length() );
if( index < 0 )
{
text = mUrl;
}
else
{
text = mUrl.right( mUrl.length() - index - 1 );
}
int sep = 2;
QRect rect = fontMetrics().boundingRect(text);
int w = pixmap()->width() + rect.width() + sep + 2;
int h = fontMetrics().lineSpacing();
if( pixmap()->height() > h ) { h = pixmap()->height(); }
QBitmap mask( w, h, TRUE );
QPixmap dragPixmap( w, h );
dragPixmap.fill( black );
QPainter p;
p.begin( &mask );
p.setPen( white );
p.drawPixmap( 0, 0, mDragMask );
p.drawText( pixmap()->width()+sep, 0, w-pixmap()->width()+sep,
h, AlignVCenter|AlignLeft, text );
p.end();
p.begin( &dragPixmap );
p.drawPixmap( 0, 0, *pixmap() );
p.end();
dragPixmap.setMask( mask );
QPoint hotspot( pixmap()->width(), pixmap()->height()/2 );
uriDrag.setPixmap( dragPixmap, hotspot );
}