| 123456789101112131415161718192021222324252627282930313233 |
- #include <QMimeData>
- #include <QList>
- #include <QUrl>
- #include <qevent.h>
- #include "dropUtils.h"
- using namespace craftlab::fakeraid::ui;
- bool DropUtils::IsMimeTypeValidForDrop(const QMimeData* mimeData)
- {
- if (nullptr == mimeData || !mimeData->hasUrls())
- return false;
- const QList<QUrl> urls = mimeData->urls();
- auto isInvalidUrl = [](const QUrl& url) {
- return !url.isLocalFile();
- };
- return !std::any_of(urls.begin(), urls.end(), isInvalidUrl) || urls.isEmpty();
- }
- bool DropUtils::IsDropTargetValid(QDropEvent& e)
- {
- if (e.proposedAction() == Qt::CopyAction)
- ;
- else if (e.possibleActions() & Qt::CopyAction)
- e.setDropAction(Qt::CopyAction);
- else
- return false;
- if (!DropUtils::IsMimeTypeValidForDrop(e.mimeData()))
- return false;
- return true;
- }
|