Subversion Repositories OpenInventory

Rev

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