Subversion Repositories OpenInventory

Rev

Rev 158 | Rev 174 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
            {
173 pingvin 188
            QString class_id;
189
            class_id = QString(columnData.at(2).toString());
190
           // itm_tmp->setText(1, QString(columnData.at(2).toString())); // id 
191
            itm_tmp->setText(1, class_id); // id 
90 pingvin 192
            itm_tmp->setText(2, QVariant(number).toString()); //    - 
173 pingvin 193
            itm_tmp->setText(3, QVariant(indentations.size()).toString()); //  
194
            itm_tmp->setText(4, QVariant(row).toString()); //    
141 pingvin 195
            }
89 pingvin 196
        }
197
 
198
        number++;
199
    }
200
}
201
 
202
 
203
/*
204
void MainWindow::openBase()
205
{
206
 
207
        db = QSqlDatabase::addDatabase("QMYSQL");
208
        pdb = &db;
209
        raportFrm.pdb = &db;
210
 
211
        pdb->setHostName(hostName);
212
        pdb->setDatabaseName(baseName);
213
        pdb->setUserName(userName);
214
        pdb->setPassword(password);
215
        bool ok = pdb->open();
216
        if (!ok) {
217
                                QMessageBox::critical( //     .
218
                                                                                this,                      //  .
219
                                                                                QObject::tr("Database Error"),   // .
220
                                                                                pdb->lastError().text());          //  .
221
                         }
222
        if (ok)
223
        {lineEdit-> insert(tr("  "));
224
        }
225
        else {lineEdit-> insert(tr(" .  : "));
226
                  lineEdit-> insert(pdb->lastError().text());
227
                 }
228
 
229
 
230
 
231
        model = new QSqlTableModel(this);
232
        model->setTable(tableName);
233
 
234
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
235
        model->setSort(0, Qt::AscendingOrder);
236
 
237
        model->select();
238
 
239
 
240
        QSqlField field(tr("age"), QVariant::Int);
241
        field.setValue(QString(tr("123")));
242
 
243
        bool okey;
244
        int index;
245
        QSqlRecord record;
246
 
247
 
248
        tableView->setModel(model);
249
        view.setModel(model);
250
 
251
 
252
        tableView->setAlternatingRowColors(true);
253
        view.setAlternatingRowColors(true);
254
 
255
        tableView->resizeColumnsToContents();
256
 
257
 
258
        view.resizeColumnsToContents();
259
 
260
        tableView->show();
261
 
262
 
263
 
264
        initTreeWidget();
265
}
266
*/
91 pingvin 267
 
268
 
146 pingvin 269
QString MainWindow::creatModelString(QTreeWidgetItem* model){
91 pingvin 270
 
271
    MainWindow::modelString.clear(); //   
272
 //   for (int i =0; i < rootItem1->childCount(); ++i )
273
 
146 pingvin 274
    {MainWindow::addChildsString(model, 0);}
275
 
276
    return MainWindow::modelString;
145 pingvin 277
// {MainWindow::addChildsString(ui->treeWidget, 0);}
278
 /*
91 pingvin 279
    int root_item_child_count;
280
    int i;
281
    root_item_child_count = rootItem1->childCount();
282
    i++;
145 pingvin 283
*/
91 pingvin 284
}
285
 
286
 
287
void MainWindow::addChildsString(QTreeWidgetItem *parentItem, int level){
288
    int child_count;
289
    child_count = parentItem->childCount();
290
    for (int i=0; i < child_count; ++i){
291
        for (int m=0; m < level; ++m){
292
        modelString.append(tr("    ")); //   -  ,     
293
    }
294
        modelString.append(parentItem->child(i)->text(0)); //    -  
295
        modelString.append(tr("\t\t\t\t")); //   -   
296
        if (parentItem->child(i)->checkState(0) ==  Qt::Checked) {modelString.append(tr("true"));} //   ,  "true",      
297
            else {modelString.append(tr("false"));} //     -  "false",       
298
        modelString.append(tr("\t\t\t\t")); //   -   
299
        modelString.append(parentItem->child(i)->text(1)); //    - ID 
300
         modelString.append(tr("\n")); //  
301
        if (parentItem->child(i)->childCount() > 0) { MainWindow::addChildsString(parentItem->child(i), level+1);}
302
 
303
    }
304
int i;
305
i++;
306
}
93 pingvin 307
 
