Хранилища Subversion OpenInventory

Редакция

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

Редакция 140 Редакция 144
1
#include "mainwindow.h"
1
#include "mainwindow.h"
2
#include "ui_mainwindow.h"
2
#include "ui_mainwindow.h"
3
3
4
4
5
5
6
void MainWindow::getDatabaseData(){
6
void MainWindow::getDatabaseData(){
7
int list_count;
7
int list_count;
8
8
9
if (rootItems.isEmpty()) return;
9
if (rootItems.isEmpty()) return;
10
10
11
list_count = rootItems.count();
11
list_count = rootItems.count();
12
12
13
for (int i=0; i < list_count; i++){
13
for (int i=0; i < list_count; i++){
14
14
15
    buildTree(rootItems.at(i));
15
    buildTree(rootItems.at(i));
16
16
17
}
17
}
18
18
19
}
19
}
20
20
21
void MainWindow::buildTree(QTreeWidgetItem * model_item){
21
void MainWindow::buildTree(QTreeWidgetItem * model_item){
22
22
23
23
24
24
25
25
26
QString model_name;
26
QString model_name;
27
QString rootClassID;
27
QString rootClassID;
28
QString rootClassInctance;
28
QString rootClassInctance;
29
QFont font;
29
QFont font;
30
30
31
QTreeWidgetItem * item;
31
QTreeWidgetItem * item;
32
model_name = model_item->text(0);
32
model_name = model_item->text(0);
33
if (model_item->checkState(0) == false) return;
33
if (model_item->checkState(0) == false) return;
34
34
35
ui->treeWidget_2->clear();
35
ui->treeWidget_2->clear();
36
//font.setWeight(20);
36
//font.setWeight(20);
37
font.setItalic(true);
37
font.setItalic(true);
38
item = new QTreeWidgetItem (ui->treeWidget_2);
38
item = new QTreeWidgetItem (ui->treeWidget_2);
39
item->setFont(0, font);
39
item->setFont(0, font);
40
item->setText(0, model_name);
40
item->setText(0, model_name);
41
item->setTextColor(0, Qt::darkGreen);
41
item->setTextColor(0, Qt::darkGreen);
42
-
 
-
 
42
if (!(model_item->childCount() > 0)) return;
43
43
44
rootClassID = model_item->child(0)->text(1);
44
rootClassID = model_item->child(0)->text(1);
45
rootClassInctance = getClassInctance(rootClassID);
45
rootClassInctance = getClassInctance(rootClassID);
-
 
46
-
 
47
46
if (model_item->child(0)->checkState(0)) // åñëè â ìîäåëè êîðíåâîé êëàññ âûáðàí äëÿ îòîáðàæåíèÿ (ñòîèò ãàëî÷êà), òî
48
if (model_item->child(0)->checkState(0)) // åñëè â ìîäåëè êîðíåâîé êëàññ âûáðàí äëÿ îòîáðàæåíèÿ (ñòîèò ãàëî÷êà), òî
47
    {
49
    {
48
     /////   QTreeWidgetItem * item_tmp;
50
     /////   QTreeWidgetItem * item_tmp;
49
   /////     item_tmp = new QTreeWidgetItem(item);                  // â äåðåâå, îòîáðàæàþùåì îáúåêòû êëàññîâ, ñîçäàåì íîâûé óçåë
51
   /////     item_tmp = new QTreeWidgetItem(item);                  // â äåðåâå, îòîáðàæàþùåì îáúåêòû êëàññîâ, ñîçäàåì íîâûé óçåë
50
   /////     item_tmp->setText(0, model_item->child(0)->text(0));    // ñ íàçâàíèåì êëàññà
52
   /////     item_tmp->setText(0, model_item->child(0)->text(0));    // ñ íàçâàíèåì êëàññà
51
53
52
        //showClassObjects(item_tmp, model_item->child(0));  // è âûâîäèì âñå îáúåêòû äàííîãî êëàññà
54
        //showClassObjects(item_tmp, model_item->child(0));  // è âûâîäèì âñå îáúåêòû äàííîãî êëàññà
53
55
54
        ///// showObjects(item_tmp, model_item->child(0), tr(""));
56
        ///// showObjects(item_tmp, model_item->child(0), tr(""));
55
    showObjects(item, model_item->child(0), tr(""));
57
    showObjects(item, model_item->child(0), tr(""));
56
    }
58
    }
57
59
58
60
59
/*****************************************************/
61
/*****************************************************/
60
62
61
63
62
}
64
}
63
65
64
66
65
// ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà
67
// ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà
66
QString MainWindow::getClassInctance(QString class_id){
68
QString MainWindow::getClassInctance(QString class_id){
67
    QSqlQuery q;
69
    QSqlQuery q;
68
    QString sql_str;
70
    QString sql_str;
69
    QString result;
71
    QString result;
70
    QString classInctance;
72
    QString classInctance;
71
    int field_inctance;
73
    int field_inctance;
72
    bool ok;
74
    bool ok;
73
    sql_str = tr("select * "
75
    sql_str = tr("select * "
74
                 " from ListOfClasses where  ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
76
                 " from ListOfClasses where  ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
75
                 );
77
                 );
76
    sql_str.append(class_id);
78
    sql_str.append(class_id);
77
     sql_str.append(tr("'"));
79
     sql_str.append(tr("'"));
78
    q.prepare(sql_str);
80
    q.prepare(sql_str);
79
81
80
    ok = q.exec();
82
    ok = q.exec();
81
    if (!ok) {
83
    if (!ok) {
82
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
84
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
83
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
85
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
84
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
86
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
85
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
87
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
86
                                                                            return result;
88
                                                                            return result;
87
                     }
89
                     }
88
    field_inctance = q.record().indexOf(tr("TableWhithInstance"));
90
    field_inctance = q.record().indexOf(tr("TableWhithInstance"));
89
    while(q.next()){
91
    while(q.next()){
90
92
91
                  classInctance = q.value(field_inctance).toString();
93
                  classInctance = q.value(field_inctance).toString();
92
                  result.append(classInctance);
94
                  result.append(classInctance);
93
                  }
95
                  }
94
96
95
  return result;
97
  return result;
96
98
97
}
99
}
98
100
99
void MainWindow::showClassObjects(QTreeWidgetItem * parent_item, QTreeWidgetItem * model_item){
101
void MainWindow::showClassObjects(QTreeWidgetItem * parent_item, QTreeWidgetItem * model_item){
100
    QString classID; // èäåíòèôèêàòîð êëàññà
102
    QString classID; // èäåíòèôèêàòîð êëàññà
101
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
103
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
102
    QSqlQuery q;
104
    QSqlQuery q;
103
    QString sql_str;
105
    QString sql_str;
104
    QString str_tmp;
106
    QString str_tmp;
105
    bool ok;
107
    bool ok;
106
    int field_ID;
108
    int field_ID;
107
    int i;
109
    int i;
108
    classID = model_item->text(1);
110
    classID = model_item->text(1);
109
    inctance = getClassInctance(classID);
111
    inctance = getClassInctance(classID);
110
112
111
    sql_str = tr("select * "
113
    sql_str = tr("select * "
112
                 " from "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
114
                 " from "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
113
                 );
115
                 );
114
    sql_str.append(inctance);
116
    sql_str.append(inctance);
115
    q.prepare(sql_str);
117
    q.prepare(sql_str);
116
118
117
    ok = q.exec();
119
    ok = q.exec();
118
    if (!ok) {
120
    if (!ok) {
119
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
121
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
120
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
122
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
121
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
123
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
122
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
124
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
123
                                                                            return;
125
                                                                            return;
124
                     }
126
                     }
125
127
126
    field_ID = q.record().indexOf(tr("ID"));
128
    field_ID = q.record().indexOf(tr("ID"));
127
129
128
130
129
    while(q.next()){
131
    while(q.next()){
130
                  if (q.record().count() > 1)
132
                  if (q.record().count() > 1)
131
                  {
133
                  {
132
                    QString value_tmp;
134
                    QString value_tmp;
133
                    QString ID_tmp;
135
                    QString ID_tmp;
134
                    QTreeWidgetItem * itm;
136
                    QTreeWidgetItem * itm;
135
                    ID_tmp = q.value(field_ID).toString(); // îïðåäåëÿåì èäåíòèôèêàòîð îáúåêòà
137
                    ID_tmp = q.value(field_ID).toString(); // îïðåäåëÿåì èäåíòèôèêàòîð îáúåêòà
136
                    value_tmp = q.value(1).toString(); // îïðåäåëÿåì èìÿ îáúåêòà (äîëæíî õðàíèòüñÿ â ïåðâîì ïîëå)
138
                    value_tmp = q.value(1).toString(); // îïðåäåëÿåì èìÿ îáúåêòà (äîëæíî õðàíèòüñÿ â ïåðâîì ïîëå)
137
                    itm = new QTreeWidgetItem(parent_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó
139
                    itm = new QTreeWidgetItem(parent_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó
138
                    itm->setText(0, value_tmp);
140
                    itm->setText(0, value_tmp);
139
                    for (int i; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû
141
                    for (int i; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû
140
                    {
142
                    {
141
                        QTreeWidgetItem * model_item_tmp;           // åñëè åñòü
143
                        QTreeWidgetItem * model_item_tmp;           // åñëè åñòü
142
                        model_item_tmp = model_item->child(i);      // îòîáðàæàåì îáúåêòû äî÷åðíèõ êëàññîâ
144
                        model_item_tmp = model_item->child(i);      // îòîáðàæàåì îáúåêòû äî÷åðíèõ êëàññîâ
143
                        MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
145
                        MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
144
146
145
                    }
147
                    }
146
                  }
148
                  }
147
149
148
             }
150
             }
149
151
150
   
152
   
151
    i++;
153
    i++;
152
}
154
}
153
155
154
156
155
157
156
void MainWindow::showObjectChildrens(QString object_ID, QTreeWidgetItem * object_item, QTreeWidgetItem * model_item){ // îòîáðàçèì îáúåêòû êëàññîâà
158
void MainWindow::showObjectChildrens(QString object_ID, QTreeWidgetItem * object_item, QTreeWidgetItem * model_item){ // îòîáðàçèì îáúåêòû êëàññîâà
157
159
158
    QString classID; // èäåíòèôèêàòîð êëàññà
160
    QString classID; // èäåíòèôèêàòîð êëàññà
159
161
160
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
162
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
161
    QSqlQuery q;
163
    QSqlQuery q;
162
    QString sql_str;
164
    QString sql_str;
163
    QString str_tmp;
165
    QString str_tmp;
164
    bool ok;
166
    bool ok;
165
    classID = model_item->text(1);
167
    classID = model_item->text(1);
166
    inctance = getClassInctance(classID);
168
    inctance = getClassInctance(classID);
167
169
168
    sql_str = tr("select * "
170
    sql_str = tr("select * "
169
                 " from '"       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
171
                 " from '"       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
170
                 );
172
                 );
171
    sql_str.append(inctance);
173
    sql_str.append(inctance);
172
    sql_str.append(tr("' where "));
174
    sql_str.append(tr("' where "));
173
175
174
176
175
    q.prepare(sql_str);
177
    q.prepare(sql_str);
176
178
177
    ok = q.exec();
179
    ok = q.exec();
178
    if (!ok) {
180
    if (!ok) {
179
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
181
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
180
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
182
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
181
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
183
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
182
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
184
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
183
                                                                            return;
185
                                                                            return;
184
                     }
186
                     }
185
}
187
}
186
188
187
189
188
void MainWindow::showObjects(QTreeWidgetItem * parent_object_item, QTreeWidgetItem * model_item, QString filtr){
190
void MainWindow::showObjects(QTreeWidgetItem * parent_object_item, QTreeWidgetItem * model_item, QString filtr){
189
    QString classID; // èäåíòèôèêàòîð êëàññà
191
    QString classID; // èäåíòèôèêàòîð êëàññà
190
    QString parentClassID; // èäåíòèôèêàòîð ðîäèòåëüñêîãî êëàññà
192
    QString parentClassID; // èäåíòèôèêàòîð ðîäèòåëüñêîãî êëàññà
191
    QString pointerField; // èìÿ ïîëÿ-óêàçàòåëÿ íà ðîäèòåëüñêèé êëàññ
193
    QString pointerField; // èìÿ ïîëÿ-óêàçàòåëÿ íà ðîäèòåëüñêèé êëàññ
192
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
194
    QString inctance; // èìÿ òàáëèöû, õðàíèëèùà
193
    QString className; // èìÿ êëàññà
195
    QString className; // èìÿ êëàññà
194
    int field_ID;
196
    int field_ID;
195
    bool filtr_empty;
197
    bool filtr_empty;
196
    bool ok;
198
    bool ok;
197
    QSqlQuery q;
199
    QSqlQuery q;
198
    QString sql_str;
200
    QString sql_str;
199
    QString str_tmp;
201
    QString str_tmp;
200
    QTreeWidgetItem * title_item;
202
    QTreeWidgetItem * title_item;
201
    QFont font;
203
    QFont font;
202
   // font.setWeight(40);
204
   // font.setWeight(40);
203
    font.setBold(true);
205
    font.setBold(true);
204
    filtr_empty = filtr.isEmpty();
206
    filtr_empty = filtr.isEmpty();
205
    classID = model_item->text(1);
207
    classID = model_item->text(1);
206
208
207
    parentClassID = model_item->parent()->text(1);
209
    parentClassID = model_item->parent()->text(1);
208
210
209
    pointerField = getPointerFieldName(parentClassID, classID);
211
    pointerField = getPointerFieldName(parentClassID, classID);
210
212
211
    className = model_item->text(0);
213
    className = model_item->text(0);
212
    inctance = getClassInctance(classID);
214
    inctance = getClassInctance(classID);
213
215
214
    if  (!model_item->checkState(0)) return;
216
    if  (!model_item->checkState(0)) return;
215
217
216
    title_item = new  QTreeWidgetItem(parent_object_item);
218
    title_item = new  QTreeWidgetItem(parent_object_item);
217
    title_item->setFont(0, font);
219
    title_item->setFont(0, font);
218
    title_item->setText(0, className);
220
    title_item->setText(0, className);
219
    title_item->setText(1, tr("class"));
221
    title_item->setText(1, tr("class"));
220
    title_item->setText(2, classID);
222
    title_item->setText(2, classID);
221
    title_item->setText(3, inctance);
223
    title_item->setText(3, inctance);
222
    title_item->setText(4, pointerField);
224
    title_item->setText(4, pointerField);
223
    title_item->setTextColor(0, Qt::darkBlue);
225
    title_item->setTextColor(0, Qt::darkBlue);
224
226
225
227
226
    sql_str = tr("select * "
228
    sql_str = tr("select * "
227
                 " from "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
229
                 " from "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
228
                 );
230
                 );
229
    sql_str.append(inctance);
231
    sql_str.append(inctance);
230
    if (!filtr.isEmpty())   { // åñëè ôèëüòð íå ïóñòîé
232
    if (!filtr.isEmpty())   { // åñëè ôèëüòð íå ïóñòîé
231
                                 sql_str.append(tr(" "));
233
                                 sql_str.append(tr(" "));
232
                                 sql_str.append(filtr); // äîáàâëÿåì â çàïðîñ ôèëüòð
234
                                 sql_str.append(filtr); // äîáàâëÿåì â çàïðîñ ôèëüòð
233
                            }
235
                            }
234
236
235
    q.prepare(sql_str);
237
    q.prepare(sql_str);
236
238
237
    ok = q.exec();
239
    ok = q.exec();
238
    if (!ok) {
240
    if (!ok) {
239
                            QString debug_str;
241
                            QString debug_str;
240
                            debug_str.append(tr("ôóí showObjects(): Database Error "));
242
                            debug_str.append(tr("ôóí showObjects(): Database Error "));
241
                            debug_str.append(tr(" õð: "));
243
                            debug_str.append(tr(" õð: "));
242
                            debug_str.append(inctance);
244
                            debug_str.append(inctance);
243
                            debug_str.append(tr(" ô: "));
245
                            debug_str.append(tr(" ô: "));
244
                            debug_str.append(filtr);
246
                            debug_str.append(filtr);
245
                            debug_str.append(q.lastError().text());
247
                            debug_str.append(q.lastError().text());
246
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
248
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
247
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
249
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
248
                                                                            QObject::tr("ôóíêöèÿ showObjects(): Database Error"),   // Çàãîëîâîê.
250
                                                                            QObject::tr("ôóíêöèÿ showObjects(): Database Error"),   // Çàãîëîâîê.
249
                                                                            debug_str
251
                                                                            debug_str
250
                                                                           // q.lastError().text()
252
                                                                           // q.lastError().text()
251
                                                                             );          // Òåêñò ñîîáùåíèÿ.
253
                                                                             );          // Òåêñò ñîîáùåíèÿ.
252
                                                                            return;
254
                                                                            return;
253
                     }
255
                     }
254
256
255
    field_ID = q.record().indexOf(tr("ID"));
257
    field_ID = q.record().indexOf(tr("ID"));
256
258
257
    /*
259
    /*
258
    if (q.size() <= 0) return;
260
    if (q.size() <= 0) return;
259
    title_item = new  QTreeWidgetItem(parent_object_item);
261
    title_item = new  QTreeWidgetItem(parent_object_item);
260
    title_item->setFont(0, font);
262
    title_item->setFont(0, font);
261
    title_item->setText(0, className);
263
    title_item->setText(0, className);
262
    */
264
    */
263
265
264
    while(q.next()){
266
    while(q.next()){
265
                  if (q.record().count() > 1)
267
                  if (q.record().count() > 1)
266
                  {
268
                  {
267
                    QString value_tmp;
269
                    QString value_tmp;
268
                    QString ID_tmp;
270
                    QString ID_tmp;
269
                    QTreeWidgetItem * itm;
271
                    QTreeWidgetItem * itm;
270
                    ID_tmp = q.value(field_ID).toString(); // îïðåäåëÿåì èäåíòèôèêàòîð îáúåêòà
272
                    ID_tmp = q.value(field_ID).toString(); // îïðåäåëÿåì èäåíòèôèêàòîð îáúåêòà
271
                    value_tmp = q.value(1).toString(); // îïðåäåëÿåì èìÿ îáúåêòà (äîëæíî õðàíèòüñÿ â ïåðâîì ïîëå)
273
                    value_tmp = q.value(1).toString(); // îïðåäåëÿåì èìÿ îáúåêòà (äîëæíî õðàíèòüñÿ â ïåðâîì ïîëå)
272
               //     itm = new QTreeWidgetItem(parent_object_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó
274
               //     itm = new QTreeWidgetItem(parent_object_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó
273
                    itm = new QTreeWidgetItem(title_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó
275
                    itm = new QTreeWidgetItem(title_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó
274
                    itm->setText(0, value_tmp);
276
                    itm->setText(0, value_tmp);
275
                    itm->setText(1, tr("object"));
277
                    itm->setText(1, tr("object"));
276
                    itm->setText(2, ID_tmp);
278
                    itm->setText(2, ID_tmp);
277
                    for (int i=0; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû
279
                    for (int i=0; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû
278
                    {
280
                    {
279
                        QTreeWidgetItem * model_item_tmp;           // åñëè åñòü
281
                        QTreeWidgetItem * model_item_tmp;           // åñëè åñòü
280
                        QString pointer_name;
282
                        QString pointer_name;
281
                        QString filtr_tmp;
283
                        QString filtr_tmp;
282
                        bool pointer_isEmpty;
284
                        bool pointer_isEmpty;
283
                        model_item_tmp = model_item->child(i);      // îòîáðàæàåì îáúåêòû äî÷åðíèõ êëàññîâ
285
                        model_item_tmp = model_item->child(i);      // îòîáðàæàåì îáúåêòû äî÷åðíèõ êëàññîâ
284
                        pointer_name = getPointerFieldName(classID, model_item->child(i)->text(1));
286
                        pointer_name = getPointerFieldName(classID, model_item->child(i)->text(1));
285
                        itm->setText(4, pointer_name);
287
                        itm->setText(4, pointer_name);
286
288
287
                      //  title_item->setText(4, pointer_name);
289
                      //  title_item->setText(4, pointer_name);
288
290
289
291
290
                        pointer_isEmpty = pointer_name.isEmpty();
292
                        pointer_isEmpty = pointer_name.isEmpty();
291
                        filtr_tmp = tr("where ");
293
                        filtr_tmp = tr("where ");
292
                        filtr_tmp.append(tr("`"));
294
                        filtr_tmp.append(tr("`"));
293
                        filtr_tmp.append(pointer_name);
295
                        filtr_tmp.append(pointer_name);
294
                        filtr_tmp.append(tr("` = '"));
296
                        filtr_tmp.append(tr("` = '"));
295
                        filtr_tmp.append(ID_tmp);
297
                        filtr_tmp.append(ID_tmp);
296
                         filtr_tmp.append(tr("'"));
298
                         filtr_tmp.append(tr("'"));
297
                        showObjects(itm,  model_item_tmp, filtr_tmp);
299
                        showObjects(itm,  model_item_tmp, filtr_tmp);
298
                        //MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
300
                        //MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
299
301
300
                    }
302
                    }
301
303
302
304
303
                }
305
                }
304
306
305
              }
307
              }
306
308
307
309
308
310
309
311
310
    for (int i; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû
312
    for (int i; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû
311
        {
313
        {
312
314
313
315
314
        }
316
        }
315
317
316
}
318
}
317
319
318
320
319
QString MainWindow::getPointerFieldName(QString parent_class_id, QString chield_class_id){
321
QString MainWindow::getPointerFieldName(QString parent_class_id, QString chield_class_id){
320
322
321
    QSqlQuery q;
323
    QSqlQuery q;
322
    QString sql_str;
324
    QString sql_str;
323
    QString str_tmp;
325
    QString str_tmp;
324
    QString field;
326
    QString field;
325
    QString result;
327
    QString result;
326
    int field_name;
328
    int field_name;
327
    bool ok;
329
    bool ok;
328
    sql_str = tr("select * "
330
    sql_str = tr("select * "
329
                 " from `DescriptionOfClasses` where `DescriptionOfClasses`.`FieldType` = 'pointer' and  `DescriptionOfClasses`.`DefaultValue` = "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
331
                 " from `DescriptionOfClasses` where `DescriptionOfClasses`.`FieldType` = 'pointer' and  `DescriptionOfClasses`.`DefaultValue` = "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
330
                 );
332
                 );
331
333
332
    sql_str.append(tr("'"));
334
    sql_str.append(tr("'"));
333
    sql_str.append(parent_class_id);
335
    sql_str.append(parent_class_id);
334
    sql_str.append(tr("' "));
336
    sql_str.append(tr("' "));
335
    sql_str.append(tr(" and  `DescriptionOfClasses`.`ClassIdentifer` = '"));
337
    sql_str.append(tr(" and  `DescriptionOfClasses`.`ClassIdentifer` = '"));
336
    sql_str.append(chield_class_id);
338
    sql_str.append(chield_class_id);
337
    sql_str.append(tr("'"));
339
    sql_str.append(tr("'"));
338
    q.prepare(sql_str);
340
    q.prepare(sql_str);
339
341
340
    ok = q.exec();
342
    ok = q.exec();
341
    if (!ok) {
343
    if (!ok) {
342
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
344
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
343
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
345
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
344
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
346
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
345
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
347
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
346
                                                                            return result;
348
                                                                            return result;
347
                     }
349
                     }
348
field_name =  q.record().indexOf(tr("FieldName"));
350
field_name =  q.record().indexOf(tr("FieldName"));
349
while(q.next()){
351
while(q.next()){
350
        result = q.value(field_name).toString();
352
        result = q.value(field_name).toString();
351
    }
353
    }
352
return result;
354
return result;
353
}
355
}
354
356
355
357
356
358
357
void MainWindow::on_treeWidget_2_itemClicked ( QTreeWidgetItem * item, int column ){
359
void MainWindow::on_treeWidget_2_itemClicked ( QTreeWidgetItem * item, int column ){
358
QString item_type; // òèï óçëà (èìÿ êëàññà èäè îáúåêò)
360
QString item_type; // òèï óçëà (èìÿ êëàññà èäè îáúåêò)
359
QString parent_object_id;
361
QString parent_object_id;
360
int i;
362
int i;
361
QTreeWidgetItem * parent_item;
363
QTreeWidgetItem * parent_item;
362
item_type = item->text(1);
364
item_type = item->text(1);
363
parent_item = item->parent();
365
parent_item = item->parent();
364
if (item_type == tr("object"))
366
if (item_type == tr("object"))
365
    {
367
    {
366
        QString  class_id;
368
        QString  class_id;
367
        QString ID;
369
        QString ID;
368
        QString inctance;
370
        QString inctance;
369
        QString filtr_tmp;
371
        QString filtr_tmp;
370
372
371
        disconnect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
373
        disconnect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
372
374
373
        ui->pushButton->setEnabled(false);
375
        ui->pushButton->setEnabled(false);
374
        ui->pushButton_2->setEnabled(false);
376
        ui->pushButton_2->setEnabled(false);
375
377
376
        class_id = parent_item->text(2);
378
        class_id = parent_item->text(2);
377
        ID = item->text(2);
379
        ID = item->text(2);
378
        inctance = parent_item->text(3);
380
        inctance = parent_item->text(3);
379
        delete sql_mogel;
381
        delete sql_mogel;
380
382
381
        ///////sql_mogel = new QSqlTableModel();
383
        ///////sql_mogel = new QSqlTableModel();
382
        sql_mogel = new MyModel();
384
        sql_mogel = new MyModel();
383
385
384
        //        sql_mogel = new QSqlTableModel(this);
386
        //        sql_mogel = new QSqlTableModel(this);
385
        sql_mogel->setTable(inctance);
387
        sql_mogel->setTable(inctance);
386
        // sql_mogel->setEditStrategy(QSqlTableModel::OnFieldChange);
388
        // sql_mogel->setEditStrategy(QSqlTableModel::OnFieldChange);
387
        sql_mogel->setEditStrategy(QSqlTableModel::OnManualSubmit);
389
        sql_mogel->setEditStrategy(QSqlTableModel::OnManualSubmit);
388
390
389
        filtr_tmp.append(tr("`"));
391
        filtr_tmp.append(tr("`"));
390
        filtr_tmp.append(tr("ID"));
392
        filtr_tmp.append(tr("ID"));
391
        filtr_tmp.append(tr("`"));
393
        filtr_tmp.append(tr("`"));
392
        filtr_tmp.append(tr(" = '"));
394
        filtr_tmp.append(tr(" = '"));
393
        filtr_tmp.append(ID);
395
        filtr_tmp.append(ID);
394
        filtr_tmp.append(tr("'"));
396
        filtr_tmp.append(tr("'"));
395
        sql_mogel->setFilter(filtr_tmp);
397
        sql_mogel->setFilter(filtr_tmp);
396
        sql_mogel->select();
398
        sql_mogel->select();
397
399
398
400
399
        ui->tableView->setModel(sql_mogel);
401
        ui->tableView->setModel(sql_mogel);
400
        ui->tableView->resizeColumnsToContents();
402
        ui->tableView->resizeColumnsToContents();
401
403
402
        connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
404
        connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
403
405
404
        //sql_mogel->clear();
406
        //sql_mogel->clear();
405
        //sql_mogel->select();
407
        //sql_mogel->select();
406
     //   ui->tableView->setVisible(false);
408
     //   ui->tableView->setVisible(false);
407
     //   i++;
409
     //   i++;
408
    }
410
    }
409
if (item_type == tr("class"))
411
if (item_type == tr("class"))
410
    {
412
    {
411
        QString parent_object_id; // èäåíòèôèêàòîð ðîäèòåëüñêîãî îáúåêòà
413
        QString parent_object_id; // èäåíòèôèêàòîð ðîäèòåëüñêîãî îáúåêòà
412
414
413
        QString class_id; // èäåíòèôèêàòîð âûáðàííîãî êëàññà
415
        QString class_id; // èäåíòèôèêàòîð âûáðàííîãî êëàññà
414
        QString inctance;
416
        QString inctance;
415
        QString parent_class_inctance;
417
        QString parent_class_inctance;
416
        QString pointer_name;
418
        QString pointer_name;
417
        QString filtr_tmp;
419
        QString filtr_tmp;
418
420
419
421
420
422
421
   //     sql_mogel->clear();
423
   //     sql_mogel->clear();
422
424
423
        ui->pushButton->setEnabled(true);
425
        ui->pushButton->setEnabled(true);
424
        ui->pushButton_2->setEnabled(true);
426
        ui->pushButton_2->setEnabled(true);
425
427
426
        disconnect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
428
        disconnect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
427
429
428
        parent_object_id = parent_item->text(2);
430
        parent_object_id = parent_item->text(2);
429
431
430
        parentObject_id = parent_item->text(2);
432
        parentObject_id = parent_item->text(2);
431
433
432
        class_id = item->text(2);
434
        class_id = item->text(2);
433
        inctance = item->text(3);
435
        inctance = item->text(3);
434
436
435
    //    parent_class_inctance = parent_item->parent()->text(3); // óçíàåì õðàíèëèùå îáúåêòîâ ðîäèòåëüñêîãî êëàññà
437
    //    parent_class_inctance = parent_item->parent()->text(3); // óçíàåì õðàíèëèùå îáúåêòîâ ðîäèòåëüñêîãî êëàññà
436
438
437
       // pointer_name = parent_item->text(4);
439
       // pointer_name = parent_item->text(4);
438
        pointer_name = item->text(4);
440
        pointer_name = item->text(4);
439
        delete sql_mogel;
441
        delete sql_mogel;
440
442
441
443
442
        ////// sql_mogel = new QSqlTableModel();
444
        ////// sql_mogel = new QSqlTableModel();
443
445
444
        sql_mogel = new MyModel();
446
        sql_mogel = new MyModel();
445
447
446
        //        sql_mogel = new QSqlTableModel(this);
448
        //        sql_mogel = new QSqlTableModel(this);
447
        sql_mogel->setTable(inctance);
449
        sql_mogel->setTable(inctance);
448
        // sql_mogel->setEditStrategy(QSqlTableModel::OnFieldChange);
450
        // sql_mogel->setEditStrategy(QSqlTableModel::OnFieldChange);
449
        sql_mogel->setEditStrategy(QSqlTableModel::OnManualSubmit);
451
        sql_mogel->setEditStrategy(QSqlTableModel::OnManualSubmit);
450
452
451
        if (!parent_object_id.isEmpty())
453
        if (!parent_object_id.isEmpty())
452
        {
454
        {
453
            filtr_tmp.append(tr("`"));
455
            filtr_tmp.append(tr("`"));
454
            filtr_tmp.append(pointer_name);
456
            filtr_tmp.append(pointer_name);
455
            filtr_tmp.append(tr("`"));
457
            filtr_tmp.append(tr("`"));
456
            filtr_tmp.append(tr(" = '"));
458
            filtr_tmp.append(tr(" = '"));
457
            filtr_tmp.append(parent_object_id);
459
            filtr_tmp.append(parent_object_id);
458
            filtr_tmp.append(tr("'"));
460
            filtr_tmp.append(tr("'"));
459
            sql_mogel->setFilter(filtr_tmp);
461
            sql_mogel->setFilter(filtr_tmp);
460
        }
462
        }
461
463
462
        /****************************************
464
        /****************************************
463
         spinDelegate.setInctance(parent_class_inctance);
465
         spinDelegate.setInctance(parent_class_inctance);
464
         spinDelegate.getItems();
466
         spinDelegate.getItems();
465
         ui->tableView->setItemDelegateForColumn(2, &spinDelegate);
467
         ui->tableView->setItemDelegateForColumn(2, &spinDelegate);
466
        ***************************************/
468
        ***************************************/
467
469
468
470
469
        sql_mogel->select();
471
        sql_mogel->select();
470
472
471
        QMap <QString, QString> pointersList = getPointersList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé-óêàçàòåëåé
473
        QMap <QString, QString> pointersList = getPointersList(class_id); // ïîëó÷àåì ñïèñîê ïîëåé-óêàçàòåëåé
472
        QMap <int, QString> pointersToModel;
474
        QMap <int, QString> pointersToModel;
473
475
474
        QStringList pointersNames;
476
        QStringList pointersNames;
475
        static QList<int> colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ íåñòàíäàðòíûìè äåëåãàòàìè
477
        static QList<int> colomns_indexes; // ñïèñîê íîìåðîâ ñòîëáöîâ òàáëèöû ñ íåñòàíäàðòíûìè äåëåãàòàìè
476
478
477
        // Ñïåðâà "î÷èñòèì" òàáëèöó îò íåñòàíäàðòíûõ äåëåãàòîâ
479
        // Ñïåðâà "î÷èñòèì" òàáëèöó îò íåñòàíäàðòíûõ äåëåãàòîâ
478
        for (i=0; i < colomns_indexes.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé:
480
        for (i=0; i < colomns_indexes.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé:
479
481
480
482
481
483
482
            ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &standart_delegate ); // è ïðèñâàèâàåì ñòàíäàðòíûé äåëåãàò
484
            ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &standart_delegate ); // è ïðèñâàèâàåì ñòàíäàðòíûé äåëåãàò
483
        // ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &picture_delegate);
485
        // ui->tableView->setItemDelegateForColumn(colomns_indexes.at(i), &picture_delegate);
484
486
485
        }
487
        }
486
488
487
        colomns_indexes.clear(); // î÷èùàåñ ñïèñîê ñòîëáöîâ ñ íåñòàíäàðòíûìè äåëåãàòàìè
489
        colomns_indexes.clear(); // î÷èùàåñ ñïèñîê ñòîëáöîâ ñ íåñòàíäàðòíûìè äåëåãàòàìè
488
490
489
491
490
        pointersNames = pointersList.keys(); //çäåñü ñïèñîê èìåí ïîëåé-óêàçàòåëåé íà ðîäèòåëüñêèå êëàññû
492
        pointersNames = pointersList.keys(); //çäåñü ñïèñîê èìåí ïîëåé-óêàçàòåëåé íà ðîäèòåëüñêèå êëàññû
491
493
492
494
493
495
494
496
495
497
496
498
497
    //    ui->tableView->setItemDelegateForColumn(2, picture_delegate);
499
    //    ui->tableView->setItemDelegateForColumn(2, picture_delegate);
498
500
499
       // ui->tableView->setRowHeight(1, 100);
501
       // ui->tableView->setRowHeight(1, 100);
500
502
501
503
502
504
503
505
504
506
505
        QStringList parentInctancesList = pointersList.values(); // çäåñü ñïèñîê ñîîòâåòñòâóþùèõ õðàíèëèù
507
        QStringList parentInctancesList = pointersList.values(); // çäåñü ñïèñîê ñîîòâåòñòâóþùèõ õðàíèëèù
506
508
507
        for (i=0; i < pointersNames.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé:
509
        for (i=0; i < pointersNames.size(); i++){ // äëÿ âñåõ ïîëåé-óêàçàòåëåé:
508
            QString pointerName;
510
            QString pointerName;
509
511
510
            int pointerIndex;
512
            int pointerIndex;
511
            pointerName = pointersNames.at(i);  // îïðåäåëÿåì èìÿ ïîëÿ-óêàçàòåëÿ
513
            pointerName = pointersNames.at(i);  // îïðåäåëÿåì èìÿ ïîëÿ-óêàçàòåëÿ
512
            pointerIndex = sql_mogel->record().indexOf(pointerName); // îïðåäåëÿåì íîìåð ñòîëáöà â ìîäåëå
514
            pointerIndex = sql_mogel->record().indexOf(pointerName); // îïðåäåëÿåì íîìåð ñòîëáöà â ìîäåëå
513
            colomns_indexes.append(pointerIndex); // çàïîìíèì íîìåð ñòîëáöà ñ íåñòàíäàðòíûì äåëåãàòîì
515
            colomns_indexes.append(pointerIndex); // çàïîìíèì íîìåð ñòîëáöà ñ íåñòàíäàðòíûì äåëåãàòîì
514
            spinDelegate.setInctance(parentInctancesList.at(i)); // äåëåãàòó ïåðåäàåì èìÿ õðàíèëèùà îáúåêòîâ ðîäèòåëüñêîãî êëàññà
516
            spinDelegate.setInctance(parentInctancesList.at(i)); // äåëåãàòó ïåðåäàåì èìÿ õðàíèëèùà îáúåêòîâ ðîäèòåëüñêîãî êëàññà
515
            spinDelegate.getItems();                             // ïðîñèì äåëåãàòà ñîñòàâèòü ñïèñîê îáúåêòîâ â õðàíèëèùå
517
            spinDelegate.getItems();                             // ïðîñèì äåëåãàòà ñîñòàâèòü ñïèñîê îáúåêòîâ â õðàíèëèùå
516
            ui->tableView->setItemDelegateForColumn(pointerIndex, &spinDelegate); // è ïðèñâàèâàåì åãî ñîîòâåòñòâóþùåìó ñòîëáöó íàøåé òàáëèöû
518
            ui->tableView->setItemDelegateForColumn(pointerIndex, &spinDelegate); // è ïðèñâàèâàåì åãî ñîîòâåòñòâóþùåìó ñòîëáöó íàøåé òàáëèöû
517
519
518
520
519
            pointersToModel.insert(pointerIndex, parentInctancesList.at(i)); // ôîðìèðóåì ñïèñîê ñòîëáöîâ ñ óêàçàòåëÿìè
521
            pointersToModel.insert(pointerIndex, parentInctancesList.at(i)); // ôîðìèðóåì ñïèñîê ñòîëáöîâ ñ óêàçàòåëÿìè
520
        }
522
        }
521
523
522
        sql_mogel->setPointers(pointersToModel); // ïåðåäàåì ñïèñîê ìîäåëè
524
        sql_mogel->setPointers(pointersToModel); // ïåðåäàåì ñïèñîê ìîäåëè
523
525
524
        pointer_index = sql_mogel->record().indexOf(pointer_name); // ýòî ãëîáàëüíàÿ ïåðåìåííàÿ, íå òðîãàåì, íóæíà! :-)
526
        pointer_index = sql_mogel->record().indexOf(pointer_name); // ýòî ãëîáàëüíàÿ ïåðåìåííàÿ, íå òðîãàåì, íóæíà! :-)
525
527
526
        ui->tableView->setModel(sql_mogel);
528
        ui->tableView->setModel(sql_mogel);
527
529
528
530
529
531
530
532
531
533
532
534
533
535
534
        /**********************************************************/
536
        /**********************************************************/
535
537
536
  //      for (int i; i < sql_mogel->rowCount(); i++ ) {
538
  //      for (int i; i < sql_mogel->rowCount(); i++ ) {
537
  //          ui->tableView->setRowHeight(i, 100);
539
  //          ui->tableView->setRowHeight(i, 100);
538
  //      }
540
  //      }
539
541
540
        /**********************************************************/
542
        /**********************************************************/
541
543
542
544
543
545
544
546
545
547
546
548
547
        connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
549
        connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
548
550
549
551
550
        //     ui->tableView->setVisible(true);;
552
        //     ui->tableView->setVisible(true);;
551
        i++;
553
        i++;
552
    }
554
    }
553
555
554
//parent_object_id = parent_object_item->text(1);
556
//parent_object_id = parent_object_item->text(1);
555
557
556
558
557
559
558
560
559
561
560
i++;
562
i++;
561
563
562
}
564
}
563
565
564
566
565
void MainWindow::on_pushButton_clicked(){ // íàæàòèå êíîïêè "äîáàâèòü ñòðîêó"
567
void MainWindow::on_pushButton_clicked(){ // íàæàòèå êíîïêè "äîáàâèòü ñòðîêó"
566
     int row = sql_mogel->rowCount();
568
     int row = sql_mogel->rowCount();
567
      sql_mogel->insertRows(row, 1);
569
      sql_mogel->insertRows(row, 1);
568
      sql_mogel->setData(sql_mogel->index(row, 1), QVariant(tr("íå îïðåäåëåíî")), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
570
      sql_mogel->setData(sql_mogel->index(row, 1), QVariant(tr("íå îïðåäåëåíî")), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
569
      if (pointer_index > 0) {
571
      if (pointer_index > 0) {
570
                                    sql_mogel->setData(sql_mogel->index(row, pointer_index), QVariant(parentObject_id), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
572
                                    sql_mogel->setData(sql_mogel->index(row, pointer_index), QVariant(parentObject_id), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
571
                                }
573
                                }
572
    //  sql_mogel->submitAll();
574
    //  sql_mogel->submitAll();
573
575
574
}
576
}
575
577
576
void MainWindow::on_pushButton_2_clicked(){ // íàæàòèå êíîïêè "Óäàëèòü âûäåëåííûå îáúåêòû"
578
void MainWindow::on_pushButton_2_clicked(){ // íàæàòèå êíîïêè "Óäàëèòü âûäåëåííûå îáúåêòû"
577
int i;
579
int i;
578
i++;
580
i++;
579
QModelIndex model_index;
581
QModelIndex model_index;
580
QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
582
QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
581
QModelIndexList indexes = selectionModel->selectedIndexes();
583
QModelIndexList indexes = selectionModel->selectedIndexes();
582
QList<int> selectedRows;
584
QList<int> selectedRows;
583
selectedRows.clear();
585
selectedRows.clear();
584
foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
586
foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
585
    if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
587
    if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
586
588
587
}
589
}
588
qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
590
qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
589
591
590
592
591
for (int m =0; m < selectedRows.size(); ++m){
593
for (int m =0; m < selectedRows.size(); ++m){
592
594
593
// ClassEditor::removeClass(selectedRows.at(m));
595
// ClassEditor::removeClass(selectedRows.at(m));
594
596
595
sql_mogel->removeRow(selectedRows.at(m));
597
sql_mogel->removeRow(selectedRows.at(m));
596
598
597
}
599
}
598
sql_mogel->submitAll();
600
sql_mogel->submitAll();
599
getDatabaseData();
601
getDatabaseData();
600
602
601
}
603
}
602
604
603
605
604
void MainWindow::on_pushButton_3_clicked(){ // íàæàòèå êíîïêè "Ïðèìåíèòü"
606
void MainWindow::on_pushButton_3_clicked(){ // íàæàòèå êíîïêè "Ïðèìåíèòü"
605
    int i;
607
    int i;
606
    i++;
608
    i++;
607
    sql_mogel->submitAll();
609
    sql_mogel->submitAll();
608
    getDatabaseData();
610
    getDatabaseData();
609
    ui->pushButton_3->setEnabled(false);
611
    ui->pushButton_3->setEnabled(false);
610
    ui->pushButton_4->setEnabled(false);
612
    ui->pushButton_4->setEnabled(false);
611
    sql_mogel->select();
613
    sql_mogel->select();
612
614
613
}
615
}
614
616
615
617
616
void MainWindow::on_pushButton_4_clicked(){ // íàæàòèå êíîïêè "Ñáðîñèòü èçìåíåíèÿ"
618
void MainWindow::on_pushButton_4_clicked(){ // íàæàòèå êíîïêè "Ñáðîñèòü èçìåíåíèÿ"
617
    int i;
619
    int i;
618
    i++;
620
    i++;
619
    sql_mogel->select();
621
    sql_mogel->select();
620
    ui->pushButton_3->setEnabled(false);
622
    ui->pushButton_3->setEnabled(false);
621
    ui->pushButton_4->setEnabled(false);
623
    ui->pushButton_4->setEnabled(false);
622
}
624
}
623
625
624
626
-
 
627
void MainWindow::on_pushButton_5_clicked(){// íàæàòèå êíîïêè "Äîáàâèòü ìîäåëü "
-
 
628
-
 
629
    int i;
-
 
630
    i++;
-
 
631
    int row = model_for_ListModelsTable->rowCount();
-
 
632
    model_for_ListModelsTable->insertRows(row, 1);
-
 
633
    model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row, 1), QVariant(tr("Íîâàÿ ìîäåëü")), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
-
 
634
    // model_for_ListModelsTable->setData(sql_mogel->index(row, pointer_index), QVariant(parentObject_id), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
-
 
635
-
 
636
   //  sql_mogel->submitAll();
-
 
637
-
 
638
-
 
639
}
-
 
640
-
 
641
void MainWindow::on_pushButton_6_clicked(){// íàæàòèå êíîïêè "Óäàëèòü ìîäåëü "
-
 
642
-
 
643
    QModelIndex model_index;
-
 
644
    QItemSelectionModel *selectionModel = ui->tableView_2->selectionModel();
-
 
645
    QModelIndexList indexes = selectionModel->selectedIndexes();
-
 
646
    QList<int> selectedRows;
-
 
647
    selectedRows.clear();
-
 
648
    foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
-
 
649
        if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
-
 
650
-
 
651
    }
-
 
652
    qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
-
 
653
-
 
654
-
 
655
    for (int m =0; m < selectedRows.size(); ++m){
-
 
656
-
 
657
    // ClassEditor::removeClass(selectedRows.at(m));
-
 
658
-
 
659
    model_for_ListModelsTable->removeRow(selectedRows.at(m));
-
 
660
-
 
661
    }
-
 
662
    model_for_ListModelsTable->submitAll();
-
 
663
   // getDatabaseData();
-
 
664
-
 
665
}
-
 
666
-
 
667
-
 
668
625
void MainWindow::on_sql_mogel_dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ){ // èçìåíèëè ñâîéñòâà îáúåêòà èëè äîáàâèëè íîâûé îáúåêò
669
void MainWindow::on_sql_mogel_dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ){ // èçìåíèëè ñâîéñòâà îáúåêòà èëè äîáàâèëè íîâûé îáúåêò
626
int i;
670
int i;
627
i++;
671
i++;
628
ui->pushButton_3->setEnabled(true);
672
ui->pushButton_3->setEnabled(true);
629
ui->pushButton_4->setEnabled(true);
673
ui->pushButton_4->setEnabled(true);
630
674
631
675
632
}
676
}
633
677
634
678
635
// ïîëó÷àåì ñïèñîê âñåõ ïîëåé-óêàçàòåëåé, â êà÷åñòâå êëþ÷åé ïîëó÷èì èìåíà ïîëåé-óêàçàòåëåé
679
// ïîëó÷àåì ñïèñîê âñåõ ïîëåé-óêàçàòåëåé, â êà÷åñòâå êëþ÷åé ïîëó÷èì èìåíà ïîëåé-óêàçàòåëåé
636
// â êà÷åñòâå çíà÷åíèé ïîëó÷èì ñïèñîê òàáëèö-õðàíèëèù îáúåêòîâ ðîäèòåëüñêèõ êëàññîâ
680
// â êà÷åñòâå çíà÷åíèé ïîëó÷èì ñïèñîê òàáëèö-õðàíèëèù îáúåêòîâ ðîäèòåëüñêèõ êëàññîâ
637
681
638
QMap <QString, QString>  MainWindow::getPointersList(QString class_id){
682
QMap <QString, QString>  MainWindow::getPointersList(QString class_id){
639
    QMap <QString, QString>  result_map;
683
    QMap <QString, QString>  result_map;
640
    QSqlQuery q;
684
    QSqlQuery q;
641
    QString sql_str;
685
    QString sql_str;
642
    QString str_tmp;
686
    QString str_tmp;
643
    QString field;
687
    QString field;
644
    QString result;
688
    QString result;
645
    int field_name, field_default_value;
689
    int field_name, field_default_value;
646
    bool ok;
690
    bool ok;
647
    sql_str = tr("select * "
691
    sql_str = tr("select * "
648
                 " from `DescriptionOfClasses` where `DescriptionOfClasses`.`FieldType` = 'pointer' and  `DescriptionOfClasses`.`ClassIdentifer` = "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
692
                 " from `DescriptionOfClasses` where `DescriptionOfClasses`.`FieldType` = 'pointer' and  `DescriptionOfClasses`.`ClassIdentifer` = "       //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà
649
                 );
693
                 );
650
694
651
    sql_str.append(tr("'"));
695
    sql_str.append(tr("'"));
652
    sql_str.append(class_id);
696
    sql_str.append(class_id);
653
    sql_str.append(tr("' "));
697
    sql_str.append(tr("' "));
654
    // sql_str.append(tr(" and  `DescriptionOfClasses`.`ClassIdentifer` = '"));
698
    // sql_str.append(tr(" and  `DescriptionOfClasses`.`ClassIdentifer` = '"));
655
    // sql_str.append(chield_class_id);
699
    // sql_str.append(chield_class_id);
656
    // sql_str.append(tr("'"));
700
    // sql_str.append(tr("'"));
657
    q.prepare(sql_str);
701
    q.prepare(sql_str);
658
702
659
    ok = q.exec();
703
    ok = q.exec();
660
    if (!ok) {
704
    if (!ok) {
661
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
705
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
662
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
706
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
663
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
707
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
664
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
708
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
665
                                                                            return result_map;
709
                                                                            return result_map;
666
                     }
710
                     }
667
field_name =  q.record().indexOf(tr("FieldName"));
711
field_name =  q.record().indexOf(tr("FieldName"));
668
field_default_value = q.record().indexOf(tr("DefaultValue"));
712
field_default_value = q.record().indexOf(tr("DefaultValue"));
669
while(q.next()){
713
while(q.next()){
670
        QString pointerFieldName;
714
        QString pointerFieldName;
671
        QString parentClassID;
715
        QString parentClassID;
672
        QString parentClassInctance;
716
        QString parentClassInctance;
673
717
674
         pointerFieldName = q.value(field_name).toString();
718
         pointerFieldName = q.value(field_name).toString();
675
         parentClassID = q.value(field_default_value).toString();
719
         parentClassID = q.value(field_default_value).toString();
676
         parentClassInctance =  getClassInctance(parentClassID);
720
         parentClassInctance =  getClassInctance(parentClassID);
677
         result_map.insert(pointerFieldName, parentClassInctance);
721
         result_map.insert(pointerFieldName, parentClassInctance);
678
722
679
723
680
    }
724
    }
681
725
682
return result_map;
726
return result_map;
683
}
727
}
684
728
685
729
686
730
687
731
688
732
689
733
690
// Ñ÷èòûâàåì íàñòðîéêè
734
// Ñ÷èòûâàåì íàñòðîéêè
691
735
692
void MainWindow::readSettings()
736
void MainWindow::readSettings()
693
{
737
{
694
        QSettings settings("Trolltech", "Application Example");
738
        QSettings settings("Trolltech", "Application Example");
695
        baseName = settings.value("baseName", "an_db").toString();
739
        baseName = settings.value("baseName", "an_db").toString();
696
        userName = settings.value("userName", "an").toString();
740
        userName = settings.value("userName", "an").toString();
697
        password = settings.value("password", "393939").toString();
741
        password = settings.value("password", "393939").toString();
698
        tableName = settings.value("tableName", "inventar").toString();
742
        tableName = settings.value("tableName", "inventar").toString();
699
        hostName = settings.value("hostName", "server").toString();
743
        hostName = settings.value("hostName", "server").toString();
700
//     resize(size);
744
//     resize(size);
701
//     move(pos);tableName
745
//     move(pos);tableName
702
}
746
}
703
747
704
748
705
void MainWindow::writeSettings()
749
void MainWindow::writeSettings()
706
{
750
{
707
        QSettings settings("Trolltech", "Application Example");
751
        QSettings settings("Trolltech", "Application Example");
708
        settings.setValue("baseName", baseName);
752
        settings.setValue("baseName", baseName);
709
        settings.setValue("userName", userName);
753
        settings.setValue("userName", userName);
710
        settings.setValue("password", password);
754
        settings.setValue("password", password);
711
        settings.setValue("tableName", tableName);
755
        settings.setValue("tableName", tableName);
712
        settings.setValue("hostName", hostName);
756
        settings.setValue("hostName", hostName);
713
}
757
}
714
758
715
759
716
760
717
void MainWindow::applySetting()
761
void MainWindow::applySetting()
718
{
762
{
719
        bool ok;
763
        bool ok;
720
        baseName = setFrm.lineEdit->text();
764
        baseName = setFrm.lineEdit->text();
721
        userName = setFrm.lineEdit_2->text();
765
        userName = setFrm.lineEdit_2->text();
722
        password = setFrm.lineEdit_3->text();
766
        password = setFrm.lineEdit_3->text();
723
        // tableName = setFrm->lineEdit_4->text();
767
        // tableName = setFrm->lineEdit_4->text();
724
        hostName = setFrm.lineEdit_5->text();
768
        hostName = setFrm.lineEdit_5->text();
725
        writeSettings();
769
        writeSettings();
726
770
727
771
728
        ok=openDataBase();
772
        ok=openDataBase();
729
        if (!ok) return;
773
        if (!ok) return;
730
   // // //     ui->treeWidget->clear(); // î÷èùàåì äåðåâî ñ ìîäåëüþ
774
   // // //     ui->treeWidget->clear(); // î÷èùàåì äåðåâî ñ ìîäåëüþ
731
775
732
   // // //      buildPreviewModel(tr("Ìîÿ ìîäåëü"), tr("1"));
776
   // // //      buildPreviewModel(tr("Ìîÿ ìîäåëü"), tr("1"));
733
        class_list_map.clear(); // î÷èùàåì ñïèñîê êëàññîâ
777
        class_list_map.clear(); // î÷èùàåì ñïèñîê êëàññîâ
734
        initComboBox();
778
        initComboBox();
735
  // // //      getDatabaseData();
779
  // // //      getDatabaseData();
736
        // delete setFrm;
780
        // delete setFrm;
737
        setFrm.close();
781
        setFrm.close();
738
}
782
}
739
783
740
784
741
void MainWindow::getSetting()
785
void MainWindow::getSetting()
742
{
786
{
743
        // setFrm = new settingForm;
787
        // setFrm = new settingForm;
744
    // // //     connect(setFrm.pushButton, SIGNAL(clicked()), this, SLOT(applySetting()));
788
    // // //     connect(setFrm.pushButton, SIGNAL(clicked()), this, SLOT(applySetting()));
745
        setFrm.lineEdit->setText(baseName);
789
        setFrm.lineEdit->setText(baseName);
746
        setFrm.lineEdit_2->setText(userName);
790
        setFrm.lineEdit_2->setText(userName);
747
        setFrm.lineEdit_3->setText(password);
791
        setFrm.lineEdit_3->setText(password);
748
//      setFrm->lineEdit_4->setText(tableName);
792
//      setFrm->lineEdit_4->setText(tableName);
749
        setFrm.lineEdit_5->setText(hostName);
793
        setFrm.lineEdit_5->setText(hostName);
750
        setFrm.show();
794
        setFrm.show();
751
795
752
796
753
797
754
}
798
}
-
 
799
-
 
800
-
 
801
-
 
802
-
 
803
void MainWindow::readModels(){
-
 
804
int row = model_for_ListModelsTable->rowCount();
-
 
805
// rootItems.clear();
-
 
806
-
 
807
for (int i=0; i < row; i++){
-
 
808
    QTreeWidgetItem * item_tmp;
-
 
809
    QString modelName;
-
 
810
    bool enabled;
-
 
811
    modelName = model_for_ListModelsTable->data(model_for_ListModelsTable->index(i, 1)).toString();
-
 
812
    enabled = model_for_ListModelsTable->data(model_for_ListModelsTable->index(i, 3)).toBool();
-
 
813
    item_tmp = new QTreeWidgetItem(ui->treeWidget);
-
 
814
    item_tmp->setText(0, modelName);
-
 
815
    if (enabled) item_tmp->setCheckState(0,Qt::Checked);
-
 
816
    else  item_tmp->setCheckState(0,Qt::Unchecked);
-
 
817
    rootItems.append(item_tmp);
-
 
818
-
 
819
-
 
820
        }
-
 
821
}
755
 
822