Хранилища Subversion OpenInventory

Редакция

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

Редакция 144 Редакция 145
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
   // connect( ui->comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(on_currentIndexChanged(int)));
9
   // connect( ui->comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(on_currentIndexChanged(int)));
10
    model_is_build = false;
10
    model_is_build = false;
11
   MainWindow::readModel();
11
   // MainWindow::readModel();
12
12
13
   //QString model_str;
13
   //QString model_str;
14
14
15
15
16
   /*
16
   /*
17
   MainWindow::creatModelString();
17
   MainWindow::creatModelString();
18
   int i;
18
   int i;
19
   i++;
19
   i++;
20
    QFile file_tmp("./temp.txt");
20
    QFile file_tmp("./temp.txt");
21
    bool ok;
21
    bool ok;
22
    ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text);
22
    ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text);
23
    QTextStream out(&file_tmp);
23
    QTextStream out(&file_tmp);
24
    out << MainWindow::modelString;
24
    out << MainWindow::modelString;
25
    file_tmp.close();
25
    file_tmp.close();
26
*/
26
*/
27
    ui->treeWidget->setAlternatingRowColors(true);
27
    ui->treeWidget->setAlternatingRowColors(true);
28
    ui->treeWidget_2->setAlternatingRowColors(true);
28
    ui->treeWidget_2->setAlternatingRowColors(true);
29
29
30
30
31
    MainWindow::readSettings();
31
    MainWindow::readSettings();
32
32
33
    MainWindow::openDataBase();
33
    MainWindow::openDataBase();
34
34
35
    MainWindow::initComboBox();
35
    MainWindow::initComboBox();
36
36
37
    MainWindow::buildPreviewModel(tr("Ìîÿ ìîäåëü"), tr("7"));
37
//    MainWindow::buildPreviewModel(tr("Ìîÿ ìîäåëü"), tr("11"));
38
38
39
    MainWindow::initListModelsTablle();
39
    MainWindow::initListModelsTablle();
40
40
41
    MainWindow::readModels();
41
    MainWindow::readModels();
42
42
43
    MainWindow::creatModelString();
43
 //   MainWindow::creatModelString();
44
    //int i;
44
    //int i;
45
    //i++;
45
    //i++;
-
 
46
-
 
47
    /*
46
     QFile file_tmp("./modelstring.txt");
48
    QFile file_tmp("./modelstring.txt");
47
     bool ok;
49
     bool ok;
48
     file_tmp.remove();
50
     file_tmp.remove();
49
     ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text);
51
     ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text);
50
     QTextStream out(&file_tmp);
52
     QTextStream out(&file_tmp);
51
     out.setCodec("cp1251");
53
     out.setCodec("cp1251");
52
     out << MainWindow::modelString;
54
     out << MainWindow::modelString;
53
     file_tmp.close();
55
     file_tmp.close();
54
56
    */
55
57
56
58
57
59
58
    getDatabaseData();
60
    getDatabaseData();
59
    //// sql_mogel = new QSqlTableModel();
61
    //// sql_mogel = new QSqlTableModel();
60
    sql_mogel = new MyModel();
62
    sql_mogel = new MyModel();
61
63
62
64
63
    model_is_build = true;
65
    model_is_build = true;
64
    connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
66
    connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
65
    ui->pushButton_3->setEnabled(false);
67
    ui->pushButton_3->setEnabled(false);
66
    ui->pushButton_4->setEnabled(false);
68
    ui->pushButton_4->setEnabled(false);
67
69
68
   // setFrm.show();
70
   // setFrm.show();
69
71
70
    connect(ui->getsettingAct, SIGNAL(triggered()), this, SLOT(getSetting())); // âûáîð â ãëàâíîé ôîðìå â ìåíþ "Áàçà äàííûõ" ïóíêòà "Ïàðàìåòðû ñîåäèíåíèÿ"
72
    connect(ui->getsettingAct, SIGNAL(triggered()), this, SLOT(getSetting())); // âûáîð â ãëàâíîé ôîðìå â ìåíþ "Áàçà äàííûõ" ïóíêòà "Ïàðàìåòðû ñîåäèíåíèÿ"
71
    connect(setFrm.pushButton, SIGNAL(clicked()), this, SLOT(applySetting()));
73
    connect(setFrm.pushButton, SIGNAL(clicked()), this, SLOT(applySetting()));