308
 
309
bool MainWindow::openDataBase(){
310
    QString errorString;
311
    sql = QSqlDatabase::addDatabase("QMYSQL");
131 pingvin 312
//    sql.setDatabaseName(tr("an_db"));
313
 
132 pingvin 314
    // // // sql.setDatabaseName(tr("inventory"));
131 pingvin 315
 
132 pingvin 316
    sql.setDatabaseName(baseName);
131 pingvin 317
 
318
 
319
 
132 pingvin 320
    // // // sql.setHostName(tr("localhost"));
93 pingvin 321
 
132 pingvin 322
    sql.setHostName(hostName);
323
 
324
 
325
    // // // sql.setUserName(tr("an"));
326
 
327
    sql.setUserName(userName);
328
 
329
 
330
 
331
   // // //  sql.setPassword(tr("393939"));
332
 
333
 
334
    sql.setPassword(password);
335
 
336
 
337
 
93 pingvin 338
    bool ok;
339
    ok = sql.open();
340
 
341
    /*
342
    if (!ok) {
343
                                QMessageBox::critical( //     .
344
                                                                                this,                      //  .
345
                                                                                QObject::tr("Database Error"),   // .
346
                                                                                sql.lastError().text() );         //  .
347
 
348
 
349
                            }
350
 
351
*/
352
    if (!ok) {
353
                            QMessageBox::critical( //     .
354
                                                                            this,                      //  .
355
                                                                            QObject::tr("Database Error"),   // .
356
                                                                            sql.lastError().text());          //  .
357
                     }
358
else {
359
 
360
        QMessageBox::information( //     .
361
                                                        this,                      //  .
362
                                                        QObject::tr("Database Connect"),   // .
363
                                                        QObject::tr("     ."));         //  .
364
 
365
 
366
 
367
 
368
 
369
    }
370
 
371
     return ok;
372
}
94 pingvin 373
 
374
 
97 pingvin 375
bool MainWindow::buildPreviewModel(QString modelName, QString rootClassID){
94 pingvin 376
QSqlQuery q;
377
QString sql_str;
95 pingvin 378
QString field_name_str;
379
QString root_class_name;
380
bool ok;
94 pingvin 381
int field_name;
95 pingvin 382
 
383
//ui->treeWidget->clear();
384
 
385
root_class_name = MainWindow::ClassName(rootClassID); //   
386
 
145 pingvin 387
 
95 pingvin 388
rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
145 pingvin 389
 root_items_list << rootItem1;
97 pingvin 390
 rootItem1->setText(0, modelName);
391
 
95 pingvin 392
 rootItem1->setCheckState(0,Qt::Checked);
104 pingvin 393
 rootItems.append(rootItem1);
95 pingvin 394
 
395
 
104 pingvin 396
 
145 pingvin 397
 rootItem2 = new  QTreeWidgetItem(rootItem1);
398
 rootItem2->setText(0, root_class_name);
399
 rootItem2->setText(1, rootClassID);
400
 rootItem2->setCheckState(0,Qt::Checked);
95 pingvin 401
 
147 pingvin 402
 addChildsItems(rootItem2, -1);
95 pingvin 403
 
145 pingvin 404
 
405
/*
406
 
94 pingvin 407
sql_str = tr("select * "
95 pingvin 408
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       // ,     
94 pingvin 409
             );
410
sql_str.append(rootClassID);
411
 
95 pingvin 412
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
94 pingvin 413
 
95 pingvin 414
q.prepare(sql_str);
415
 
416
ok = q.exec();
417
if (!ok) {
418
                        QMessageBox::critical( //     .
419
                                                                        this,                      //  .
420
                                                                        QObject::tr("Database Error"),   // .
421
                                                                        q.lastError().text());          //  .
422
                 }
423
field_name = q.record().indexOf(tr("FieldName"));
424
while(q.next()){
425
 
426
                field_name_str = q.value(field_name).toString();
427
 
428
                }
429
 
100 pingvin 430
 
431
 
432
 
145 pingvin 433
*/
434
 
435
 
94 pingvin 436
}
95 pingvin 437
 
