1 #include "marks.h"
2 #include "mark2mark.h"
3 #include <QStandardItemModel>
4 
Mark2Mark(const QList<Mark * > & marks,Mark * omitMark,QWidget * parent)5 Mark2Mark::Mark2Mark(const QList<Mark*>& marks, Mark* omitMark, QWidget *parent) : MarkInsert(marks, parent)
6 {
7 	setupUi(this);
8 	LabelList->addItem("", QVariant::fromValue((void*) nullptr));
9 
10 	//for each marks type
11 	QString typeStr;
12 	MarkType typeMrk;
13 
14 	int index = 0;
15 	typeMrk = MARKAnchorType;
16 	typeStr = tr("Anchors");
17 	//adding name of marks type, and make it unselectable
18 	LabelList->addItem("+++ " + typeStr);
19 	qobject_cast<QStandardItemModel *>(LabelList->model())->item( ++index )->setEnabled( false );
20 	for (int i = 0; i < marks.size(); ++i)
21 	{
22 		if (marks[i]->isType(typeMrk))
23 		{
24 			LabelList->addItem(marks[i]->label, QVariant::fromValue((void*) marks[i]));
25 			index++;
26 		}
27 	}
28 	typeMrk = MARK2MarkType;
29 	typeStr = tr("Mark to Mark");
30 	LabelList->addItem("+++ " + typeStr);
31 	qobject_cast<QStandardItemModel *>(LabelList->model())->item( ++index )->setEnabled( false );
32 	for (int i = 0; i < marks.size(); ++i)
33 	{
34 		if (marks[i]->isType(typeMrk) && marks[i] != omitMark)
35 		{
36 			LabelList->addItem(marks[i]->label, QVariant::fromValue((void*) marks[i]));
37 			index++;
38 		}
39 	}
40 	typeMrk = MARK2ItemType;
41 	typeStr = tr("Mark to Item");
42 	LabelList->addItem("+++ " + typeStr);
43 	qobject_cast<QStandardItemModel *>(LabelList->model())->item( ++index )->setEnabled( false );
44 	for (int i = 0; i < marks.size(); ++i)
45 	{
46 		if (marks[i]->isType(typeMrk))
47 		{
48 			LabelList->addItem(marks[i]->label, QVariant::fromValue((void*) marks[i]));
49 			index++;
50 		}
51 	}
52 	typeMrk = MARKNoteMasterType;
53 	typeStr = tr("Note mark");
54 	LabelList->addItem("+++ " + typeStr);
55 	qobject_cast<QStandardItemModel *>(LabelList->model())->item( ++index )->setEnabled( false );
56 	for (int i = 0; i < marks.size(); ++i)
57 	{
58 		if (marks[i]->isType(typeMrk))
59 		{
60 			LabelList->addItem(marks[i]->label, QVariant::fromValue((void*) marks[i]));
61 			index++;
62 		}
63 	}
64 //	typeMrk = MARKIndexType;	typeStr = tr("Index entry");
65 //	LabelList->addItem("+++ " + typeStr);
66 //	qobject_cast<QStandardItemModel *>(LabelList->model())->item( ++index )->setEnabled( false );
67 //	for (int i = 0; i < marks.size(); ++i)
68 //	{
69 //		if (marks[i]->isType(typeMrk))
70 //		{
71 //			LabelList->addItem(marks[i]->label, QVariant::fromValue((void*) marks[i]));
72 //			index++;
73 //		}
74 //	}
75 	setWindowTitle(tr("Mark to Mark"));
76 }
77 
values(QString & label,Mark * & mrk)78 void Mark2Mark::values(QString& label, Mark* &mrk)
79 {
80 	label = this->labelEdit->text();
81 	int labelID = LabelList->currentIndex();
82 	if (labelID == 0)
83 		mrk= nullptr;
84 	else
85 		mrk = (Mark*) LabelList->itemData(labelID).value<void*>();
86 }
87 
setValues(const QString label,const Mark * mrk)88 void Mark2Mark::setValues(const QString label, const Mark* mrk)
89 {
90 	int index = (mrk == nullptr)? -1:LabelList->findText(mrk->label);
91 	LabelList->setCurrentIndex(index);
92 	labelEdit->setText(label);
93 }
94 
changeEvent(QEvent * e)95 void Mark2Mark::changeEvent(QEvent *e)
96 {
97     QDialog::changeEvent(e);
98     switch (e->type()) {
99     case QEvent::LanguageChange:
100         retranslateUi(this);
101         break;
102     default:
103         break;
104     }
105 }
106