Хранилища Subversion OpenInventory

Редакция

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

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

228

226
        db = QSqlDatabase::addDatabase("QMYSQL");
229
        db = QSqlDatabase::addDatabase("QMYSQL");
227
        pdb = &db;
230
        pdb = &db;
228
        raportFrm.pdb = &db;
231
        raportFrm.pdb = &db;
229

232

230
        pdb->setHostName(hostName);
233
        pdb->setHostName(hostName);
231
        pdb->setDatabaseName(baseName);
234
        pdb->setDatabaseName(baseName);
232
        pdb->setUserName(userName);
235
        pdb->setUserName(userName);
233
        pdb->setPassword(password);
236
        pdb->setPassword(password);
234
        bool ok = pdb->open();
237
        bool ok = pdb->open();
235
        if (!ok) {
238
        if (!ok) {
236
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
239
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
237
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
240
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
238
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
241
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
239
                                                                                pdb->lastError().text());          // Òåêñò ñîîáùåíèÿ.
242
                                                                                pdb->lastError().text());          // Òåêñò ñîîáùåíèÿ.
240
                         }
243
                         }
241
        if (ok)
244
        if (ok)
242
        {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
245
        {lineEdit-> insert(tr("Áàçà óñïåøíî îòêðûòà"));
243
        }
246
        }
244
        else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
247
        else {lineEdit-> insert(tr("Áàçà íåäîñòóïíà. Êîä îøèáêè: "));
245
                  lineEdit-> insert(pdb->lastError().text());
248
                  lineEdit-> insert(pdb->lastError().text());
246
                 }
249
                 }
247

250

248

251

249

252

250
        model = new QSqlTableModel(this);
253
        model = new QSqlTableModel(this);
251
        model->setTable(tableName);
254
        model->setTable(tableName);
252

255

253
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
256
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
254
        model->setSort(0, Qt::AscendingOrder);
257
        model->setSort(0, Qt::AscendingOrder);
255

258

256
        model->select();
259
        model->select();
257

260

258

261

259
        QSqlField field(tr("age"), QVariant::Int);
262
        QSqlField field(tr("age"), QVariant::Int);
260
        field.setValue(QString(tr("123")));
263
        field.setValue(QString(tr("123")));
261

264

262
        bool okey;
265
        bool okey;
263
        int index;
266
        int index;
264
        QSqlRecord record;
267
        QSqlRecord record;
265

268

266

269

267
        tableView->setModel(model);
270
        tableView->setModel(model);
268
        view.setModel(model);
271
        view.setModel(model);
269

272

270

273

271
        tableView->setAlternatingRowColors(true);
274
        tableView->setAlternatingRowColors(true);
272
        view.setAlternatingRowColors(true);
275
        view.setAlternatingRowColors(true);
273

276

274
        tableView->resizeColumnsToContents();
277
        tableView->resizeColumnsToContents();
275

278

276

279

277
        view.resizeColumnsToContents();
280
        view.resizeColumnsToContents();
278

281

279
        tableView->show();
282
        tableView->show();
280

283

281

284

282

285

283
        initTreeWidget();
286
        initTreeWidget();
