1 #include "markvariabletext.h"
2 #include "marks.h"
3 #include <QComboBox>
4
MarkVariableText(const QList<Mark * > & marks,QWidget * parent)5 MarkVariableText::MarkVariableText(const QList<Mark*>& marks, QWidget *parent) : MarkInsert(marks, parent), m_widgetType(ComboBox), m_mark(nullptr)
6 {
7 //for editing mark entry in text - user can change mark pointer inserted into text or create new mark entry
8 setupUi(this);
9
10 labelEditWidget = (QWidget*) new QComboBox(parent);
11 ((QComboBox*) labelEditWidget)->addItem(tr("New Mark"), QVariant::fromValue((void*) nullptr));
12 for (int i = 0; i < marks.size(); ++i)
13 {
14 if (marks[i]->isType(MARKVariableTextType))
15 ((QComboBox*) labelEditWidget)->addItem(marks[i]->label, QVariant::fromValue((void*) marks[i]));
16 }
17 ((QComboBox*) labelEditWidget)->setEditable(true);
18 ((QComboBox*) labelEditWidget)->lineEdit()->setToolTip(tr("Edit selected Mark's label. To create new Mark select \"New Mark\" in drop list and input new label."));
19 connect(((QComboBox*) labelEditWidget), SIGNAL(currentIndexChanged(int)),this,SLOT(onLabelList_currentIndexChanged(int)));
20 labelLayout->addWidget(labelEditWidget);
21 textEdit->setToolTip(tr("Edit variable text"));
22 setWindowTitle(tr("Mark with Variable Text"));
23 }
24
MarkVariableText(const Mark * mark,QWidget * parent)25 MarkVariableText::MarkVariableText(const Mark* mark, QWidget *parent) : MarkInsert(mark, parent), m_widgetType(LineEdit), m_mark(mark)
26 {
27 //for editing by marks Manager - user can change label and variable text
28 setupUi(this);
29
30 labelEditWidget = (QWidget*) new QLineEdit(parent);
31 ((QLineEdit*) labelEditWidget)->setToolTip(tr("Edit selected Mark's label"));
32
33 labelLayout->addWidget(labelEditWidget);
34 textEdit->setToolTip(tr("Edit variable text"));
35 setWindowTitle(tr("Mark with Variable Text"));
36 }
37
~MarkVariableText()38 MarkVariableText::~MarkVariableText()
39 {
40 //delete ui;
41 delete labelEditWidget;
42 }
43
values(QString & label,QString & text)44 Mark* MarkVariableText::values(QString& label, QString& text)
45 {
46 text = textEdit->text();
47 //hack to read if it is QComboBox or QLineEdit
48 if (m_widgetType == ComboBox)
49 {
50 QComboBox* comboBox = (QComboBox*) labelEditWidget;
51 int labelID = comboBox->currentIndex();
52 label = comboBox->currentText();
53 if (label == tr("New Mark"))
54 label = "VariableMark";
55 return (Mark*) (comboBox->itemData(labelID).value<void*>());
56 }
57 label = ((QLineEdit*) labelEditWidget)->text();
58 if (label == tr("New Mark"))
59 label = "VariableMark";
60 return const_cast<Mark*> (m_mark);
61 }
62
setValues(QString label,QString text)63 void MarkVariableText::setValues(QString label, QString text)
64 {
65 if (m_widgetType == LineEdit)
66 ((QLineEdit*) labelEditWidget)->setText(label);
67 else
68 {
69 QComboBox* comboBox = (QComboBox*) labelEditWidget;
70 comboBox->setCurrentIndex(comboBox->findText(label));
71 }
72 textEdit->setText(text);
73 }
74
changeEvent(QEvent * e)75 void MarkVariableText::changeEvent(QEvent *e)
76 {
77 QDialog::changeEvent(e);
78 switch (e->type()) {
79 case QEvent::LanguageChange:
80 retranslateUi(this);
81 break;
82 default:
83 break;
84 }
85 }
86
onLabelList_currentIndexChanged(int index)87 void MarkVariableText::onLabelList_currentIndexChanged(int index)
88 {
89 if (index > 0)
90 {
91 Mark* mrk = (Mark*) ((QComboBox*) labelEditWidget)->itemData(index).value<void*>();
92 textEdit->setText(mrk->getString());
93 }
94 else
95 {
96 ((QComboBox*) labelEditWidget)->setEditText("");
97 textEdit->clear();
98 }
99 }
100