Редакция 102 | Редакция 104 | К новейшей редакции | Только различия | Учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS
Редакция 102 | Редакция 103 | ||
---|---|---|---|
1 | #include "mainwindow.h"
|
1 | #include "mainwindow.h"
|
2 | #include "ui_mainwindow.h"
|
2 | #include "ui_mainwindow.h"
|
3 | 3 | ||
4 | MainWindow::MainWindow(QWidget *parent) : |
4 | MainWindow::MainWindow(QWidget *parent) : |
5 | QMainWindow(parent), |
5 | QMainWindow(parent), |
6 | ui(new Ui::MainWindow) |
6 | ui(new Ui::MainWindow) |
7 | {
|
7 | {
|
8 | ui->setupUi(this); |
8 | ui->setupUi(this); |
9 | 9 | ||
10 | MainWindow::readModel(); |
10 | MainWindow::readModel(); |
11 | 11 | ||
12 | //QString model_str;
|
12 | //QString model_str;
|
13 | MainWindow::creatModelString(); |
13 | MainWindow::creatModelString(); |
14 | int i; |
14 | int i; |
15 | i++; |
15 | i++; |
16 | QFile file_tmp("./temp.txt"); |
16 | QFile file_tmp("./temp.txt"); |
17 | bool ok; |
17 | bool ok; |
18 | ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text); |
18 | ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text); |
19 | QTextStream out(&file_tmp); |
19 | QTextStream out(&file_tmp); |
20 | out << MainWindow::modelString; |
20 | out << MainWindow::modelString; |
21 | file_tmp.close(); |
21 | file_tmp.close(); |
22 | 22 | ||
23 | MainWindow::openDataBase(); |
23 | MainWindow::openDataBase(); |
24 | MainWindow::buildPreviewModel(tr("Ìîÿ ìîäåëü"), tr("7")); |
24 | MainWindow::buildPreviewModel(tr("Ìîÿ ìîäåëü"), tr("7")); |
- | 25 | ||
- | 26 | QMap <QString, QString> class_list_map; |
|
- | 27 | QStringList classesNameList;
|
|
- | 28 | QStringList classesID_list;
|
|
- | 29 | QStringList tmp_stringList;
|
|
- | 30 | ||
- | 31 | ||
- | 32 | ||
- | 33 | QString tmp_str;
|
|
- | 34 | ||
25 | MainWindow::getClassList(); |
35 | class_list_map = MainWindow::getClassList(); |
- | 36 | classesID_list = class_list_map.keys(); |
|
- | 37 | classesNameList = class_list_map.values(); |
|
- | 38 | QMapIterator<QString, QString> interator(class_list_map); |
|
- | 39 | // ui->comboBox->addItems(classesID_list);
|
|
- | 40 | // ui->comboBox->addItems(classesNameList);
|
|
- | 41 | while (interator.hasNext()) { |
|
- | 42 | interator.next(); |
|
- | 43 | tmp_str = interator.value(); |
|
- | 44 | tmp_str.append(tr(" \t(ID=")); |
|
- | 45 | tmp_str.append(interator.key()); |
|
- | 46 | tmp_str.append(tr(")")); |
|
- | 47 | tmp_stringList << tmp_str; |
|
- | 48 | ||
- | 49 | }
|
|
- | 50 | ui->comboBox->addItems(tmp_stringList); |
|
- | 51 | ||
26 | 52 | ||
27 | }
|
53 | }
|
28 | 54 | ||
29 | MainWindow::~MainWindow() |
55 | MainWindow::~MainWindow() |
30 | {
|
56 | {
|
31 | delete ui; |
57 | delete ui; |
32 | }
|
58 | }
|
33 | 59 | ||
34 | void MainWindow::changeEvent(QEvent *e) |
60 | void MainWindow::changeEvent(QEvent *e) |
35 | {
|
61 | {
|
36 | QMainWindow::changeEvent(e); |
62 | QMainWindow::changeEvent(e); |
37 | switch (e->type()) { |
63 | switch (e->type()) { |
38 | case QEvent::LanguageChange: |
64 | case QEvent::LanguageChange: |
39 | ui->retranslateUi(this); |
65 | ui->retranslateUi(this); |
40 | break; |
66 | break; |
41 | default: |
67 | default: |
42 | break; |
68 | break; |
43 | }
|
69 | }
|
44 | }
|
70 | }
|
45 | 71 | ||
46 | 72 | ||
47 | bool MainWindow::readModel(){ |
73 | bool MainWindow::readModel(){ |
48 | bool result; |
74 | bool result; |
49 | QString model_str;
|
75 | QString model_str;
|
50 | QFile file(":/model.txt"); |
76 | QFile file(":/model.txt"); |
51 | 77 | ||
52 | rootItem1 = new QTreeWidgetItem(ui->treeWidget); |
78 | rootItem1 = new QTreeWidgetItem(ui->treeWidget); |
53 | rootItem1->setText(0, tr("Óðîâåíü 1")); |
79 | rootItem1->setText(0, tr("Óðîâåíü 1")); |
54 | // rootItem2 = new QTreeWidgetItem(rootItem1);
|
80 | // rootItem2 = new QTreeWidgetItem(rootItem1);
|
55 | // rootItem2->setText(0, tr("óðîâåíü 2"));
|
81 | // rootItem2->setText(0, tr("óðîâåíü 2"));
|
56 | rootItem1->setCheckState(0,Qt::Checked); |
82 | rootItem1->setCheckState(0,Qt::Checked); |
57 | // rootItem2->setCheckState(0,Qt::Checked);
|
83 | // rootItem2->setCheckState(0,Qt::Checked);
|
58 | 84 | ||
59 | 85 | ||
60 | 86 | ||
61 | result = file.open(QIODevice::ReadOnly); |
87 | result = file.open(QIODevice::ReadOnly); |
62 | if (result) { |
88 | if (result) { |
63 | model_str = QString(tr(file.readAll())); |
89 | model_str = QString(tr(file.readAll())); |
64 | }
|
90 | }
|
65 | 91 | ||
66 | setupModelData(model_str.split(QString("\n")), rootItem1); |
92 | setupModelData(model_str.split(QString("\n")), rootItem1); |
67 | 93 | ||
68 | 94 | ||
69 | return result; |
95 | return result; |
70 | 96 | ||
71 | }
|
97 | }
|
72 | 98 | ||
73 | 99 | ||
74 | void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent) |
100 | void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent) |
75 | {
|
101 | {
|
76 | QList<QTreeWidgetItem*> parents; |
102 | QList<QTreeWidgetItem*> parents; |
77 | QList<int> indentations; |
103 | QList<int> indentations; |
78 | parents << parent; |
104 | parents << parent; |
79 | indentations << 0; |
105 | indentations << 0; |
80 | 106 | ||
81 | int number = 0; |
107 | int number = 0; |
82 | 108 | ||
83 | while (number < lines.count()) { |
109 | while (number < lines.count()) { |
84 | int position = 0; |
110 | int position = 0; |
85 | while (position < lines[number].length()) { |
111 | while (position < lines[number].length()) { |
86 | if (lines[number].mid(position, 1) != " ") |
112 | if (lines[number].mid(position, 1) != " ") |
87 | break; |
113 | break; |
88 | position++; |
114 | position++; |
89 | }
|
115 | }
|
90 | 116 | ||
91 | QString lineData = lines[number].mid(position).trimmed(); |
117 | QString lineData = lines[number].mid(position).trimmed(); |
92 | 118 | ||
93 | if (!lineData.isEmpty()) { |
119 | if (!lineData.isEmpty()) { |
94 | // Read the column data from the rest of the line.
|
120 | // Read the column data from the rest of the line.
|
95 | QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts); |
121 | QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts); |
96 | QList<QVariant> columnData; |
122 | QList<QVariant> columnData; |
97 | for (int column = 0; column < columnStrings.count(); ++column) |
123 | for (int column = 0; column < columnStrings.count(); ++column) |
98 | columnData << columnStrings[column]; |
124 | columnData << columnStrings[column]; |
99 | 125 | ||
100 | if (position > indentations.last()) { |
126 | if (position > indentations.last()) { |
101 | // The last child of the current parent is now the new parent
|
127 | // The last child of the current parent is now the new parent
|
102 | // unless the current parent has no children.
|
128 | // unless the current parent has no children.
|
103 | 129 | ||
104 | if (parents.last()->childCount() > 0) { |
130 | if (parents.last()->childCount() > 0) { |
105 | parents << parents.last()->child(parents.last()->childCount()-1); |
131 | parents << parents.last()->child(parents.last()->childCount()-1); |
106 | indentations << position; |
132 | indentations << position; |
107 | }
|
133 | }
|
108 | } else { |
134 | } else { |
109 | while (position < indentations.last() && parents.count() > 0) { |
135 | while (position < indentations.last() && parents.count() > 0) { |
110 | parents.pop_back(); |
136 | parents.pop_back(); |
111 | indentations.pop_back(); |
137 | indentations.pop_back(); |
112 | }
|
138 | }
|
113 | }
|
139 | }
|
114 | 140 | ||
115 | // Append a new item to the current parent's list of children.
|
141 | // Append a new item to the current parent's list of children.
|
116 | // // // parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
|
142 | // // // parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
|
117 | QTreeWidgetItem* itm_tmp; |
143 | QTreeWidgetItem* itm_tmp; |
118 | itm_tmp = new QTreeWidgetItem( parents.last()); |
144 | itm_tmp = new QTreeWidgetItem( parents.last()); |
119 | 145 | ||
120 | itm_tmp->setText(0, QString(columnData.at(0).toString())); |
146 | itm_tmp->setText(0, QString(columnData.at(0).toString())); |
121 | if (columnData.at(1).toString() == "true") { |
147 | if (columnData.at(1).toString() == "true") { |
122 | itm_tmp->setCheckState(0,Qt::Checked); |
148 | itm_tmp->setCheckState(0,Qt::Checked); |
123 | }
|
149 | }
|
124 | else itm_tmp->setCheckState(0,Qt::Unchecked); |
150 | else itm_tmp->setCheckState(0,Qt::Unchecked); |
125 | itm_tmp->setText(1, QString(columnData.at(2).toString())); |
151 | itm_tmp->setText(1, QString(columnData.at(2).toString())); |
126 | itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ |
152 | itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ |
127 | itm_tmp->setText(3, QVariant(indentations.size()).toString()); |
153 | itm_tmp->setText(3, QVariant(indentations.size()).toString()); |
128 | }
|
154 | }
|
129 | 155 | ||
130 | number++; |
156 | number++; |
131 | }
|
157 | }
|
132 | }
|
158 | }
|
133 | 159 | ||
134 | 160 | ||
135 | /*
|
161 | /*
|
136 | void MainWindow::openBase()
|
162 | void MainWindow::openBase()
|
137 | {
|
163 | {
|
138 | 164 | ||
139 | db = QSqlDatabase::addDatabase("QMYSQL");
|
165 | db = QSqlDatabase::addDatabase("QMYSQL");
|
140 | pdb = &db;
|
166 | pdb = &db;
|
141 | raportFrm.pdb = &db;
|
167 | raportFrm.pdb = &db;
|
142 | 168 | ||
143 | pdb->setHostName(hostName);
|
169 | pdb->setHostName(hostName);
|
144 | pdb->setDatabaseName(baseName);
|
170 | pdb->setDatabaseName(baseName);
|
145 | pdb->setUserName(userName);
|
171 | pdb->setUserName(userName);
|
146 | pdb->setPassword(password);
|
172 | pdb->setPassword(password);
|
147 | bool ok = pdb->open();
|
173 | bool ok = pdb->open();
|
148 | if (!ok) {
|
174 | if (!ok) {
|
149 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
|
175 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
|
150 | this, // Ðîäèòåëüñêèé âèäæåò.
|
176 | this, // Ðîäèòåëüñêèé âèäæåò.
|
151 | QObject::tr("Database Error"), // Çàãîëîâîê.
|
177 | QObject::tr("Database Error"), // Çàãîëîâîê.
|
152 | pdb->lastError().text()); // Òåêñò ñîîáùåíèÿ.
|
178 | pdb->lastError().text()); // Òåêñò ñîîáùåíèÿ.
|
153 | }
|
179 | }
|
154 | if (ok)
|
180 | if (ok)
|
155 | {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
|
181 | {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
|
156 | }
|
182 | }
|
157 | else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
|
183 | else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
|
158 | lineEdit-> insert(pdb->lastError().text());
|
184 | lineEdit-> insert(pdb->lastError().text());
|
159 | }
|
185 | }
|
160 | 186 | ||
161 | 187 | ||
162 | 188 | ||
163 | model = new QSqlTableModel(this);
|
189 | model = new QSqlTableModel(this);
|
164 | model->setTable(tableName);
|
190 | model->setTable(tableName);
|
165 | 191 | ||
166 | model->setEditStrategy(QSqlTableModel::OnManualSubmit);
|
192 | model->setEditStrategy(QSqlTableModel::OnManualSubmit);
|
167 | model->setSort(0, Qt::AscendingOrder);
|
193 | model->setSort(0, Qt::AscendingOrder);
|
168 | 194 | ||
169 | model->select();
|
195 | model->select();
|
170 | 196 | ||
171 | 197 | ||
172 | QSqlField field(tr("age"), QVariant::Int);
|
198 | QSqlField field(tr("age"), QVariant::Int);
|
173 | field.setValue(QString(tr("123")));
|
199 | field.setValue(QString(tr("123")));
|
174 | 200 | ||
175 | bool okey;
|
201 | bool okey;
|
176 | int index;
|
202 | int index;
|
177 | QSqlRecord record;
|
203 | QSqlRecord record;
|
178 | 204 | ||
179 | 205 | ||
180 | tableView->setModel(model);
|
206 | tableView->setModel(model);
|
181 | view.setModel(model);
|
207 | view.setModel(model);
|
182 | 208 | ||
183 | 209 | ||
184 | tableView->setAlternatingRowColors(true);
|
210 | tableView->setAlternatingRowColors(true);
|
185 | view.setAlternatingRowColors(true);
|
211 | view.setAlternatingRowColors(true);
|
186 | 212 | ||
187 | tableView->resizeColumnsToContents();
|
213 | tableView->resizeColumnsToContents();
|
188 | 214 | ||
189 | 215 | ||
190 | view.resizeColumnsToContents();
|
216 | view.resizeColumnsToContents();
|
191 | 217 | ||
192 | tableView->show();
|
218 | tableView->show();
|
193 | 219 | ||
194 | 220 | ||
195 | 221 | ||
196 | initTreeWidget();
|
222 | initTreeWidget();
|
197 | }
|
223 | }
|
198 | */
|
224 | */
|
199 | 225 | ||
200 | 226 | ||
201 | void MainWindow::creatModelString(){ |
227 | void MainWindow::creatModelString(){ |
202 | 228 | ||
203 | MainWindow::modelString.clear(); // î÷èùàåì ñòðîêó ìîäåëè |
229 | MainWindow::modelString.clear(); // î÷èùàåì ñòðîêó ìîäåëè |
204 | // for (int i =0; i < rootItem1->childCount(); ++i )
|
230 | // for (int i =0; i < rootItem1->childCount(); ++i )
|
205 | 231 | ||
206 | {MainWindow::addChildsString(rootItem1, 0);} |
232 | {MainWindow::addChildsString(rootItem1, 0);} |
207 | 233 | ||
208 | int root_item_child_count; |
234 | int root_item_child_count; |
209 | int i; |
235 | int i; |
210 | root_item_child_count = rootItem1->childCount(); |
236 | root_item_child_count = rootItem1->childCount(); |
211 | i++; |
237 | i++; |
212 | 238 | ||
213 | }
|
239 | }
|
214 | 240 | ||
215 | 241 | ||
216 | void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){ |
242 | void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){ |
217 | int child_count; |
243 | int child_count; |
218 | child_count = parentItem->childCount(); |
244 | child_count = parentItem->childCount(); |
219 | for (int i=0; i < child_count; ++i){ |
245 | for (int i=0; i < child_count; ++i){ |
220 | for (int m=0; m < level; ++m){ |
246 | for (int m=0; m < level; ++m){ |
221 | modelString.append(tr(" ")); // ÷åòûðå ïðîáåëà - ïðèçíàê òîãî, ÷òî ýòî íîâûé óðîâåíü âëîæåíèÿ |
247 | modelString.append(tr(" ")); // ÷åòûðå ïðîáåëà - ïðèçíàê òîãî, ÷òî ýòî íîâûé óðîâåíü âëîæåíèÿ |
222 | }
|
248 | }
|
223 | modelString.append(parentItem->child(i)->text(0)); // â ïåðâîé êîëîíêå - èìÿ êëàññà |
249 | modelString.append(parentItem->child(i)->text(0)); // â ïåðâîé êîëîíêå - èìÿ êëàññà |
224 | modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà |
250 | modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà |
225 | if (parentItem->child(i)->checkState(0) == Qt::Checked) {modelString.append(tr("true"));} // åñëè ãàëî÷êà ñòîèò, çàíîñèì "true", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ áóäóò |
251 | if (parentItem->child(i)->checkState(0) == Qt::Checked) {modelString.append(tr("true"));} // åñëè ãàëî÷êà ñòîèò, çàíîñèì "true", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ áóäóò |
226 | else {modelString.append(tr("false"));} // åñëè êëàññ íå âûáðàí - çàíîñèì "false", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ íå áóäóò |
252 | else {modelString.append(tr("false"));} // åñëè êëàññ íå âûáðàí - çàíîñèì "false", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ íå áóäóò |
227 | modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà |
253 | modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà |
228 | modelString.append(parentItem->child(i)->text(1)); // âî âòîðîé êîëîíêå - ID êëàññà |
254 | modelString.append(parentItem->child(i)->text(1)); // âî âòîðîé êîëîíêå - ID êëàññà |
229 | modelString.append(tr("\n")); // êîíåö ñòðîêè |
255 | modelString.append(tr("\n")); // êîíåö ñòðîêè |
230 | if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);} |
256 | if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);} |
231 | 257 | ||
232 | }
|
258 | }
|
233 | int i; |
259 | int i; |
234 | i++; |
260 | i++; |
235 | }
|
261 | }
|
236 | 262 | ||
237 | 263 | ||
238 | bool MainWindow::openDataBase(){ |
264 | bool MainWindow::openDataBase(){ |
239 | QString errorString;
|
265 | QString errorString;
|
240 | sql = QSqlDatabase::addDatabase("QMYSQL"); |
266 | sql = QSqlDatabase::addDatabase("QMYSQL"); |
241 | sql.setDatabaseName(tr("an_db")); |
267 | sql.setDatabaseName(tr("an_db")); |
242 | sql.setHostName(tr("localhost")); |
268 | sql.setHostName(tr("localhost")); |
243 | sql.setUserName(tr("an")); |
269 | sql.setUserName(tr("an")); |
244 | sql.setPassword(tr("393939")); |
270 | sql.setPassword(tr("393939")); |
245 | 271 | ||
246 | bool ok; |
272 | bool ok; |
247 | ok = sql.open(); |
273 | ok = sql.open(); |
248 | 274 | ||
249 | /*
|
275 | /*
|
250 | if (!ok) {
|
276 | if (!ok) {
|
251 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
|
277 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
|
252 | this, // Ðîäèòåëüñêèé âèäæåò.
|
278 | this, // Ðîäèòåëüñêèé âèäæåò.
|
253 | QObject::tr("Database Error"), // Çàãîëîâîê.
|
279 | QObject::tr("Database Error"), // Çàãîëîâîê.
|
254 | sql.lastError().text() ); // Òåêñò ñîîáùåíèÿ.
|
280 | sql.lastError().text() ); // Òåêñò ñîîáùåíèÿ.
|
255 | 281 | ||
256 | 282 | ||
257 | }
|
283 | }
|
258 | 284 | ||
259 | */
|
285 | */
|
260 | if (!ok) { |
286 | if (!ok) { |
261 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
287 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
262 | this, // Ðîäèòåëüñêèé âèäæåò. |
288 | this, // Ðîäèòåëüñêèé âèäæåò. |
263 | QObject::tr("Database Error"), // Çàãîëîâîê. |
289 | QObject::tr("Database Error"), // Çàãîëîâîê. |
264 | sql.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
290 | sql.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
265 | }
|
291 | }
|
266 | else { |
292 | else { |
267 | 293 | ||
268 | QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
294 | QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
269 | this, // Ðîäèòåëüñêèé âèäæåò. |
295 | this, // Ðîäèòåëüñêèé âèäæåò. |
270 | QObject::tr("Database Connect"), // Çàãîëîâîê. |
296 | QObject::tr("Database Connect"), // Çàãîëîâîê. |
271 | QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî.")); // Òåêñò ñîîáùåíèÿ. |
297 | QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî.")); // Òåêñò ñîîáùåíèÿ. |
272 | 298 | ||
273 | 299 | ||
274 | 300 | ||
275 | 301 | ||
276 | 302 | ||
277 | }
|
303 | }
|
278 | 304 | ||
279 | return ok; |
305 | return ok; |
280 | }
|
306 | }
|
281 | 307 | ||
282 | 308 | ||
283 | bool MainWindow::buildPreviewModel(QString modelName, QString rootClassID){ |
309 | bool MainWindow::buildPreviewModel(QString modelName, QString rootClassID){ |
284 | QSqlQuery q;
|
310 | QSqlQuery q;
|
285 | QString sql_str;
|
311 | QString sql_str;
|
286 | QString field_name_str;
|
312 | QString field_name_str;
|
287 | QString root_class_name;
|
313 | QString root_class_name;
|
288 | bool ok; |
314 | bool ok; |
289 | int field_name; |
315 | int field_name; |
290 | 316 | ||
291 | //ui->treeWidget->clear();
|
317 | //ui->treeWidget->clear();
|
292 | 318 | ||
293 | root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà |
319 | root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà |
294 | 320 | ||
295 | rootItem1 = new QTreeWidgetItem(ui->treeWidget); |
321 | rootItem1 = new QTreeWidgetItem(ui->treeWidget); |
296 | rootItem1->setText(0, modelName); |
322 | rootItem1->setText(0, modelName); |
297 | 323 | ||
298 | rootItem1->setCheckState(0,Qt::Checked); |
324 | rootItem1->setCheckState(0,Qt::Checked); |
299 | 325 | ||
300 | 326 | ||
301 | rootItem2 = new QTreeWidgetItem(rootItem1); |
327 | rootItem2 = new QTreeWidgetItem(rootItem1); |
302 | rootItem2->setText(0, root_class_name); |
328 | rootItem2->setText(0, root_class_name); |
303 | rootItem2->setText(1, rootClassID); |
329 | rootItem2->setText(1, rootClassID); |
304 | rootItem2->setCheckState(0,Qt::Checked); |
330 | rootItem2->setCheckState(0,Qt::Checked); |
305 | 331 | ||
306 | addChildsItems(rootItem2); |
332 | addChildsItems(rootItem2); |
307 | 333 | ||
308 | sql_str = tr("select * " |
334 | sql_str = tr("select * " |
309 | " from DescriptionOfClasses where DescriptionOfClasses.DefaultValue = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
335 | " from DescriptionOfClasses where DescriptionOfClasses.DefaultValue = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
310 | ); |
336 | ); |
311 | sql_str.append(rootClassID); |
337 | sql_str.append(rootClassID); |
312 | 338 | ||
313 | sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' ")); |
339 | sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' ")); |
314 | 340 | ||
315 | q.prepare(sql_str); |
341 | q.prepare(sql_str); |
316 | 342 | ||
317 | ok = q.exec(); |
343 | ok = q.exec(); |
318 | if (!ok) { |
344 | if (!ok) { |
319 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
345 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
320 | this, // Ðîäèòåëüñêèé âèäæåò. |
346 | this, // Ðîäèòåëüñêèé âèäæåò. |
321 | QObject::tr("Database Error"), // Çàãîëîâîê. |
347 | QObject::tr("Database Error"), // Çàãîëîâîê. |
322 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
348 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
323 | }
|
349 | }
|
324 | field_name = q.record().indexOf(tr("FieldName")); |
350 | field_name = q.record().indexOf(tr("FieldName")); |
325 | while(q.next()){ |
351 | while(q.next()){ |
326 | 352 | ||
327 | field_name_str = q.value(field_name).toString(); |
353 | field_name_str = q.value(field_name).toString(); |
328 | 354 | ||
329 | }
|
355 | }
|
330 | 356 | ||
331 | 357 | ||
332 | 358 | ||
333 | 359 | ||
334 | }
|
360 | }
|
335 | 361 | ||
336 | 362 | ||
337 | 363 | ||
338 | QString MainWindow::ClassName(QString class_id){ //âîçâðàùàåò èìÿ êëàññà ïî åãî ID |
364 | QString MainWindow::ClassName(QString class_id){ //âîçâðàùàåò èìÿ êëàññà ïî åãî ID |
339 | QSqlQuery q;
|
365 | QSqlQuery q;
|
340 | QString sql_str;
|
366 | QString sql_str;
|
341 | QString class_name_str;
|
367 | QString class_name_str;
|
342 | bool ok; |
368 | bool ok; |
343 | int field_class_name; |
369 | int field_class_name; |
344 | 370 | ||
345 | sql_str = tr("select * " |
371 | sql_str = tr("select * " |
346 | " from ListOfClasses where ListOfClasses.ID = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
372 | " from ListOfClasses where ListOfClasses.ID = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
347 | ); |
373 | ); |
348 | 374 | ||
349 | sql_str.append(class_id); |
375 | sql_str.append(class_id); |
350 | sql_str.append(tr("' ")); |
376 | sql_str.append(tr("' ")); |
351 | 377 | ||
352 | q.prepare(sql_str); |
378 | q.prepare(sql_str); |
353 | 379 | ||
354 | ok = q.exec(); |
380 | ok = q.exec(); |
355 | 381 | ||
356 | 382 | ||
357 | if (!ok) { |
383 | if (!ok) { |
358 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
384 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
359 | this, // Ðîäèòåëüñêèé âèäæåò. |
385 | this, // Ðîäèòåëüñêèé âèäæåò. |
360 | QObject::tr("Database Error"), // Çàãîëîâîê. |
386 | QObject::tr("Database Error"), // Çàãîëîâîê. |
361 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
387 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
362 | }
|
388 | }
|
363 | 389 | ||
364 | field_class_name = q.record().indexOf(tr("ClassName")); |
390 | field_class_name = q.record().indexOf(tr("ClassName")); |
365 | while(q.next()){ |
391 | while(q.next()){ |
366 | 392 | ||
367 | class_name_str = q.value(field_class_name).toString(); |
393 | class_name_str = q.value(field_class_name).toString(); |
368 | 394 | ||
369 | }
|
395 | }
|
370 | 396 | ||
371 | return class_name_str; |
397 | return class_name_str; |
372 | 398 | ||
373 | }
|
399 | }
|
374 | 400 | ||
375 | void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item){ // äîáîâëÿåì ê ýëåìåíòó äåðåâà â êà÷åñòâå äî÷åðíèõ ýëåìåíòîâ âñå êëàññû, äëÿ êîòîðûõ êëàññ ýëåìåíòà ÿâëÿåòñÿ êîíòåéíåðîì |
401 | void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item){ // äîáîâëÿåì ê ýëåìåíòó äåðåâà â êà÷åñòâå äî÷åðíèõ ýëåìåíòîâ âñå êëàññû, äëÿ êîòîðûõ êëàññ ýëåìåíòà ÿâëÿåòñÿ êîíòåéíåðîì |
376 | QStringList chields_list;
|
402 | QStringList chields_list;
|
377 | QString parent_ID;
|
403 | QString parent_ID;
|
378 | QTreeWidgetItem *Item_tmp; |
404 | QTreeWidgetItem *Item_tmp; |
379 | parent_ID = perent_class_item->text(1); |
405 | parent_ID = perent_class_item->text(1); |
380 | int chields_count, i; |
406 | int chields_count, i; |
381 | 407 | ||
382 | chields_list = MainWindow::classChields(parent_ID); |
408 | chields_list = MainWindow::classChields(parent_ID); |
383 | if(chields_list.isEmpty()) return; |
409 | if(chields_list.isEmpty()) return; |
384 | chields_count = chields_list.size(); |
410 | chields_count = chields_list.size(); |
385 | for (int l = 0; l < chields_count; ++l){ |
411 | for (int l = 0; l < chields_count; ++l){ |
386 | QString chield_class_name, chield_id;
|
412 | QString chield_class_name, chield_id;
|
387 | chield_id = chields_list.at(l); |
413 | chield_id = chields_list.at(l); |
388 | chield_class_name = MainWindow::ClassName(chield_id); |
414 | chield_class_name = MainWindow::ClassName(chield_id); |
389 | Item_tmp = new QTreeWidgetItem(perent_class_item); |
415 | Item_tmp = new QTreeWidgetItem(perent_class_item); |
390 | Item_tmp->setText(0, chield_class_name); |
416 | Item_tmp->setText(0, chield_class_name); |
391 | Item_tmp->setText(1, chield_id); |
417 | Item_tmp->setText(1, chield_id); |
392 | Item_tmp->setCheckState(0, Qt::Checked); |
418 | Item_tmp->setCheckState(0, Qt::Checked); |
393 | MainWindow::addChildsItems(Item_tmp); |
419 | MainWindow::addChildsItems(Item_tmp); |
394 | }
|
420 | }
|
395 | 421 | ||
396 | i++; |
422 | i++; |
397 | 423 | ||
398 | }
|
424 | }
|
399 | 425 | ||
400 | 426 | ||
401 | /********************************************************
|
427 | /********************************************************
|
402 | * Ôóíêöèÿ âîçâðàùàåò ñïèñîê "äî÷åðíèõ" êëàññîâ
|
428 | * Ôóíêöèÿ âîçâðàùàåò ñïèñîê "äî÷åðíèõ" êëàññîâ
|
403 | *
|
429 | *
|
404 | *
|
430 | *
|
405 | *
|
431 | *
|
406 | ********************************************************/
|
432 | ********************************************************/
|
407 | 433 | ||
408 | QStringList MainWindow::classChields(QString class_id){ |
434 | QStringList MainWindow::classChields(QString class_id){ |
409 | // QMap<QString, QString> map;
|
435 | // QMap<QString, QString> map;
|
410 | // TClass class_tmp;
|
436 | // TClass class_tmp;
|
411 | // QList <TClass> chields_class_list; // ñïèñîê äî÷åðíèõ êëàññîâ
|
437 | // QList <TClass> chields_class_list; // ñïèñîê äî÷åðíèõ êëàññîâ
|
412 | QStringList result;
|
438 | QStringList result;
|
413 | QSqlQuery q;
|
439 | QSqlQuery q;
|
414 | QString sql_str;
|
440 | QString sql_str;
|
415 | QString classIdentifer_str; // â ýòîì ïîëå ëåæèò èäåíòèôèêàòîð êëàññà-êîíòåéíåðà |
441 | QString classIdentifer_str; // â ýòîì ïîëå ëåæèò èäåíòèôèêàòîð êëàññà-êîíòåéíåðà |
416 | QString field_id_str;
|
442 | QString field_id_str;
|
417 | bool ok; |
443 | bool ok; |
418 | int field_classIdentifer; |
444 | int field_classIdentifer; |
419 | sql_str = tr("select * " |
445 | sql_str = tr("select * " |
420 | " from DescriptionOfClasses where DescriptionOfClasses.DefaultValue = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
446 | " from DescriptionOfClasses where DescriptionOfClasses.DefaultValue = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
421 | ); |
447 | ); |
422 | sql_str.append(class_id); |
448 | sql_str.append(class_id); |
423 | 449 | ||
424 | sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' ")); |
450 | sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' ")); |
425 | 451 | ||
426 | q.prepare(sql_str); |
452 | q.prepare(sql_str); |
427 | 453 | ||
428 | ok = q.exec(); |
454 | ok = q.exec(); |
429 | if (!ok) { |
455 | if (!ok) { |
430 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
456 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
431 | this, // Ðîäèòåëüñêèé âèäæåò. |
457 | this, // Ðîäèòåëüñêèé âèäæåò. |
432 | QObject::tr("Database Error"), // Çàãîëîâîê. |
458 | QObject::tr("Database Error"), // Çàãîëîâîê. |
433 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
459 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
434 | }
|
460 | }
|
435 | field_classIdentifer = q.record().indexOf(tr("ClassIdentifer")); |
461 | field_classIdentifer = q.record().indexOf(tr("ClassIdentifer")); |
436 | while(q.next()){ |
462 | while(q.next()){ |
437 | 463 | ||
438 | classIdentifer_str = q.value(field_classIdentifer).toString(); |
464 | classIdentifer_str = q.value(field_classIdentifer).toString(); |
439 | result.append(classIdentifer_str); |
465 | result.append(classIdentifer_str); |
440 | }
|
466 | }
|
441 | 467 | ||
442 | return result; |
468 | return result; |
443 | 469 | ||
444 | }
|
470 | }
|
445 | 471 | ||
446 | 472 | ||
447 | QMap <QString, QString> MainWindow::getClassList(){ // ïîëó÷àåì ñïèñîê êëàññîâ |
473 | QMap <QString, QString> MainWindow::getClassList(){ // ïîëó÷àåì ñïèñîê êëàññîâ |
448 | QMap <QString, QString> result_map; |
474 | QMap <QString, QString> result_map; |
449 | QSqlQuery q;
|
475 | QSqlQuery q;
|
450 | QString sql_str;
|
476 | QString sql_str;
|
- | 477 | QString class_name_str, class_id_str;
|
|
- | 478 | ||
451 | int field_class_id, field_class_name; |
479 | int field_class_id, field_class_name; |
452 | bool ok; |
480 | bool ok; |
453 | sql_str = tr("select * " |
481 | sql_str = tr("select * " |
454 | " from ListOfClasses " //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
482 | " from ListOfClasses " //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
455 | ); |
483 | ); |
456 | q.prepare(sql_str); |
484 | q.prepare(sql_str); |
457 | ok = q.exec(); |
485 | ok = q.exec(); |
458 | if (!ok) { |
486 | if (!ok) { |
459 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
487 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
460 | this, // Ðîäèòåëüñêèé âèäæåò. |
488 | this, // Ðîäèòåëüñêèé âèäæåò. |
461 | QObject::tr("Database Error"), // Çàãîëîâîê. |
489 | QObject::tr("Database Error"), // Çàãîëîâîê. |
462 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
490 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
463 | return result_map; // åñëè îøèáêà - âîçâðàùàåì ïóñòîé ñïèñîê |
491 | return result_map; // åñëè îøèáêà - âîçâðàùàåì ïóñòîé ñïèñîê |
464 | }
|
492 | }
|
465 | field_class_id = q.record().indexOf(tr("ID")); |
493 | field_class_id = q.record().indexOf(tr("ID")); |
466 | field_class_name = q.record().indexOf(tr("ClassName")); |
494 | field_class_name = q.record().indexOf(tr("ClassName")); |
467 | 495 | ||
- | 496 | while(q.next()){ |
|
468 | 497 | ||
- | 498 | class_name_str = q.value(field_class_name).toString(); |
|
- | 499 | class_id_str = q.value(field_class_id).toString(); |
|
- | 500 | result_map[class_id_str] = class_name_str; |
|
- | 501 | }
|
|
469 | return result_map; |
502 | return result_map; |
470 | }
|
503 | }
|
471 | 504 |