72
74
73
picture_delegate = new CPictureDelegate(this);
75
picture_delegate = new CPictureDelegate(this);
74
76
75
}
77
}
76
78
77
MainWindow::~MainWindow()
79
MainWindow::~MainWindow()
78
{
80
{
79
    delete sql_mogel;
81
    delete sql_mogel;
80
    delete ui;
82
    delete ui;
81
}
83
}
82
84
83
void MainWindow::changeEvent(QEvent *e)
85
void MainWindow::changeEvent(QEvent *e)
84
{
86
{
85
    QMainWindow::changeEvent(e);
87
    QMainWindow::changeEvent(e);
86
    switch (e->type()) {
88
    switch (e->type()) {
87
    case QEvent::LanguageChange:
89
    case QEvent::LanguageChange:
88
        ui->retranslateUi(this);
90
        ui->retranslateUi(this);
89
        break;
91
        break;
90
    default:
92
    default:
91
        break;
93
        break;
92
    }
94
    }
93
}
95
}
94
96
95
97
96
bool MainWindow::readModel(){
98
bool MainWindow::readModel(){
97
    bool result;
99
    bool result;
98
    QString model_str;
100
    QString model_str;
99
    QFile file("modelstring.txt");
101
    QFile file("modelstring.txt");
100
  //  QFile file("model.txt");
102
  //  QFile file("model.txt");
101
   rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
103
   rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
102
    rootItem1->setText(0, tr("Óðîâåíü 1"));
104
    rootItem1->setText(0, tr("Óðîâåíü 1"));
103
   // rootItem2 = new  QTreeWidgetItem(rootItem1);
105
   // rootItem2 = new  QTreeWidgetItem(rootItem1);
104
   // rootItem2->setText(0, tr("óðîâåíü 2"));
106
   // rootItem2->setText(0, tr("óðîâåíü 2"));
105
    rootItem1->setCheckState(0,Qt::Checked);
107
    rootItem1->setCheckState(0,Qt::Checked);
106
   // rootItem2->setCheckState(0,Qt::Checked);
108
   // rootItem2->setCheckState(0,Qt::Checked);
107
109
108
110
109
111
110
    result = file.open(QIODevice::ReadOnly);
112
    result = file.open(QIODevice::ReadOnly);
111
    if (result) {
113
    if (result) {
112
                     model_str = QString(tr(file.readAll()));
114
                     model_str = QString(tr(file.readAll()));
113
                }
115
                }
114
116
115
    setupModelData(model_str.split(QString("\n")), rootItem1);
117
    setupModelData(model_str.split(QString("\n")), rootItem1);
116
118
117
119
118
    return result;
120
    return result;
119
121
120
}
122
}
121
123
122
124
123
void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent)
125
void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent)
124
{
126
{
125
    QList<QTreeWidgetItem*> parents;
127
    QList<QTreeWidgetItem*> parents;
126
    QList<int> indentations;
128
    QList<int> indentations;
127
    parents << parent;
129
    parents << parent;
128
    indentations << 0;
130
    indentations << 0;
129
131
130
    int number = 0;
132
    int number = 0;
131
133
132
    while (number < lines.count()) {
134
    while (number < lines.count()) {
133
        int position = 0;
135
        int position = 0;
134
        while (position < lines[number].length()) {
136
        while (position < lines[number].length()) {
135
            if (lines[number].mid(position, 1) != " ")
137
            if (lines[number].mid(position, 1) != " ")
136
                break;
138
                break;
137
            position++;
139
            position++;
138
        }
140
        }
139
141
140
        QString lineData = lines[number].mid(position).trimmed();
142
        QString lineData = lines[number].mid(position).trimmed();
141
143
142
        if (!lineData.isEmpty()) {
144
        if (!lineData.isEmpty()) {
143
            // Read the column data from the rest of the line.
145
            // Read the column data from the rest of the line.
144
            QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts);
146
            QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts);
145
            QList<QVariant> columnData;
147
            QList<QVariant> columnData;
146
            for (int column = 0; column < columnStrings.count(); ++column)
148
            for (int column = 0; column < columnStrings.count(); ++column)
147
                columnData << columnStrings[column];
149
                columnData << columnStrings[column];
148
150
149
            if (position > indentations.last()) {
151
            if (position > indentations.last()) {
150
                // The last child of the current parent is now the new parent
152
                // The last child of the current parent is now the new parent
151
                // unless the current parent has no children.
153
                // unless the current parent has no children.
152
154
153
                if (parents.last()->childCount() > 0) {
155
                if (parents.last()->childCount() > 0) {
154
                    parents << parents.last()->child(parents.last()->childCount()-1);
156
                    parents << parents.last()->child(parents.last()->childCount()-1);
155
                    indentations << position;
157
                    indentations << position;
156
                }
158
                }
157
            } else {
159
            } else {
158
                while (position < indentations.last() && parents.count() > 0) {
160
                while (position < indentations.last() && parents.count() > 0) {
159
                    parents.pop_back();
161
                    parents.pop_back();
160
                    indentations.pop_back();
162
                    indentations.pop_back();
161
                }
163
                }
162
            }
164
            }
163
165
164
            // Append a new item to the current parent's list of children.
166
            // Append a new item to the current parent's list of children.
165
          // // //  parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
167
          // // //  parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
166
            QTreeWidgetItem* itm_tmp;
168
            QTreeWidgetItem* itm_tmp;
167
            itm_tmp = new QTreeWidgetItem( parents.last());
169
            itm_tmp = new QTreeWidgetItem( parents.last());
168
170
169
            itm_tmp->setText(0, QString(columnData.at(0).toString()));
171
            itm_tmp->setText(0, QString(columnData.at(0).toString()));
170
            if (columnData.at(1).toString() == "true") {
172
            if (columnData.at(1).toString() == "true") {
171
                                                            itm_tmp->setCheckState(0,Qt::Checked);
173
                                                            itm_tmp->setCheckState(0,Qt::Checked);
172
                                                        }
174
                                                        }
173
            else itm_tmp->setCheckState(0,Qt::Unchecked);
175
            else itm_tmp->setCheckState(0,Qt::Unchecked);
174
            if (columnData.count()>2)
176
            if (columnData.count()>2)
175
            {
177
            {
176
            itm_tmp->setText(1, QString(columnData.at(2).toString()));
178
            itm_tmp->setText(1, QString(columnData.at(2).toString()));
177
            itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ
179
            itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ
178
            itm_tmp->setText(3, QVariant(indentations.size()).toString());
180
            itm_tmp->setText(3, QVariant(indentations.size()).toString());
179
            }
181
            }
180
        }
182
        }
181
183
182
        number++;
184
        number++;
183
    }
185
    }
