diff options
Diffstat (limited to 'src/frontend/qt_sdl/QPathInput.h')
-rw-r--r-- | src/frontend/qt_sdl/QPathInput.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/frontend/qt_sdl/QPathInput.h b/src/frontend/qt_sdl/QPathInput.h new file mode 100644 index 0000000..1cb1f7c --- /dev/null +++ b/src/frontend/qt_sdl/QPathInput.h @@ -0,0 +1,66 @@ +/* + Copyright 2016-2021 Arisotura + + This file is part of melonDS. + + melonDS is free software: you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + melonDS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with melonDS. If not, see http://www.gnu.org/licenses/. +*/ + +#ifndef QPATHINPUT_H +#define QPATHINPUT_H + +#include <QLineEdit> +#include <QDragEnterEvent> +#include <QDropEvent> +#include <QMimeData> + +class QPathInput : public QLineEdit +{ + Q_OBJECT + +public: + QPathInput(QWidget* parent = nullptr) : QLineEdit(parent) + { + setAcceptDrops(true); + } + + ~QPathInput() + { + } + +protected: + void dragEnterEvent(QDragEnterEvent* event) override + { + if (!event->mimeData()->hasUrls()) return QLineEdit::dragEnterEvent(event); + + QList<QUrl> urls = event->mimeData()->urls(); + if (urls.count() > 1) return QLineEdit::dragEnterEvent(event); + + QString filename = urls.at(0).toLocalFile(); + + event->acceptProposedAction(); + } + + void dropEvent(QDropEvent* event) override + { + if (!event->mimeData()->hasUrls()) return QLineEdit::dropEvent(event); + + QList<QUrl> urls = event->mimeData()->urls(); + if (urls.count() > 1) return QLineEdit::dropEvent(event); + + QString filename = urls.at(0).toLocalFile(); + setText(filename); + } +}; + +#endif // QPATHINPUT_H |