Хранилища Subversion OpenInventory

Редакция

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

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

231

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

235

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

253

254

254

255

255

256
        model = new QSqlTableModel(this);
256
        model = new QSqlTableModel(this);
257
        model->setTable(tableName);
257
        model->setTable(tableName);
258

258

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

261

262
        model->select();
262
        model->select();
263

263

264

264

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

267

268
        bool okey;
268
        bool okey;
269
        int index;
269
        int index;
270
        QSqlRecord record;
270
        QSqlRecord record;
271

271

272

272

273
        tableView->setModel(model);
273
        tableView->setModel(model);
274
        view.setModel(model);
274
        view.setModel(model);
275

275

276

276

277
        tableView->setAlternatingRowColors(true);
277
        tableView->setAlternatingRowColors(true);
278
        view.setAlternatingRowColors(true);
278
        view.setAlternatingRowColors(true);
279

279

280
        tableView->resizeColumnsToContents();
280
        tableView->resizeColumnsToContents();
281

281

282

282

283
        view.resizeColumnsToContents();
283
        view.resizeColumnsToContents();
284

284

285
        tableView->show();
285
        tableView->show();
286

286

287

287

288

288

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

372

373

373

374
                            }
374
                            }
375

375

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

431

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

436

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

438

439
q.prepare(sql_str);
439
q.prepare(sql_str);
440

440

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

450

451
                field_name_str = q.value(field_name).toString();
451
                field_name_str = q.value(field_name).toString();
452

452

453
                }
453
                }
454

454

455

455

456

456

457

457

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

527

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

529

530
q.prepare(sql_str);
530
q.prepare(sql_str);
531

531

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

541

542
                field_name_str = q.value(field_name).toString();
542
                field_name_str = q.value(field_name).toString();
543

543

544
                }
544
                }
545

545

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