Хранилища Subversion OpenInventory

Редакция

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

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

201

202
        db = QSqlDatabase::addDatabase("QMYSQL");
202
        db = QSqlDatabase::addDatabase("QMYSQL");
203
        pdb = &db;
203
        pdb = &db;
204
        raportFrm.pdb = &db;
204
        raportFrm.pdb = &db;
205

205

206
        pdb->setHostName(hostName);
206
        pdb->setHostName(hostName);
207
        pdb->setDatabaseName(baseName);
207
        pdb->setDatabaseName(baseName);
208
        pdb->setUserName(userName);
208
        pdb->setUserName(userName);
209
        pdb->setPassword(password);
209
        pdb->setPassword(password);
210
        bool ok = pdb->open();
210
        bool ok = pdb->open();
211
        if (!ok) {
211
        if (!ok) {
212
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
212
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
213
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
213
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
214
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
214
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
215
                                                                                pdb->lastError().text());          // Òåêñò ñîîáùåíèÿ.
215
                                                                                pdb->lastError().text());          // Òåêñò ñîîáùåíèÿ.
216
                         }
216
                         }
217
        if (ok)
217
        if (ok)
218
        {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
218
        {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
219
        }
219
        }
220
        else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
220
        else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
221
                  lineEdit-> insert(pdb->lastError().text());
221
                  lineEdit-> insert(pdb->lastError().text());
222
                 }
222
                 }
223

223

224

224

225

225

226
        model = new QSqlTableModel(this);
226
        model = new QSqlTableModel(this);
227
        model->setTable(tableName);
227
        model->setTable(tableName);
228

228

229
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
229
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
230
        model->setSort(0, Qt::AscendingOrder);
230
        model->setSort(0, Qt::AscendingOrder);
231

231

232
        model->select();
232
        model->select();
233

233

234

234

235
        QSqlField field(tr("age"), QVariant::Int);
235
        QSqlField field(tr("age"), QVariant::Int);
236
        field.setValue(QString(tr("123")));
236
        field.setValue(QString(tr("123")));
237

237

238
        bool okey;
238
        bool okey;
239
        int index;
239
        int index;
240
        QSqlRecord record;
240
        QSqlRecord record;
241

241

242

242

243
        tableView->setModel(model);
243
        tableView->setModel(model);
244
        view.setModel(model);
244
        view.setModel(model);
245

245

246

246

247
        tableView->setAlternatingRowColors(true);
247
        tableView->setAlternatingRowColors(true);
248
        view.setAlternatingRowColors(true);
248
        view.setAlternatingRowColors(true);
249

249

250
        tableView->resizeColumnsToContents();
250
        tableView->resizeColumnsToContents();
251

251

252

252

253
        view.resizeColumnsToContents();
253
        view.resizeColumnsToContents();
254

254

255
        tableView->show();
255
        tableView->show();
256

256

257

257

258

258

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

342

343

343

344
                            }
344
                            }
345

345

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

401

402
sql_str = tr("select * "
402
sql_str = tr("select * "
403
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
403
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
404
             );
404
             );
405
sql_str.append(rootClassID);
405
sql_str.append(rootClassID);
406

406

407
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
407
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
408

408

409
q.prepare(sql_str);
409
q.prepare(sql_str);
410

410

411
ok = q.exec();
411
ok = q.exec();
412
if (!ok) {
412
if (!ok) {
413
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
413
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
414
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
414
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
415
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
415
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
416
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
416
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
417
                 }
417
                 }
418
field_name = q.record().indexOf(tr("FieldName"));
418
field_name = q.record().indexOf(tr("FieldName"));
419
while(q.next()){
419
while(q.next()){
420

420

421
                field_name_str = q.value(field_name).toString();
421
                field_name_str = q.value(field_name).toString();
422

422

423
                }
423
                }
424

424

425

425

426

426

427

427

