Хранилища Subversion OpenInventory

Редакция

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

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

206

204
        db = QSqlDatabase::addDatabase("QMYSQL");
207
        db = QSqlDatabase::addDatabase("QMYSQL");
205
        pdb = &db;
208
        pdb = &db;
206
        raportFrm.pdb = &db;
209
        raportFrm.pdb = &db;
207

210

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

228

226

229

227

230

228
        model = new QSqlTableModel(this);
231
        model = new QSqlTableModel(this);
229
        model->setTable(tableName);
232
        model->setTable(tableName);
230

233

231
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
234
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
232
        model->setSort(0, Qt::AscendingOrder);
235
        model->setSort(0, Qt::AscendingOrder);
233

236

234
        model->select();
237
        model->select();
235

238

236

239

237
        QSqlField field(tr("age"), QVariant::Int);
240
        QSqlField field(tr("age"), QVariant::Int);
238
        field.setValue(QString(tr("123")));
241
        field.setValue(QString(tr("123")));
239

242

240
        bool okey;
243
        bool okey;
241
        int index;
244
        int index;
242
        QSqlRecord record;
245
        QSqlRecord record;
243

246

244

247

245
        tableView->setModel(model);
248
        tableView->setModel(model);
246
        view.setModel(model);
249
        view.setModel(model);
247

250

248

251

249
        tableView->setAlternatingRowColors(true);
252
        tableView->setAlternatingRowColors(true);
250
        view.setAlternatingRowColors(true);
253
        view.setAlternatingRowColors(true);
251

254

252
        tableView->resizeColumnsToContents();
255
        tableView->resizeColumnsToContents();
253

256

254

257

255
        view.resizeColumnsToContents();
258
        view.resizeColumnsToContents();
256

259

257
        tableView->show();
260
        tableView->show();
258

261

259

262

260

263

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

347

345

348

346
                            }
349
                            }
347

350

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

406

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

411

409
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
412
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
410

413

411
q.prepare(sql_str);
414
q.prepare(sql_str);
412

415

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

425

423
                field_name_str = q.value(field_name).toString();
426
                field_name_str = q.value(field_name).toString();
424

427

425
                }
428
                }
426

429

427

430

428

431

429

432

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

502

500
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
503
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
501

504

502
q.prepare(sql_str);
505
q.prepare(sql_str);
503

506

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

516

514
                field_name_str = q.value(field_name).toString();
517
                field_name_str = q.value(field_name).toString();
515

518

516
                }
519
                }
517

520

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