Хранилища Subversion OpenInventory

Редакция

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

Редакция 200 Редакция 201
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
    fileDelegate = new FileDelegate(this);
95
95
96
 //   fileForm.show();
96
 //   fileForm.show();
97
97
98
}
98
}
99
99
100
MainWindow::~MainWindow()
100
MainWindow::~MainWindow()
101
{
101
{
102
    delete sql_mogel;
102
    delete sql_mogel;
103
    delete ui;
103
    delete ui;
104
    delete model_for_ListModelsTable;
104
    delete model_for_ListModelsTable;
105
}
105
}
106
106
107
void MainWindow::changeEvent(QEvent *e)
107
void MainWindow::changeEvent(QEvent *e)
108
{
108
{
109
    QMainWindow::changeEvent(e);
109
    QMainWindow::changeEvent(e);
110
    switch (e->type()) {
110
    switch (e->type()) {
111
    case QEvent::LanguageChange:
111
    case QEvent::LanguageChange:
112
        ui->retranslateUi(this);
112
        ui->retranslateUi(this);
113
        break;
113
        break;
114
    default:
114
    default:
115
        break;
115
        break;
116
    }
116
    }
117
}
117
}
118
118
119
119
120
bool MainWindow::readModel(){
120
bool MainWindow::readModel(){
121
    bool result;
121
    bool result;
122
    QString model_str;
122
    QString model_str;
123
    QFile file("modelstring.txt");
123
    QFile file("modelstring.txt");
124
  //  QFile file("model.txt");
124
  //  QFile file("model.txt");
125
   rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
125
   rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
126
    rootItem1->setText(0, tr("Óðîâåíü 1"));
126
    rootItem1->setText(0, tr("Óðîâåíü 1"));
127
   // rootItem2 = new  QTreeWidgetItem(rootItem1);
127
   // rootItem2 = new  QTreeWidgetItem(rootItem1);
128
   // rootItem2->setText(0, tr("óðîâåíü 2"));
128
   // rootItem2->setText(0, tr("óðîâåíü 2"));
129
    rootItem1->setCheckState(0,Qt::Checked);
129
    rootItem1->setCheckState(0,Qt::Checked);
130
   // rootItem2->setCheckState(0,Qt::Checked);
130
   // rootItem2->setCheckState(0,Qt::Checked);
131
131
132
132
133
133
134
    result = file.open(QIODevice::ReadOnly);
134
    result = file.open(QIODevice::ReadOnly);
135
    if (result) {
135
    if (result) {
136
                     model_str = QString(tr(file.readAll()));
136
                     model_str = QString(tr(file.readAll()));
137
                }
137
                }
138
138
139
    setupModelData(model_str.split(QString("\n")), rootItem1, -1);
139
    setupModelData(model_str.split(QString("\n")), rootItem1, -1);
140
140
141
141
142
    return result;
142
    return result;
143
143
144
}
144
}
145
145
146
146
147
void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent, int row)
147
void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent, int row)
148
{
148
{
149
    QList<QTreeWidgetItem*> parents;
149
    QList<QTreeWidgetItem*> parents;
150
    QList<int> indentations;
150
    QList<int> indentations;
151
    parents << parent;
151
    parents << parent;
152
    indentations << 0;
152
    indentations << 0;
153
153
154
    int number = 0;
154
    int number = 0;
155
155
156
    while (number < lines.count()) {
156
    while (number < lines.count()) {
157
        int position = 0;
157
        int position = 0;
158
        while (position < lines[number].length()) {
158
        while (position < lines[number].length()) {
159
            if (lines[number].mid(position, 1) != " ")
159
            if (lines[number].mid(position, 1) != " ")
160
                break;
160
                break;
161
            position++;
161
            position++;
162
        }
162
        }
163
163
164
        QString lineData = lines[number].mid(position).trimmed();
164
        QString lineData = lines[number].mid(position).trimmed();
165
165
166
        if (!lineData.isEmpty()) {
166
        if (!lineData.isEmpty()) {
167
            // Read the column data from the rest of the line.
167
            // Read the column data from the rest of the line.
168
            QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts);
168
            QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts);
169
            QList<QVariant> columnData;
169
            QList<QVariant> columnData;
170
            for (int column = 0; column < columnStrings.count(); ++column)
170
            for (int column = 0; column < columnStrings.count(); ++column)
171
                columnData << columnStrings[column];
171
                columnData << columnStrings[column];
172
172
173
            if (position > indentations.last()) {
173
            if (position > indentations.last()) {
174
                // 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
175
                // unless the current parent has no children.
175
                // unless the current parent has no children.
176
176
177
                if (parents.last()->childCount() > 0) {
177
                if (parents.last()->childCount() > 0) {
178
                    parents << parents.last()->child(parents.last()->childCount()-1);
178
                    parents << parents.last()->child(parents.last()->childCount()-1);
179
                    indentations << position;
179
                    indentations << position;
180
                }
180
                }
181
            } else {
181
            } else {
182
                while (position < indentations.last() && parents.count() > 0) {
182
                while (position < indentations.last() && parents.count() > 0) {
183
                    parents.pop_back();
183
                    parents.pop_back();
184
                    indentations.pop_back();
184
                    indentations.pop_back();
185
                }
185
                }
186
            }
186
            }
187
187
188
            // 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.
189
          // // //  parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
189
          // // //  parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
190
            QTreeWidgetItem* itm_tmp;
190
            QTreeWidgetItem* itm_tmp;
191
            itm_tmp = new QTreeWidgetItem( parents.last());
191
            itm_tmp = new QTreeWidgetItem( parents.last());
192
192
193
            itm_tmp->setText(0, QString(columnData.at(0).toString()));
193
            itm_tmp->setText(0, QString(columnData.at(0).toString()));
194
            if (columnData.at(1).toString() == "true") {
194
            if (columnData.at(1).toString() == "true") {
195
                                                            itm_tmp->setCheckState(0,Qt::Checked);
195
                                                            itm_tmp->setCheckState(0,Qt::Checked);
196
                                                        }
196
                                                        }
197
            else itm_tmp->setCheckState(0,Qt::Unchecked);
197
            else itm_tmp->setCheckState(0,Qt::Unchecked);
198
            if (columnData.count()>2)
198
            if (columnData.count()>2)
199
            {
199
            {
200
            QString class_id;
200
            QString class_id;
201
            QPixmap pxmp;
201
            QPixmap pxmp;
202
            QIcon icon;
202
            QIcon icon;
203
            class_id = QString(columnData.at(2).toString());
203
            class_id = QString(columnData.at(2).toString());
204
            pxmp = MainWindow::classesIcons.value(class_id);
204
            pxmp = MainWindow::classesIcons.value(class_id);
205
205
206
           // itm_tmp->setText(1, QString(columnData.at(2).toString())); // id êëàññà
206
           // itm_tmp->setText(1, QString(columnData.at(2).toString())); // id êëàññà
207
            itm_tmp->setText(1, class_id); // id êëàññà
207
            itm_tmp->setText(1, class_id); // id êëàññà
208
            itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ
208
            itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ
209
            itm_tmp->setText(3, QVariant(indentations.size()).toString()); // óðîâåíü âëîæåíèÿ
209
            itm_tmp->setText(3, QVariant(indentations.size()).toString()); // óðîâåíü âëîæåíèÿ
210
            itm_tmp->setText(4, QVariant(row).toString()); // íîìåð ñòðîêè â ôàéëå
210
            itm_tmp->setText(4, QVariant(row).toString()); // íîìåð ñòðîêè â ôàéëå
211
211
212
            if (!pxmp.isNull())
212
            if (!pxmp.isNull())
213
                {
213
                {
214
                    icon.addPixmap(pxmp);
214
                    icon.addPixmap(pxmp);
215
                    itm_tmp->setIcon(0, icon);                  
215
                    itm_tmp->setIcon(0, icon);                  
216
                }
216
                }
217
            }
217
            }
218
        }
218
        }
219
219
220
        number++;
220
        number++;
221
    }
221
    }
