Subversion Repositories OpenInventory

Rev

Rev 201 | Rev 206 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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

231

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

235

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

253

251

254

252

255

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

258

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

261

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

263

261

264

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

267

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

271

269

272

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

275

273

276

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

279

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

281

279

282

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

284

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

286

284

287

285

288

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

372

370

373

371
                            }
374
                            }
372

375

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

431

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

436

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

438

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

440

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

450

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

452

450
                }
453
                }
451

454

452

455

453

456

454

457

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

527

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

529

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

531

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

541

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

543

541
                }
544
                }
542

545

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