438
 
147 pingvin 439
bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID, int row){
107 pingvin 440
QSqlQuery q;
441
QString sql_str;
442
QString field_name_str;
443
QString root_class_name;
444
bool ok;
445
int field_name;
95 pingvin 446
 
107 pingvin 447
//ui->treeWidget->clear();
448
 
449
root_class_name = MainWindow::ClassName(rootClassID); //   
450
 
451
 
452
// rootItem1 = new  QTreeWidgetItem(ui->treeWidget);
453
// root_items_list << rootItem1;
454
// rootItem1->setText(0, modelName);
455
 
456
// rootItem1->setCheckState(0,Qt::Checked);
457
// rootItems.append(rootItem1);
458
 
459
// root_item->removeChild(root_item->child(0)); //    
145 pingvin 460
if (root_item->childCount()==0){ //   ,  
461
    QTreeWidgetItem* item_tmp;
462
    item_tmp = new QTreeWidgetItem (root_item);
147 pingvin 463
    item_tmp->setText(4, QVariant(row).toString());
145 pingvin 464
 
465
}
466
 
467
if (root_item->childCount()==1){ //      ,    
107 pingvin 468
root_item->child(0)->setText(0, root_class_name);
469
root_item->child(0)->setText(1, rootClassID);
147 pingvin 470
root_item->child(0)->setCheckState(0,Qt::Checked);
471
root_item->setText(4, QVariant(row).toString());
107 pingvin 472
 
147 pingvin 473
}
145 pingvin 474
 
475
 
147 pingvin 476
 
107 pingvin 477
//delete rootItem2;
478
 
479
 
480
// rootItem2 = new  QTreeWidgetItem(rootItem1);
481
 
482
 
483
 
484
// rootItem2->setText(0, root_class_name);
485
// rootItem2->setText(1, rootClassID);
486
// rootItem2->setCheckState(0,Qt::Checked);
487
 
488
int child_count = root_item->child(0)->childCount();
489
 
490
 
145 pingvin 491
for (int i=0; i < child_count; i++){ //       ,  
107 pingvin 492
    root_item->child(0)->removeChild(root_item->child(0)->child(0));
493
}
494
 
495
child_count = root_item->child(0)->childCount();
147 pingvin 496
addChildsItems(root_item->child(0), row);
107 pingvin 497
/*
498
sql_str = tr("select * "
499
             " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       // ,     
500
             );
501
sql_str.append(rootClassID);
502
 
503
sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
504
 
505
q.prepare(sql_str);
506
 
507
ok = q.exec();
508
if (!ok) {
509
                        QMessageBox::critical( //     .
510
                                                                        this,                      //  .
511
                                                                        QObject::tr("Database Error"),   // .
512
                                                                        q.lastError().text());          //  .
513
                 }
514
field_name = q.record().indexOf(tr("FieldName"));
515
while(q.next()){
516
 
517
                field_name_str = q.value(field_name).toString();
518
 
519
                }
520
 
521
*/
522
 
523
 
524
}
525
 
526
 
527
 
528
 
