Хранилища Subversion OpenInventory

Редакция

Редакция 82 | Редакция 86 | К новейшей редакции | Содержимое файла | Сравнить с предыдущей | Последнее изменение | Открыть журнал | RSS

Редакция Автор № строки Строка
24 pingvin 1
#include "classeditor.h"
2
#include "ui_classeditor.h"
3
 
45 pingvin 4
 
24 pingvin 5
ClassEditor::ClassEditor(QWidget *parent) :
6
    QMainWindow(parent),
7
    ui(new Ui::ClassEditor)
8
{
9
    ui->setupUi(this);
60 pingvin 10
 
11
 
12
 
13
    //    settdialog = new SettingsDialog(this);
14
  /////////////////////////////////////////////////////  settdialog.show();
24 pingvin 15
    sql.setDatabaseName(tr("an_db"));
56 pingvin 16
 
60 pingvin 17
/*
35 pingvin 18
    field = new TableField(tr(""), this);
38 pingvin 19
    field->setNotNull(true);
35 pingvin 20
    field->setDefaultValue(tr(""));
33 pingvin 21
 
38 pingvin 22
    table = new SqlTable (tr("NewTable"), this);
23
    table->setName(tr("NewTable"));
39 pingvin 24
    table->fields().at(0)->setNotNull(true);
25
    if (!(table->setPrimaryKey(tr("ID")))) {
26
         ui->label_3->setText(table->lastError());
27
    }
28
    else  ui->label_3->setText(table->primaryKey());
29
    table->append(field);
30
 
31
    field = new TableField(tr(""), this);
32
    field->setNotNull(true);
33
    field->setDefaultValue(tr(""));
34
    table->append(field);
35
 
40 pingvin 36
    field = new TableField(tr(""), this);
37
    field->setNotNull(true);
38
    field->setDefaultValue(tr(""));
39
    table->append(field);
40
 
41
    field = new TableField(tr(" ()"), this);
42
    field->setNotNull(true);
43
    field->setType(tr("INTEGER"));
44
    field->setDefaultValue(tr("1"));
45
    table->append(field);
46
 
47
    field = new TableField(tr(" "), this);
48
    field->setNotNull(false);
49
    field->setType(tr("DATE"));
50
    field->setDefaultValue(tr("NULL"));
51
    table->append(field);
52
 
38 pingvin 53
    ui->label_2->setText(table->name());
54
    ui->label->setText(table->fields().at(0)->sqlString());
39 pingvin 55
    ui->label_4->setText(table->sqlString());
40 pingvin 56
   ////// ui->lineEdit->insert(table->sqlString());
38 pingvin 57
 
60 pingvin 58
*/
45 pingvin 59
    /**********************************************
60
 
40 pingvin 61
    QTextDocument *document;
62
    // = ui->textEdit->document();
63
    QTextCursor *cursor;
45 pingvin 64
 
40 pingvin 65
    document = ui->textEdit->document();
66
    cursor = new QTextCursor(document);
67
    cursor->movePosition(QTextCursor::Start);
68
QTextCharFormat format(cursor->charFormat());
69
//format.setFontFamily("Courier");
70
format.setFontFamily("Arial");
71
//format.setFontItalic(false);
72
 
73
format.setFontWeight(QFont::Normal);
74
QTextCharFormat boldFormat = format;
75
boldFormat.setFontWeight(QFont::Bold);
76
 
77
QTextCharFormat italicFormat = format;
78
//format.setFontFamily("Courier");
79
//     format.setFontFamily("Arial");
80
italicFormat.setFontItalic(true);
81
 
82
cursor->insertText(table->sqlString(), format);
41 pingvin 83
 
45 pingvin 84
****************************************************/
85
 
41 pingvin 86
QString errorString;
87
 
88
sql.setDatabaseName(tr("an_db"));
89
sql.setHostName(tr("localhost"));
90
sql.setUserName(tr("an"));
91
sql.setPassword(tr("393939"));
92
 
93
bool ok;
44 pingvin 94
ok = sql.connect();
41 pingvin 95
if (!ok) {
96
                            QMessageBox::critical( //     .
97
                                                                            this,                      //  .
98
                                                                            QObject::tr("Database Error"),   // .
45 pingvin 99
                                                                            sql.lasError());         //  .
41 pingvin 100
 
101
                     }
102
else {
103
 
104
    QMessageBox::information( //     .
105
                                                    this,                      //  .
106
                                                    QObject::tr("Database Connect"),   // .
107
                                                    QObject::tr("     ."));         //  .
108
 
109
 
110
 
111
 
112
 
24 pingvin 113
}
114
 
60 pingvin 115
/*
44 pingvin 116
ok = sql.createTable(table);
42 pingvin 117
if (!ok) {
118
                            QMessageBox::critical( //     .
119
                                                                            this,                      //  .
120
                                                                            QObject::tr("Database Error"),   // .
45 pingvin 121
                                                                            sql.lasError());         //  .
122
         }
42 pingvin 123
else {
124
 
125
    QMessageBox::information( //     .
126
                                                    this,                      //  .
127
                                                    QObject::tr("Database Connect"),   // .
128
                                                    QObject::tr("     ."));         //  .
45 pingvin 129
     }
42 pingvin 130
 
131
 
132
 
60 pingvin 133
*/
42 pingvin 134
 
56 pingvin 135
ok = sql.createListOfClassesTable();
41 pingvin 136
 
45 pingvin 137
if (!ok) {
138
                            QMessageBox::critical( //     .
139
                                                                            this,                      //  .
140
                                                                            QObject::tr("Database Error"),   // .
141
                                                                            sql.lasError());         //  .
142
 
143
                     }
144
else {
145
 
146
    QMessageBox::information( //     .
147
                                                    this,                      //  .
148
                                                    QObject::tr("Database Create"),   // .
149
                                                    QObject::tr("   ."));         //  .
150
    }
151
 
152
 
56 pingvin 153
 
154
 
155
ok = sql.createDescriptionOfClassesTable();
156
 
157
if (!ok) {
158
                            QMessageBox::critical( //     .
159
                                                                            this,                      //  .
160
                                                                            QObject::tr("Database Error"),   // .
161
                                                                            sql.lasError());         //  .
162
 
163
                     }
164
else {
165
 
166
    QMessageBox::information( //     .
167
                                                    this,                      //  .
168
                                                    QObject::tr("Database Create"),   // .
169
                                                    QObject::tr("   ."));         //  .
170
    }
171
 
172
 
173
 
174
 
175
 
176
 
177
 
72 pingvin 178
model = new QSqlTableModel(); //   
179
tableForInstance = new QTableView();
50 pingvin 180
mymodel = new MyModel(this);
82 pingvin 181
modelForPointers = new ModelForPointers(this); // //     
182
 
61 pingvin 183
//modelForDescription = new QSqlTableModel(this);
184
modelForDescription = new ModelForDescriptionTable(this);
50 pingvin 185
 
61 pingvin 186
 
56 pingvin 187
/////////////////model->setTable(tr("ListOfClasses"));
50 pingvin 188
mymodel->setTable(tr("ListOfClasses"));
56 pingvin 189
modelForDescription->setTable(tr("DescriptionOfClasses"));
190
modelForDescription->setEditStrategy(QSqlTableModel::OnFieldChange);
50 pingvin 191
 
45 pingvin 192
/////model->setEditStrategy(QSqlTableModel::OnManualSubmit);
50 pingvin 193
 
82 pingvin 194
modelForPointers->setEditStrategy(QSqlTableModel::OnManualSubmit);
195
modelForPointers->setTable(tr("DescriptionOfClasses"));
50 pingvin 196
 
197
 
82 pingvin 198
 
199
 
71 pingvin 200
//mymodel->setEditStrategy(QSqlTableModel::OnFieldChange);
201
 
202
 
203
 
56 pingvin 204
//////////////////model->setSort(0, Qt::AscendingOrder);
50 pingvin 205
mymodel->setSort(0, Qt::AscendingOrder);
56 pingvin 206
modelForDescription->setSort(0, Qt::AscendingOrder);
82 pingvin 207
modelForPointers->setSort(0, Qt::AscendingOrder);
50 pingvin 208
 
45 pingvin 209
//       model->setFilter(tr("__ = '7' and _ = 'i09090909'"));
56 pingvin 210
////////////////////model->select();
50 pingvin 211
mymodel->select();
82 pingvin 212
// modelForPointers->select();
50 pingvin 213
 
56 pingvin 214
 
68 pingvin 215
 
216
 
56 pingvin 217
/////////////////////////model->setHeaderData(1, Qt::Horizontal, tr(" "));
50 pingvin 218
mymodel->setHeaderData(1, Qt::Horizontal, tr(" "));
219
 
220
 
221
 
56 pingvin 222
////////////////////////model->setHeaderData(2, Qt::Horizontal, tr(" "));
50 pingvin 223
mymodel->setHeaderData(2, Qt::Horizontal, tr(" "));
60 pingvin 224
mymodel->setHeaderData(4, Qt::Horizontal, tr(""));
50 pingvin 225
 
82 pingvin 226
//ui->tableView_3->setModel(modelForPointers);
65 pingvin 227
 
50 pingvin 228
//ui->tableView->setModel(model);
229
ui->tableView->setModel(mymodel);
56 pingvin 230
//tableForDescription = new QTableView();
231
ui->tableView_2->setModel(modelForDescription);
232
ui->tableView_2->setAlternatingRowColors(true);
233
ui->tableView_2->resizeColumnsToContents();
234
//tableForDescription->show();
50 pingvin 235
 
236
 
45 pingvin 237
ui->tableView->setAlternatingRowColors(true);
238
ui->tableView->resizeColumnsToContents();
65 pingvin 239
 
60 pingvin 240
ui->tableView->hideColumn(0);
55 pingvin 241
ui->tableView->hideColumn(3);
60 pingvin 242
ui->tableView->hideColumn(2);
45 pingvin 243
 
65 pingvin 244
/*
62 pingvin 245
ui->tableView_2->hideColumn(0);
246
ui->tableView_2->hideColumn(5);
247
ui->tableView_2->hideColumn(2);
65 pingvin 248
*/
249
ui->tableView_2->setItemDelegateForColumn(3, &classTableDelegate);
45 pingvin 250
 
72 pingvin 251
currIndexOfClassesTable = mymodel->index(0, 1);
62 pingvin 252
QModelIndex index_temp;
253
 
75 pingvin 254
 
255
 
62 pingvin 256
currClassID = mymodel->data(mymodel->index(0,0)).toString();
257
QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
258
 
259
QModelIndex topLeft;
260
QModelIndex bottomRight;
261
 
262
     topLeft = mymodel->index(0, 0, QModelIndex());
263
     bottomRight = mymodel->index(0, 1, QModelIndex());
264
 
265
QItemSelection selection(topLeft, bottomRight);
266
selectionModel->select(selection, QItemSelectionModel::Select);
267
 
268
 
71 pingvin 269
QString class_indx, class_instance;
68 pingvin 270
QString str_fltr = tr("ClassIdentifer = ");
271
class_indx = mymodel->data(mymodel->index(0,0)).toString();
71 pingvin 272
class_instance = mymodel->data(mymodel->index(0,3)).toString();
75 pingvin 273
 
274
currInctanceTable = class_instance; //
275
modelForDescription->setInctance(class_instance); //       -
71 pingvin 276
//class_instance.append(tr("_inctance"));
68 pingvin 277
str_fltr.append(class_indx);
83 pingvin 278
str_fltr.append(tr(" AND FieldType <> \"pointer\""));
62 pingvin 279
 
71 pingvin 280
model->setTable(class_instance);
281
//model->setTable(tr("memory"));
72 pingvin 282
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
71 pingvin 283
model->select();
72 pingvin 284
tableForInstance->setModel(model);
285
tableForInstance->resizeColumnsToContents();
286
tableForInstance->setWindowTitle(class_instance);
287
tableForInstance->show();
71 pingvin 288
 
68 pingvin 289
modelForDescription->setFilter(str_fltr);
290
modelForDescription->select();
69 pingvin 291
ui->tableView_2->resizeColumnsToContents();
68 pingvin 292
 
83 pingvin 293
 
294
 str_fltr = tr("ClassIdentifer = ");
295
 modelForPointers->setInctance(class_instance);  //       -
296
 str_fltr.append(class_indx);
297
 str_fltr.append(tr(" AND FieldType = \"pointer\""));
82 pingvin 298
// str_fltr.append( tr(" FieldType = pointer "));
83 pingvin 299
 
300
 
301
 
302
 modelForPointers->setFilter(str_fltr);
82 pingvin 303
modelForPointers->select();
304
ui->tableView_3->setModel(modelForPointers);
83 pingvin 305
ui->tableView_3->resizeColumnsToContents();
68 pingvin 306
 
55 pingvin 307
//connect(ui->tableView, SIGNAL(clicked(const QModelIndex)), this, SLOT(on_tableView_clicked(const QModelIndex)));
62 pingvin 308
connect(mymodel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_myModel_dataChanged(QModelIndex,QModelIndex)));
309
connect(modelForDescription, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_modelForDescription_dataChanged(QModelIndex,QModelIndex)));
72 pingvin 310
//connect(ui->newClassAction, SIGNAL(triggered(bool)), this, SLOT(on_pushButton_clicked(bool)));
65 pingvin 311
connect(ui->action_ID, SIGNAL(triggered(bool)), this, SLOT(on_action_ID_triggered(bool)));
68 pingvin 312
connect(ui->action_showAlias, SIGNAL(triggered(bool)), this, SLOT(on_action_showAlias_triggered(bool))); //  
313
connect(ui->action_showInstance, SIGNAL(triggered(bool)), this, SLOT(on_action_showInstance_triggered(bool))); //   
314
connect(ui->action_removeSelectedFields, SIGNAL(triggered()), this, SLOT(on_pushButton_4_clicked())); //   
315
connect(ui->action_removeAllFields, SIGNAL(triggered()), this, SLOT(on_pushButton_5_clicked())); //   
316
connect(ui->action_removeSelectedClasses, SIGNAL(triggered()), this, SLOT(on_pushButton_2_clicked())); //   
73 pingvin 317
connect(ui->action_removeAllClasses, SIGNAL(triggered()), this, SLOT(on_action_removeAllClasses())); //   
318
connect(ui->action_newClass, SIGNAL(triggered()), this, SLOT(on_pushButton_clicked())); //   
319
connect(ui->action_newField, SIGNAL(triggered()), this, SLOT(on_pushButton_3_clicked())); //   
77 pingvin 320
connect(ClassEditor::modelForDescription, SIGNAL(field_changed()), this, SLOT(on_field_changed())); //   
42 pingvin 321
}
322
 
