#include "DropLineEdit.h"

DropLineEdit::DropLineEdit(QWidget *parent) : QLineEdit(parent)
{
    //setDragDropMode(QAbstractItemView::DropOnly);
    setAcceptDrops(true);
}

void DropLineEdit::dragEnterEvent(QDragEnterEvent *event) {

    const QMimeData* mimeData = event->mimeData();

    // We only accept if our widget is enabled and it is only one file
    if(
            !this->isEnabled() ||
            mimeData->urls().size() != 1 ||
            // checks if it is a file (folders are ignored)
            QDir(mimeData->urls().at(0).toLocalFile()).exists()
    )
    {
        event->ignore();
    }
    else{
        event->acceptProposedAction();
    }
}

void DropLineEdit::dragMoveEvent(QDragMoveEvent *event) {
    event->acceptProposedAction();
}

void DropLineEdit::dropEvent(QDropEvent *event) {

    const QMimeData* mimeData = event->mimeData();

    event->acceptProposedAction();

    QStringList pathList = QStringList();

    if (mimeData->hasUrls())
    {
        this->setText(mimeData->urls().at(0).toLocalFile());
    }

}

void DropLineEdit::dragLeaveEvent(QDragLeaveEvent *event) {
    event->accept();
}