184
}
186
}
185
187
186
188
187
/*
189
/*
188
void MainWindow::openBase()
190
void MainWindow::openBase()
189
{
191
{
190

192

191
        db = QSqlDatabase::addDatabase("QMYSQL");
193
        db = QSqlDatabase::addDatabase("QMYSQL");
192
        pdb = &db;
194
        pdb = &db;
193
        raportFrm.pdb = &db;
195
        raportFrm.pdb = &db;
194

196

195
        pdb->setHostName(hostName);
197
        pdb->setHostName(hostName);
196
        pdb->setDatabaseName(baseName);
198
        pdb->setDatabaseName(baseName);
197
        pdb->setUserName(userName);
199
        pdb->setUserName(userName);
198
        pdb->setPassword(password);
200
        pdb->setPassword(password);
199
        bool ok = pdb->open();
201
        bool ok = pdb->open();
200
        if (!ok) {
202
        if (!ok) {
201
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
203
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
202
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
204
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
203
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
205
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
204
                                                                                pdb->lastError().text());          // Òåêñò ñîîáùåíèÿ.
206
                                                                                pdb->lastError().text());          // Òåêñò ñîîáùåíèÿ.
205
                         }
207
                         }
206
        if (ok)
208
        if (ok)
207
        {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
209
        {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
208
        }
210
        }
209
        else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
211
        else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
210
                  lineEdit-> insert(pdb->lastError().text());
212
                  lineEdit-> insert(pdb->lastError().text());
211
                 }
213
                 }
212

214

213

215

214

216

215
        model = new QSqlTableModel(this);
217
        model = new QSqlTableModel(this);
216
        model->setTable(tableName);
218
        model->setTable(tableName);
217

219

218
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
220
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
219
        model->setSort(0, Qt::AscendingOrder);
221
        model->setSort(0, Qt::AscendingOrder);
220

222

221
        model->select();
223
        model->select();
222

224

223

225

224
        QSqlField field(tr("age"), QVariant::Int);
226
        QSqlField field(tr("age"), QVariant::Int);
225
        field.setValue(QString(tr("123")));
227
        field.setValue(QString(tr("123")));
226

228

227
        bool okey;
229
        bool okey;
228
        int index;
230
        int index;
229
        QSqlRecord record;
231
        QSqlRecord record;
230

232

231

233

232
        tableView->setModel(model);
234
        tableView->setModel(model);
233
        view.setModel(model);
235
        view.setModel(model);
234

236

235

237

236
        tableView->setAlternatingRowColors(true);
238
        tableView->setAlternatingRowColors(true);
237
        view.setAlternatingRowColors(true);
239
        view.setAlternatingRowColors(true);
238

240

239
        tableView->resizeColumnsToContents();
241
        tableView->resizeColumnsToContents();
240

242

241

243

242
        view.resizeColumnsToContents();
244
        view.resizeColumnsToContents();
243

245

244
        tableView->show();
246
        tableView->show();
245

247

246

248

247

249

248
        initTreeWidget();
250
        initTreeWidget();
249
}
251
}
250
*/
252
*/
251
253
252
254
253
void MainWindow::creatModelString(){
255
void MainWindow::creatModelString(){
254
256
255
    MainWindow::modelString.clear(); // î÷èùàåì ñòðîêó ìîäåëè
257
    MainWindow::modelString.clear(); // î÷èùàåì ñòðîêó ìîäåëè
256
 //   for (int i =0; i < rootItem1->childCount(); ++i )
258
 //   for (int i =0; i < rootItem1->childCount(); ++i )
257
259
258
    {MainWindow::addChildsString(rootItem1, 0);}
260
    {MainWindow::addChildsString(rootItem1, 0);}
-
 
261
// {MainWindow::addChildsString(ui->treeWidget, 0);}
259
262
 /*
260
    int root_item_child_count;
263
    int root_item_child_count;
261
    int i;
264
    int i;
262
    root_item_child_count = rootItem1->childCount();
265
    root_item_child_count = rootItem1->childCount();
263
    i++;
266
    i++;
264
267
*/
265
}
268
}
266
269
267
270
268
void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){
271
void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){
269
    int child_count;
272
    int child_count;
270
    child_count = parentItem->childCount();
273
    child_count = parentItem->childCount();
271
    for (int i=0; i < child_count; ++i){
274
    for (int i=0; i < child_count; ++i){
272
        for (int m=0; m < level; ++m){
275
        for (int m=0; m < level; ++m){
273
        modelString.append(tr("    ")); // ÷åòûðå ïðîáåëà - ïðèçíàê òîãî, ÷òî ýòî íîâûé óðîâåíü âëîæåíèÿ
276
        modelString.append(tr("    ")); // ÷åòûðå ïðîáåëà - ïðèçíàê òîãî, ÷òî ýòî íîâûé óðîâåíü âëîæåíèÿ
274
    }
277
    }
275
        modelString.append(parentItem->child(i)->text(0)); // â ïåðâîé êîëîíêå - èìÿ êëàññà
278
        modelString.append(parentItem->child(i)->text(0)); // â ïåðâîé êîëîíêå - èìÿ êëàññà
276
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
279
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
277
        if (parentItem->child(i)->checkState(0) ==  Qt::Checked) {modelString.append(tr("true"));} // åñëè ãàëî÷êà ñòîèò, çàíîñèì "true", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ áóäóò
280
        if (parentItem->child(i)->checkState(0) ==  Qt::Checked) {modelString.append(tr("true"));} // åñëè ãàëî÷êà ñòîèò, çàíîñèì "true", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ áóäóò
278
            else {modelString.append(tr("false"));} // åñëè êëàññ íå âûáðàí - çàíîñèì "false", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ íå áóäóò
281
            else {modelString.append(tr("false"));} // åñëè êëàññ íå âûáðàí - çàíîñèì "false", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ íå áóäóò
279
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
282
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
280
        modelString.append(parentItem->child(i)->text(1)); // âî âòîðîé êîëîíêå - ID êëàññà
283
        modelString.append(parentItem->child(i)->text(1)); // âî âòîðîé êîëîíêå - ID êëàññà
281
         modelString.append(tr("\n")); // êîíåö ñòðîêè
284
         modelString.append(tr("\n")); // êîíåö ñòðîêè
282
        if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);}
285
        if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);}