95 pingvin 529
QString MainWindow::ClassName(QString class_id){ //     ID
530
    QSqlQuery q;
531
    QString sql_str;
532
    QString class_name_str;
533
    bool ok;
534
    int field_class_name;
535
 
536
    sql_str = tr("select * "
537
                 " from ListOfClasses where ListOfClasses.ID = '"       // ,     
538
                 );
539
 
540
    sql_str.append(class_id);
541
    sql_str.append(tr("' "));
542
 
543
    q.prepare(sql_str);
544
 
545
    ok = q.exec();
546
 
547
 
548
    if (!ok) {
549
                            QMessageBox::critical( //     .
550
                                                                            this,                      //  .
551
                                                                            QObject::tr("Database Error"),   // .
552
                                                                            q.lastError().text());          //  .
553
                     }
554
 
555
    field_class_name = q.record().indexOf(tr("ClassName"));
556
    while(q.next()){
557
 
558
                    class_name_str = q.value(field_class_name).toString();
559
 
560
                    }
561
 
562
    return class_name_str;
563
 
564
}
98 pingvin 565
 
147 pingvin 566
void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item, int row){ //          ,      
100 pingvin 567
QStringList chields_list;
568
QString parent_ID;
569
QTreeWidgetItem *Item_tmp;
570
parent_ID = perent_class_item->text(1);
571
int chields_count, i;
98 pingvin 572
 
100 pingvin 573
chields_list = MainWindow::classChields(parent_ID);
574
if(chields_list.isEmpty()) return;
575
chields_count = chields_list.size();
576
for (int l = 0; l < chields_count; ++l){
577
    QString chield_class_name, chield_id;
578
    chield_id = chields_list.at(l);
579
    chield_class_name = MainWindow::ClassName(chield_id);
580
    Item_tmp = new QTreeWidgetItem(perent_class_item);
581
    Item_tmp->setText(0, chield_class_name);
582
    Item_tmp->setText(1, chield_id);
583
    Item_tmp->setCheckState(0, Qt::Checked);
147 pingvin 584
    Item_tmp->setText(4, QVariant(row).toString());
585
    MainWindow::addChildsItems(Item_tmp, row);
98 pingvin 586
}
587
 
100 pingvin 588
i++;
99 pingvin 589
 
100 pingvin 590
}
591
 
592
 
99 pingvin 593
/********************************************************
594
*    "" 
595
*
596
*
597
*
598
********************************************************/
599
 
600
QStringList MainWindow::classChields(QString class_id){
601
   // QMap<QString, QString> map;
602
   // TClass class_tmp;
603
   // QList <TClass> chields_class_list; //   
604
    QStringList result;
605
    QSqlQuery q;
606
    QString sql_str;
607
    QString classIdentifer_str; //      -
608
    QString field_id_str;
609
    bool ok;
610
    int field_classIdentifer;
611
    sql_str = tr("select * "
612
                 " from DescriptionOfClasses where  DescriptionOfClasses.DefaultValue = '"       // ,     
613
                 );
614
    sql_str.append(class_id);
615
 
616
    sql_str.append(tr("' and DescriptionOfClasses.FieldType = 'pointer' "));
617
 
618
    q.prepare(sql_str);
619
 
620
    ok = q.exec();
621
    if (!ok) {
622
                            QMessageBox::critical( //     .
623
                                                                            this,                      //  .
624
                                                                            QObject::tr("Database Error"),   // .
625
                                                                            q.lastError().text());          //  .
626
                     }
627
    field_classIdentifer = q.record().indexOf(tr("ClassIdentifer"));
628
      while(q.next()){
629
 
630
                    classIdentifer_str = q.value(field_classIdentifer).toString();
631
                    result.append(classIdentifer_str);
632
                    }
633
 
634
    return result;
635
 
636
  }
102 pingvin 637
 
638
 
