Хранилища Subversion OpenInventory

Редакция

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

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

201

197
        db = QSqlDatabase::addDatabase("QMYSQL");
202
        db = QSqlDatabase::addDatabase("QMYSQL");
198
        pdb = &db;
203
        pdb = &db;
199
        raportFrm.pdb = &db;
204
        raportFrm.pdb = &db;
200

205

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

223

219

224

220

225

221
        model = new QSqlTableModel(this);
226
        model = new QSqlTableModel(this);
222
        model->setTable(tableName);
227
        model->setTable(tableName);
223

228

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

231

227
        model->select();
232
        model->select();
228

233

229

234

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

237

233
        bool okey;
238
        bool okey;
234
        int index;
239
        int index;
235
        QSqlRecord record;
240
        QSqlRecord record;
236

241

237

242

238
        tableView->setModel(model);
243
        tableView->setModel(model);
239
        view.setModel(model);
244
        view.setModel(model);
240

245

241

246

242
        tableView->setAlternatingRowColors(true);
247
        tableView->setAlternatingRowColors(true);
243
        view.setAlternatingRowColors(true);
248
        view.setAlternatingRowColors(true);
244

249

245
        tableView->resizeColumnsToContents();
250
        tableView->resizeColumnsToContents();
246

251

247

252

248
        view.resizeColumnsToContents();
253
        view.resizeColumnsToContents();
249

254

250
        tableView->show();
255
        tableView->show();
251

256

252

257

253

258

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

342

338

343

339
                            }
344
                            }
340

345

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

401

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

406

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

408

404
q.prepare(sql_str);
409
q.prepare(sql_str);
405

410

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

420

416
                field_name_str = q.value(field_name).toString();
421
                field_name_str = q.value(field_name).toString();
417

422

418
                }
423
                }
419

424

420

425

421

426

422

427

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

497

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

499

495
q.prepare(sql_str);
500
q.prepare(sql_str);
496

501

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

511

507
                field_name_str = q.value(field_name).toString();
512
                field_name_str = q.value(field_name).toString();
508

513

509
                }
514
                }
510

515

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