Хранилища Subversion OpenInventory

Редакция

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

Редакция Автор № строки Строка
88 pingvin 1
#include "mainwindow.h"
2
#include "ui_mainwindow.h"
3
 
4
MainWindow::MainWindow(QWidget *parent) :
5
    QMainWindow(parent),
6
    ui(new Ui::MainWindow)
7
{
8
    ui->setupUi(this);
106 pingvin 9
   // connect( ui->comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(on_currentIndexChanged(int)));
118 pingvin 10
    model_is_build = false;
145 pingvin 11
   // MainWindow::readModel();
89 pingvin 12
 
91 pingvin 13
   //QString model_str;
140 pingvin 14
 
15
 
16
   /*
91 pingvin 17
   MainWindow::creatModelString();
18
   int i;
19
   i++;
93 pingvin 20
    QFile file_tmp("./temp.txt");
92 pingvin 21
    bool ok;
22
    ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text);
23
    QTextStream out(&file_tmp);
24
    out << MainWindow::modelString;
25
    file_tmp.close();
140 pingvin 26
*/
114 pingvin 27
    ui->treeWidget->setAlternatingRowColors(true);
28
    ui->treeWidget_2->setAlternatingRowColors(true);
132 pingvin 29
 
30
 
31
    MainWindow::readSettings();
32
 
93 pingvin 33
    MainWindow::openDataBase();
136 pingvin 34
 
104 pingvin 35
    MainWindow::initComboBox();
136 pingvin 36
 
145 pingvin 37
//    MainWindow::buildPreviewModel(tr(" "), tr("11"));
136 pingvin 38
 
142 pingvin 39
    MainWindow::initListModelsTablle();
140 pingvin 40
 
144 pingvin 41
    MainWindow::readModels();
42
 
145 pingvin 43
 //   MainWindow::creatModelString();
140 pingvin 44
    //int i;
45
    //i++;
145 pingvin 46
 
47
    /*
48
    QFile file_tmp("./modelstring.txt");
140 pingvin 49
     bool ok;
50
     file_tmp.remove();
51
     ok = file_tmp.open(QIODevice::ReadWrite | QIODevice::Text);
52
     QTextStream out(&file_tmp);
53
     out.setCodec("cp1251");
54
     out << MainWindow::modelString;
55
     file_tmp.close();
145 pingvin 56
    */
140 pingvin 57
 
58
 
151 pingvin 59
    ui->treeWidget_2->hideColumn(1);
60
    ui->treeWidget_2->hideColumn(2);
61
    ui->treeWidget_2->hideColumn(3);
62
    ui->treeWidget_2->hideColumn(4);
140 pingvin 63
 
151 pingvin 64
 
109 pingvin 65
    getDatabaseData();
127 pingvin 66
    //// sql_mogel = new QSqlTableModel();
67
    sql_mogel = new MyModel();
68
 
69
 
118 pingvin 70
    model_is_build = true;
119 pingvin 71
    connect(sql_mogel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_sql_mogel_dataChanged(QModelIndex,QModelIndex)));
146 pingvin 72
    connect(model_for_ListModelsTable, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_model_for_ListModelsTable_dataChanged(QModelIndex,QModelIndex)));
73
 
119 pingvin 74
    ui->pushButton_3->setEnabled(false);
75
    ui->pushButton_4->setEnabled(false);
76
 
132 pingvin 77
   // setFrm.show();
119 pingvin 78
 
132 pingvin 79
    connect(ui->getsettingAct, SIGNAL(triggered()), this, SLOT(getSetting())); //       " "  " "
80
    connect(setFrm.pushButton, SIGNAL(clicked()), this, SLOT(applySetting()));
81
 
158 pingvin 82
 //   connect(ui->tableView_2,SIGNAL(activated(QModelIndex)),ui->tableView_2,SLOT(edit(QModelIndex)));
132 pingvin 83
 
158 pingvin 84
    picture_delegate = new CPictureDelegate(this);
85
 
88 pingvin 86
}
87
 
88
MainWindow::~MainWindow()
89
{
117 pingvin 90
    delete sql_mogel;
88 pingvin 91
    delete ui;
149 pingvin 92
    delete model_for_ListModelsTable;
88 pingvin 93
}
94
 
95
void MainWindow::changeEvent(QEvent *e)
96
{
97
    QMainWindow::changeEvent(e);
98
    switch (e->type()) {
99
    case QEvent::LanguageChange:
100
        ui->retranslateUi(this);
101
        break;
102
    default:
103
        break;
104
    }
105
}
89 pingvin 106
 