45 pingvin 323
 
324
 
325
 
326
 
327
 
328
 
329
 
330
 
331
 
332
 
24 pingvin 333
ClassEditor::~ClassEditor()
334
{
335
    delete ui;
72 pingvin 336
    delete model;
337
    delete tableForInstance;
38 pingvin 338
 //    delete field;
24 pingvin 339
   // delete settdialog;
340
}
341
 
342
void ClassEditor::changeEvent(QEvent *e)
343
{
344
    QMainWindow::changeEvent(e);
345
    switch (e->type()) {
346
    case QEvent::LanguageChange:
347
        ui->retranslateUi(this);
348
        break;
349
    default:
350
        break;
351
    }
352
}
51 pingvin 353
 
354
 
71 pingvin 355
/*
51 pingvin 356
void  ClassEditor::addNewClass(){
357
 
358
    int row = model->rowCount();
359
 
360
    model->insertRows(row, 1);
54 pingvin 361
    model->setData(model->index(row, 1), tr("New class")); //     " "
51 pingvin 362
 
363
 
364
    // model->setData(model->index(row, 1), tr("   "));
365
    // model->setData(model->index(row, 2) , tr("  ,    1"));
366
 
367
 
368
    model->submitAll();
369
 
370
    row = model->rowCount();
371
    QString tmp_str;
372
    int i_tmp;
373
    i_tmp = model->data(model->index(row-1, 0)).toInt();
374
    tmp_str = model->data(model->index(row-1, 0)).toString(); //   -  
375
 
376
    tmp_str.append(tr("_Inctance"));
377
    model->setData(model->index(row-1, 3), tmp_str );  //     
378
 
379
    model->submitAll();
380
    mymodel->select();
381
 
382
 
383
}
71 pingvin 384
*/
51 pingvin 385
 
