mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-03-20 07:49:42 +01:00
* Fixed crash and simplified code in QueryLabel.
This commit is contained in:
parent
d7cf97d4b7
commit
772690aff6
@ -95,46 +95,20 @@ QueryLabel::init()
|
||||
QString
|
||||
QueryLabel::text() const
|
||||
{
|
||||
if ( m_result.isNull() && m_query.isNull() && m_artist.isNull() && m_album.isNull() )
|
||||
if ( !m_result && !m_query && !m_artist && !m_album )
|
||||
return m_text;
|
||||
|
||||
if ( !m_result.isNull() )
|
||||
if ( m_type & Artist && artist() )
|
||||
{
|
||||
if ( m_type & Artist )
|
||||
{
|
||||
return m_result->track()->artist();
|
||||
}
|
||||
if ( m_type & Album && !m_result->track()->album().isEmpty() )
|
||||
{
|
||||
return m_result->track()->album();
|
||||
}
|
||||
if ( m_type & Track )
|
||||
{
|
||||
return m_result->track()->track();
|
||||
}
|
||||
return artist()->name();
|
||||
}
|
||||
else if ( !m_query.isNull() )
|
||||
else if ( m_type & Album && album() )
|
||||
{
|
||||
if ( m_type & Artist )
|
||||
{
|
||||
return m_query->track()->artist();
|
||||
}
|
||||
if ( m_type & Album && !m_query->track()->album().isEmpty() )
|
||||
{
|
||||
return m_query->track()->album();
|
||||
}
|
||||
if ( m_type & Track )
|
||||
{
|
||||
return m_query->track()->track();
|
||||
}
|
||||
return album()->name();
|
||||
}
|
||||
else if ( m_type & Artist && !m_artist.isNull() )
|
||||
else if ( m_type & Track && query() )
|
||||
{
|
||||
return m_artist->name();
|
||||
}
|
||||
else if ( m_type & Album && !m_album.isNull() )
|
||||
{
|
||||
return m_album->name();
|
||||
return query()->track()->track();
|
||||
}
|
||||
|
||||
return QString();
|
||||
@ -428,19 +402,23 @@ QueryLabel::leaveEvent( QEvent* event )
|
||||
void
|
||||
QueryLabel::startDrag()
|
||||
{
|
||||
if ( m_query.isNull() && m_album.isNull() && m_artist.isNull() )
|
||||
return;
|
||||
|
||||
QDrag *drag = new QDrag( this );
|
||||
QDrag* drag = new QDrag( this );
|
||||
QByteArray data;
|
||||
QDataStream dataStream( &data, QIODevice::WriteOnly );
|
||||
QMimeData* mimeData = new QMimeData();
|
||||
mimeData->setText( text() );
|
||||
|
||||
bool failed = false;
|
||||
switch( m_type )
|
||||
{
|
||||
case Artist:
|
||||
{
|
||||
if ( !artist() )
|
||||
{
|
||||
failed = true;
|
||||
break;
|
||||
}
|
||||
|
||||
dataStream << artist()->name();
|
||||
mimeData->setData( "application/tomahawk.metadata.artist", data );
|
||||
drag->setPixmap( TomahawkUtils::createDragPixmap( TomahawkUtils::MediaTypeArtist ) );
|
||||
@ -448,6 +426,12 @@ QueryLabel::startDrag()
|
||||
}
|
||||
case Album:
|
||||
{
|
||||
if ( !album() )
|
||||
{
|
||||
failed = true;
|
||||
break;
|
||||
}
|
||||
|
||||
dataStream << artist()->name();
|
||||
dataStream << album()->name();
|
||||
mimeData->setData( "application/tomahawk.metadata.album", data );
|
||||
@ -457,6 +441,12 @@ QueryLabel::startDrag()
|
||||
|
||||
default:
|
||||
{
|
||||
if ( !query() )
|
||||
{
|
||||
failed = true;
|
||||
break;
|
||||
}
|
||||
|
||||
dataStream << qlonglong( &m_query );
|
||||
mimeData->setData( "application/tomahawk.query.list", data );
|
||||
drag->setPixmap( TomahawkUtils::createDragPixmap( TomahawkUtils::MediaTypeTrack ) );
|
||||
@ -464,11 +454,16 @@ QueryLabel::startDrag()
|
||||
}
|
||||
}
|
||||
|
||||
drag->setMimeData( mimeData );
|
||||
if ( failed )
|
||||
{
|
||||
delete mimeData;
|
||||
delete drag;
|
||||
return;
|
||||
}
|
||||
|
||||
// QPoint hotSpot = event->pos() - child->pos();
|
||||
// drag->setHotSpot( hotSpot );
|
||||
|
||||
drag->setMimeData( mimeData );
|
||||
drag->exec( Qt::CopyAction );
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user