107
 
108
bool MainWindow::readModel(){
109
    bool result;
110
    QString model_str;
140 pingvin 111
    QFile file("modelstring.txt");
141 pingvin 112
  //  QFile file("model.txt");
91 pingvin 113
   rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
89 pingvin 114
    rootItem1->setText(0, tr(" 1"));
115
   // rootItem2 = new  QTreeWidgetItem(rootItem1);
116
   // rootItem2->setText(0, tr(" 2"));
117
    rootItem1->setCheckState(0,Qt::Checked);
118
   // rootItem2->setCheckState(0,Qt::Checked);
119
 
120
 
121
 
122
    result = file.open(QIODevice::ReadOnly);
123
    if (result) {
90 pingvin 124
                     model_str = QString(tr(file.readAll()));
89 pingvin 125
                }
126
 
147 pingvin 127
    setupModelData(model_str.split(QString("\n")), rootItem1, -1);
89 pingvin 128
 
129
 
130
    return result;
131
 
132
}
133
 
134
 
147 pingvin 135
void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent, int row)
89 pingvin 136
{
137
    QList<QTreeWidgetItem*> parents;
138
    QList<int> indentations;
139
    parents << parent;
140
    indentations << 0;
141
 
142
    int number = 0;
143
 
144
    while (number < lines.count()) {
145
        int position = 0;
146
        while (position < lines[number].length()) {
147
            if (lines[number].mid(position, 1) != " ")
148
                break;
149
            position++;
150
        }
151
 
152
        QString lineData = lines[number].mid(position).trimmed();
153
 
154
        if (!lineData.isEmpty()) {
155
            // Read the column data from the rest of the line.
156
            QStringList columnStrings = lineData.split("\t", QString::SkipEmptyParts);
157
            QList<QVariant> columnData;
158
            for (int column = 0; column < columnStrings.count(); ++column)
159
                columnData << columnStrings[column];
160
 
161
            if (position > indentations.last()) {
162
                // The last child of the current parent is now the new parent
163
                // unless the current parent has no children.
164
 
165
                if (parents.last()->childCount() > 0) {
166
                    parents << parents.last()->child(parents.last()->childCount()-1);
167
                    indentations << position;
168
                }
169
            } else {
170
                while (position < indentations.last() && parents.count() > 0) {
171
                    parents.pop_back();
172
                    indentations.pop_back();
173
                }
174
            }
175
 
176
            // Append a new item to the current parent's list of children.
177
          // // //  parents.last()->appendChild(new QTreeWidgetItem(columnData, parents.last()));
178
            QTreeWidgetItem* itm_tmp;
179
            itm_tmp = new QTreeWidgetItem( parents.last());
180
 
181
            itm_tmp->setText(0, QString(columnData.at(0).toString()));
182
            if (columnData.at(1).toString() == "true") {
183
                                                            itm_tmp->setCheckState(0,Qt::Checked);
184
                                                        }
185
            else itm_tmp->setCheckState(0,Qt::Unchecked);
141 pingvin 186
            if (columnData.count()>2)
187
            {
90 pingvin 188
            itm_tmp->setText(1, QString(columnData.at(2).toString()));
189
            itm_tmp->setText(2, QVariant(number).toString()); //    - 
190
            itm_tmp->setText(3, QVariant(indentations.size()).toString());
147 pingvin 191
            itm_tmp->setText(4, QVariant(row).toString());
141 pingvin 192
            }
89 pingvin 193
        }
194
 
195
        number++;
196
    }
197
}
198
 
199
 