284
}
287
}
285
*/
288
*/
286
289
287
290
288
QString MainWindow::creatModelString(QTreeWidgetItem* model){
291
QString MainWindow::creatModelString(QTreeWidgetItem* model){
289
292
290
    MainWindow::modelString.clear(); // î÷èùàåì ñòðîêó ìîäåëè
293
    MainWindow::modelString.clear(); // î÷èùàåì ñòðîêó ìîäåëè
291
 //   for (int i =0; i < rootItem1->childCount(); ++i )
294
 //   for (int i =0; i < rootItem1->childCount(); ++i )
292
295
293
    {MainWindow::addChildsString(model, 0);}
296
    {MainWindow::addChildsString(model, 0);}
294
297
295
    return MainWindow::modelString;
298
    return MainWindow::modelString;
296
// {MainWindow::addChildsString(ui->treeWidget, 0);}
299
// {MainWindow::addChildsString(ui->treeWidget, 0);}
297
 /*
300
 /*
298
    int root_item_child_count;
301
    int root_item_child_count;
299
    int i;
302
    int i;
300
    root_item_child_count = rootItem1->childCount();
303
    root_item_child_count = rootItem1->childCount();
301
    i++;
304
    i++;
302
*/
305
*/
303
}
306
}
304
307
305
308
306
void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){
309
void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){
307
    int child_count;
310
    int child_count;
308
    child_count = parentItem->childCount();
311
    child_count = parentItem->childCount();
309
    for (int i=0; i < child_count; ++i){
312
    for (int i=0; i < child_count; ++i){
310
        for (int m=0; m < level; ++m){
313
        for (int m=0; m < level; ++m){
311
        modelString.append(tr("    ")); // ÷åòûðå ïðîáåëà - ïðèçíàê òîãî, ÷òî ýòî íîâûé óðîâåíü âëîæåíèÿ
314
        modelString.append(tr("    ")); // ÷åòûðå ïðîáåëà - ïðèçíàê òîãî, ÷òî ýòî íîâûé óðîâåíü âëîæåíèÿ
312
    }
315
    }
313
        modelString.append(parentItem->child(i)->text(0)); // â ïåðâîé êîëîíêå - èìÿ êëàññà
316
        modelString.append(parentItem->child(i)->text(0)); // â ïåðâîé êîëîíêå - èìÿ êëàññà
314
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
317
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
315
        if (parentItem->child(i)->checkState(0) ==  Qt::Checked) {modelString.append(tr("true"));} // åñëè ãàëî÷êà ñòîèò, çàíîñèì "true", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ áóäóò
318
        if (parentItem->child(i)->checkState(0) ==  Qt::Checked) {modelString.append(tr("true"));} // åñëè ãàëî÷êà ñòîèò, çàíîñèì "true", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ áóäóò
316
            else {modelString.append(tr("false"));} // åñëè êëàññ íå âûáðàí - çàíîñèì "false", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ íå áóäóò
319
            else {modelString.append(tr("false"));} // åñëè êëàññ íå âûáðàí - çàíîñèì "false", ýëåìåíòû êëàññà â ïðåäñòàâëåíèè îòîáðàæàòüñÿ íå áóäóò
317
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
320
        modelString.append(tr("\t\t\t\t")); // ÷åòûðå òàáóëÿöèè - ïðèçíàê íîâîãî ñòîëáöà
318
        modelString.append(parentItem->child(i)->text(1)); // âî âòîðîé êîëîíêå - ID êëàññà
321
        modelString.append(parentItem->child(i)->text(1)); // âî âòîðîé êîëîíêå - ID êëàññà
319
         modelString.append(tr("\n")); // êîíåö ñòðîêè
322
         modelString.append(tr("\n")); // êîíåö ñòðîêè
320
        if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);}
323
        if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);}
321
324
322
    }
325
    }
323
int i;
326
int i;
324
i++;
327
i++;
325
}
328
}
326
329
327
330
328
bool MainWindow::openDataBase(){
331
bool MainWindow::openDataBase(){
329
    QString errorString;
332
    QString errorString;
330
    sql = QSqlDatabase::addDatabase("QMYSQL");
333
    sql = QSqlDatabase::addDatabase("QMYSQL");
331
//    sql.setDatabaseName(tr("an_db"));
334
//    sql.setDatabaseName(tr("an_db"));
332
335
333
    // // // sql.setDatabaseName(tr("inventory"));
336
    // // // sql.setDatabaseName(tr("inventory"));
334
337
335
    sql.setDatabaseName(baseName);
338
    sql.setDatabaseName(baseName);
336
339
337
340
338
341
339
    // // // sql.setHostName(tr("localhost"));
342
    // // // sql.setHostName(tr("localhost"));
340
343
341
    sql.setHostName(hostName);
344
    sql.setHostName(hostName);
342
345
343
346
344
    // // // sql.setUserName(tr("an"));
347
    // // // sql.setUserName(tr("an"));
345
348
346
    sql.setUserName(userName);
349
    sql.setUserName(userName);
347
350
348
351
349
352
350
   // // //  sql.setPassword(tr("393939"));
353
   // // //  sql.setPassword(tr("393939"));
351
354
352
355
353
    sql.setPassword(password);
356
    sql.setPassword(password);
354
357
355
358
356
359
357
    bool ok;
360
    bool ok;
358
    ok = sql.open();
361
    ok = sql.open();
359
362
360
    /*
363
    /*
361
    if (!ok) {
364
    if (!ok) {
362
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
365
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
363
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
366
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
364
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
367
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
365
                                                                                sql.lastError().text() );         // Òåêñò ñîîáùåíèÿ.
368
                                                                                sql.lastError().text() );         // Òåêñò ñîîáùåíèÿ.
366

369

367

370

368
                            }
371
                            }
369

372

370
*/
373
*/
371
    if (!ok) {
374
    if (!ok) {
372
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
375
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
373
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
376
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
374
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
377
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
375
                                                                            sql.lastError().text());          // Òåêñò ñîîáùåíèÿ.
378
                                                                            sql.lastError().text());          // Òåêñò ñîîáùåíèÿ.
376
                     }
379
                     }