54 pingvin 386
void  ClassEditor::addNewClass_new(){
387
 
388
    int row = mymodel->rowCount();
389
 
390
    mymodel->insertRows(row, 1);
70 pingvin 391
    mymodel->setData(mymodel->index(row, 1), QVariant(tr("New class")), Qt::EditRole); //     " "
54 pingvin 392
 
70 pingvin 393
 
54 pingvin 394
    mymodel->submitAll();
395
    row = mymodel->rowCount();
70 pingvin 396
    QString tmp_str1, sql_str;
54 pingvin 397
    int i_tmp1;
398
    i_tmp1 = mymodel->data(mymodel->index(row-1, 0)).toInt();
399
    tmp_str1 = mymodel->data(mymodel->index(row-1, 0)).toString(); //   -  
400
 
401
    tmp_str1.append(tr("_Inctance"));
70 pingvin 402
    SqlTable* tbl;
403
    tbl = new SqlTable(tmp_str1); //   
404
    sql_str = tbl->sqlString();
405
    bool ok;
406
 
407
    ok = sql.createTable(tbl);
408
 
409
    if (!ok) {
410
                                QMessageBox::critical( //     .
411
                                                                                this,                      //  .
412
                                                                                QObject::tr("Database Error"),   // .
413
                                                                                sql.lasError());         //  .
414
                                delete tbl;
415
                                mymodel->removeRow(row-1);
416
                                mymodel->submitAll();
417
                                mymodel->select();
418
                                ui->tableView_2->resizeRowsToContents();
419
                                return; //    
420
 
421
                         }
422
 
423
    delete tbl;
54 pingvin 424
    mymodel->setData(mymodel->index(row-1, 3), QVariant(tmp_str1), Qt::EditRole);  //     
425
 
70 pingvin 426
 
427
 
54 pingvin 428
    // model->setData(model->index(row, 1), tr("   "));
429
    // model->setData(model->index(row, 2) , tr("  ,    1"));
430
 
431
 
56 pingvin 432
    //mymodel->submitAll();
54 pingvin 433
 
434
    //row = mymodel->rowCount();
435
 
436
 
56 pingvin 437
  //mymodel->select();
54 pingvin 438
 
439
 
440
}
441
 