200
/*
201
void MainWindow::openBase()
202
{
203
 
204
        db = QSqlDatabase::addDatabase("QMYSQL");
205
        pdb = &db;
206
        raportFrm.pdb = &db;
207
 
208
        pdb->setHostName(hostName);
209
        pdb->setDatabaseName(baseName);
210
        pdb->setUserName(userName);
211
        pdb->setPassword(password);
212
        bool ok = pdb->open();
213
        if (!ok) {
214
                                QMessageBox::critical( //     .
215
                                                                                this,                      //  .
216
                                                                                QObject::tr("Database Error"),   // .
217
                                                                                pdb->lastError().text());          //  .
218
                         }
219
        if (ok)
220
        {lineEdit-> insert(tr("  "));
221
        }
222
        else {lineEdit-> insert(tr(" .  : "));
223
                  lineEdit-> insert(pdb->lastError().text());
224
                 }
225
 
226
 
227
 
228
        model = new QSqlTableModel(this);
229
        model->setTable(tableName);
230
 
231
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
232
        model->setSort(0, Qt::AscendingOrder);
233
 
234
        model->select();
235
 
236
 
237
        QSqlField field(tr("age"), QVariant::Int);
238
        field.setValue(QString(tr("123")));
239
 
240
        bool okey;
241
        int index;
242
        QSqlRecord record;
243
 
244
 
245
        tableView->setModel(model);
246
        view.setModel(model);
247
 
248
 
249
        tableView->setAlternatingRowColors(true);
250
        view.setAlternatingRowColors(true);
251
 
252
        tableView->resizeColumnsToContents();
253
 
254
 
255
        view.resizeColumnsToContents();
256
 
257
        tableView->show();
258
 
259
 
260
 
261
        initTreeWidget();
262
}
263
*/
91 pingvin 264
 
265
 
146 pingvin 266
QString MainWindow::creatModelString(QTreeWidgetItem* model){
91 pingvin 267
 
268
    MainWindow::modelString.clear(); //   
269
 //   for (int i =0; i < rootItem1->childCount(); ++i )
270
 
146 pingvin 271
    {MainWindow::addChildsString(model, 0);}
272
 
273
    return MainWindow::modelString;
145 pingvin 274
// {MainWindow::addChildsString(ui->treeWidget, 0);}
275
 /*
91 pingvin 276
    int root_item_child_count;
277
    int i;
278
    root_item_child_count = rootItem1->childCount();
279
    i++;
145 pingvin 280
*/
91 pingvin 281
}
282
 
283
 
284
void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){
285
    int child_count;
286
    child_count = parentItem->childCount();
287
    for (int i=0; i < child_count; ++i){
288
        for (int m=0; m < level; ++m){
289
        modelString.append(tr("    ")); //   -  ,     
290
    }
291
        modelString.append(parentItem->child(i)->text(0)); //    -  
292
        modelString.append(tr("\t\t\t\t")); //   -   
293
        if (parentItem->child(i)->checkState(0) ==  Qt::Checked) {modelString.append(tr("true"));} //   ,  "true",      
294
            else {modelString.append(tr("false"));} //     -  "false",       
295
        modelString.append(tr("\t\t\t\t")); //   -   
296
        modelString.append(parentItem->child(i)->text(1)); //    - ID 
297
         modelString.append(tr("\n")); //  
298
        if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);}
299
 
300
    }
301
int i;
302
i++;
303
}
93 pingvin 304
 
305
 
306
bool MainWindow::openDataBase(){
307
    QString errorString;
308
    sql = QSqlDatabase::addDatabase("QMYSQL");
131 pingvin 309
//    sql.setDatabaseName(tr("an_db"));
310
 
132 pingvin 311
    // // // sql.setDatabaseName(tr("inventory"));
131 pingvin 312
 
132 pingvin 313
    sql.setDatabaseName(baseName);
131 pingvin 314
 
315
 
316
 
132 pingvin 317
    // // // sql.setHostName(tr("localhost"));
93 pingvin 318
 
132 pingvin 319
    sql.setHostName(hostName);
320
 
321
 
322
    // // // sql.setUserName(tr("an"));
323
 
324
    sql.setUserName(userName);
325
 
326
 
327
 
328
   // // //  sql.setPassword(tr("393939"));
329
 
330
 
331
    sql.setPassword(password);
332
 
333
 
334
 
93 pingvin 335
    bool ok;
336
    ok = sql.open();
337
 
338
    /*
339
    if (!ok) {
340
                                QMessageBox::critical( //     .
341
                                                                                this,                      //  .
342
                                                                                QObject::tr("Database Error"),   // .
343
                                                                                sql.lastError().text() );         //  .
344
 
345
 
346
                            }
347
 
348
*/
349
    if (!ok) {
350
                            QMessageBox::critical( //     .
351
                                                                            this,                      //  .
352
                                                                            QObject::tr("Database Error"),   // .
353
                                                                            sql.lastError().text());          //  .
354
                     }
355
else {
356
 
357
        QMessageBox::information( //     .
358
                                                        this,                      //  .
359
                                                        QObject::tr("Database Connect"),   // .
360
                                                        QObject::tr("     ."));         //  .
361
 
362
 
363
 
364
 
365
 
366
    }
367
 
368
     return ok;
369
}
94 pingvin 370
 
