Хранилища Subversion OpenInventory

Редакция

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

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

222

207
        db = QSqlDatabase::addDatabase("QMYSQL");
223
        db = QSqlDatabase::addDatabase("QMYSQL");
208
        pdb = &db;
224
        pdb = &db;
209
        raportFrm.pdb = &db;
225
        raportFrm.pdb = &db;
210

226

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

244

229

245

230

246

231
        model = new QSqlTableModel(this);
247
        model = new QSqlTableModel(this);
232
        model->setTable(tableName);
248
        model->setTable(tableName);
233

249

234
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
250
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
235
        model->setSort(0, Qt::AscendingOrder);
251
        model->setSort(0, Qt::AscendingOrder);
236

252

237
        model->select();
253
        model->select();
238

254

239

255

240
        QSqlField field(tr("age"), QVariant::Int);
256
        QSqlField field(tr("age"), QVariant::Int);
241
        field.setValue(QString(tr("123")));
257
        field.setValue(QString(tr("123")));
242

258

243
        bool okey;
259
        bool okey;
244
        int index;
260
        int index;
245
        QSqlRecord record;
261
        QSqlRecord record;
246

262

247

263

248
        tableView->setModel(model);
264
        tableView->setModel(model);
249
        view.setModel(model);
265
        view.setModel(model);
250

266

251

267

252
        tableView->setAlternatingRowColors(true);
268
        tableView->setAlternatingRowColors(true);
253
        view.setAlternatingRowColors(true);
269
        view.setAlternatingRowColors(true);
254

270

255
        tableView->resizeColumnsToContents();
271
        tableView->resizeColumnsToContents();
256

272

257

273

258
        view.resizeColumnsToContents();
274
        view.resizeColumnsToContents();
259

275

260
        tableView->show();
276
        tableView->show();
261

277

262

278

263

279

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

363

348

364

349
                            }
365
                            }
350

366

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

422

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

427

412
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
428
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
413

429

414
q.prepare(sql_str);
430
q.prepare(sql_str);
415

431

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

441

426
                field_name_str = q.value(field_name).toString();
442
                field_name_str = q.value(field_name).toString();
427

443

428
                }
444
                }
429

445

430

446

431

447

432

448

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

518

503
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
519
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
504

520

505
q.prepare(sql_str);
521
q.prepare(sql_str);
506

522

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

532

517
                field_name_str = q.value(field_name).toString();
533
                field_name_str = q.value(field_name).toString();
518

534

519
                }
535
                }
520

536

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