|
29 | 29 | #include <QDesktopServices> |
30 | 30 | #include <QDialog> |
31 | 31 | #include <QDir> |
| 32 | +#include <QDragEnterEvent> |
| 33 | +#include <QDropEvent> |
32 | 34 | #include <QEvent> |
33 | 35 | #include <QFile> |
34 | 36 | #include <QFileDialog> |
|
41 | 43 | #include <QMenu> |
42 | 44 | #include <QMenuBar> |
43 | 45 | #include <QMessageBox> |
| 46 | +#include <QMimeData> |
44 | 47 | #include <QObject> |
45 | 48 | #include <QPixmap> |
46 | 49 | #include <QPrinter> |
@@ -104,6 +107,8 @@ MainWindow::MainWindow( const QStringList& arguments ) |
104 | 107 | // UIC stuff |
105 | 108 | setupUi( this ); |
106 | 109 |
|
| 110 | + setAcceptDrops( true ); |
| 111 | + |
107 | 112 | // Set up layout direction |
108 | 113 | if ( pConfig->m_advLayoutDirectionRL ) |
109 | 114 | qApp->setLayoutDirection( Qt::RightToLeft ); |
@@ -608,6 +613,45 @@ void MainWindow::closeEvent( QCloseEvent* e ) |
608 | 613 | QMainWindow::closeEvent( e ); |
609 | 614 | } |
610 | 615 |
|
| 616 | +void MainWindow::dragEnterEvent( QDragEnterEvent* e ) |
| 617 | +{ |
| 618 | + if ( e->mimeData()->hasUrls() ) |
| 619 | + { |
| 620 | + QUrl url = e->mimeData()->urls().first(); |
| 621 | + |
| 622 | + if ( url.isLocalFile() ) |
| 623 | + { |
| 624 | + QString fileName = url.toLocalFile(); |
| 625 | + |
| 626 | + if ( fileName.endsWith( ".chm", Qt::CaseInsensitive ) || fileName.endsWith( ".epub", Qt::CaseInsensitive ) ) |
| 627 | + { |
| 628 | + e->acceptProposedAction(); |
| 629 | + return; |
| 630 | + } |
| 631 | + } |
| 632 | + } |
| 633 | + |
| 634 | + e->ignore(); |
| 635 | +} |
| 636 | + |
| 637 | +void MainWindow::dropEvent( QDropEvent* e ) |
| 638 | +{ |
| 639 | + if ( e->mimeData()->hasUrls() ) |
| 640 | + { |
| 641 | + QUrl url = e->mimeData()->urls().first(); |
| 642 | + |
| 643 | + if ( url.isLocalFile() ) |
| 644 | + { |
| 645 | + QString fileName = url.toLocalFile(); |
| 646 | + |
| 647 | + if ( fileName.endsWith( ".chm", Qt::CaseInsensitive ) || fileName.endsWith( ".epub", Qt::CaseInsensitive ) ) |
| 648 | + loadFile( fileName ); |
| 649 | + } |
| 650 | + |
| 651 | + e->acceptProposedAction(); |
| 652 | + } |
| 653 | +} |
| 654 | + |
611 | 655 | void MainWindow::printHelpAndExit() |
612 | 656 | { |
613 | 657 | fprintf( stderr, "Usage: %s [options] [helpfile]\n" |
|
0 commit comments