371
 
97 pingvin 372
bool MainWindow::buildPreviewModel(QString modelName, QString rootClassID){
94 pingvin 373
QSqlQuery q;
374
QString sql_str;
95 pingvin 375
QString field_name_str;
376
QString root_class_name;
377
bool ok;
94 pingvin 378
int field_name;
95 pingvin 379
 
380
//ui->treeWidget->clear();
381
 
382
root_class_name = MainWindow::ClassName(rootClassID); //   
383
 
145 pingvin 384
 
95 pingvin 385
rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
145 pingvin 386
 root_items_list << rootItem1;
97 pingvin 387
 rootItem1->setText(0, modelName);
388
 
95 pingvin 389
 rootItem1->setCheckState(0,Qt::Checked);
104 pingvin 390
 rootItems.append(rootItem1);
95 pingvin 391
 
392
 
104 pingvin 393
 
145 pingvin 394
 rootItem2 = new  QTreeWidgetItem(rootItem1);
395
 rootItem2->setText(0, root_class_name);
396
 rootItem2->setText(1, rootClassID);
397
 rootItem2->setCheckState(0,Qt::Checked);
95 pingvin 398
 
147 pingvin 399
 addChildsItems(rootItem2, -1);
95 pingvin 400
 
145 pingvin 401
 
402
/*
403
 
94 pingvin 404
sql_str = tr("select * "
95 pingvin 405
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       // ,     
94 pingvin 406
             );
407
sql_str.append(rootClassID);
408
 
95 pingvin 409
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
94 pingvin 410
 
95 pingvin 411
q.prepare(sql_str);
412
 
413
ok = q.exec();
414
if (!ok) {
415
                        QMessageBox::critical( //     .
416
                                                                        this,                      //  .
417
                                                                        QObject::tr("Database Error"),   // .
418
                                                                        q.lastError().text());          //  .
419
                 }
420
field_name = q.record().indexOf(tr("FieldName"));
421
while(q.next()){
422
 
423
                field_name_str = q.value(field_name).toString();
424
 
425
                }
426
 
100 pingvin 427
 
428
 
429
 
145 pingvin 430
*/
431
 
432
 
94 pingvin 433
}
95 pingvin 434
 
435
 
147 pingvin 436
bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID, int row){
107 pingvin 437
QSqlQuery q;
438
QString sql_str;
439
QString field_name_str;
440
QString root_class_name;
441
bool ok;
442
int field_name;
95 pingvin 443
 
107 pingvin 444
//ui->treeWidget->clear();
445
 
446
root_class_name = MainWindow::ClassName(rootClassID); //   
447
 
448
 
449
// rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
450
// root_items_list << rootItem1;
451
// rootItem1->setText(0, modelName);
452
 
453
// rootItem1->setCheckState(0,Qt::Checked);
454
// rootItems.append(rootItem1);
455
 
456
// root_item->removeChild(root_item->child(0)); //    
145 pingvin 457
if (root_item->childCount()==0){ //   ,  
458
    QTreeWidgetItem* item_tmp;
459
    item_tmp = new QTreeWidgetItem (root_item);
147 pingvin 460
    item_tmp->setText(4, QVariant(row).toString());
145 pingvin 461
 
462
}
463
 
464
if (root_item->childCount()==1){ //      ,    
107 pingvin 465
root_item->child(0)->setText(0, root_class_name);
466
root_item->child(0)->setText(1, rootClassID);
147 pingvin 467
root_item->child(0)->setCheckState(0,Qt::Checked);
468
root_item->setText(4, QVariant(row).toString());
107 pingvin 469
 
147 pingvin 470
}
145 pingvin 471
 
472
 
147 pingvin 473
 
107 pingvin 474
//delete rootItem2;
475
 
476
 
477
// rootItem2 = new  QTreeWidgetItem(rootItem1);
478
 
479
 
480
 
481
// rootItem2->setText(0, root_class_name);
482
// rootItem2->setText(1, rootClassID);
483
// rootItem2->setCheckState(0,Qt::Checked);
484
 
485
int child_count = root_item->child(0)->childCount();
486
 
487
 
145 pingvin 488
for (int i=0; i < child_count; i++){ //       ,  
107 pingvin 489
    root_item->child(0)->removeChild(root_item->child(0)->child(0));
490
}
491
 
492
child_count = root_item->child(0)->childCount();
147 pingvin 493
addChildsItems(root_item->child(0), row);
107 pingvin 494
/*
495
sql_str = tr("select * "
496
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       // ,     
497
             );
498
sql_str.append(rootClassID);
499
 
500
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
501
 
502
q.prepare(sql_str);
503
 
504
ok = q.exec();
505
if (!ok) {
506
                        QMessageBox::critical( //     .
507
                                                                        this,                      //  .
508
                                                                        QObject::tr("Database Error"),   // .
509
                                                                        q.lastError().text());          //  .
510
                 }
511
field_name = q.record().indexOf(tr("FieldName"));
512
while(q.next()){
513
 
514
                field_name_str = q.value(field_name).toString();
515
 
516
                }
517
 
518
*/
519
 
520
 
521
}
522
 
