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