Хранилища Subversion OpenInventory

Редакция

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

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

203

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

207

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

225

224

226

225

227

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

230

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

233

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

235

234

236

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

239

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

243

242

244

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

247

246

248

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

251

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

253

252

254

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

256

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

258

257

259

258

260

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

344

343

345

344
                            }
346
                            }
345

347

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

403

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

408

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

410

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

412

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

422

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

424

423
                }
425
                }
424

426

425

427

426

428

427

429

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

499

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

501

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

503

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

513

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

515

514
                }
516
                }
515

517

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