428
*/
428
*/
429
429
430
430
431
}
431
}
432
432
433
433
434
bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID, int row){
434
bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID, int row){
435
QSqlQuery q;
435
QSqlQuery q;
436
QString sql_str;
436
QString sql_str;
437
QString field_name_str;
437
QString field_name_str;
438
QString root_class_name;
438
QString root_class_name;
439
bool ok;
439
bool ok;
440
int field_name;
440
int field_name;
441
441
442
//ui->treeWidget->clear();
442
//ui->treeWidget->clear();
443
443
444
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
444
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
445
445
446
446
447
// rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
447
// rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
448
// root_items_list << rootItem1;
448
// root_items_list << rootItem1;
449
// rootItem1->setText(0, modelName);
449
// rootItem1->setText(0, modelName);
450
450
451
// rootItem1->setCheckState(0,Qt::Checked);
451
// rootItem1->setCheckState(0,Qt::Checked);
452
// rootItems.append(rootItem1);
452
// rootItems.append(rootItem1);
453
453
454
// root_item->removeChild(root_item->child(0)); // î÷èùàåì ñïèñîê äî÷åðíèõ êëàññîâ
454
// root_item->removeChild(root_item->child(0)); // î÷èùàåì ñïèñîê äî÷åðíèõ êëàññîâ
455
if (root_item->childCount()==0){ // íåò êîðíåâîãî êëàññà, ñîçäàäèì åãî
455
if (root_item->childCount()==0){ // íåò êîðíåâîãî êëàññà, ñîçäàäèì åãî
456
    QTreeWidgetItem* item_tmp;
456
    QTreeWidgetItem* item_tmp;
457
    item_tmp = new QTreeWidgetItem (root_item);
457
    item_tmp = new QTreeWidgetItem (root_item);
458
    item_tmp->setText(4, QVariant(row).toString());
458
    item_tmp->setText(4, QVariant(row).toString());
459
459
460
}
460
}
461
461
462
if (root_item->childCount()==1){ // êîðíåâîé êëàññ åñòü è îí ïóñòîé, î÷èùàòü åãî íå íàäî
462
if (root_item->childCount()==1){ // êîðíåâîé êëàññ åñòü è îí ïóñòîé, î÷èùàòü åãî íå íàäî
463
root_item->child(0)->setText(0, root_class_name);
463
root_item->child(0)->setText(0, root_class_name);
464
root_item->child(0)->setText(1, rootClassID);
464
root_item->child(0)->setText(1, rootClassID);
465
root_item->child(0)->setCheckState(0,Qt::Checked);
465
root_item->child(0)->setCheckState(0,Qt::Checked);
466
root_item->setText(4, QVariant(row).toString());
466
root_item->setText(4, QVariant(row).toString());
467
467
468
}
468
}
469
469
470
470
471
471
472
//delete rootItem2;
472
//delete rootItem2;
473
473
474
474
475
// rootItem2 = new  QTreeWidgetItem(rootItem1);
475
// rootItem2 = new  QTreeWidgetItem(rootItem1);
476
476
477
477
478
478
479
// rootItem2->setText(0, root_class_name);
479
// rootItem2->setText(0, root_class_name);
480
// rootItem2->setText(1, rootClassID);
480
// rootItem2->setText(1, rootClassID);
481
// rootItem2->setCheckState(0,Qt::Checked);
481
// rootItem2->setCheckState(0,Qt::Checked);
482
482
483
int child_count = root_item->child(0)->childCount();
483
int child_count = root_item->child(0)->childCount();
484
484
485
485
486
for (int i=0; i < child_count; i++){ // åñëè êîðíåâîé êëàññ åñòü è íå ïóñòîé, î÷èùàåì åãî
486
for (int i=0; i < child_count; i++){ // åñëè êîðíåâîé êëàññ åñòü è íå ïóñòîé, î÷èùàåì åãî
487
    root_item->child(0)->removeChild(root_item->child(0)->child(0));
487
    root_item->child(0)->removeChild(root_item->child(0)->child(0));
488
}
488
}
489
489
490
child_count = root_item->child(0)->childCount();
490
child_count = root_item->child(0)->childCount();
491
addChildsItems(root_item->child(0), row);
491
addChildsItems(root_item->child(0), row);
492
/*
492
/*
493
sql_str = tr("select * "
493
sql_str = tr("select * "
494
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
494
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
495
             );
495
             );
496
sql_str.append(rootClassID);
496
sql_str.append(rootClassID);
497

497

498
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
498
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
499

499

500
q.prepare(sql_str);
500
q.prepare(sql_str);
501

501

502
ok = q.exec();
502
ok = q.exec();
503
if (!ok) {
503
if (!ok) {
504
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
504
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
505
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
505
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
506
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
506
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
507
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
507
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
508
                 }
508
                 }
509
field_name = q.record().indexOf(tr("FieldName"));
509
field_name = q.record().indexOf(tr("FieldName"));
510
while(q.next()){
510
while(q.next()){
511

511

512
                field_name_str = q.value(field_name).toString();
512
                field_name_str = q.value(field_name).toString();
513

513

514
                }
514
                }
515

515

516
*/
516
*/
517
517
518
518
519
}
519
}
520
520
521
521
522
522
523
523
524
QString MainWindow::ClassName(QString class_id){ //âîçâðàùàåò èìÿ êëàññà ïî åãî ID
524
QString MainWindow::ClassName(QString class_id){ //âîçâðàùàåò èìÿ êëàññà ïî åãî ID
525
    QSqlQuery q;
525
    QSqlQuery q;
526
    QString sql_str;
526
    QString sql_str;
527
    QString class_name_str;
527
    QString class_name_str;
528
    bool ok;
528
    bool ok;
529
    int field_class_name;
529
    int field_class_name;
530
530
531
    sql_str = tr("select * "
531
    sql_str = tr("select * "
532
                 " from ListOfClasses where ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
532
                 " from ListOfClasses where ListOfClasses.ID = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
533
                 );
533
                 );
534
534
535
    sql_str.append(class_id);
535
    sql_str.append(class_id);
536
    sql_str.append(tr("' "));
536
    sql_str.append(tr("' "));
537
537
538
    q.prepare(sql_str);
538
    q.prepare(sql_str);
539
539
540
    ok = q.exec();
540
    ok = q.exec();
541
541
542
542
543
    if (!ok) {
543
    if (!ok) {
544
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
544
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
545
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
545
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
546
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
546
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
547
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
547
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
548
                     }
548
                     }
549
549
550
    field_class_name = q.record().indexOf(tr("ClassName"));
550
    field_class_name = q.record().indexOf(tr("ClassName"));
551
    while(q.next()){
551
    while(q.next()){
552
552
553
                    class_name_str = q.value(field_class_name).toString();
553
                    class_name_str = q.value(field_class_name).toString();
554
554
555
                    }
555
                    }
556
556
557
    return class_name_str;
557
    return class_name_str;
558
558
559
}
559
}
560
560
561
void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item, int row){ // äîáîâëÿåì ê ýëåìåíòó äåðåâà â êà÷åñòâå äî÷åðíèõ ýëåìåíòîâ âñå êëàññû, äëÿ êîòîðûõ êëàññ ýëåìåíòà ÿâëÿåòñÿ êîíòåéíåðîì
561
void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item, int row){ // äîáîâëÿåì ê ýëåìåíòó äåðåâà â êà÷åñòâå äî÷åðíèõ ýëåìåíòîâ âñå êëàññû, äëÿ êîòîðûõ êëàññ ýëåìåíòà ÿâëÿåòñÿ êîíòåéíåðîì
562
QStringList chields_list;
562
QStringList chields_list;
563
QString parent_ID;
563
QString parent_ID;
564
QTreeWidgetItem *Item_tmp;
564
QTreeWidgetItem *Item_tmp;
565
parent_ID = perent_class_item->text(1);
565
parent_ID = perent_class_item->text(1);
566
int chields_count, i;
566
int chields_count, i;
567
567
568
chields_list = MainWindow::classChields(parent_ID);
568
chields_list = MainWindow::classChields(parent_ID);
569
if(chields_list.isEmpty()) return;
569
if(chields_list.isEmpty()) return;
570
chields_count = chields_list.size();
570
chields_count = chields_list.size();
571
for (int l = 0; l < chields_count; ++l){
571
for (int l = 0; l < chields_count; ++l){
572
    QString chield_class_name, chield_id;
572
    QString chield_class_name, chield_id;
573
    chield_id = chields_list.at(l);
573
    chield_id = chields_list.at(l);
574
    chield_class_name = MainWindow::ClassName(chield_id);
574
    chield_class_name = MainWindow::ClassName(chield_id);
575
    Item_tmp = new QTreeWidgetItem(perent_class_item);
575
    Item_tmp = new QTreeWidgetItem(perent_class_item);
576
    Item_tmp->setText(0, chield_class_name);
576
    Item_tmp->setText(0, chield_class_name);
577
    Item_tmp->setText(1, chield_id);
577
    Item_tmp->setText(1, chield_id);
578
    Item_tmp->setCheckState(0, Qt::Checked);
578
    Item_tmp->setCheckState(0, Qt::Checked);
579
    Item_tmp->setText(4, QVariant(row).toString());
579
    Item_tmp->setText(4, QVariant(row).toString());
580
    MainWindow::addChildsItems(Item_tmp, row);
580
    MainWindow::addChildsItems(Item_tmp, row);
581
}
581
}
582
582
583
i++;
583
i++;
584
584
585
}
585
}
586
586
587
587
588
/********************************************************
588
/********************************************************
589
* Ôóíêöèÿ âîçâðàùàåò ñïèñîê "äî÷åðíèõ" êëàññîâ
589
* Ôóíêöèÿ âîçâðàùàåò ñïèñîê "äî÷åðíèõ" êëàññîâ
590
*
590
*
591
*
591
*
592
*
592
*
593
********************************************************/
593
********************************************************/
594
594
595
QStringList MainWindow::classChields(QString class_id){
595
QStringList MainWindow::classChields(QString class_id){
596
   // QMap<QString, QString> map;
596
   // QMap<QString, QString> map;
597
   // TClass class_tmp;
597
   // TClass class_tmp;
598
   // QList <TClass> chields_class_list; // ñïèñîê äî÷åðíèõ êëàññîâ
598
   // QList <TClass> chields_class_list; // ñïèñîê äî÷åðíèõ êëàññîâ
599
    QStringList result;
599
    QStringList result;
600
    QSqlQuery q;
600
    QSqlQuery q;
601
    QString sql_str;
601
    QString sql_str;
602
    QString classIdentifer_str; // â ýòîì ïîëå ëåæèò èäåíòèôèêàòîð êëàññà-êîíòåéíåðà
602
    QString classIdentifer_str; // â ýòîì ïîëå ëåæèò èäåíòèôèêàòîð êëàññà-êîíòåéíåðà
603
    QString field_id_str;
603
    QString field_id_str;
604
    bool ok;
604
    bool ok;
605
    int field_classIdentifer;
605
    int field_classIdentifer;
606
    sql_str = tr("select * "
606
    sql_str = tr("select * "
607
                 " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
607
                 " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
608
                 );
608
                 );
609
    sql_str.append(class_id);
609
    sql_str.append(class_id);
610
610
611
    sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
611
    sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
612
612
613
    q.prepare(sql_str);
613
    q.prepare(sql_str);
614
614
615
    ok = q.exec();
615
    ok = q.exec();
616
    if (!ok) {
616
    if (!ok) {
617
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
617
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
618
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
618
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
619
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
619
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
620
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
620
                                                                            q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
621
                     }
621
                     }
622
    field_classIdentifer = q.record().indexOf(tr("ClassIdentifer"));
622
    field_classIdentifer = q.record().indexOf(tr("ClassIdentifer"));
623
      while(q.next()){
623
      while(q.next()){
624
624
625
                    classIdentifer_str = q.value(field_classIdentifer).toString();
625
                    classIdentifer_str = q.value(field_classIdentifer).toString();
626
                    result.append(classIdentifer_str);
626
                    result.append(classIdentifer_str);
627
                    }
627
                    }
628
628
629
    return result;
629
    return result;
630
630
631
  }
631
  }