442
 
62 pingvin 443
void ClassEditor::addNewField(){
444
    // QSqlRecord rec = mymodel->record(1);
445
     //bool ok;
446
     //ok = rec.isEmpty();
447
     //QString currientClassID;
448
     //currientClassID = rec.value(1).toString();
73 pingvin 449
    QString Inctance_str; //  -    
450
    QString query_str = tr("ALTER TABLE ");
451
    QString db_error;
452
    QSqlQuery q;
72 pingvin 453
    int currRow = ClassEditor::currIndexOfClassesTable.row(); //
454
    Inctance_str = mymodel->data(mymodel->index(currRow, 3)).toString();
73 pingvin 455
    query_str.append( Inctance_str);
82 pingvin 456
    query_str.append(tr(" ADD COLUMN `New field` CHAR(30)"));
73 pingvin 457
    bool ok = q.prepare(query_str);
72 pingvin 458
 
73 pingvin 459
    ok = q.exec();
460
    if (!ok) {
461
                                QMessageBox::critical( //     .
462
                                                                                this,                      //  .
463
                                                                                QObject::tr("Database Error"),   // .
464
                                                                                q.lastError().text()); //  .
465
 
466
                                                                return; //    
467
 
468
                         }
469
 
62 pingvin 470
    int row = modelForDescription->rowCount();
471
    modelForDescription->insertRows(row, 1);
81 pingvin 472
    modelForDescription->onlySetData(modelForDescription->index(row, 5), QVariant(currClassID), Qt::EditRole);
473
    modelForDescription->onlySetData(modelForDescription->index(row, 4), QVariant(tr("NULL")), Qt::EditRole);
62 pingvin 474
 
475
    modelForDescription->submitAll();
73 pingvin 476
 
477
    delete model;
478
    delete tableForInstance;
479
    model = new QSqlTableModel();
480
    tableForInstance = new QTableView();
481
    model->setTable(Inctance_str);
482
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
483
    tableForInstance->setModel(model);
484
    tableForInstance->setWindowTitle(Inctance_str);
485
    tableForInstance->show();
62 pingvin 486
}
487
 
