1
0
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:
Christian Muehlhaeuser 2014-10-04 09:43:11 +02:00
parent d7cf97d4b7
commit 772690aff6

View File

@ -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 );
}