From 2b8e31e452fdb7029d64c8ec798370fe2175ac31 Mon Sep 17 00:00:00 2001 From: wh201906 Date: Wed, 29 Apr 2020 16:30:27 +0800 Subject: [PATCH] Support dragging files --- main.cpp | 12 ++++++++++++ ui/mainwindow.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ ui/mainwindow.h | 2 ++ ui/mainwindow.ui | 6 ++++++ 4 files changed, 65 insertions(+) diff --git a/main.cpp b/main.cpp index cc52578..5053128 100644 --- a/main.cpp +++ b/main.cpp @@ -14,18 +14,30 @@ int main(int argc, char *argv[]) QVariant lang = settings->value("lang", "null"); if(lang == "null") { +#ifdef Q_OS_WIN lang = "lang/en_US.qm"; +#else + lang = "lang/en_US.ts"; +#endif QStringList langList; langList.append("English"); langList.append("简体中文"); QString seletedText = QInputDialog::getItem(&w, "", "Choose a language:", langList, 0, false); if(seletedText == "English") { +#ifdef Q_OS_WIN lang = "lang/en_US.qm"; +#else + lang = "lang/en_US.ts"; +#endif } else if(seletedText == "简体中文") { +#ifdef Q_OS_WIN lang = "lang/zh_CN.qm"; +#else + lang = "lang/zh_CN.ts"; +#endif } } QTranslator* translator = new QTranslator(&w); diff --git a/ui/mainwindow.cpp b/ui/mainwindow.cpp index 4cee8e0..ab6aecb 100644 --- a/ui/mainwindow.cpp +++ b/ui/mainwindow.cpp @@ -522,6 +522,9 @@ void MainWindow::uiInit() typeBtnGroup->addButton(ui->MF_Type_4kButton, 4); connect(typeBtnGroup, QOverload::of(&QButtonGroup::buttonToggled), this, &MainWindow::MF_onTypeChanged); + ui->MF_keyWidget->installEventFilter(this); + ui->MF_dataWidget->installEventFilter(this); + on_Raw_CMDHistoryBox_stateChanged(Qt::Unchecked); on_PM3_refreshPortButton_clicked(); } @@ -554,4 +557,46 @@ void MainWindow::setTableItem(QTableWidget* widget, int row, int column, const Q widget->setItem(row, column, new QTableWidgetItem()); widget->item(row, column)->setText(text); } + +bool MainWindow::eventFilter(QObject *watched, QEvent *event) // drag support +{ + if(event->type() == QEvent::DragEnter) + { + QDragEnterEvent* dragEvent = static_cast(event); + dragEvent->acceptProposedAction(); + return true; + } + else if(event->type() == QEvent::Drop) + { + QDropEvent* dropEvent = static_cast(event); + if(watched == ui->MF_keyWidget) + { + const QMimeData* mime = dropEvent->mimeData(); + if(mime->hasUrls()) + { + QList urls = mime->urls(); + if(urls.length() == 1) + { + mifare->data_loadKeyFile(urls[0].toLocalFile()); + return true; + } + } + } + else if(watched == ui->MF_dataWidget) + { + const QMimeData* mime = dropEvent->mimeData(); + if(mime->hasUrls()) + { + QList urls = mime->urls(); + if(urls.length() == 1) + { + mifare->data_loadDataFile(urls[0].toLocalFile()); + return true; + } + } + } + } + return QMainWindow::eventFilter(watched, event); +} + // *********************************************** diff --git a/ui/mainwindow.h b/ui/mainwindow.h index 39968b1..70dd0a1 100644 --- a/ui/mainwindow.h +++ b/ui/mainwindow.h @@ -13,6 +13,7 @@ #include #include #include +#include #include "common/pm3process.h" #include "module/mifare.h" @@ -33,6 +34,7 @@ public: ~MainWindow(); void initUI(); + bool eventFilter(QObject *watched, QEvent *event); public slots: void refreshOutput(const QString &output); void refreshCMD(const QString &cmd); diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui index b4c85b1..9198235 100644 --- a/ui/mainwindow.ui +++ b/ui/mainwindow.ui @@ -144,6 +144,9 @@ 12 + + true + QAbstractItemView::SingleSelection @@ -284,6 +287,9 @@ 12 + + true + QAbstractItemView::SingleSelection