283
286
284
    }
287
    }
285
int i;
288
int i;
286
i++;
289
i++;
287
}
290
}
288
291
289
292
290
bool MainWindow::openDataBase(){
293
bool MainWindow::openDataBase(){
291
    QString errorString;
294
    QString errorString;
292
    sql = QSqlDatabase::addDatabase("QMYSQL");
295
    sql = QSqlDatabase::addDatabase("QMYSQL");
293
//    sql.setDatabaseName(tr("an_db"));
296
//    sql.setDatabaseName(tr("an_db"));
294
297
295
    // // // sql.setDatabaseName(tr("inventory"));
298
    // // // sql.setDatabaseName(tr("inventory"));
296
299
297
    sql.setDatabaseName(baseName);
300
    sql.setDatabaseName(baseName);
298
301
299
302
300
303
301
    // // // sql.setHostName(tr("localhost"));
304
    // // // sql.setHostName(tr("localhost"));
302
305
303
    sql.setHostName(hostName);
306
    sql.setHostName(hostName);
304
307
305
308
306
    // // // sql.setUserName(tr("an"));
309
    // // // sql.setUserName(tr("an"));
307
310
308
    sql.setUserName(userName);
311
    sql.setUserName(userName);
309
312
310
313
311
314
312
   // // //  sql.setPassword(tr("393939"));
315
   // // //  sql.setPassword(tr("393939"));
313
316
314
317
315
    sql.setPassword(password);
318
    sql.setPassword(password);
316
319
317
320
318
321
319
    bool ok;
322
    bool ok;
320
    ok = sql.open();
323
    ok = sql.open();
321
324
322
    /*
325
    /*
323
    if (!ok) {
326
    if (!ok) {
324
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
327
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
325
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
328
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
326
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
329
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
327
                                                                                sql.lastError().text() );         // Òåêñò ñîîáùåíèÿ.
330
                                                                                sql.lastError().text() );         // Òåêñò ñîîáùåíèÿ.
328

331

329

332

330
                            }
333
                            }
331

334

332
*/
335
*/
333
    if (!ok) {
336
    if (!ok) {
334
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
337
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
335
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
338
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
336
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
339
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
337
                                                                            sql.lastError().text());          // Òåêñò ñîîáùåíèÿ.
340
                                                                            sql.lastError().text());          // Òåêñò ñîîáùåíèÿ.
338
                     }
341
                     }
339
else {
342
else {
340
343
341
        QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
344
        QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
342
                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
345
                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
343
                                                        QObject::tr("Database Connect"),   // Çàãîëîâîê.
346
                                                        QObject::tr("Database Connect"),   // Çàãîëîâîê.
344
                                                        QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
347
                                                        QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
345
348
346
349
347
350
348
351
349
352
350
    }
353
    }
351
354
352
     return ok;
355
     return ok;
