Subversion Repositories OpenInventory

Rev

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