| 486 | } |
| 487 | |
| 488 | void CommitDiffTreeView::createFileTreeForCommit(const QByteArray &rawNumStat) |
| 489 | { |
| 490 | QStandardItem root; |
| 491 | std::vector<GitFileItem> items; |
| 492 | parseNumStat(rawNumStat, &items); |
| 493 | createFileTree(&root, m_gitDir, items); |
| 494 | |
| 495 | // Remove nodes that have only one item. i.e., |
| 496 | // - kate |
| 497 | // -- addons |
| 498 | // -- file 1 |
| 499 | // kate will be removed since it has only item |
| 500 | // The tree will start from addons instead. |
| 501 | QList<QStandardItem *> tree = root.takeColumn(0); |
| 502 | while (tree.size() == 1) { |
| 503 | QStandardItem *subRoot = tree.takeFirst(); |
| 504 | QList<QStandardItem *> subTree = subRoot->takeColumn(0); |
| 505 | |
| 506 | // if its just one file |
| 507 | if (subTree.isEmpty()) { |
| 508 | tree.append(subRoot); |
| 509 | break; |
| 510 | } |
| 511 | |
| 512 | if (subTree.size() > 1) { |
| 513 | tree.append(subRoot); |
| 514 | subRoot->insertColumn(0, subTree); |
| 515 | break; |
| 516 | } else { |
| 517 | // Is the only child of this node a "File" item? |
| 518 | if (subTree.first()->data(FileItem::TypeRole).toInt() == FileItem::File) { |
| 519 | subRoot->insertColumn(0, subTree); |
| 520 | tree.append(subRoot); |
| 521 | break; |
| 522 | } |
| 523 | |
| 524 | delete subRoot; |
| 525 | tree = subTree; |
| 526 | } |
| 527 | } |
| 528 | |
| 529 | m_model.clear(); |
| 530 | m_model.invisibleRootItem()->appendColumn(tree); |
| 531 | |
| 532 | m_tree.expandAll(); |
| 533 | } |
| 534 | |
| 535 | void CommitDiffTreeView::showDiff(const QModelIndex &idx) |
| 536 | { |
nothing calls this directly
no test coverage detected