added drag n drop feature
This commit is contained in:
parent
5472528202
commit
6bcd5ce047
|
@ -54,7 +54,7 @@ Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);
|
||||||
|
|
||||||
GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
|
GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
|
||||||
Pica::g_debug_context = Pica::DebugContext::Construct();
|
Pica::g_debug_context = Pica::DebugContext::Construct();
|
||||||
|
setAcceptDrops(true);
|
||||||
ui.setupUi(this);
|
ui.setupUi(this);
|
||||||
statusBar()->hide();
|
statusBar()->hide();
|
||||||
|
|
||||||
|
@ -625,6 +625,40 @@ void GMainWindow::closeEvent(QCloseEvent* event) {
|
||||||
QWidget::closeEvent(event);
|
QWidget::closeEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsSingleFileDropEvent(QDropEvent* event) {
|
||||||
|
const QMimeData* mimeData = event->mimeData();
|
||||||
|
return mimeData->hasUrls() && mimeData->urls().length() == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GMainWindow::dropEvent(QDropEvent* event) {
|
||||||
|
if (IsSingleFileDropEvent(event) && ConfirmChangeGame()) {
|
||||||
|
const QMimeData* mimeData = event->mimeData();
|
||||||
|
QString filename = mimeData->urls().at(0).toLocalFile();
|
||||||
|
BootGame(filename.toStdString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GMainWindow::dragEnterEvent(QDragEnterEvent* event) {
|
||||||
|
if (IsSingleFileDropEvent(event)) {
|
||||||
|
event->acceptProposedAction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GMainWindow::dragMoveEvent(QDragMoveEvent* event) {
|
||||||
|
event->acceptProposedAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GMainWindow::ConfirmChangeGame() {
|
||||||
|
if (emu_thread == nullptr)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
auto answer = QMessageBox::question(
|
||||||
|
this, tr("Citra"),
|
||||||
|
tr("Are you sure you want to stop the emulation? Any unsaved progress will be lost."),
|
||||||
|
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||||
|
return answer != QMessageBox::No;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef main
|
#ifdef main
|
||||||
#undef main
|
#undef main
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -110,6 +110,7 @@ private:
|
||||||
* @return true if the user confirmed
|
* @return true if the user confirmed
|
||||||
*/
|
*/
|
||||||
bool ConfirmClose();
|
bool ConfirmClose();
|
||||||
|
bool ConfirmChangeGame();
|
||||||
void closeEvent(QCloseEvent* event) override;
|
void closeEvent(QCloseEvent* event) override;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -155,6 +156,11 @@ private:
|
||||||
WaitTreeWidget* waitTreeWidget;
|
WaitTreeWidget* waitTreeWidget;
|
||||||
|
|
||||||
QAction* actions_recent_files[max_recent_files_item];
|
QAction* actions_recent_files[max_recent_files_item];
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void dropEvent(QDropEvent* event) override;
|
||||||
|
void dragEnterEvent(QDragEnterEvent* event) override;
|
||||||
|
void dragMoveEvent(QDragMoveEvent* event) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _CITRA_QT_MAIN_HXX_
|
#endif // _CITRA_QT_MAIN_HXX_
|
||||||
|
|
Loading…
Reference in New Issue