639
QMap <QString, QString> MainWindow::getClassList(){ //   
640
QMap <QString, QString> result_map;
641
QSqlQuery q;
642
QString sql_str;
103 pingvin 643
QString class_name_str, class_id_str;
644
 
102 pingvin 645
int field_class_id, field_class_name;
646
bool ok;
647
sql_str = tr("select * "
648
             " from ListOfClasses "       // ,     
649
             );
650
 q.prepare(sql_str);
651
 ok = q.exec();
652
 if (!ok) {
653
                         QMessageBox::critical( //     .
654
                                                                         this,                      //  .
655
                                                                         QObject::tr("Database Error"),   // .
656
                                                                         q.lastError().text());          //  .
657
                         return result_map; //   -   
658
                  }
659
field_class_id = q.record().indexOf(tr("ID"));
660
field_class_name = q.record().indexOf(tr("ClassName"));
661
 
103 pingvin 662
while(q.next()){
102 pingvin 663
 
103 pingvin 664
                class_name_str = q.value(field_class_name).toString();
665
                class_id_str = q.value(field_class_id).toString();
666
                result_map[class_id_str] = class_name_str;
667
                }
102 pingvin 668
 return result_map;
669
}
104 pingvin 670
 
671
 
672
 
673
 
674
 
675
void MainWindow::initComboBox(){
676
 
106 pingvin 677
 
104 pingvin 678
    QStringList classesNameList;
679
    QStringList classesID_list;
680
    QStringList tmp_stringList;
681
 
682
 
683
 
684
    QString tmp_str;
685
 
686
    class_list_map = MainWindow::getClassList();
687
    classesID_list = class_list_map.keys();
688
    classesNameList = class_list_map.values();
689
    QMapIterator<QString, QString> interator(class_list_map);
690
//    ui->comboBox->addItems(classesID_list);
691
  //  ui->comboBox->addItems(classesNameList);
692
    while (interator.hasNext()) {
693
         interator.next();
694
         tmp_str =  interator.value();
695
         tmp_str.append(tr(" \t(ID="));
696
         tmp_str.append(interator.key());
697
         tmp_str.append(tr(")"));
698
         tmp_stringList << tmp_str;
699
 
700
     }
132 pingvin 701
//    int count = ui->comboBox->count();
702
 
703
    ui->comboBox->clear();
104 pingvin 704
    ui->comboBox->addItems(tmp_stringList);
705
 
706
 
707
}
105 pingvin 708
 
709
 
106 pingvin 710
void MainWindow::on_comboBox_currentIndexChanged( int index ){
711
QStringList classesNameList;
712
QStringList classesID_list;
713
QString ID_str;
132 pingvin 714
if (index == -1) return;
152 pingvin 715
if (!comboBox_slot_enable) return; //   ,     , 
147 pingvin 716
int row;
132 pingvin 717
 
106 pingvin 718
classesID_list = class_list_map.keys();
719
classesNameList = class_list_map.values();
720
ID_str =  classesID_list[index];
721
ui->label->setText(ID_str);
145 pingvin 722
if (root_items_list.indexOf(ui->treeWidget->currentItem()) != -1)
723
{
147 pingvin 724
    row = QVariant(ui->treeWidget->currentItem()->text(4)).toInt();
145 pingvin 725
    model_is_build = false; //     on_treeWidget_itemChanged
147 pingvin 726
    rebuildPreviewModel(ui->treeWidget->currentItem(), ID_str, row);
145 pingvin 727
    model_is_build = true; //   
147 pingvin 728
    QString mdl_str = MainWindow::creatModelString(ui->treeWidget->currentItem()); //
729
    model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row, 2), QVariant(mdl_str));
145 pingvin 730
}
731
    getDatabaseData();
107 pingvin 732
 
733
 
105 pingvin 734
}
735
 
106 pingvin 736
void MainWindow::on_treeWidget_itemChanged ( QTreeWidgetItem * item, int column ){
737
    int i;
738
    i++;
147 pingvin 739
    QTreeWidgetItem * item_tmp;
740
    QString mdl_str;
741
    QString row; //     ,   
148 pingvin 742
    QList <QTreeWidgetItem *> mdl_itm_list;
147 pingvin 743
    QList <int> rows_list;
106 pingvin 744
 
147 pingvin 745
 
746
    if ((column) == 0 && (model_is_build)) {
747
    // if (!model_is_build) return; //    
148 pingvin 748
 
749
    mdl_itm_list = models_items.values();
147 pingvin 750
    rows_list =  models_items.keys();
148 pingvin 751
    row= item->text(4);
147 pingvin 752
 
148 pingvin 753
 
754
    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));