353
}
356
}
354
357
355
358
356
bool MainWindow::buildPreviewModel(QString modelName, QString rootClassID){
359
bool MainWindow::buildPreviewModel(QString modelName, QString rootClassID){
357
QSqlQuery q;
360
QSqlQuery q;
358
QString sql_str;
361
QString sql_str;
359
QString field_name_str;
362
QString field_name_str;
360
QString root_class_name;
363
QString root_class_name;
361
bool ok;
364
bool ok;
362
int field_name;
365
int field_name;
363
366
364
//ui->treeWidget->clear();
367
//ui->treeWidget->clear();
365
368
366
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
369
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
367
370
-
 
371
368
rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
372
rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
369
root_items_list << rootItem1;
373
 root_items_list << rootItem1;
370
 rootItem1->setText(0, modelName);
374
 rootItem1->setText(0, modelName);
371
375
372
 rootItem1->setCheckState(0,Qt::Checked);
376
 rootItem1->setCheckState(0,Qt::Checked);
373
 rootItems.append(rootItem1);
377
 rootItems.append(rootItem1);
374
378
375
379
376
380
377
rootItem2 = new  QTreeWidgetItem(rootItem1);
381
 rootItem2 = new  QTreeWidgetItem(rootItem1);
378
rootItem2->setText(0, root_class_name);
382
 rootItem2->setText(0, root_class_name);
379
rootItem2->setText(1, rootClassID);
383
 rootItem2->setText(1, rootClassID);
380
rootItem2->setCheckState(0,Qt::Checked);
384
 rootItem2->setCheckState(0,Qt::Checked);
-
 
385
-
 
386
 addChildsItems(rootItem2);
-
 
387
381
388
382
addChildsItems(rootItem2);
-
 
-
 
389
/*
383
390

384
sql_str = tr("select * "
391
sql_str = tr("select * "
385
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
392
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
386
             );
393
             );
387
sql_str.append(rootClassID);
394
sql_str.append(rootClassID);
388
395

389
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
396
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
390
397

391
q.prepare(sql_str);
398
q.prepare(sql_str);
392
399

393
ok = q.exec();
400
ok = q.exec();
394
if (!ok) {
401
if (!ok) {
395
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
402
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
396
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
403
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
397
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
404
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
398
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
405
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
399
                 }
406
                 }
400
field_name = q.record().indexOf(tr("FieldName"));
407
field_name = q.record().indexOf(tr("FieldName"));
401
while(q.next()){
408
while(q.next()){
402
409

403
                field_name_str = q.value(field_name).toString();
410
                field_name_str = q.value(field_name).toString();
404
411

405
                }
412
                }
406
413

407
414

408
415

409
416

-
 
417
*/
-
 
418
-
 
419
410
}
420
}
411
421
412
422
413
bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID){
423
bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID){
414
QSqlQuery q;
424
QSqlQuery q;
415
QString sql_str;
425
QString sql_str;
416
QString field_name_str;
426
QString field_name_str;
417
QString root_class_name;
427
QString root_class_name;
418
bool ok;
428
bool ok;
419
int field_name;
429
int field_name;
420
430
421
//ui->treeWidget->clear();
431
//ui->treeWidget->clear();
422
432
423
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
433
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
424
434
425
435
426
// rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
436
// rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
427
// root_items_list << rootItem1;
437
// root_items_list << rootItem1;
428
// rootItem1->setText(0, modelName);
438
// rootItem1->setText(0, modelName);
429
439
430
// rootItem1->setCheckState(0,Qt::Checked);
440
// rootItem1->setCheckState(0,Qt::Checked);
431
// rootItems.append(rootItem1);
441
// rootItems.append(rootItem1);
432
442
433
// root_item->removeChild(root_item->child(0)); // î÷èùàåì ñïèñîê äî÷åðíèõ êëàññîâ
443
// root_item->removeChild(root_item->child(0)); // î÷èùàåì ñïèñîê äî÷åðíèõ êëàññîâ
434
if (root_item->childCount()==1){
444
if (root_item->childCount()==0){ // íåò êîðíåâîãî êëàññà, ñîçäàäèì åãî
-
 
445
    QTreeWidgetItem* item_tmp;
-
 
446
    item_tmp = new QTreeWidgetItem (root_item);
-
 
447
-
 
448
}
-
 
449
-
 
450
if (root_item->childCount()==1){ // êîðíåâîé êëàññ åñòü è îí ïóñòîé, î÷èùàòü åãî íå íàäî
435
root_item->child(0)->setText(0, root_class_name);
451
root_item->child(0)->setText(0, root_class_name);
436
root_item->child(0)->setText(1, rootClassID);
452
root_item->child(0)->setText(1, rootClassID);
437
root_item->child(0)->setCheckState(0,Qt::Checked);}
453
root_item->child(0)->setCheckState(0,Qt::Checked);}
438
454
-
 
455
-
 
456
439
//delete rootItem2;
457
//delete rootItem2;
440
458
441
459
442
// rootItem2 = new  QTreeWidgetItem(rootItem1);
460
// rootItem2 = new  QTreeWidgetItem(rootItem1);
443
461
444
462
445
463
446
// rootItem2->setText(0, root_class_name);
464
// rootItem2->setText(0, root_class_name);
447
// rootItem2->setText(1, rootClassID);
465
// rootItem2->setText(1, rootClassID);
448
// rootItem2->setCheckState(0,Qt::Checked);
466
// rootItem2->setCheckState(0,Qt::Checked);
449
467
450
int child_count = root_item->child(0)->childCount();
468
int child_count = root_item->child(0)->childCount();
451
469
452
470
453
-
 
454
for (int i=0; i < child_count; i++){
471
for (int i=0; i < child_count; i++){ // åñëè êîðíåâîé êëàññ åñòü è íå ïóñòîé, î÷èùàåì åãî
455
    root_item->child(0)->removeChild(root_item->child(0)->child(0));
472
    root_item->child(0)->removeChild(root_item->child(0)->child(0));
456
}
473
}
457
474
458
child_count = root_item->child(0)->childCount();
475
child_count = root_item->child(0)->childCount();
459
addChildsItems(root_item->child(0));
476
addChildsItems(root_item->child(0));
460
/*
477
/*
461
sql_str = tr("select * "
478
sql_str = tr("select * "
462
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
479
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
463
             );
480
             );
464
sql_str.append(rootClassID);
481
sql_str.append(rootClassID);
465

482

466
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
483
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
467

484

468
q.prepare(sql_str);
485
q.prepare(sql_str);
469

486

470
ok = q.exec();
487
ok = q.exec();
471
if (!ok) {
488
if (!ok) {
472
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
489
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
473
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
490
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
474
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
491
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
475
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
492
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
476
                 }
493
                 }
477
field_name = q.record().indexOf(tr("FieldName"));
494
field_name = q.record().indexOf(tr("FieldName"));
478
while(q.next()){
495
while(q.next()){
479

496

480
                field_name_str = q.value(field_name).toString();
497
                field_name_str = q.value(field_name).toString();
481

498

482
                }
499
                }
483

500

484
*/
501
*/
485
502
486
503
487
}
504
}
488
505
489
506
490
507
491
508
492
QString MainWindow::ClassName(QString class_id){ //âîçâðàùàåò èìÿ êëàññà ïî åãî ID
509
QString MainWindow::ClassName(QString class_id){ //âîçâðàùàåò èìÿ êëàññà ïî åãî ID
493
    QSqlQuery q;
510
    QSqlQuery q;
494
    QString sql_str;
511
    QString sql_str;
495
    QString class_name_str;
512
    QString class_name_str;
496
    bool ok;
513
    bool ok;
497
    int field_class_name;
514
    int field_class_name;
498
515
499
    sql_str = tr("select * "
516
    sql_str = tr("select * "
500
                 " from ListOfClasses where ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
517
                 " from ListOfClasses where ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
501
                 );
518
                 );
502
519
503
    sql_str.append(class_id);
520
    sql_str.append(class_id);
504
    sql_str.append(tr("' "));
521
    sql_str.append(tr("' "));
505
522
506
    q.prepare(sql_str);
523
    q.prepare(sql_str);
507
524
508
    ok = q.exec();
525
    ok = q.exec();
509
526
510
527
511
    if (!ok) {
528
    if (!ok) {
512
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
529
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
513
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
530
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
514
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
531
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
515
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
532
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
516
                     }
533
                     }
517
534
518
    field_class_name = q.record().indexOf(tr("ClassName"));
535
    field_class_name = q.record().indexOf(tr("ClassName"));
519
    while(q.next()){
536
    while(q.next()){
520
537
521
                    class_name_str = q.value(field_class_name).toString();
538
                    class_name_str = q.value(field_class_name).toString();
522
539
523
                    }
540
                    }
524
541
525
    return class_name_str;
542
    return class_name_str;
526
543
527
}
544
}
528
545
529
void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item){ // äîáîâëÿåì ê ýëåìåíòó äåðåâà â êà÷åñòâå äî÷åðíèõ ýëåìåíòîâ âñå êëàññû, äëÿ êîòîðûõ êëàññ ýëåìåíòà ÿâëÿåòñÿ êîíòåéíåðîì
546
void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item){ // äîáîâëÿåì ê ýëåìåíòó äåðåâà â êà÷åñòâå äî÷åðíèõ ýëåìåíòîâ âñå êëàññû, äëÿ êîòîðûõ êëàññ ýëåìåíòà ÿâëÿåòñÿ êîíòåéíåðîì
530
QStringList chields_list;
547
QStringList chields_list;
531
QString parent_ID;
548
QString parent_ID;
532
QTreeWidgetItem *Item_tmp;
549
QTreeWidgetItem *Item_tmp;
533
parent_ID = perent_class_item->text(1);
550
parent_ID = perent_class_item->text(1);
534
int chields_count, i;
551
int chields_count, i;
535
552
536
chields_list = MainWindow::classChields(parent_ID);
553
chields_list = MainWindow::classChields(parent_ID);
537
if(chields_list.isEmpty()) return;
554
if(chields_list.isEmpty()) return;
538
chields_count = chields_list.size();
555
chields_count = chields_list.size();
539
for (int l = 0; l < chields_count; ++l){
556
for (int l = 0; l < chields_count; ++l){
540
    QString chield_class_name, chield_id;
557
    QString chield_class_name, chield_id;
541
    chield_id = chields_list.at(l);
558
    chield_id = chields_list.at(l);
542
    chield_class_name = MainWindow::ClassName(chield_id);
559
    chield_class_name = MainWindow::ClassName(chield_id);
543
    Item_tmp = new QTreeWidgetItem(perent_class_item);
560
    Item_tmp = new QTreeWidgetItem(perent_class_item);
544
    Item_tmp->setText(0, chield_class_name);
561
    Item_tmp->setText(0, chield_class_name);
545
    Item_tmp->setText(1, chield_id);
562
    Item_tmp->setText(1, chield_id);
546
    Item_tmp->setCheckState(0, Qt::Checked);
563
    Item_tmp->setCheckState(0, Qt::Checked);
547
    MainWindow::addChildsItems(Item_tmp);
564
    MainWindow::addChildsItems(Item_tmp);
548
}
565
}
549
566
550
i++;
567
i++;
551
568
552
}
569
}
553
570
554
571
555
/********************************************************
572
/********************************************************
556
* Ôóíêöèÿ âîçâðàùàåò ñïèñîê "äî÷åðíèõ" êëàññîâ
573
* Ôóíêöèÿ âîçâðàùàåò ñïèñîê "äî÷åðíèõ" êëàññîâ
557
*
574
*
558
*
575
*
559
*
576
*
560
********************************************************/
577
********************************************************/
561
578
562
QStringList MainWindow::classChields(QString class_id){
579
QStringList MainWindow::classChields(QString class_id){
563
   // QMap<QString, QString> map;
580
   // QMap<QString, QString> map;
564
   // TClass class_tmp;
581
   // TClass class_tmp;
565
   // QList <TClass> chields_class_list; // ñïèñîê äî÷åðíèõ êëàññîâ
582
   // QList <TClass> chields_class_list; // ñïèñîê äî÷åðíèõ êëàññîâ
566
    QStringList result;
583
    QStringList result;
567
    QSqlQuery q;
584
    QSqlQuery q;
568
    QString sql_str;
585
    QString sql_str;
569
    QString classIdentifer_str; // â ýòîì ïîëå ëåæèò èäåíòèôèêàòîð êëàññà-êîíòåéíåðà
586
    QString classIdentifer_str; // â ýòîì ïîëå ëåæèò èäåíòèôèêàòîð êëàññà-êîíòåéíåðà
570
    QString field_id_str;
587
    QString field_id_str;
571
    bool ok;
588
    bool ok;
572
    int field_classIdentifer;
589
    int field_classIdentifer;
573
    sql_str = tr("select * "
590
    sql_str = tr("select * "
574
                 " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
591
                 " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
575
                 );
592
                 );
576
    sql_str.append(class_id);
593
    sql_str.append(class_id);
577
594
578
    sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
595
    sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
579
596
580
    q.prepare(sql_str);
597
    q.prepare(sql_str);
581
598
582
    ok = q.exec();
599
    ok = q.exec();
583
    if (!ok) {
600
    if (!ok) {
584
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
601
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
585
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
602
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
586
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
603
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
587
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
604
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
588
                     }
605
                     }
589
    field_classIdentifer = q.record().indexOf(tr("ClassIdentifer"));
606
    field_classIdentifer = q.record().indexOf(tr("ClassIdentifer"));
590
      while(q.next()){
607
      while(q.next()){
591
608
592
                    classIdentifer_str = q.value(field_classIdentifer).toString();
609
                    classIdentifer_str = q.value(field_classIdentifer).toString();
593
                    result.append(classIdentifer_str);
610
                    result.append(classIdentifer_str);
594
                    }
611
                    }
595
612
596
    return result;
613
    return result;
597
614
598
  }
615
  }