632
632
633
633
634
QMap <QString, QString> MainWindow::getClassList(){ // ïîëó÷àåì ñïèñîê êëàññîâ
634
QMap <QString, QString> MainWindow::getClassList(){ // ïîëó÷àåì ñïèñîê êëàññîâ
635
QMap <QString, QString> result_map;
635
QMap <QString, QString> result_map;
636
QSqlQuery q;
636
QSqlQuery q;
637
QString sql_str;
637
QString sql_str;
638
QString class_name_str, class_id_str;
638
QString class_name_str, class_id_str;
639
639
640
int field_class_id, field_class_name;
640
int field_class_id, field_class_name;
641
bool ok;
641
bool ok;
642
sql_str = tr("select * "
642
sql_str = tr("select * "
643
             " from ListOfClasses "       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
643
             " from ListOfClasses "       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
644
             );
644
             );
645
 q.prepare(sql_str);
645
 q.prepare(sql_str);
646
 ok = q.exec();
646
 ok = q.exec();
647
 if (!ok) {
647
 if (!ok) {
648
                         QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
648
                         QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
649
                                                                         this,                      // Ðîäèòåëüñêèé âèäæåò.
649
                                                                         this,                      // Ðîäèòåëüñêèé âèäæåò.
650
                                                                         QObject::tr("Database Error"),   // Çàãîëîâîê.
650
                                                                         QObject::tr("Database Error"),   // Çàãîëîâîê.
651
                                                                         q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
651
                                                                         q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
652
                         return result_map; // åñëè îøèáêà - âîçâðàùàåì ïóñòîé ñïèñîê
652
                         return result_map; // åñëè îøèáêà - âîçâðàùàåì ïóñòîé ñïèñîê
653
                  }
653
                  }
654
field_class_id = q.record().indexOf(tr("ID"));
654
field_class_id = q.record().indexOf(tr("ID"));
655
field_class_name = q.record().indexOf(tr("ClassName"));
655
field_class_name = q.record().indexOf(tr("ClassName"));
656
656
657
while(q.next()){
657
while(q.next()){
658
658
659
                class_name_str = q.value(field_class_name).toString();
659
                class_name_str = q.value(field_class_name).toString();
660
                class_id_str = q.value(field_class_id).toString();
660
                class_id_str = q.value(field_class_id).toString();
661
                result_map[class_id_str] = class_name_str;
661
                result_map[class_id_str] = class_name_str;
662
                }
662
                }
663
 return result_map;
663
 return result_map;
664
}
664
}
665
665
666
666
667
667
668
668
669
669
670
void MainWindow::initComboBox(){
670
void MainWindow::initComboBox(){
671
671
672
672
673
    QStringList classesNameList;
673
    QStringList classesNameList;
674
    QStringList classesID_list;
674
    QStringList classesID_list;
675
    QStringList tmp_stringList;
675
    QStringList tmp_stringList;
676
676
677
677
678
678
679
    QString tmp_str;
679
    QString tmp_str;
680
680
681
    class_list_map = MainWindow::getClassList();
681
    class_list_map = MainWindow::getClassList();
682
    classesID_list = class_list_map.keys();
682
    classesID_list = class_list_map.keys();
683
    classesNameList = class_list_map.values();
683
    classesNameList = class_list_map.values();
684
    QMapIterator<QString, QString> interator(class_list_map);
684
    QMapIterator<QString, QString> interator(class_list_map);
685
//    ui->comboBox->addItems(classesID_list);
685
//    ui->comboBox->addItems(classesID_list);
686
  //  ui->comboBox->addItems(classesNameList);
686
  //  ui->comboBox->addItems(classesNameList);
687
    while (interator.hasNext()) {
687
    while (interator.hasNext()) {
688
         interator.next();
688
         interator.next();
689
         tmp_str =  interator.value();
689
         tmp_str =  interator.value();
690
         tmp_str.append(tr(" \t(ID="));
690
         tmp_str.append(tr(" \t(ID="));
691
         tmp_str.append(interator.key());
691
         tmp_str.append(interator.key());
692
         tmp_str.append(tr(")"));
692
         tmp_str.append(tr(")"));
693
         tmp_stringList << tmp_str;
693
         tmp_stringList << tmp_str;
694
694
695
     }
695
     }
696
//    int count = ui->comboBox->count();
696
//    int count = ui->comboBox->count();
697
697
698
    ui->comboBox->clear();
698
    ui->comboBox->clear();
699
    ui->comboBox->addItems(tmp_stringList);
699
    ui->comboBox->addItems(tmp_stringList);
700
700
701
701
702
}
702
}
703
703
704
704
705
void MainWindow::on_comboBox_currentIndexChanged( int index ){
705
void MainWindow::on_comboBox_currentIndexChanged( int index ){
706
QStringList classesNameList;
706
QStringList classesNameList;
707
QStringList classesID_list;
707
QStringList classesID_list;
708
QString ID_str;
708
QString ID_str;
709
if (index == -1) return;
709
if (index == -1) return;
-
 
710
if (!comboBox_slot_enable) return; // èíäåêñ ïîìåíÿëà ïðîãðàììà, îí íå áûë èçìåíåí âðó÷íóþ, âûõîäèì
710
int row;
711
int row;
711
712
712
classesID_list = class_list_map.keys();
713
classesID_list = class_list_map.keys();
713
classesNameList = class_list_map.values();
714
classesNameList = class_list_map.values();
714
ID_str =  classesID_list[index];
715
ID_str =  classesID_list[index];
715
ui->label->setText(ID_str);
716
ui->label->setText(ID_str);
716
if (root_items_list.indexOf(ui->treeWidget->currentItem()) != -1)
717
if (root_items_list.indexOf(ui->treeWidget->currentItem()) != -1)
717
{
718
{
718
    row = QVariant(ui->treeWidget->currentItem()->text(4)).toInt();
719
    row = QVariant(ui->treeWidget->currentItem()->text(4)).toInt();
719
    model_is_build = false; // ÷òîáû íå âûçûâàëîñü ñîáûòèå on_treeWidget_itemChanged
720
    model_is_build = false; // ÷òîáû íå âûçûâàëîñü ñîáûòèå on_treeWidget_itemChanged
720
    rebuildPreviewModel(ui->treeWidget->currentItem(), ID_str, row);
721
    rebuildPreviewModel(ui->treeWidget->currentItem(), ID_str, row);
721
    model_is_build = true; // òåïåðü ïóñòü âûçûâàåòñÿ
722
    model_is_build = true; // òåïåðü ïóñòü âûçûâàåòñÿ
722
    QString mdl_str = MainWindow::creatModelString(ui->treeWidget->currentItem()); //
723
    QString mdl_str = MainWindow::creatModelString(ui->treeWidget->currentItem()); //
723
    model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row, 2), QVariant(mdl_str));
724
    model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row, 2), QVariant(mdl_str));