756
        else model_for_ListModelsTable->setData(model_for_ListModelsTable->index(QVariant(row).toInt(), 3), QVariant(0));
757
        }
758
 
759
 
760
 
761
 
147 pingvin 762
    if (!row.isEmpty()){
763
 
764
 
765
        int row_int;
766
    row_int = QVariant(row).toInt();
767
     if (rows_list.indexOf(row_int) != -1)
768
        {
769
            item_tmp = models_items[row_int];
770
            mdl_str = MainWindow::creatModelString(item_tmp);
771
            model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row_int, 2), QVariant(mdl_str));
772
        }
773
 
774
 
775
    }
776
 
777
 
778
}
779
 
780
/*
781
    QTreeWidgetItem * item_tmp;
782
    item_tmp = item;
783
    while (item_tmp ){
784
        item_tmp = item_tmp->parent();
785
    }
786
  */
118 pingvin 787
    if ((column) == 0 && (model_is_build)) getDatabaseData();
788
 
147 pingvin 789
 
106 pingvin 790
}
791
 
792
 
793
void MainWindow::on_treeWidget_itemClicked ( QTreeWidgetItem * item, int column ){
794
    int i;
795
    i++;
108 pingvin 796
    if (root_items_list.indexOf(item) != -1) {
797
        QStringList classesNameList;
798
        QStringList classesID_list;
106 pingvin 799
 
108 pingvin 800
        int index;
801
        classesID_list = class_list_map.keys();
802
        classesNameList = class_list_map.values();
145 pingvin 803
        if (item->childCount()>0) index = classesID_list.indexOf(item->child(0)->text(1)); //    ,   
804
        else { //  
805
        ui->comboBox->setEnabled(true);
806
        return;
807
 
808
        }
152 pingvin 809
        comboBox_slot_enable = false; //   comboBox    
132 pingvin 810
        if (index != -1) ui->comboBox->setCurrentIndex(index);
152 pingvin 811
        comboBox_slot_enable = true;
108 pingvin 812
        ui->comboBox->setEnabled(true);
813
 
814
 
815
    }
106 pingvin 816
  //  if ((rootItem1) == (item) ) ui->comboBox->setEnabled(true);
817
else ( ui->comboBox->setEnabled(false));
818
}
110 pingvin 819
 
125 pingvin 820
QMap <QString, QString> MainWindow::getFieldsList(QString class_id){ //    
110 pingvin 821
 
125 pingvin 822
}
142 pingvin 823
 
824
 
825
void MainWindow::initListModelsTablle(){
149 pingvin 826
    model_for_ListModelsTable = new QSqlTableModel();
142 pingvin 827
 
828
    model_for_ListModelsTable->setTable(tr("ListOfModels"));
146 pingvin 829
 //   model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnFieldChange);
830
    model_for_ListModelsTable->setEditStrategy(QSqlTableModel::OnManualSubmit);
142 pingvin 831
    ui->tableView_2->setModel(model_for_ListModelsTable);
151 pingvin 832
 
142 pingvin 833
    model_for_ListModelsTable->select();
151 pingvin 834
 
835
    ui->treeWidget->hideColumn(1);
836
    ui->treeWidget->hideColumn(2);
837
    ui->treeWidget->hideColumn(3);
838
    ui->treeWidget->hideColumn(4);
839
 
840
    ui->tableView_2->hideColumn(0);
841
    ui->tableView_2->hideColumn(2);
842
    ui->tableView_2->hideColumn(3);
843
    ui->tableView_2->hideColumn(4);
844
 
845
    ui->tableView_2->resizeColumnsToContents();
846
    ui->tableView_2->setAlternatingRowColors(true);
847
 
146 pingvin 848
    ui->pushButton_7->setEnabled(false);
849
    ui->pushButton_8->setEnabled(false);
151 pingvin 850
 
851
 
142 pingvin 852
}