488
 
489
 
490
 
491
 
492
 
493
 
494
 
495
 
496
 
68 pingvin 497
//   
51 pingvin 498
void ClassEditor::on_pushButton_clicked(){
54 pingvin 499
//int i;
500
//i++;
501
/////ClassEditor::addNewClass();
502
ClassEditor::addNewClass_new();
503
 mymodel->select();
504
//ui->tableView->setModel(mymodel);
505
 
51 pingvin 506
}
54 pingvin 507
 
55 pingvin 508
void ClassEditor::on_tableView_clicked(const QModelIndex & index ){
509
    int i, row, column;
510
    i++;
511
    row = index.row();
512
    column = index.column();
62 pingvin 513
    currIndexOfClassesTable = index;
71 pingvin 514
    QModelIndex index_tmp, index_instance;
515
    QString tmp_str, filter_str, instance_str;
56 pingvin 516
   index_tmp = ui->tableView->model()->index(row, 0);
71 pingvin 517
   index_instance = ui->tableView->model()->index(row, 3);
56 pingvin 518
   tmp_str = ui->tableView->model()->data(index_tmp).toString();
71 pingvin 519
   instance_str = ui->tableView->model()->data(index_instance).toString();
75 pingvin 520
   modelForDescription->setInctance(instance_str); //       -
83 pingvin 521
   modelForPointers->setInctance(instance_str);
75 pingvin 522
 
523
 
524
 
71 pingvin 525
 //  instance_str.append(tr("_inctance"));
72 pingvin 526
/*
527
   Inctance_model.clear();
528
   Inctance_model.setTable(instance_str);
529
    Inctance_model.select();
530
    tableForInstance_new.setModel(&Inctance_model);
531
    tableForInstance_new.show();
532
*/
533
  // model->clear();
534
   tableForInstance->close();
535
   delete model;
536
   delete tableForInstance;
537
   model = new QSqlTableModel();
538
   tableForInstance = new QTableView();
539
   model->setTable(instance_str);
540
   model->setEditStrategy(QSqlTableModel::OnManualSubmit);
541
   tableForInstance->setModel(model);
71 pingvin 542
 
543
   model->select();
72 pingvin 544
tableForInstance->setWindowTitle(instance_str);
545
tableForInstance->show();
546
 
71 pingvin 547
   //   tableForInstance.setModel(model);
72 pingvin 548
   tableForInstance->resizeColumnsToContents();
71 pingvin 549
 
62 pingvin 550
   currClassID = tmp_str;
551
  // ui->label->setText(QVariant(currIndexOfClassesTable.row()).toString());
56 pingvin 552
   filter_str = tr("ClassIdentifer = ");
553
   filter_str.append(tmp_str);
83 pingvin 554
   filter_str.append(tr(" AND FieldType <> \"pointer\""));
56 pingvin 555
   modelForDescription->setFilter(filter_str);
68 pingvin 556
   modelForDescription->select();
62 pingvin 557
   ui->tableView_2->resizeColumnsToContents();
83 pingvin 558
 
559
   filter_str = tr("ClassIdentifer = ");
560
   filter_str.append(tmp_str);
561
   filter_str.append(tr(" AND FieldType = \"pointer\""));
562
   modelForPointers->setFilter(filter_str);
563
   modelForPointers->select();
564
   ui->tableView_3->resizeColumnsToContents();
565
 
566
 
567
 
568
 
56 pingvin 569
   i++;
55 pingvin 570
}
54 pingvin 571
 
