Хранилища Subversion OpenInventory

Редакция

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

Редакция 113 Редакция 114
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
item->setTextColor(0, Qt::darkGreen);
40
41
41
42
42
43
rootClassID = model_item->child(0)->text(1);
43
44
rootClassInctance = getClassInctance(rootClassID);
44
45
if (model_item->child(0)->checkState(0)) // åñëè â ìîäåëè êîðíåâîé êëàññ âûáðàí äëÿ îòîáðàæåíèÿ (ñòîèò ãàëî÷êà), òî
45
46
    {
46
47
     /////   QTreeWidgetItem * item_tmp;
47
48
   /////     item_tmp = new QTreeWidgetItem(item);                  // â äåðåâå, îòîáðàæàþùåì îáúåêòû êëàññîâ, ñîçäàåì íîâûé óçåë
48
49
   /////     item_tmp->setText(0, model_item->child(0)->text(0));    // ñ íàçâàíèåì êëàññà
49
50
50
51
        //showClassObjects(item_tmp, model_item->child(0));  // è âûâîäèì âñå îáúåêòû äàííîãî êëàññà
51
52
52
53
        ///// showObjects(item_tmp, model_item->child(0), tr(""));
53
54
    showObjects(item, model_item->child(0), tr(""));
54
55
    }
55
56
56
57
57
58
/*****************************************************/
58
59
59
60
60
61
}
61
62
62
63
63
64
// ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà
64
65
QString MainWindow::getClassInctance(QString class_id){
65
66
    QSqlQuery q;
66
67
    QString sql_str;
67
68
    QString result;
68
69
    QString classInctance;
69
70
    int field_inctance;
70
71
    bool ok;
71
72
    sql_str = tr("select * "
72
73
                 " from ListOfClasses where  ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
73
74
                 );
74
75
    sql_str.append(class_id);
75
76
     sql_str.append(tr("'"));
76
77
    q.prepare(sql_str);
77
78
78
79
    ok = q.exec();
79
80
    if (!ok) {
80
81
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
81
82
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
82
83
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
83
84
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
84
85
                                                                            return result;
85
86
                     }
86
87
    field_inctance = q.record().indexOf(tr("TableWhithInstance"));
87
88
    while(q.next()){
88
89
89
90
                  classInctance = q.value(field_inctance).toString();
90
91
                  result.append(classInctance);
91
92
                  }
92
93
93
94
  return result;
94
95
95
96
}
96
97
97
98
void MainWindow::showClassObjects(QTreeWidgetItem * parent_item, QTreeWidgetItem * model_item){
98
99
    QString classID; // èäåíòèôèêàòîð êëàññà
99
100
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
100
101
    QSqlQuery q;
101
102
    QString sql_str;
102
103
    QString str_tmp;
103
104
    bool ok;
104
105
    int field_ID;
105
106
    int i;
106
107
    classID = model_item->text(1);
107
108
    inctance = getClassInctance(classID);
108
109
109
110
    sql_str = tr("select * "
110
111
                 " from "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
111
112
                 );
112
113
    sql_str.append(inctance);
113
114
    q.prepare(sql_str);
114
115
115
116
    ok = q.exec();
116
117
    if (!ok) {
117
118
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
118
119
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
119
120
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
120
121
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
121
122
                                                                            return;
122
123
                     }
123
124
124
125
    field_ID = q.record().indexOf(tr("ID"));
125
126
126
127
127
128
    while(q.next()){
128
129
                  if (q.record().count() > 1)
129
130
                  {
130
131
                    QString value_tmp;
131
132
                    QString ID_tmp;
132
133
                    QTreeWidgetItem * itm;
133
134
                    ID_tmp = q.value(field_ID).toString(); // îïðåäåëÿåì èäåíòèôèêàòîð îáúåêòà
134
135
                    value_tmp = q.value(1).toString(); // îïðåäåëÿåì èìÿ îáúåêòà (äîëæíî õðàíèòüñÿ â ïåðâîì ïîëå)
135
136
                    itm = new QTreeWidgetItem(parent_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó
136
137
                    itm->setText(0, value_tmp);
137
138
                    for (int i; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû
138
139
                    {
139
140
140
141
141
142
142
143
143
144
144
145
145
146
146
147
147
148
148
149
149
150
150
151
151
152
152
153
153
154
154
155
155
156
156
157
157
158
158
159
159
160
160
161
161
162
162
163
163
164
164
165
165
166
166
167
167
168
168
169
169
170
170
171
171
172
172
173
173
174
174
175
175
176
176
177
177
178
178
179
179
180
180
181
181
182
182
183
183
184
184
185
185
186
186
187
187
188
188
189
189
190
190
191
191
192
192
193
193
194
194
195
195
196
196
197
197
198
198
199
199
200
200
201
201
202
202
203
203
204
204
205
205
206
206
207
207
208
-
 
209
-
 
210
-
 
211
208
212
209
213
210
214
211
215
212
216
213
217
214
218
215
219
216
220
217
221
218
222
219
223
220
224
221
225
222
226
223
227
224
228
225
229
226
230
227
231
228
232
229
233
-
 
234
-
 
235
230
236
231
237
232
238
233
239
234
240
235
241
236
242
237
243
238
244
239
245
240
246
241
247
242
248
243
249
244
250
245
251
246
252
247
-
 
-
 
253
-
 
254
248
255