724
}
725
}
725
    getDatabaseData();
726
    getDatabaseData();
726
727
727
728
728
}
729
}
729
730
730
void MainWindow::on_treeWidget_itemChanged ( QTreeWidgetItem * item, int column ){
731
void MainWindow::on_treeWidget_itemChanged ( QTreeWidgetItem * item, int column ){
731
    int i;
732
    int i;
732
    i++;
733
    i++;
733
    QTreeWidgetItem * item_tmp;
734
    QTreeWidgetItem * item_tmp;
734
    QString mdl_str;
735
    QString mdl_str;
735
    QString row; // íîìåð ñòðîêè â òàáëèöå ìîäåëåé, ñîîòâåòñòâóþùèé èçìåíåííîé ìîäåëå
736
    QString row; // íîìåð ñòðîêè â òàáëèöå ìîäåëåé, ñîîòâåòñòâóþùèé èçìåíåííîé ìîäåëå
736
    QList <QTreeWidgetItem *> mdl_itm_list;
737
    QList <QTreeWidgetItem *> mdl_itm_list;
737
    QList <int> rows_list;
738
    QList <int> rows_list;
738
739
739
740
740
    if ((column) == 0 && (model_is_build)) {
741
    if ((column) == 0 && (model_is_build)) {
741
    // if (!model_is_build) return; // ìîäåëü åù¸ íå ïîñòðîåíà
742
    // if (!model_is_build) return; // ìîäåëü åù¸ íå ïîñòðîåíà
742
743
743
    mdl_itm_list = models_items.values();
744
    mdl_itm_list = models_items.values();
744
    rows_list =  models_items.keys();
745
    rows_list =  models_items.keys();
745
    row= item->text(4);
746
    row= item->text(4);
746
747
747
748
748
    if ( mdl_itm_list.indexOf(item) != -1){ // èçìåí¸í êîðíåâîé èòåì (ñàìà ìîäåëü)
749
    if ( mdl_itm_list.indexOf(item) != -1){ // èçìåí¸í êîðíåâîé èòåì (ñàìà ìîäåëü)
749
        if (item->checkState(0)) model_for_ListModelsTable->setData(model_for_ListModelsTable->index(QVariant(row).toInt(), 3), QVariant(1));
750
        if (item->checkState(0)) model_for_ListModelsTable->setData(model_for_ListModelsTable->index(QVariant(row).toInt(), 3), QVariant(1));
750
        else model_for_ListModelsTable->setData(model_for_ListModelsTable->index(QVariant(row).toInt(), 3), QVariant(0));
751
        else model_for_ListModelsTable->setData(model_for_ListModelsTable->index(QVariant(row).toInt(), 3), QVariant(0));
751
        }
752
        }
752
753
753
754
754
755
755
756
756
    if (!row.isEmpty()){
757
    if (!row.isEmpty()){
757
758
758
759
759
        int row_int;
760
        int row_int;
760
    row_int = QVariant(row).toInt();
761
    row_int = QVariant(row).toInt();
761
     if (rows_list.indexOf(row_int) != -1)
762
     if (rows_list.indexOf(row_int) != -1)
762
        {
763
        {
763
            item_tmp = models_items[row_int];
764
            item_tmp = models_items[row_int];
764
            mdl_str = MainWindow::creatModelString(item_tmp);
765
            mdl_str = MainWindow::creatModelString(item_tmp);
765
            model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row_int, 2), QVariant(mdl_str));
766
            model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row_int, 2), QVariant(mdl_str));
766
        }
767
        }
767
768
768
769
769
    }
770
    }