59 pingvin 572
 
573
 
68 pingvin 574
void ClassEditor::on_pushButton_2_clicked(){ //    " "
575
    QModelIndex model_index;
576
    QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
577
    QModelIndexList indexes = selectionModel->selectedIndexes();
578
    QList<int> selectedRows;
579
    selectedRows.clear();
580
    foreach (model_index, indexes){ //    
581
        if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  selectedRows.append(model_index.row()); //        
59 pingvin 582
 
68 pingvin 583
    }
584
    qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); //    
585
 
586
 
587
    for (int m =0; m < selectedRows.size(); ++m){
588
 
589
     ClassEditor::removeClass(selectedRows.at(m));
590
 
591
 
592
 
593
    }
594
 mymodel->submitAll();
595
    ClassEditor::modelForDescription->select();
596
 
59 pingvin 597
}
598
 
599
void ClassEditor::on_pushButton_3_clicked(){         //    " "
600
    int i;
601
    i++;
62 pingvin 602
    ClassEditor::addNewField();
603
    ClassEditor::modelForDescription->select();
64 pingvin 604
    ui->tableView_2->resizeColumnsToContents();
59 pingvin 605
}
68 pingvin 606
 
607
 
59 pingvin 608
void ClassEditor::on_pushButton_4_clicked(){         //    " "
69 pingvin 609
   // int i;
62 pingvin 610
    QModelIndex model_index;
63 pingvin 611
    QItemSelectionModel *selectionModel = ui->tableView_2->selectionModel();
62 pingvin 612
    QModelIndexList indexes = selectionModel->selectedIndexes();
69 pingvin 613
    //QModelIndexList indexes_fo_first_col; //     ( )
62 pingvin 614
    //model_index = mymodel->selec;
615
    //modelList = ui->tableView->SelectItems;
69 pingvin 616
    //i = indexes.size();
63 pingvin 617
    QList<int> selectedRows;
69 pingvin 618
    //indexes_fo_first_col.clear();
619
    /*
67 pingvin 620
    foreach (model_index, indexes){ //    
621
        if (!indexes_fo_first_col.contains(model_index) && (model_index.column()==1))  indexes_fo_first_col.append(model_index); //        
622
 
623
    }
69 pingvin 624
*/
63 pingvin 625
    selectedRows.clear();
626
    foreach (model_index, indexes){ //    
73 pingvin 627
        if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  {
628
            selectedRows.append(model_index.row()); //        
629
        }
63 pingvin 630
    }
67 pingvin 631
 
632
    qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); //    