523
 
524
 
525
 
95 pingvin 526
QString MainWindow::ClassName(QString class_id){ //     ID
527
    QSqlQuery q;
528
    QString sql_str;
529
    QString class_name_str;
530
    bool ok;
531
    int field_class_name;
532
 
533
    sql_str = tr("select * "
534
                 " from ListOfClasses where ListOfClasses.ID = '"       // ,     
535
                 );
536
 
537
    sql_str.append(class_id);
538
    sql_str.append(tr("' "));
539
 
540
    q.prepare(sql_str);
541
 
542
    ok = q.exec();
543
 
544
 
545
    if (!ok) {
546
                            QMessageBox::critical( //     .
547
                                                                            this,                      //  .
548
                                                                            QObject::tr("Database Error"),   // .
549
                                                                            q.lastError().text());          //  .
550
                     }
551
 
552
    field_class_name = q.record().indexOf(tr("ClassName"));
553
    while(q.next()){
554
 
555
                    class_name_str = q.value(field_class_name).toString();
556
 
557
                    }
558
 
559
    return class_name_str;
560
 
561
}
98 pingvin 562
 
147 pingvin 563
void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item, int row){ //          ,      
100 pingvin 564
QStringList chields_list;
565
QString parent_ID;
566
QTreeWidgetItem *Item_tmp;
567
parent_ID = perent_class_item->text(1);
568
int chields_count, i;
98 pingvin 569
 
100 pingvin 570
chields_list = MainWindow::classChields(parent_ID);
571
if(chields_list.isEmpty()) return;
572
chields_count = chields_list.size();
573
for (int l = 0; l < chields_count; ++l){
574
    QString chield_class_name, chield_id;
575
    chield_id = chields_list.at(l);
576
    chield_class_name = MainWindow::ClassName(chield_id);
577
    Item_tmp = new QTreeWidgetItem(perent_class_item);
578
    Item_tmp->setText(0, chield_class_name);
579
    Item_tmp->setText(1, chield_id);
580
    Item_tmp->setCheckState(0, Qt::Checked);
147 pingvin 581
    Item_tmp->setText(4, QVariant(row).toString());
582
    MainWindow::addChildsItems(Item_tmp, row);
98 pingvin 583
}
584
 
100 pingvin 585
i++;
99 pingvin 586
 
100 pingvin 587
}
588
 
589
 
99 pingvin 590
/********************************************************
591
*    "" 
592
*
593
*
594
*
595
********************************************************/
596
 
597
QStringList MainWindow::classChields(QString class_id){
598
   // QMap<QString, QString> map;
599
   // TClass class_tmp;
600
   // QList <TClass> chields_class_list; //   
601
    QStringList result;
602
    QSqlQuery q;
603
    QString sql_str;
604
    QString classIdentifer_str; //      -
605
    QString field_id_str;
606
    bool ok;
607
    int field_classIdentifer;
608
    sql_str = tr("select * "
609
                 " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       // ,     
610
                 );
611
    sql_str.append(class_id);
612
 
613
    sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
614
 
615
    q.prepare(sql_str);
616
 
617
    ok = q.exec();
618
    if (!ok) {
619
                            QMessageBox::critical( //     .
620
                                                                            this,                      //  .
621
                                                                            QObject::tr("Database Error"),   // .
622
                                                                            q.lastError().text());          //  .
623
                     }
624
    field_classIdentifer = q.record().indexOf(tr("ClassIdentifer"));
625
      while(q.next()){
626
 
627
                    classIdentifer_str = q.value(field_classIdentifer).toString();
628
                    result.append(classIdentifer_str);
629
                    }
630
 
631
    return result;
632
 
633
  }