377
else {
380
else {
378
381
379
        QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
382
        QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
380
                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
383
                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
381
                                                        QObject::tr("Database Connect"),   // Çàãîëîâîê.
384
                                                        QObject::tr("Database Connect"),   // Çàãîëîâîê.
382
                                                        QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
385
                                                        QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
383
386
384
387
385
388
386
389
387
390
388
    }
391
    }
389
392
390
     return ok;
393
     return ok;
391
}
394
}
392
395
393
396
394
bool MainWindow::buildPreviewModel(QString modelName, QString rootClassID){
397
bool MainWindow::buildPreviewModel(QString modelName, QString rootClassID){
395
QSqlQuery q;
398
QSqlQuery q;
396
QString sql_str;
399
QString sql_str;
397
QString field_name_str;
400
QString field_name_str;
398
QString root_class_name;
401
QString root_class_name;
399
//bool ok;
402
//bool ok;
400
//int field_name;
403
//int field_name;
401
404
402
//ui->treeWidget->clear();
405
//ui->treeWidget->clear();
403
406
404
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
407
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
405
408
406
409
407
rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
410
rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
408
 root_items_list << rootItem1;
411
 root_items_list << rootItem1;
409
 rootItem1->setText(0, modelName);
412
 rootItem1->setText(0, modelName);
410
413
411
 rootItem1->setCheckState(0,Qt::Checked);
414
 rootItem1->setCheckState(0,Qt::Checked);
412
 rootItems.append(rootItem1);
415
 rootItems.append(rootItem1);
413
416
414
417
415
418
416
 rootItem2 = new  QTreeWidgetItem(rootItem1);
419
 rootItem2 = new  QTreeWidgetItem(rootItem1);
417
 rootItem2->setText(0, root_class_name);
420
 rootItem2->setText(0, root_class_name);
418
 rootItem2->setText(1, rootClassID);
421
 rootItem2->setText(1, rootClassID);
419
 rootItem2->setCheckState(0,Qt::Checked);
422
 rootItem2->setCheckState(0,Qt::Checked);
420
423
421
 addChildsItems(rootItem2, -1);
424
 addChildsItems(rootItem2, -1);
422
425
423
426
424
/*
427
/*
425

428

426
sql_str = tr("select * "
429
sql_str = tr("select * "
427
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
430
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
428
             );
431
             );
429
sql_str.append(rootClassID);
432
sql_str.append(rootClassID);
430

433

431
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
434
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
432

435

433
q.prepare(sql_str);
436
q.prepare(sql_str);
434

437

435
ok = q.exec();
438
ok = q.exec();
436
if (!ok) {
439
if (!ok) {
437
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
440
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
438
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
441
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
439
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
442
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
440
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
443
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
441
                 }
444
                 }
442
field_name = q.record().indexOf(tr("FieldName"));
445
field_name = q.record().indexOf(tr("FieldName"));
443
while(q.next()){
446
while(q.next()){
444

447

445
                field_name_str = q.value(field_name).toString();
448
                field_name_str = q.value(field_name).toString();
446

449

447
                }
450
                }
448

451

449

452

450

453

451

454

452
*/
455
*/
453
456
454
457
455
}
458
}
456
459
457
460
458
bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID, int row){
461
bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID, int row){
459
QSqlQuery q;
462
QSqlQuery q;
460
QString sql_str;
463
QString sql_str;
461
QString field_name_str;
464
QString field_name_str;
462
QString root_class_name;
465
QString root_class_name;
463
//bool ok;
466
//bool ok;
464
//int field_name;
467
//int field_name;
465
468
466
//ui->treeWidget->clear();
469
//ui->treeWidget->clear();
467
470
468
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
471
root_class_name = MainWindow::ClassName(rootClassID); // îïðåäåëÿåì èìÿ êëàññà
469
472
470
473
471
// rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
474
// rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
472
// root_items_list << rootItem1;
475
// root_items_list << rootItem1;
473
// rootItem1->setText(0, modelName);
476
// rootItem1->setText(0, modelName);
474
477
475
// rootItem1->setCheckState(0,Qt::Checked);
478
// rootItem1->setCheckState(0,Qt::Checked);
476
// rootItems.append(rootItem1);
479
// rootItems.append(rootItem1);
477
480
478
// root_item->removeChild(root_item->child(0)); // î÷èùàåì ñïèñîê äî÷åðíèõ êëàññîâ
481
// root_item->removeChild(root_item->child(0)); // î÷èùàåì ñïèñîê äî÷åðíèõ êëàññîâ
479
if (root_item->childCount()==0){ // íåò êîðíåâîãî êëàññà, ñîçäàäèì åãî
482
if (root_item->childCount()==0){ // íåò êîðíåâîãî êëàññà, ñîçäàäèì åãî
480
    QTreeWidgetItem* item_tmp;
483
    QTreeWidgetItem* item_tmp;
481
    item_tmp = new QTreeWidgetItem (root_item);
484
    item_tmp = new QTreeWidgetItem (root_item);
482
    item_tmp->setText(4, QVariant(row).toString());
485
    item_tmp->setText(4, QVariant(row).toString());
483
486
484
}
487
}
485
488
486
if (root_item->childCount()==1){ // êîðíåâîé êëàññ åñòü è îí ïóñòîé, î÷èùàòü åãî íå íàäî
489
if (root_item->childCount()==1){ // êîðíåâîé êëàññ åñòü è îí ïóñòîé, î÷èùàòü åãî íå íàäî
487
root_item->child(0)->setText(0, root_class_name);
490
root_item->child(0)->setText(0, root_class_name);
488
root_item->child(0)->setText(1, rootClassID);
491
root_item->child(0)->setText(1, rootClassID);
489
root_item->child(0)->setCheckState(0,Qt::Checked);
492
root_item->child(0)->setCheckState(0,Qt::Checked);
490
root_item->setText(4, QVariant(row).toString());
493
root_item->setText(4, QVariant(row).toString());
491
494
492
}
495
}
493
496
494
497
495
498
496
//delete rootItem2;
499
//delete rootItem2;
497
500
498
501
499
// rootItem2 = new  QTreeWidgetItem(rootItem1);
502
// rootItem2 = new  QTreeWidgetItem(rootItem1);
500
503
501
504
502
505
503
// rootItem2->setText(0, root_class_name);
506
// rootItem2->setText(0, root_class_name);
504
// rootItem2->setText(1, rootClassID);
507
// rootItem2->setText(1, rootClassID);
505
// rootItem2->setCheckState(0,Qt::Checked);
508
// rootItem2->setCheckState(0,Qt::Checked);
506
509
507
int child_count = root_item->child(0)->childCount();
510
int child_count = root_item->child(0)->childCount();
508
511
509
512
510
for (int i=0; i < child_count; i++){ // åñëè êîðíåâîé êëàññ åñòü è íå ïóñòîé, î÷èùàåì åãî
513
for (int i=0; i < child_count; i++){ // åñëè êîðíåâîé êëàññ åñòü è íå ïóñòîé, î÷èùàåì åãî
511
    root_item->child(0)->removeChild(root_item->child(0)->child(0));
514
    root_item->child(0)->removeChild(root_item->child(0)->child(0));
512
}
515
}
513
516
514
child_count = root_item->child(0)->childCount();
517
child_count = root_item->child(0)->childCount();
515
addChildsItems(root_item->child(0), row);
518
addChildsItems(root_item->child(0), row);
516
/*
519
/*
517
sql_str = tr("select * "
520
sql_str = tr("select * "
518
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
521
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
519
             );
522
             );
520
sql_str.append(rootClassID);
523
sql_str.append(rootClassID);
521

524

522
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
525
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
523

526

524
q.prepare(sql_str);
527
q.prepare(sql_str);
525

528

526
ok = q.exec();
529
ok = q.exec();
527
if (!ok) {
530
if (!ok) {
528
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
531
                        QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
529
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
532
                                                                        this,                      // Ðîäèòåëüñêèé âèäæåò.
530
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
533
                                                                        QObject::tr("Database Error"),   // Çàãîëîâîê.
531
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
534
                                                                        q.lastError().text());          // Òåêñò ñîîáùåíèÿ.
532
                 }
535
                 }
533
field_name = q.record().indexOf(tr("FieldName"));
536
field_name = q.record().indexOf(tr("FieldName"));
534
while(q.next()){
537
while(q.next()){
535

538

536
                field_name_str = q.value(field_name).toString();
539
                field_name_str = q.value(field_name).toString();
537

540

538
                }
541
                }
539

542

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