mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 14:16:32 +02:00
dropping "All items" and "Only local items" works now
This commit is contained in:
@@ -96,9 +96,10 @@ DropJob::acceptsMimeData( const QMimeData* data, bool tracksOnly )
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
DropJob::tracksFromMimeData( const QMimeData* data, bool allowDuplicates )
|
DropJob::tracksFromMimeData( const QMimeData* data, bool allowDuplicates, bool onlyLocal )
|
||||||
{
|
{
|
||||||
m_allowDuplicates = allowDuplicates;
|
m_allowDuplicates = allowDuplicates;
|
||||||
|
m_onlyLocal = onlyLocal;
|
||||||
|
|
||||||
parseMimeData( data );
|
parseMimeData( data );
|
||||||
|
|
||||||
@@ -107,6 +108,9 @@ DropJob::tracksFromMimeData( const QMimeData* data, bool allowDuplicates )
|
|||||||
if ( !allowDuplicates )
|
if ( !allowDuplicates )
|
||||||
removeDuplicates();
|
removeDuplicates();
|
||||||
|
|
||||||
|
if ( onlyLocal )
|
||||||
|
removeRemoteSources();
|
||||||
|
|
||||||
emit tracks( m_resultList );
|
emit tracks( m_resultList );
|
||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
@@ -339,6 +343,9 @@ DropJob::onTracksAdded( const QList<Tomahawk::query_ptr>& tracksList )
|
|||||||
if ( !m_allowDuplicates )
|
if ( !m_allowDuplicates )
|
||||||
removeDuplicates();
|
removeDuplicates();
|
||||||
|
|
||||||
|
if ( m_onlyLocal )
|
||||||
|
removeRemoteSources();
|
||||||
|
|
||||||
emit tracks( m_resultList );
|
emit tracks( m_resultList );
|
||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
@@ -361,3 +368,16 @@ DropJob::removeDuplicates()
|
|||||||
}
|
}
|
||||||
m_resultList = list;
|
m_resultList = list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DropJob::removeRemoteSources()
|
||||||
|
{
|
||||||
|
QList< Tomahawk::query_ptr > list;
|
||||||
|
foreach ( const Tomahawk::query_ptr& item, m_resultList )
|
||||||
|
{
|
||||||
|
if ( !item->results().isEmpty() && item->results().first()->collection()->source() )
|
||||||
|
if ( item->results().first()->collection()->source()->isLocal() )
|
||||||
|
list.append( item );
|
||||||
|
}
|
||||||
|
m_resultList = list;
|
||||||
|
}
|
||||||
|
@@ -43,7 +43,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
static bool acceptsMimeData( const QMimeData* data, bool tracksOnly = true );
|
static bool acceptsMimeData( const QMimeData* data, bool tracksOnly = true );
|
||||||
static QStringList mimeTypes();
|
static QStringList mimeTypes();
|
||||||
void tracksFromMimeData( const QMimeData* data, bool allowDuplicates = false );
|
void tracksFromMimeData( const QMimeData* data, bool allowDuplicates = false, bool onlyLocal = false );
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
/// QMimeData parsing results
|
/// QMimeData parsing results
|
||||||
@@ -66,9 +66,11 @@ private:
|
|||||||
QList< Tomahawk::query_ptr > tracksFromMixedData( const QMimeData* d );
|
QList< Tomahawk::query_ptr > tracksFromMixedData( const QMimeData* d );
|
||||||
|
|
||||||
void removeDuplicates();
|
void removeDuplicates();
|
||||||
|
void removeRemoteSources();
|
||||||
|
|
||||||
int m_queryCount;
|
int m_queryCount;
|
||||||
bool m_allowDuplicates;
|
bool m_allowDuplicates;
|
||||||
|
bool m_onlyLocal;
|
||||||
|
|
||||||
QList< Tomahawk::query_ptr > m_resultList;
|
QList< Tomahawk::query_ptr > m_resultList;
|
||||||
};
|
};
|
||||||
|
@@ -158,7 +158,11 @@ PlaylistItem::dropMimeData( const QMimeData* data, Qt::DropAction action )
|
|||||||
|
|
||||||
DropJob *dj = new DropJob();
|
DropJob *dj = new DropJob();
|
||||||
connect( dj, SIGNAL( tracks( QList< Tomahawk::query_ptr > ) ), this, SLOT( parsedDroppedTracks( QList< Tomahawk::query_ptr > ) ) );
|
connect( dj, SIGNAL( tracks( QList< Tomahawk::query_ptr > ) ), this, SLOT( parsedDroppedTracks( QList< Tomahawk::query_ptr > ) ) );
|
||||||
dj->tracksFromMimeData( data );
|
|
||||||
|
if ( dropType() == DropTypeLocalItems )
|
||||||
|
dj->tracksFromMimeData( data, false, true );
|
||||||
|
else
|
||||||
|
dj->tracksFromMimeData( data, false, false );
|
||||||
|
|
||||||
// TODO cant' know if it works or not yet...
|
// TODO cant' know if it works or not yet...
|
||||||
return true;
|
return true;
|
||||||
|
@@ -68,6 +68,7 @@ public:
|
|||||||
virtual int IDValue() const { return 0; }
|
virtual int IDValue() const { return 0; }
|
||||||
virtual DropTypes supportedDropTypes() const { return DropTypesNone; }
|
virtual DropTypes supportedDropTypes() const { return DropTypesNone; }
|
||||||
virtual void setDropType( DropType type ) { m_dropType = type; }
|
virtual void setDropType( DropType type ) { m_dropType = type; }
|
||||||
|
virtual DropType dropType() const { return m_dropType; }
|
||||||
|
|
||||||
/// don't call me unless you are a sourcetreeitem. i prefer this to making everyone a friend
|
/// don't call me unless you are a sourcetreeitem. i prefer this to making everyone a friend
|
||||||
void beginRowsAdded( int from, int to ) { emit beginChildRowsAdded( from, to ); }
|
void beginRowsAdded( int from, int to ) { emit beginChildRowsAdded( from, to ); }
|
||||||
|
@@ -501,11 +501,11 @@ SourceTreeView::dropEvent( QDropEvent* event )
|
|||||||
|
|
||||||
item->setDropType( m_delegate->hoveredDropType() );
|
item->setDropType( m_delegate->hoveredDropType() );
|
||||||
qDebug() << "dropType is " << m_delegate->hoveredDropType();
|
qDebug() << "dropType is " << m_delegate->hoveredDropType();
|
||||||
m_delegate->setDropHoverIndex( QModelIndex() );
|
|
||||||
dataChanged( index, index );
|
|
||||||
QTreeView::dropEvent( event );
|
QTreeView::dropEvent( event );
|
||||||
m_dragging = false;
|
m_dragging = false;
|
||||||
m_dropIndex = QPersistentModelIndex();
|
m_dropIndex = QPersistentModelIndex();
|
||||||
|
m_delegate->setDropHoverIndex( QModelIndex() );
|
||||||
|
dataChanged( index, index );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user