-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patheditsegmentdescr.cpp
More file actions
119 lines (108 loc) · 3.84 KB
/
Copy patheditsegmentdescr.cpp
File metadata and controls
119 lines (108 loc) · 3.84 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "editsegmentdescr.h"
#include "segmentdescription.h"
#include "clipboard.h"
#include <QContextMenuEvent>
//#include <functional>
#include <QMenu>
EditSegmentDescr::EditSegmentDescr(QWidget *parent) : QLineEdit(parent) {
QPalette pal = this->palette();
defaultBgColor = pal.color(backgroundRole());
//defaultBgColor = QColor(Qt::white);
sql = SQL::instance();
connect(this, &QLineEdit::textEdited,[=]{
bTextEdited = true;
} );
//sd = new SegmentDescription();
connect(this, &QLineEdit::textChanged, [=]{
bTextEdited = true;
} );
//connect(this, SIGNAL(editingFinished()), this, SLOT(on_editingFinished()));
connect(this, &QLineEdit::editingFinished, [=]{
on_editingFinished();
});
setContextMenuPolicy(Qt::CustomContextMenu);
Clipboard::instance()->setContextMenu(this);
//this->func = Clipboard::instance()->getContextMenu(this);
//connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_contextMenuEvent(QPoint)));
connect(this, &QLineEdit::customContextMenuRequested, [=](const QPoint pos){
QMenu* menu = this->createStandardContextMenu();
if(Clipboard::instance()->historyCount()>1)
{
menu->addMenu(Clipboard::instance()->getHistoryMenu());
}
if(!addMenu.isEmpty())
{
menu->addSeparator();
for(QAction* act : addMenu)
menu->addAction(act);
}
menu->exec(QCursor::pos());
});
}
void EditSegmentDescr::setText(QString txt)
{
sd = new SegmentDescription(txt);
if(!sd->isValidFormat(txt))
QLineEdit::setStyleSheet("QLineEdit { background-color: #FFC0CB }");
else if(txt.contains(" to ") || txt.contains(" zur ") || sd->hasAbbreviations(txt))
QLineEdit::setStyleSheet("QLineEdit { background-color: #FFFF00 }");
else
QLineEdit::setStyleSheet(QString("QLineEdit { background-color: rgb(%1,%2,%3) }")
.arg(defaultBgColor.red(),defaultBgColor.green(),defaultBgColor.blue()));
QLineEdit::setText(txt);
}
void EditSegmentDescr::setSegmentId(int segmentId)
{
m_segmentId = segmentId;
}
void EditSegmentDescr::on_editingFinished()
{
if (bTextEdited)
{
QString descr = text();
if(!sd)
sd = new SegmentDescription(descr);
auto placeholder = "QLineEdit { background-color: #FFFF00 }";
if (!sd->isValidFormat(descr))
QLineEdit::setStyleSheet("QLineEdit { background-color: #FFC0CB }");
else if(descr.contains(" to ") || descr.contains(" zur ") || sd->hasAbbreviations(descr))
QLineEdit::setStyleSheet(placeholder);
else
QLineEdit::setStyleSheet(QString("QLineEdit { background-color: rgb(%1,%2,%3) }")
.arg(defaultBgColor.red(),defaultBgColor.green(),defaultBgColor.blue()));
setText(sd->replaceAbbreviations(descr));
bTextEdited = false;
emit descrUpdated(descr, sd->street());
}
}
//****************************************** helper functions ***********
bool EditSegmentDescr::isValidFormat() {
return sd->isValidFormat(text());
}
QString EditSegmentDescr::replaceAbbreviations(QString txt)
{
return sd->replaceAbbreviations(txt);
}
QString EditSegmentDescr::streetName()
{
return sd->street();
}
void EditSegmentDescr::setContextMenu(QList<QAction*> list)
{
this->addMenu = list;
}
// void EditSegmentDescr::contextMenuEvent(QContextMenuEvent *event)
// {
// if(func != nullptr)
// func(event->pos());
// else
// Clipboard::instance()->getContextMenu(this);
// }
// void EditSegmentDescr::on_contextMenuEvent(const QPoint& pt)
// {
// if(func != nullptr)
// func(pt);
// else
// QMenu menu = Clipboard::instance()->getContextMenu(this);
// menu.exec(pt)
// }