Хранилища Subversion OpenInventory

Редакция

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

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