599
616
600
617
601
QMap <QString, QString> MainWindow::getClassList(){ // ïîëó÷àåì ñïèñîê êëàññîâ
618
QMap <QString, QString> MainWindow::getClassList(){ // ïîëó÷àåì ñïèñîê êëàññîâ
602
QMap <QString, QString> result_map;
619
QMap <QString, QString> result_map;
603
QSqlQuery q;
620
QSqlQuery q;
604
QString sql_str;
621
QString sql_str;
605
QString class_name_str, class_id_str;
622
QString class_name_str, class_id_str;
606
623
607
int field_class_id, field_class_name;
624
int field_class_id, field_class_name;
608
bool ok;
625
bool ok;
609
sql_str = tr("select * "
626
sql_str = tr("select * "
610
             " from ListOfClasses "       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
627
             " from ListOfClasses "       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
611
             );
628
             );
612
 q.prepare(sql_str);
629
 q.prepare(sql_str);
613
 ok = q.exec();
630
 ok = q.exec();
614
 if (!ok) {
631
 if (!ok) {
615
                         QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
632
                         QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
616
                                                                         this,                      // Ðîäèòåëüñêèé âèäæåò.
633
                                                                         this,                      // Ðîäèòåëüñêèé âèäæåò.
617
                                                                         QObject::tr("Database Error"),   // Çàãîëîâîê.
634
                                                                         QObject::tr("Database Error"),   // Çàãîëîâîê.
618
                                                                         q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
635
                                                                         q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
619
                         return result_map; // åñëè îøèáêà - âîçâðàùàåì ïóñòîé ñïèñîê
636
                         return result_map; // åñëè îøèáêà - âîçâðàùàåì ïóñòîé ñïèñîê
620
                  }
637
                  }
621
field_class_id = q.record().indexOf(tr("ID"));
638
field_class_id = q.record().indexOf(tr("ID"));
622
field_class_name = q.record().indexOf(tr("ClassName"));
639
field_class_name = q.record().indexOf(tr("ClassName"));
623
640
624
while(q.next()){
641
while(q.next()){
625
642
626
                class_name_str = q.value(field_class_name).toString();
643
                class_name_str = q.value(field_class_name).toString();
627
                class_id_str = q.value(field_class_id).toString();
644
                class_id_str = q.value(field_class_id).toString();
628
                result_map[class_id_str] = class_name_str;
645
                result_map[class_id_str] = class_name_str;
629
                }
646
                }
630
 return result_map;
647
 return result_map;
631
}
648
}
632
649
633
650
634
651
635
652
636
653
637
void MainWindow::initComboBox(){
654
void MainWindow::initComboBox(){
638
655
639
656
640
    QStringList classesNameList;
657
    QStringList classesNameList;
641
    QStringList classesID_list;
658
    QStringList classesID_list;
642
    QStringList tmp_stringList;
659
    QStringList tmp_stringList;
643
660
644
661
645
662
646
    QString tmp_str;
663
    QString tmp_str;
647
664
648
    class_list_map = MainWindow::getClassList();
665
    class_list_map = MainWindow::getClassList();
649
    classesID_list = class_list_map.keys();
666
    classesID_list = class_list_map.keys();
650
    classesNameList = class_list_map.values();
667
    classesNameList = class_list_map.values();
651
    QMapIterator<QString, QString> interator(class_list_map);
668
    QMapIterator<QString, QString> interator(class_list_map);
652
//    ui->comboBox->addItems(classesID_list);
669
//    ui->comboBox->addItems(classesID_list);
653
  //  ui->comboBox->addItems(classesNameList);
670
  //  ui->comboBox->addItems(classesNameList);
654
    while (interator.hasNext()) {
671
    while (interator.hasNext()) {
655
         interator.next();
672
         interator.next();
656
         tmp_str =  interator.value();
673
         tmp_str =  interator.value();
657
         tmp_str.append(tr(" \t(ID="));
674
         tmp_str.append(tr(" \t(ID="));
658
         tmp_str.append(interator.key());
675
         tmp_str.append(interator.key());
659
         tmp_str.append(tr(")"));
676
         tmp_str.append(tr(")"));
660
         tmp_stringList << tmp_str;
677
         tmp_stringList << tmp_str;
661
678
662
     }
679
     }
663
//    int count = ui->comboBox->count();
680
//    int count = ui->comboBox->count();
664
681
665
    ui->comboBox->clear();
682
    ui->comboBox->clear();
666
    ui->comboBox->addItems(tmp_stringList);
683
    ui->comboBox->addItems(tmp_stringList);
667
684
668
685
669
}
686
}
670
687
671
688
672
void MainWindow::on_comboBox_currentIndexChanged( int index ){
689
void MainWindow::on_comboBox_currentIndexChanged( int index ){
673
QStringList classesNameList;
690
QStringList classesNameList;
674
QStringList classesID_list;
691
QStringList classesID_list;
675
QString ID_str;
692
QString ID_str;
676
if (index == -1) return;
693
if (index == -1) return;
677
694
678
classesID_list = class_list_map.keys();
695
classesID_list = class_list_map.keys();
679
classesNameList = class_list_map.values();
696
classesNameList = class_list_map.values();
680
ID_str =  classesID_list[index];
697
ID_str =  classesID_list[index];
681
ui->label->setText(ID_str);
698
ui->label->setText(ID_str);
682
if (root_items_list.indexOf(ui->treeWidget->currentItem()) != -1) rebuildPreviewModel(ui->treeWidget->currentItem(), ID_str);
699
if (root_items_list.indexOf(ui->treeWidget->currentItem()) != -1)
-
 
700
{
-
 
701
    model_is_build = false; // ÷òîáû íå âûçûâàëîñü ñîáûòèå on_treeWidget_itemChanged
-
 
702
    rebuildPreviewModel(ui->treeWidget->currentItem(), ID_str);
-
 
703
    model_is_build = true; // òåïåðü ïóñòü âûçûâàåòñÿ
-
 
704
}
683
getDatabaseData();
705
    getDatabaseData();
684
706
685
707
686
}
708
}
687
709
688
void MainWindow::on_treeWidget_itemChanged ( QTreeWidgetItem * item, int column ){
710
void MainWindow::on_treeWidget_itemChanged ( QTreeWidgetItem * item, int column ){
689
    int i;
711
    int i;
690
    i++;
712
    i++;
691
713
692
    if ((column) == 0 && (model_is_build)) getDatabaseData();
714
    if ((column) == 0 && (model_is_build)) getDatabaseData();
693
715
694
}
716
}
695
717
696
718
697
void MainWindow::on_treeWidget_itemClicked ( QTreeWidgetItem * item, int column ){
719
void MainWindow::on_treeWidget_itemClicked ( QTreeWidgetItem * item, int column ){
698
    int i;
720
    int i;
699
    i++;
721
    i++;
700
    if (root_items_list.indexOf(item) != -1) {
722
    if (root_items_list.indexOf(item) != -1) {
701
        QStringList classesNameList;
723
        QStringList classesNameList;
702
        QStringList classesID_list;
724
        QStringList classesID_list;
703
725
704
        int index;
726
        int index;
705
        classesID_list = class_list_map.keys();
727
        classesID_list = class_list_map.keys();
706
        classesNameList = class_list_map.values();
728
        classesNameList = class_list_map.values();
707
        index = classesID_list.indexOf(item->child(0)->text(1));
729
        if (item->childCount()>0) index = classesID_list.indexOf(item->child(0)->text(1)); // åñëè ìîäåëü íå ïóñòàÿ, óçíàåì êîðíåâîé êëàññ
-
 
730
        else { // åñëè ïóñòàÿ
-
 
731
        ui->comboBox->setEnabled(true);
-
 
732
        return;
-
 
733
-
 
734
        }
708
        if (index != -1) ui->comboBox->setCurrentIndex(index);
735
        if (index != -1) ui->comboBox->setCurrentIndex(index);
709
736
710
        ui->comboBox->setEnabled(true);
737
        ui->comboBox->setEnabled(true);
711
738
712
739
713
    }
740
    }
714
  //  if ((rootItem1) == (item) ) ui->comboBox->setEnabled(true);
741
  //  if ((rootItem1) == (item) ) ui->comboBox->setEnabled(true);
715
else ( ui->comboBox->setEnabled(false));
742
else ( ui->comboBox->setEnabled(false));
716
}
743
}
717
744
718
QMap <QString, QString> MainWindow::getFieldsList(QString class_id){ // ïîëó÷àåì ñïèñîê ïîëåé êëàññà
745
QMap <QString, QString> MainWindow::getFieldsList(QString class_id){ // ïîëó÷àåì ñïèñîê ïîëåé êëàññà
719
746
720
}
747
}
721
748
722
749
723
void MainWindow::initListModelsTablle(){
750
void MainWindow::initListModelsTablle(){
724
    model_for_ListModelsTable = new QSqlTableModel(this);
751
    model_for_ListModelsTable = new QSqlTableModel(this);
725
752
726
    model_for_ListModelsTable->setTable(tr("ListOfModels"));
753
    model_for_ListModelsTable->setTable(tr("ListOfModels"));
727
    model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnFieldChange);
754
    model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnFieldChange);
728
755
729
    ui->tableView_2->setModel(model_for_ListModelsTable);
756
    ui->tableView_2->setModel(model_for_ListModelsTable);
730
    model_for_ListModelsTable->select();
757
    model_for_ListModelsTable->select();
731
}
758
}
732
 
759