633
 
74 pingvin 634
    QString Inctance_str; //  -
635
    Inctance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
67 pingvin 636
    for (int m =0; m < selectedRows.size(); ++m){
637
 
74 pingvin 638
 
639
        QString query_str;
640
        QString field_name_str; //   
641
        QSqlQuery q;
642
 
643
        query_str.clear();
644
 
645
 
646
        field_name_str = modelForDescription->data(modelForDescription->index(selectedRows.at(m), 1)).toString();
647
 
648
        query_str.append(tr("ALTER TABLE "));
649
        query_str.append(Inctance_str);
650
        query_str.append(tr(" DROP COLUMN `"));
651
        query_str.append(field_name_str);
652
        query_str.append(tr("`"));
653
        q.prepare(query_str);
654
        bool ok = q.exec();
655
        if (!ok) {
656
                                    QMessageBox::critical( //     .
657
                                                                                    this,                      //  .
658
                                                                                    QObject::tr("Database Error"),   // .
659
                                                                                    q.lastError().text()); //  .
660
 
661
                                                                    return; //    
662
 
663
                             }
664
 
665
 
666
 
667
        modelForDescription->removeRow(selectedRows.at(m));
668
 
67 pingvin 669
    }
74 pingvin 670
    delete model;
671
    delete tableForInstance;
672
    model = new QSqlTableModel();
673
    tableForInstance = new QTableView();
674
    model->setTable(Inctance_str);
675
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
676
    tableForInstance->setModel(model);
677
    tableForInstance->setWindowTitle(Inctance_str);
678
    tableForInstance->show();
69 pingvin 679
    //i = selectedRows.size();
63 pingvin 680
 
69 pingvin 681
    //if (i > 0) model_index = indexes.at(0);
59 pingvin 682
}
62 pingvin 683
 
684
 
63 pingvin 685
void ClassEditor::on_pushButton_5_clicked(){         //    "  "
686
int row;
687
row = ClassEditor::modelForDescription->rowCount();
688
ClassEditor::modelForDescription->removeRows(0, row);
689
ClassEditor::modelForDescription->submitAll();
690
}
691
 