102 pingvin 634
 
635
 
636
QMap <QString, QString> MainWindow::getClassList(){ //   
637
QMap <QString, QString> result_map;
638
QSqlQuery q;
639
QString sql_str;
103 pingvin 640
QString class_name_str, class_id_str;
641
 
102 pingvin 642
int field_class_id, field_class_name;
643
bool ok;
644
sql_str = tr("select * "
645
             " from ListOfClasses "       // ,     
646
             );
647
 q.prepare(sql_str);
648
 ok = q.exec();
649
 if (!ok) {
650
                         QMessageBox::critical( //     .
651
                                                                         this,                      //  .
652
                                                                         QObject::tr("Database Error"),   // .
653
                                                                         q.lastError().text());          //  .
654
                         return result_map; //   -   
655
                  }
656
field_class_id = q.record().indexOf(tr("ID"));
657
field_class_name = q.record().indexOf(tr("ClassName"));
658
 
103 pingvin 659
while(q.next()){
102 pingvin 660
 
103 pingvin 661
                class_name_str = q.value(field_class_name).toString();
662
                class_id_str = q.value(field_class_id).toString();
663
                result_map[class_id_str] = class_name_str;
664
                }
102 pingvin 665
 return result_map;
666
}
104 pingvin 667
 
668
 
669
 
670
 
671
 
672
void MainWindow::initComboBox(){
673
 
106 pingvin 674
 
104 pingvin 675
    QStringList classesNameList;
676
    QStringList classesID_list;
677
    QStringList tmp_stringList;
678
 
679
 
680
 
681
    QString tmp_str;
682
 
683
    class_list_map = MainWindow::getClassList();
684
    classesID_list = class_list_map.keys();
685
    classesNameList = class_list_map.values();
686
    QMapIterator<QString, QString> interator(class_list_map);
687
//    ui->comboBox->addItems(classesID_list);
688
  //  ui->comboBox->addItems(classesNameList);
689
    while (interator.hasNext()) {
690
         interator.next();
691
         tmp_str =  interator.value();
692
         tmp_str.append(tr(" \t(ID="));
693
         tmp_str.append(interator.key());
694
         tmp_str.append(tr(")"));
695
         tmp_stringList << tmp_str;
696
 
697
     }
132 pingvin 698
//    int count = ui->comboBox->count();
699
 
700
    ui->comboBox->clear();
104 pingvin 701
    ui->comboBox->addItems(tmp_stringList);
702
 
703
 
704
}
105 pingvin 705
 
706
 
106 pingvin 707
void MainWindow::on_comboBox_currentIndexChanged( int index ){
708
QStringList classesNameList;
709
QStringList classesID_list;
710
QString ID_str;
132 pingvin 711
if (index == -1) return;
152 pingvin 712
if (!comboBox_slot_enable) return; //   ,     , 
147 pingvin 713
int row;
132 pingvin 714
 
106 pingvin 715
classesID_list = class_list_map.keys();
716
classesNameList = class_list_map.values();
717
ID_str =  classesID_list[index];
718
ui->label->setText(ID_str);
145 pingvin 719
if (root_items_list.indexOf(ui->treeWidget->currentItem()) != -1)
720
{
147 pingvin 721
    row = QVariant(ui->treeWidget->currentItem()->text(4)).toInt();
145 pingvin 722
    model_is_build = false; //     on_treeWidget_itemChanged
147 pingvin 723
    rebuildPreviewModel(ui->treeWidget->currentItem(), ID_str, row);
145 pingvin 724
    model_is_build = true; //   
147 pingvin 725
    QString mdl_str = MainWindow::creatModelString(ui->treeWidget->currentItem()); //
726
    model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row, 2), QVariant(mdl_str));
145 pingvin 727
}
728
    getDatabaseData();
107 pingvin 729
 
730
 
105 pingvin 731
}
732
 
