Хранилища Subversion OpenInventory

Редакция

Редакция 114 | Редакция 116 | К новейшей редакции | Только различия | Не учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS

Редакция 114 Редакция 115
1
1
#include "mainwindow.h"
2
2
#include "ui_mainwindow.h"
3
3
4
4
5
5
6
6
void MainWindow::getDatabaseData(){
7
7
int list_count;
8
8
9
9
if (rootItems.isEmpty()) return;
10
10
11
11
list_count = rootItems.count();
12
12
13
13
for (int i=0; i < list_count; i++){
14
14
15
15
    buildTree(rootItems.at(i));
16
16
17
17
}
18
18
19
19
}
20
20
21
21
void MainWindow::buildTree(QTreeWidgetItem * model_item){
22
22
23
23
24
24
25
25
26
26
QString model_name;
27
27
QString rootClassID;
28
28
QString rootClassInctance;
29
29
QFont font;
30
30
31
31
QTreeWidgetItem * item;
32
32
model_name = model_item->text(0);
33
33
if (model_item->checkState(0) == false) return;
34
34
35
35
//font.setWeight(20);
36
36
font.setItalic(true);
37
37
item = new QTreeWidgetItem (ui->treeWidget_2);
38
38
item->setFont(0, font);
39
39
item->setText(0, model_name);
40
40
item->setTextColor(0, Qt::darkGreen);
41
41
42
42
43
43
rootClassID = model_item->child(0)->text(1);
44
44
rootClassInctance = getClassInctance(rootClassID);
45
45
if (model_item->child(0)->checkState(0)) // åñëè â ìîäåëè êîðíåâîé êëàññ âûáðàí äëÿ îòîáðàæåíèÿ (ñòîèò ãàëî÷êà), òî
46
46
    {
47
47
     /////   QTreeWidgetItem * item_tmp;
48
48
   /////     item_tmp = new QTreeWidgetItem(item);                  // â äåðåâå, îòîáðàæàþùåì îáúåêòû êëàññîâ, ñîçäàåì íîâûé óçåë
49
49
   /////     item_tmp->setText(0, model_item->child(0)->text(0));    // ñ íàçâàíèåì êëàññà
50
50
51
51
        //showClassObjects(item_tmp, model_item->child(0));  // è âûâîäèì âñå îáúåêòû äàííîãî êëàññà
52
52
53
53
        ///// showObjects(item_tmp, model_item->child(0), tr(""));
54
54
    showObjects(item, model_item->child(0), tr(""));
55
55
    }
56
56
57
57
58
58
/*****************************************************/
59
59
60
60
61
61
}
62
62
63
63
64
64
// ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà
65
65
QString MainWindow::getClassInctance(QString class_id){
66
66
    QSqlQuery q;
67
67
    QString sql_str;
68
68
    QString result;
69
69
    QString classInctance;
70
70
    int field_inctance;
71
71
    bool ok;
72
72
    sql_str = tr("select * "
73
73
                 " from ListOfClasses where  ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
74
74
                 );
75
75
    sql_str.append(class_id);
76
76
     sql_str.append(tr("'"));
77
77
    q.prepare(sql_str);
78
78
79
79
    ok = q.exec();
80
80
    if (!ok) {
81
81
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
82
82
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
83
83
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
84
84
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
85
85
                                                                            return result;
86
86
                     }
87
87
    field_inctance = q.record().indexOf(tr("TableWhithInstance"));
88
88
    while(q.next()){
89
89
90
90
                  classInctance = q.value(field_inctance).toString();
91
91
                  result.append(classInctance);
92
92
                  }
93
93
94
94
  return result;
95
95
96
96
}
97
97
98
98
void MainWindow::showClassObjects(QTreeWidgetItem * parent_item, QTreeWidgetItem * model_item){
99
99
    QString classID; // èäåíòèôèêàòîð êëàññà
100
100
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
101
101
    QSqlQuery q;
102
102
    QString sql_str;
103
103
    QString str_tmp;
104
104
    bool ok;
105
105
    int field_ID;
106
106
    int i;
107
107
    classID = model_item->text(1);
108
108
    inctance = getClassInctance(classID);
109
109
110
110
    sql_str = tr("select * "
111
111
                 " from "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
112
112
                 );
113
113
    sql_str.append(inctance);
114
114
    q.prepare(sql_str);
115
115
116
116
    ok = q.exec();
117
117
    if (!ok) {
118
118
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
119
119
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
120
120
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
121
121
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
122
122
                                                                            return;
123
123
                     }
124
124
125
125
    field_ID = q.record().indexOf(tr("ID"));
126
126
127
127
128
128
    while(q.next()){
129
129
                  if (q.record().count() > 1)
130
130
                  {
131
131
                    QString value_tmp;
132
132
                    QString ID_tmp;
133
133
                    QTreeWidgetItem * itm;
134
134
                    ID_tmp = q.value(field_ID).toString(); // îïðåäåëÿåì èäåíòèôèêàòîð îáúåêòà
135
135
                    value_tmp = q.value(1).toString(); // îïðåäåëÿåì èìÿ îáúåêòà (äîëæíî õðàíèòüñÿ â ïåðâîì ïîëå)
136
136
                    itm = new QTreeWidgetItem(parent_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó
137
137
                    itm->setText(0, value_tmp);
138
138
                    for (int i; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû
139
139
                    {
140
140
                        QTreeWidgetItem * model_item_tmp;           // åñëè åñòü
141
141
                        model_item_tmp = model_item->child(i);      // îòîáðàæàåì îáúåêòû äî÷åðíèõ êëàññîâ
142
142
                        MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
143
143
144
144
                    }
145
145
                  }
146
146
147
147
             }
148
148
149
149
   
150
150
    i++;
151
151
}
152
152
153
153
154
154
155
155
void MainWindow::showObjectChildrens(QString object_ID, QTreeWidgetItem * object_item, QTreeWidgetItem * model_item){ // îòîáðàçèì îáúåêòû êëàññîâà
156
156
157
157
    QString classID; // èäåíòèôèêàòîð êëàññà
158
158
159
159
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
160
160
    QSqlQuery q;
161
161
    QString sql_str;
162
162
    QString str_tmp;
163
163
    bool ok;
164
164
    classID = model_item->text(1);
165
165
    inctance = getClassInctance(classID);
166
166
167
167
    sql_str = tr("select * "
168
168
                 " from '"       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
169
169
                 );
170
170
    sql_str.append(inctance);
171
171
    sql_str.append(tr("' where "));
172
172
173
173
174
174
    q.prepare(sql_str);
175
175
176
176
    ok = q.exec();
177
177
    if (!ok) {
178
178
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
179
179
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
180
180
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
181
181
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
182
182
                                                                            return;
183
183
                     }
184
184
}
185
185
186
186
187
187
void MainWindow::showObjects(QTreeWidgetItem * parent_object_item, QTreeWidgetItem * model_item, QString filtr){
188
188
    QString classID; // èäåíòèôèêàòîð êëàññà
189
189
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
190
190
    QString className; // èìÿ êëàññà
191
191
    int field_ID;
192
192
    bool filtr_empty;
193
193
    bool ok;
194
194
    QSqlQuery q;
195
195
    QString sql_str;
196
196
    QString str_tmp;
197
197
    QTreeWidgetItem * title_item;
198
198
    QFont font;
199
199
   // font.setWeight(40);
200
200
    font.setBold(true);
201
201
    filtr_empty = filtr.isEmpty();
202
202
    classID = model_item->text(1);
203
203
    className = model_item->text(0);
204
204
    inctance = getClassInctance(classID);
205
205
206
206
    title_item = new  QTreeWidgetItem(parent_object_item);
207
207
    title_item->setFont(0, font);
208
208
    title_item->setText(0, className);
209
209
    title_item->setText(1, tr("class"));
210
210
    title_item->setText(2, classID);
-
 
211
    title_item->setText(3, inctance);
211
212
    title_item->setTextColor(0, Qt::darkBlue);
212
213
213
214
    sql_str = tr("select * "
214
215
                 " from "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
215
216
                 );
216
217
    sql_str.append(inctance);
217
218
    if (!filtr.isEmpty())   { // åñëè ôèëüòð íå ïóñòîé
218
219
                                 sql_str.append(tr(" "));
219
220
                                 sql_str.append(filtr); // äîáàâëÿåì â çàïðîñ ôèëüòð
220
221
                            }
221
222
222
223
    q.prepare(sql_str);
223
224
224
225
    ok = q.exec();
225
226
    if (!ok) {
226
227
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
227
228
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
228
229
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
229
230
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
230
231
                                                                            return;
231
232
                     }
232
233
233
234
    field_ID = q.record().indexOf(tr("ID"));
234
235
235
236
    /*
236
237
    if (q.size() <= 0) return;
237
238
    title_item = new  QTreeWidgetItem(parent_object_item);
238
239
    title_item->setFont(0, font);
239
240
    title_item->setText(0, className);
240
241
    */
241
242
242
243
    while(q.next()){
243
244
                  if (q.record().count() > 1)
244
245
                  {
245
246
                    QString value_tmp;
246
247
                    QString ID_tmp;
247
248
                    QTreeWidgetItem * itm;
248
249
                    ID_tmp = q.value(field_ID).toString(); 
249
250
250
251
251
252
252
253
253
254
254
255
255
256
256
257
257
258
258
259
259
260
260
261
261
262
262
263
-
 
264
263
265
264
266
265
267
266
268
267
269
268
270
269
271
270
272
271
273
272
274
273
275
274
276
275
277
276
278
277
279
278
280
279
281
280
282
281
283
282
284
283
285
284
286
285
287
286
288
287
289
288
290
289
291
290
292
-
 
293
291
294
292
295
293
296
294
297
295
298
296
299
297
300
298
301
299
302
300
303
301
304
302
305
303
306
304
307
305
308
306
309
307
310
308
311
309
312
310
313
311
314
312
315
313
316
314
317
315
318
316
319
317
320
318
321
319
322
320
323
321
324
322
325
323
326
324
327
325
328
326
329
-
 
330
-
 
331
-
 
332
-
 
333
-
 
334
-
 
335
-
 
336
-
 
337
-
 
338
-
 
339
-
 
340
-
 
341
-
 
342
-
 
343
-
 
344
-
 
345
-
 
346
-
 
347
-
 
348
-
 
349
-
 
350
-
 
351
-
 
352
-
 
353
-
 
354
-
 
355
-
 
356
-
 
357
-
 
358
-
 
359
-
 
360
-
 
361
-
 
362
-
 
363
-
 
364
-
 
365
-
 
366
-
 
367
-
 
368
-
 
369
-
 
370
-
 
371
-
 
372
-
 
373
-
 
374
-
 
375
-
 
376
-
 
377
-
 
378
-
 
379
-
 
380
-
 
381
-
 
382
-
 
383
-
 
384
-
 
385