62 pingvin 692
void ClassEditor::on_myModel_dataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight ){
75 pingvin 693
 
62 pingvin 694
int i;
695
i++;
696
ui->tableView->resizeColumnsToContents();
75 pingvin 697
 
698
 
699
 
700
 
701
 
62 pingvin 702
}
703
 
704
void ClassEditor::on_modelForDescription_dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ){
705
    ui->tableView_2->resizeColumnsToContents();
75 pingvin 706
 
707
    /*
708
    QString instance_str;
709
    instance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
710
    tableForInstance->close();
711
    delete model;
712
    delete tableForInstance;
713
    model = new QSqlTableModel();
714
    tableForInstance = new QTableView();
715
    model->setTable(instance_str);
716
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
717
    tableForInstance->setModel(model);
718
 
719
    model->select();
720
 tableForInstance->setWindowTitle(instance_str);
721
 tableForInstance->show();
722
*/
62 pingvin 723
}
65 pingvin 724
 
725
void ClassEditor::on_action_ID_triggered(bool is_checked){          //     " ID"
726
if (is_checked) ui->tableView->showColumn(0);
727
else ui->tableView->hideColumn(0);
728
ui->tableView->resizeColumnsToContents();
729
}
730
 
731
void ClassEditor::on_action_showAlias_triggered(bool is_checked){     //     " "
732
    if (is_checked) ui->tableView->showColumn(2);
733
    else ui->tableView->hideColumn(2);
734
    ui->tableView->resizeColumnsToContents();
735
}
736
 
68 pingvin 737
void ClassEditor::on_action_showInstance_triggered(bool is_checked){ //     "  "
65 pingvin 738
    if (is_checked) ui->tableView->showColumn(3);
739
    else ui->tableView->hideColumn(3);
740
    ui->tableView->resizeColumnsToContents();
741
}
68 pingvin 742
 
743
 
744
 
745
void ClassEditor::on_action_removeAllClasses(){ //     "  "
746
    int row;
747
    row = ClassEditor::mymodel->rowCount();
748
    for (int m=0; m < row; ++m){
749
    ClassEditor::removeClass(0);
750
    //ClassEditor::mymodel->removeRows(0, row);
751
}
752
    ClassEditor::mymodel->submitAll();
753
    ClassEditor::modelForDescription->select();
754
}
755
 
756
void ClassEditor::removeClass(int class_row){ //   ,      class_row
757
    QModelIndex index_tmp;
758
    QString tmp_str, filter_str;
759
   index_tmp = ui->tableView->model()->index(class_row, 0);
760
   tmp_str = ui->tableView->model()->data(index_tmp).toString();
761
   currClassID = tmp_str;
762
  // ui->label->setText(QVariant(currIndexOfClassesTable.row()).toString());
763
   filter_str = tr("ClassIdentifer = ");
764
   filter_str.append(tmp_str);
765
   modelForDescription->setFilter(filter_str); //   
766
    ClassEditor::on_pushButton_5_clicked(); //     
767
     mymodel->removeRow(class_row); //    
768
     mymodel->submitAll(); //  
769
   ui->tableView->resizeColumnsToContents();
770
   ui->tableView_2->resizeColumnsToContents();
771
 
772
}
76 pingvin 773
 
774
 
77 pingvin 775
void ClassEditor::on_field_changed(){ //   
76 pingvin 776
    ClassEditor::refreshInctance();
777
}
778
 
779
 
780
 
781
 
782
void ClassEditor::refreshInctance(){ //   -
783
 
784
    QString Inctance_str; //  -
785
    Inctance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
786
    delete model;
787
    delete tableForInstance;
788
    model = new QSqlTableModel();
789
    tableForInstance = new QTableView();
790
    model->setTable(Inctance_str);
791
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
78 pingvin 792
    model->select();
76 pingvin 793
    tableForInstance->setModel(model);
794
    tableForInstance->setWindowTitle(Inctance_str);
795
    tableForInstance->resizeRowsToContents();
796
    tableForInstance->show();
797
 
798
}