Subversion Repositories OpenInventory

Rev

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