(trunk qt) #3465 "add drag-and-drop support for adding torrents/magnets" -- added.

This commit is contained in:
Charles Kerr 2010-07-31 23:11:05 +00:00
parent 222261cb64
commit ef8ffe3512
2 changed files with 34 additions and 13 deletions

View File

@ -13,25 +13,14 @@
#include <cassert>
#include <iostream>
#include <QCheckBox>
#include <QCloseEvent>
#include <QDesktopServices>
#include <QFileDialog>
#include <QHBoxLayout>
#include <QInputDialog>
#include <QLabel>
#include <QMessageBox>
#include <QSignalMapper>
#include <QSize>
#include <QStyle>
#include <QSystemTrayIcon>
#include <QUrl>
#include <QtGui>
#include <libtransmission/transmission.h>
#include <libtransmission/utils.h>
#include <libtransmission/version.h>
#include "about.h"
#include "app.h"
#include "details.h"
#include "filterbar.h"
#include "filters.h"
@ -103,6 +92,8 @@ TrMainWindow :: TrMainWindow( Session& session, Prefs& prefs, TorrentModel& mode
myLastReadTime( 0 ),
myNetworkTimer( this )
{
setAcceptDrops( true );
QAction * sep = new QAction( this );
sep->setSeparator( true );
@ -1229,3 +1220,29 @@ TrMainWindow :: wrongAuthentication( )
mySession.stop( );
mySessionDialog->show( );
}
/***
****
***/
void
TrMainWindow :: dragEnterEvent( QDragEnterEvent * event )
{
const QMimeData * mime = event->mimeData( );
if( mime->hasFormat("application/x-bittorrent")
|| mime->text().trimmed().endsWith(".torrent", Qt::CaseInsensitive) )
event->acceptProposedAction();
}
void
TrMainWindow :: dropEvent( QDropEvent * event )
{
QString key = event->mimeData()->text().trimmed();
const QUrl url( key );
if( url.scheme() == "file" )
key = QUrl::fromPercentEncoding( url.path().toUtf8( ) );
dynamic_cast<MyApp*>(QApplication::instance())->addTorrent( key );
}

View File

@ -181,6 +181,10 @@ class TrMainWindow: public QMainWindow
public:
TrMainWindow( Session&, Prefs&, TorrentModel&, bool minized );
virtual ~TrMainWindow( );
protected:
virtual void dragEnterEvent( QDragEnterEvent * );
virtual void dropEvent( QDropEvent * );
};
#endif