1
mirror of https://code.videolan.org/videolan/vlc synced 2024-07-17 05:01:41 +02:00

DnD from Internet Explorer to VLC and support of links (*.lnk)

On Windows a Drag and Drop seems to be a Qt::LinkAction. And support for
symbolic links is added.

Playlist widget now uses the p_mi->dropEvent (used to have two implementation,
one calling p_mi->dropEvent already, the other had its own body. That body is
removed)

Regards,
Mario

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
This commit is contained in:
Mario Speiß 2013-02-10 22:31:59 +01:00 committed by Jean-Baptiste Kempf
parent 7b621263ee
commit 934eee8ce7
2 changed files with 24 additions and 13 deletions

View File

@ -82,15 +82,7 @@ PlaylistDialog::~PlaylistDialog()
void PlaylistDialog::dropEvent( QDropEvent *event )
{
const QMimeData *mimeData = event->mimeData();
foreach( const QUrl &url, mimeData->urls() ) {
QString s = toNativeSeparators( url.toString() );
if( s.length() > 0 ) {
playlist_Add( THEPL, qtu(s), NULL,
PLAYLIST_APPEND, PLAYLIST_END, true, false );
}
}
event->acceptProposedAction();
playlistWidget->dropEvent(event);
}
void PlaylistDialog::dragEnterEvent( QDragEnterEvent *event )
{

View File

@ -59,6 +59,7 @@
#include <QStatusBar>
#include <QLabel>
#include <QStackedWidget>
#include <QFileInfo>
#include <vlc_keys.h> /* Wheel event */
#include <vlc_vout_display.h> /* vout_thread_t and VOUT_ events */
@ -1268,7 +1269,7 @@ void MainInterface::dropEvent(QDropEvent *event)
*/
void MainInterface::dropEventPlay( QDropEvent *event, bool b_play, bool b_playlist )
{
if( event->possibleActions() & ( Qt::CopyAction | Qt::MoveAction ) )
if( event->possibleActions() & ( Qt::CopyAction | Qt::MoveAction | Qt::LinkAction ) )
event->setDropAction( Qt::CopyAction );
else
return;
@ -1293,11 +1294,29 @@ void MainInterface::dropEventPlay( QDropEvent *event, bool b_play, bool b_playli
if( url.isValid() )
{
QString mrl = toURI( url.toEncoded().constData() );
playlist_Add( THEPL, qtu(mrl), NULL,
QFileInfo info( url.toLocalFile() );
if( info.exists() && info.isSymLink() )
{
QString target = info.symLinkTarget();
QUrl url;
if( QFile::exists( target ) )
{
url = QUrl::fromLocalFile( target );
}
else
{
url.setUrl( target );
}
mrl = toURI( url.toEncoded().constData() );
}
if( mrl.length() > 0 )
{
playlist_Add( THEPL, qtu(mrl), NULL,
PLAYLIST_APPEND | (first ? PLAYLIST_GO: PLAYLIST_PREPARSE),
PLAYLIST_END, b_playlist, pl_Unlocked );
first = false;
RecentsMRL::getInstance( p_intf )->addRecent( mrl );
first = false;
RecentsMRL::getInstance( p_intf )->addRecent( mrl );
}
}
}