222
}
222
}
223
223
224
224
225
/*
225
/*
226
void MainWindow::openBase()
226
void MainWindow::openBase()
227
{
227
{
228

228

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

232

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

250

251

251

252

252

253
        model = new QSqlTableModel(this);
253
        model = new QSqlTableModel(this);
254
        model->setTable(tableName);
254
        model->setTable(tableName);
255

255

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

258

259
        model->select();
259
        model->select();
260

260

261

261

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

264

265
        bool okey;
265
        bool okey;
266
        int index;
266
        int index;
267
        QSqlRecord record;
267
        QSqlRecord record;
268

268

269

269

270
        tableView->setModel(model);
270
        tableView->setModel(model);
271
        view.setModel(model);
271
        view.setModel(model);
272

272

273

273

274
        tableView->setAlternatingRowColors(true);
274
        tableView->setAlternatingRowColors(true);
275
        view.setAlternatingRowColors(true);
275
        view.setAlternatingRowColors(true);
276

276

277
        tableView->resizeColumnsToContents();
277
        tableView->resizeColumnsToContents();
278

278

279

279

280
        view.resizeColumnsToContents();
280
        view.resizeColumnsToContents();
281

281

282
        tableView->show();
282
        tableView->show();
283

283

284

284

285

285

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

369

370

370

371
                            }
371
                            }
372

372

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

428

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

433

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

435

436
q.prepare(sql_str);
436
q.prepare(sql_str);
437

437

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

447

448
                field_name_str = q.value(field_name).toString();
448
                field_name_str = q.value(field_name).toString();
449

449

450
                }
450
                }
451

451

452

452

453

453

454

454

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

524

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

526

527
q.prepare(sql_str);
527
q.prepare(sql_str);
528

528

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

538

539
                field_name_str = q.value(field_name).toString();
539
                field_name_str = q.value(field_name).toString();
540

540

541
                }
541
                }
542

542

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