Subversion Repositories OpenInventory

Rev

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