770
771
771
772
772
}
773
}
773
774
774
/*
775
/*
775
    QTreeWidgetItem * item_tmp;
776
    QTreeWidgetItem * item_tmp;
776
    item_tmp = item;
777
    item_tmp = item;
777
    while (item_tmp ){
778
    while (item_tmp ){
778
        item_tmp = item_tmp->parent();
779
        item_tmp = item_tmp->parent();
779
    }
780
    }
780
  */
781
  */
781
    if ((column) == 0 && (model_is_build)) getDatabaseData();
782
    if ((column) == 0 && (model_is_build)) getDatabaseData();
782
783
783
784
784
}
785
}
785
786
786
787
787
void MainWindow::on_treeWidget_itemClicked ( QTreeWidgetItem * item, int column ){
788
void MainWindow::on_treeWidget_itemClicked ( QTreeWidgetItem * item, int column ){
788
    int i;
789
    int i;
789
    i++;
790
    i++;
790
    if (root_items_list.indexOf(item) != -1) {
791
    if (root_items_list.indexOf(item) != -1) {
791
        QStringList classesNameList;
792
        QStringList classesNameList;
792
        QStringList classesID_list;
793
        QStringList classesID_list;
793
794
794
        int index;
795
        int index;
795
        classesID_list = class_list_map.keys();
796
        classesID_list = class_list_map.keys();
796
        classesNameList = class_list_map.values();
797
        classesNameList = class_list_map.values();
797
        if (item->childCount()>0) index = classesID_list.indexOf(item->child(0)->text(1)); // åñëè ìîäåëü íå ïóñòàÿ, óçíàåì êîðíåâîé êëàññ
798
        if (item->childCount()>0) index = classesID_list.indexOf(item->child(0)->text(1)); // åñëè ìîäåëü íå ïóñòàÿ, óçíàåì êîðíåâîé êëàññ
798
        else { // åñëè ïóñòàÿ
799
        else { // åñëè ïóñòàÿ
799
        ui->comboBox->setEnabled(true);
800
        ui->comboBox->setEnabled(true);
800
        return;
801
        return;
801
802
802
        }
803
        }
-
 
804
        comboBox_slot_enable = false; // ÷òîáû ñëîò comboBox íå ìåíÿë ñòðîêó ìîäåëè
803
        if (index != -1) ui->comboBox->setCurrentIndex(index);
805
        if (index != -1) ui->comboBox->setCurrentIndex(index);
804
-
 
-
 
806
        comboBox_slot_enable = true;
805
        ui->comboBox->setEnabled(true);
807
        ui->comboBox->setEnabled(true);
806
808
807
809
808
    }
810
    }
809
  //  if ((rootItem1) == (item) ) ui->comboBox->setEnabled(true);
811
  //  if ((rootItem1) == (item) ) ui->comboBox->setEnabled(true);
810
else ( ui->comboBox->setEnabled(false));
812
else ( ui->comboBox->setEnabled(false));
811
}
813
}
812
814
813
QMap <QString, QString> MainWindow::getFieldsList(QString class_id){ // ïîëó÷àåì ñïèñîê ïîëåé êëàññà
815
QMap <QString, QString> MainWindow::getFieldsList(QString class_id){ // ïîëó÷àåì ñïèñîê ïîëåé êëàññà
814
816
815
}
817
}
816
818
817
819
818
void MainWindow::initListModelsTablle(){
820
void MainWindow::initListModelsTablle(){
819
    model_for_ListModelsTable = new QSqlTableModel();
821
    model_for_ListModelsTable = new QSqlTableModel();
820
822
821
    model_for_ListModelsTable->setTable(tr("ListOfModels"));
823
    model_for_ListModelsTable->setTable(tr("ListOfModels"));
822
 //   model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnFieldChange);
824
 //   model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnFieldChange);
823
    model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnManualSubmit);
825
    model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnManualSubmit);
