From 6323f6eb8e50669a060363d6024c1f0a96ddba5e Mon Sep 17 00:00:00 2001 From: APTX Date: Fri, 6 Jan 2012 20:09:40 +0100 Subject: [PATCH] Add drag&drop to main window. --- mainwindow.cpp | 32 +++++++++++++++++++++++++++++--- mainwindow.h | 8 ++++++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 43b4a18..9c9799d 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -4,6 +4,9 @@ #include #include #include +#include +#include +#include #include @@ -22,6 +25,7 @@ MainWindow::MainWindow(QWidget *parent) : ui->setupUi(this); setWindowTitle("AniAdd"); + qRegisterMetaType("QFileInfoList"); QDeclarativeContext *ctxt = ui->declarativeView->rootContext(); @@ -35,10 +39,9 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui->actionQuit, SIGNAL(triggered()), qApp, SLOT(quit())); + connect(this, SIGNAL(filesToBeAdded(QFileInfoList)), qApp->fileModel(), SLOT(addFiles(QFileInfoList)), Qt::QueuedConnection); - - QDeclarativeProperty p( ui->declarativeView->rootObject()); - qDebug() << p.read().toString(); + setAcceptDrops(true); } MainWindow::~MainWindow() @@ -104,6 +107,29 @@ void MainWindow::setSelectedIndex(int index) emit selectedIndexChanged(); } +void MainWindow::dragEnterEvent(QDragEnterEvent *event) +{ + if (event->mimeData()->hasFormat("text/uri-list")) + event->acceptProposedAction(); +} + +void MainWindow::dropEvent(QDropEvent *event) +{ + QList urls = event->mimeData()->urls(); + QFileInfoList files; +qDebug() << urls.count(); + for (int i = 0; i < urls.count(); ++i) + { + qDebug() << urls[i].isLocalFile(); + if (!urls[i].isLocalFile()) + continue; + qDebug() << urls[i].toLocalFile(); + files << QFileInfo(urls[i].toLocalFile()); + } + event->acceptProposedAction(); + emit filesToBeAdded(files); +} + void MainWindow::on_actionRenameScript_triggered() { RenameSettingsDialog dialog; diff --git a/mainwindow.h b/mainwindow.h index 33657cf..eafbe4c 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -2,6 +2,7 @@ #define MAINWINDOW_H #include +#include namespace Ui { class MainWindow; @@ -22,6 +23,10 @@ public: int selectedIndex() const; void setSelectedIndex(int index); +protected: + void dragEnterEvent(QDragEnterEvent *event); + void dropEvent(QDropEvent *event); + private slots: void on_actionAddFiles_triggered(); void on_actionAddDirectories_triggered(); @@ -38,6 +43,7 @@ private slots: signals: void selectedIndexChanged(); + void filesToBeAdded(const QFileInfoList &files); private: void saveSettings(); @@ -45,8 +51,6 @@ private: QString lastDirectory; - AniAdd *aniAdd; - Ui::MainWindow *ui; int m_selectedIndex; -- 2.52.0