Редакция 146 | Редакция 148 | К новейшей редакции | Весь файл | Учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS
Редакция 146 | Редакция 147 | ||
---|---|---|---|
Строка 114... | Строка 114... | ||
114 | result = file.open(QIODevice::ReadOnly); |
114 | result = file.open(QIODevice::ReadOnly); |
115 | if (result) { |
115 | if (result) { |
116 | model_str = QString(tr(file.readAll())); |
116 | model_str = QString(tr(file.readAll())); |
117 | }
|
117 | }
|
118 | 118 | ||
119 | setupModelData(model_str.split(QString("\n")), rootItem1); |
119 | setupModelData(model_str.split(QString("\n")), rootItem1, -1); |
120 | 120 | ||
121 | 121 | ||
122 | return result; |
122 | return result; |
123 | 123 | ||
124 | }
|
124 | }
|
125 | 125 | ||
126 | 126 | ||
127 | void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent) |
127 | void MainWindow::setupModelData(const QStringList &lines, QTreeWidgetItem *parent, int row) |
128 | {
|
128 | {
|
129 | QList<QTreeWidgetItem*> parents; |
129 | QList<QTreeWidgetItem*> parents; |
130 | QList<int> indentations; |
130 | QList<int> indentations; |
131 | parents << parent; |
131 | parents << parent; |
132 | indentations << 0; |
132 | indentations << 0; |
Строка 178... | Строка 178... | ||
178 | if (columnData.count()>2) |
178 | if (columnData.count()>2) |
179 | {
|
179 | {
|
180 | itm_tmp->setText(1, QString(columnData.at(2).toString())); |
180 | itm_tmp->setText(1, QString(columnData.at(2).toString())); |
181 | itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ |
181 | itm_tmp->setText(2, QVariant(number).toString()); // íîìåð ñòðîêè â ôàéëå-ìîäåëè îòîáðàæåíèÿ |
182 | itm_tmp->setText(3, QVariant(indentations.size()).toString()); |
182 | itm_tmp->setText(3, QVariant(indentations.size()).toString()); |
- | 183 | itm_tmp->setText(4, QVariant(row).toString()); |
|
183 | }
|
184 | }
|
184 | }
|
185 | }
|
185 | 186 | ||
186 | number++; |
187 | number++; |
187 | }
|
188 | }
|
Строка 385... | Строка 386... | ||
385 | rootItem2 = new QTreeWidgetItem(rootItem1); |
386 | rootItem2 = new QTreeWidgetItem(rootItem1); |
386 | rootItem2->setText(0, root_class_name); |
387 | rootItem2->setText(0, root_class_name); |
387 | rootItem2->setText(1, rootClassID); |
388 | rootItem2->setText(1, rootClassID); |
388 | rootItem2->setCheckState(0,Qt::Checked); |
389 | rootItem2->setCheckState(0,Qt::Checked); |
389 | 390 | ||
390 | addChildsItems(rootItem2); |
391 | addChildsItems(rootItem2, -1); |
391 | 392 | ||
392 | 393 | ||
393 | /*
|
394 | /*
|
394 | 395 | ||
395 | sql_str = tr("select * "
|
396 | sql_str = tr("select * "
|
Строка 422... | Строка 423... | ||
422 | 423 | ||
423 | 424 | ||
424 | }
|
425 | }
|
425 | 426 | ||
426 | 427 | ||
427 | bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID){ |
428 | bool MainWindow::rebuildPreviewModel(QTreeWidgetItem* root_item, QString rootClassID, int row){ |
428 | QSqlQuery q;
|
429 | QSqlQuery q;
|
429 | QString sql_str;
|
430 | QString sql_str;
|
430 | QString field_name_str;
|
431 | QString field_name_str;
|
431 | QString root_class_name;
|
432 | QString root_class_name;
|
432 | bool ok; |
433 | bool ok; |
Строка 446... | Строка 447... | ||
446 | 447 | ||
447 | // root_item->removeChild(root_item->child(0)); // î÷èùàåì ñïèñîê äî÷åðíèõ êëàññîâ
|
448 | // root_item->removeChild(root_item->child(0)); // î÷èùàåì ñïèñîê äî÷åðíèõ êëàññîâ
|
448 | if (root_item->childCount()==0){ // íåò êîðíåâîãî êëàññà, ñîçäàäèì åãî |
449 | if (root_item->childCount()==0){ // íåò êîðíåâîãî êëàññà, ñîçäàäèì åãî |
449 | QTreeWidgetItem* item_tmp; |
450 | QTreeWidgetItem* item_tmp; |
450 | item_tmp = new QTreeWidgetItem (root_item); |
451 | item_tmp = new QTreeWidgetItem (root_item); |
- | 452 | item_tmp->setText(4, QVariant(row).toString()); |
|
451 | 453 | ||
452 | }
|
454 | }
|
453 | 455 | ||
454 | if (root_item->childCount()==1){ // êîðíåâîé êëàññ åñòü è îí ïóñòîé, î÷èùàòü åãî íå íàäî |
456 | if (root_item->childCount()==1){ // êîðíåâîé êëàññ åñòü è îí ïóñòîé, î÷èùàòü åãî íå íàäî |
455 | root_item->child(0)->setText(0, root_class_name); |
457 | root_item->child(0)->setText(0, root_class_name); |
456 | root_item->child(0)->setText(1, rootClassID); |
458 | root_item->child(0)->setText(1, rootClassID); |
457 | root_item->child(0)->setCheckState(0,Qt::Checked);} |
459 | root_item->child(0)->setCheckState(0,Qt::Checked); |
- | 460 | root_item->setText(4, QVariant(row).toString()); |
|
- | 461 | ||
- | 462 | }
|
|
458 | 463 | ||
459 | 464 | ||
460 | 465 | ||
461 | //delete rootItem2;
|
466 | //delete rootItem2;
|
462 | 467 | ||
Строка 475... | Строка 480... | ||
475 | for (int i=0; i < child_count; i++){ // åñëè êîðíåâîé êëàññ åñòü è íå ïóñòîé, î÷èùàåì åãî |
480 | for (int i=0; i < child_count; i++){ // åñëè êîðíåâîé êëàññ åñòü è íå ïóñòîé, î÷èùàåì åãî |
476 | root_item->child(0)->removeChild(root_item->child(0)->child(0)); |
481 | root_item->child(0)->removeChild(root_item->child(0)->child(0)); |
477 | }
|
482 | }
|
478 | 483 | ||
479 | child_count = root_item->child(0)->childCount(); |
484 | child_count = root_item->child(0)->childCount(); |
480 | addChildsItems(root_item->child(0)); |
485 | addChildsItems(root_item->child(0), row); |
481 | /*
|
486 | /*
|
482 | sql_str = tr("select * "
|
487 | sql_str = tr("select * "
|
483 | " from DescriptionOfClasses where DescriptionOfClasses.DefaultValue = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
|
488 | " from DescriptionOfClasses where DescriptionOfClasses.DefaultValue = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì
|
484 | );
|
489 | );
|
485 | sql_str.append(rootClassID);
|
490 | sql_str.append(rootClassID);
|
Строка 545... | Строка 550... | ||
545 | 550 | ||
546 | return class_name_str; |
551 | return class_name_str; |
547 | 552 | ||
548 | }
|
553 | }
|
549 | 554 | ||
550 | void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item){ // äîáîâëÿåì ê ýëåìåíòó äåðåâà â êà÷åñòâå äî÷åðíèõ ýëåìåíòîâ âñå êëàññû, äëÿ êîòîðûõ êëàññ ýëåìåíòà ÿâëÿåòñÿ êîíòåéíåðîì |
555 | void MainWindow::addChildsItems(QTreeWidgetItem *perent_class_item, int row){ // äîáîâëÿåì ê ýëåìåíòó äåðåâà â êà÷åñòâå äî÷åðíèõ ýëåìåíòîâ âñå êëàññû, äëÿ êîòîðûõ êëàññ ýëåìåíòà ÿâëÿåòñÿ êîíòåéíåðîì |
551 | QStringList chields_list;
|
556 | QStringList chields_list;
|
552 | QString parent_ID;
|
557 | QString parent_ID;
|
553 | QTreeWidgetItem *Item_tmp; |
558 | QTreeWidgetItem *Item_tmp; |
554 | parent_ID = perent_class_item->text(1); |
559 | parent_ID = perent_class_item->text(1); |
555 | int chields_count, i; |
560 | int chields_count, i; |
Строка 563... | Строка 568... | ||
563 | chield_class_name = MainWindow::ClassName(chield_id); |
568 | chield_class_name = MainWindow::ClassName(chield_id); |
564 | Item_tmp = new QTreeWidgetItem(perent_class_item); |
569 | Item_tmp = new QTreeWidgetItem(perent_class_item); |
565 | Item_tmp->setText(0, chield_class_name); |
570 | Item_tmp->setText(0, chield_class_name); |
566 | Item_tmp->setText(1, chield_id); |
571 | Item_tmp->setText(1, chield_id); |
567 | Item_tmp->setCheckState(0, Qt::Checked); |
572 | Item_tmp->setCheckState(0, Qt::Checked); |
- | 573 | Item_tmp->setText(4, QVariant(row).toString()); |
|
568 | MainWindow::addChildsItems(Item_tmp); |
574 | MainWindow::addChildsItems(Item_tmp, row); |
569 | }
|
575 | }
|
570 | 576 | ||
571 | i++; |
577 | i++; |
572 | 578 | ||
573 | }
|
579 | }
|
Строка 693... | Строка 699... | ||
693 | void MainWindow::on_comboBox_currentIndexChanged( int index ){ |
699 | void MainWindow::on_comboBox_currentIndexChanged( int index ){ |
694 | QStringList classesNameList;
|
700 | QStringList classesNameList;
|
695 | QStringList classesID_list;
|
701 | QStringList classesID_list;
|
696 | QString ID_str;
|
702 | QString ID_str;
|
697 | if (index == -1) return; |
703 | if (index == -1) return; |
- | 704 | int row; |
|
698 | 705 | ||
699 | classesID_list = class_list_map.keys(); |
706 | classesID_list = class_list_map.keys(); |
700 | classesNameList = class_list_map.values(); |
707 | classesNameList = class_list_map.values(); |
701 | ID_str = classesID_list[index]; |
708 | ID_str = classesID_list[index]; |
702 | ui->label->setText(ID_str); |
709 | ui->label->setText(ID_str); |
703 | if (root_items_list.indexOf(ui->treeWidget->currentItem()) != -1) |
710 | if (root_items_list.indexOf(ui->treeWidget->currentItem()) != -1) |
704 | {
|
711 | {
|
- | 712 | row = QVariant(ui->treeWidget->currentItem()->text(4)).toInt(); |
|
705 | model_is_build = false; // ÷òîáû íå âûçûâàëîñü ñîáûòèå on_treeWidget_itemChanged |
713 | model_is_build = false; // ÷òîáû íå âûçûâàëîñü ñîáûòèå on_treeWidget_itemChanged |
706 | rebuildPreviewModel(ui->treeWidget->currentItem(), ID_str); |
714 | rebuildPreviewModel(ui->treeWidget->currentItem(), ID_str, row); |
707 | model_is_build = true; // òåïåðü ïóñòü âûçûâàåòñÿ |
715 | model_is_build = true; // òåïåðü ïóñòü âûçûâàåòñÿ |
- | 716 | QString mdl_str = MainWindow::creatModelString(ui->treeWidget->currentItem()); // |
|
- | 717 | model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row, 2), QVariant(mdl_str)); |
|
708 | }
|
718 | }
|
709 | getDatabaseData(); |
719 | getDatabaseData(); |
710 | 720 | ||
711 | 721 | ||
712 | }
|
722 | }
|
713 | 723 | ||
714 | void MainWindow::on_treeWidget_itemChanged ( QTreeWidgetItem * item, int column ){ |
724 | void MainWindow::on_treeWidget_itemChanged ( QTreeWidgetItem * item, int column ){ |
715 | int i; |
725 | int i; |
716 | i++; |
726 | i++; |
- | 727 | QTreeWidgetItem * item_tmp; |
|
- | 728 | QString mdl_str;
|
|
- | 729 | QString row; // íîìåð ñòðîêè â òàáëèöå ìîäåëåé, ñîîòâåòñòâóþùèé èçìåíåííîé ìîäåëå |
|
- | 730 | QList <int> rows_list; |
|
- | 731 | ||
- | 732 | ||
- | 733 | if ((column) == 0 && (model_is_build)) { |
|
- | 734 | // if (!model_is_build) return; // ìîäåëü åù¸ íå ïîñòðîåíà
|
|
- | 735 | rows_list = models_items.keys(); |
|
- | 736 | ||
- | 737 | row= item->text(4); |
|
- | 738 | if (!row.isEmpty()){ |
|
- | 739 | ||
- | 740 | ||
- | 741 | int row_int; |
|
- | 742 | row_int = QVariant(row).toInt(); |
|
- | 743 | if (rows_list.indexOf(row_int) != -1) |
|
- | 744 | {
|
|
- | 745 | item_tmp = models_items[row_int]; |
|
- | 746 | mdl_str = MainWindow::creatModelString(item_tmp); |
|
- | 747 | model_for_ListModelsTable->setData(model_for_ListModelsTable->index(row_int, 2), QVariant(mdl_str)); |
|
- | 748 | }
|
|
- | 749 | ||
717 | 750 | ||
- | 751 | }
|
|
- | 752 | ||
- | 753 | ||
- | 754 | }
|
|
- | 755 | ||
- | 756 | /*
|
|
- | 757 | QTreeWidgetItem * item_tmp;
|
|
- | 758 | item_tmp = item;
|
|
- | 759 | while (item_tmp ){
|
|
- | 760 | item_tmp = item_tmp->parent();
|
|
- | 761 | }
|
|
- | 762 | */
|
|
718 | if ((column) == 0 && (model_is_build)) getDatabaseData(); |
763 | if ((column) == 0 && (model_is_build)) getDatabaseData(); |
719 | 764 | ||
- | 765 | ||
720 | }
|
766 | }
|
721 | 767 | ||
722 | 768 | ||
723 | void MainWindow::on_treeWidget_itemClicked ( QTreeWidgetItem * item, int column ){ |
769 | void MainWindow::on_treeWidget_itemClicked ( QTreeWidgetItem * item, int column ){ |
724 | int i; |
770 | int i; |