824
    ui->tableView_2->setModel(model_for_ListModelsTable);
826
    ui->tableView_2->setModel(model_for_ListModelsTable);
825
827
826
    model_for_ListModelsTable->select();
828
    model_for_ListModelsTable->select();
827
829
828
    ui->treeWidget->hideColumn(1);
830
    ui->treeWidget->hideColumn(1);
829
    ui->treeWidget->hideColumn(2);
831
    ui->treeWidget->hideColumn(2);
830
    ui->treeWidget->hideColumn(3);
832
    ui->treeWidget->hideColumn(3);
831
    ui->treeWidget->hideColumn(4);
833
    ui->treeWidget->hideColumn(4);
832
834
833
    ui->tableView_2->hideColumn(0);
835
    ui->tableView_2->hideColumn(0);
834
    ui->tableView_2->hideColumn(2);
836
    ui->tableView_2->hideColumn(2);
835
    ui->tableView_2->hideColumn(3);
837
    ui->tableView_2->hideColumn(3);
836
    ui->tableView_2->hideColumn(4);
838
    ui->tableView_2->hideColumn(4);
837
839
838
    ui->tableView_2->resizeColumnsToContents();
840
    ui->tableView_2->resizeColumnsToContents();
839
    ui->tableView_2->setAlternatingRowColors(true);
841
    ui->tableView_2->setAlternatingRowColors(true);
840
842
841
    ui->pushButton_7->setEnabled(false);
843
    ui->pushButton_7->setEnabled(false);
842
    ui->pushButton_8->setEnabled(false);
844
    ui->pushButton_8->setEnabled(false);
843
845
844
846
845
}
847
}
846
 
848