106 pingvin 733
void MainWindow::on_treeWidget_itemChanged ( QTreeWidgetItem * item, int column ){
734
    int i;
735
    i++;
147 pingvin 736
    QTreeWidgetItem * item_tmp;
737
    QString mdl_str;
738
    QString row; //     ,   
148 pingvin 739
    QList <QTreeWidgetItem *> mdl_itm_list;
147 pingvin 740
    QList <int> rows_list;
106 pingvin 741
 
147 pingvin 742
 
743
    if ((column) == 0 && (model_is_build)) {
744
    // if (!model_is_build) return; //    
148 pingvin 745
 
746
    mdl_itm_list = models_items.values();
147 pingvin 747
    rows_list =  models_items.keys();
148 pingvin 748
    row= item->text(4);
147 pingvin 749
 
148 pingvin 750
 
751
    if ( mdl_itm_list.indexOf(item) != -1){ //    ( )
752
        if (item->checkState(0)) model_for_ListModelsTable->setData(model_for_ListModelsTable->index(QVariant(row).toInt(), 3), QVariant(1));
753
        else model_for_ListModelsTable->setData(model_for_ListModelsTable->index(QVariant(row).toInt(), 3), QVariant(0));
754
        }
755
 
756
 
757
 
758
 
147 pingvin 759
    if (!row.isEmpty()){
760
 
761
 
762
        int row_int;
763
    row_int = QVariant(row).toInt();
764
     if (rows_list.indexOf(row_int) != -1)
765
        {
766
            item_tmp = models_items[row_int];
767
            mdl_str = MainWindow::creatModelString(item_tmp);
768
            model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row_int, 2), QVariant(mdl_str));
769
        }
770
 
771
 
772
    }
773
 
774
 
775
}
776
 
777
/*
778
    QTreeWidgetItem * item_tmp;
779
    item_tmp = item;
780
    while (item_tmp ){
781
        item_tmp = item_tmp->parent();
782
    }
783
  */
118 pingvin 784
    if ((column) == 0 && (model_is_build)) getDatabaseData();
785
 
147 pingvin 786
 
106 pingvin 787
}
788
 
789
 
790
void MainWindow::on_treeWidget_itemClicked ( QTreeWidgetItem * item, int column ){
791
    int i;
792
    i++;
108 pingvin 793
    if (root_items_list.indexOf(item) != -1) {
794
        QStringList classesNameList;
795
        QStringList classesID_list;
106 pingvin 796
 
108 pingvin 797
        int index;
798
        classesID_list = class_list_map.keys();
799
        classesNameList = class_list_map.values();
145 pingvin 800
        if (item->childCount()>0) index = classesID_list.indexOf(item->child(0)->text(1)); //    ,   
801
        else { //  
802
        ui->comboBox->setEnabled(true);
803
        return;
804
 
805
        }
152 pingvin 806
        comboBox_slot_enable = false; //   comboBox    
132 pingvin 807
        if (index != -1) ui->comboBox->setCurrentIndex(index);
152 pingvin 808
        comboBox_slot_enable = true;
108 pingvin 809
        ui->comboBox->setEnabled(true);
810
 
811
 
812
    }
106 pingvin 813
  //  if ((rootItem1) == (item) ) ui->comboBox->setEnabled(true);
814
else ( ui->comboBox->setEnabled(false));
815
}
110 pingvin 816
 
125 pingvin 817
QMap <QString, QString> MainWindow::getFieldsList(QString class_id){ //    
110 pingvin 818
 
125 pingvin 819
}
142 pingvin 820
 
821
 
822
void MainWindow::initListModelsTablle(){
149 pingvin 823
    model_for_ListModelsTable = new QSqlTableModel();
142 pingvin 824
 
825
    model_for_ListModelsTable->setTable(tr("ListOfModels"));
146 pingvin 826
 //   model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnFieldChange);
827
    model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnManualSubmit);
142 pingvin 828
    ui->tableView_2->setModel(model_for_ListModelsTable);
151 pingvin 829
 
142 pingvin 830
    model_for_ListModelsTable->select();
151 pingvin 831
 
832
    ui->treeWidget->hideColumn(1);
833
    ui->treeWidget->hideColumn(2);
834
    ui->treeWidget->hideColumn(3);
835
    ui->treeWidget->hideColumn(4);
836
 
837
    ui->tableView_2->hideColumn(0);
838
    ui->tableView_2->hideColumn(2);
839
    ui->tableView_2->hideColumn(3);
840
    ui->tableView_2->hideColumn(4);
841
 
842
    ui->tableView_2->resizeColumnsToContents();
843
    ui->tableView_2->setAlternatingRowColors(true);
844
 
146 pingvin 845
    ui->pushButton_7->setEnabled(false);
846
    ui->pushButton_8->setEnabled(false);
151 pingvin 847
 
848
 
142 pingvin 849
}