-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDropArea.cpp
66 lines (53 loc) · 1.23 KB
/
DropArea.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "DropArea.h"
#include <QPainter>
#include <QUrl>
#include <QMimeData>
DropArea::DropArea(QWidget *parent) :
QLabel(parent)
{
setMinimumSize(200, 200);
setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
setAlignment(Qt::AlignCenter);
setAcceptDrops(true);
setAutoFillBackground(true);
clear();
}
void DropArea::clear()
{
setText(labelText);
setBackgroundRole(QPalette::Dark);
}
void DropArea::dragEnterEvent(QDragEnterEvent *event)
{
setText(tr("Drop CG45 smg\nfile here"));
setBackgroundRole(QPalette::Highlight);
event->acceptProposedAction();
}
void DropArea::dragMoveEvent(QDragMoveEvent *event)
{
event->acceptProposedAction();
}
void DropArea::dragLeaveEvent(QDragLeaveEvent *event)
{
clear();
event->accept();
}
void DropArea::dropEvent(QDropEvent *event)
{
QList<QUrl> urlList = event->mimeData()->urls();
if (urlList.size() > 1) {
setText(tr("Please drop\nonly one\nelement"));
} else {
emit toPatcher(urlList.at(0).toLocalFile());
}
setBackgroundRole(QPalette::Dark);
event->acceptProposedAction();
}
void DropArea::setLabelText(const QString &aText)
{
labelText = aText;
}
DropArea::~DropArea()
{
/* Empty Destructor */
}