| 565 | } |
| 566 | |
| 567 | void |
| 568 | ManageUserParamsDialog::onUpClicked() |
| 569 | { |
| 570 | QList<QTreeWidgetItem*> selection = _imp->tree->selectedItems(); |
| 571 | if ( selection.empty() ) { |
| 572 | return; |
| 573 | } |
| 574 | QTreeWidgetItem* selectedItem = selection.front(); |
| 575 | for (std::list<TreeItem>::iterator it = _imp->items.begin(); it != _imp->items.end(); ++it) { |
| 576 | if (it->item == selectedItem) { |
| 577 | QTreeWidgetItem* parent = 0; |
| 578 | KnobIPtr parentKnob; |
| 579 | if (it->knob) { |
| 580 | parentKnob = it->knob->getParentKnob(); |
| 581 | } |
| 582 | if (parentKnob) { |
| 583 | for (std::list<TreeItem>::iterator it = _imp->items.begin(); it != _imp->items.end(); ++it) { |
| 584 | if (it->knob == parentKnob) { |
| 585 | parent = it->item; |
| 586 | break; |
| 587 | } |
| 588 | } |
| 589 | } |
| 590 | |
| 591 | int index; |
| 592 | if (!parent) { |
| 593 | index = _imp->tree->indexOfTopLevelItem(it->item); |
| 594 | } else { |
| 595 | index = parent->indexOfChild(it->item); |
| 596 | } |
| 597 | if (index == 0) { |
| 598 | break; |
| 599 | } |
| 600 | |
| 601 | if ( !it->knob || !_imp->panel->getHolder()->moveKnobOneStepUp( it->knob.get() ) ) { |
| 602 | return; |
| 603 | } |
| 604 | QList<QTreeWidgetItem*> children = it->item->takeChildren(); |
| 605 | delete it->item; |
| 606 | |
| 607 | KnobIPtr knob = it->knob; |
| 608 | //invalidates iterator |
| 609 | _imp->items.erase(it); |
| 610 | |
| 611 | QTreeWidgetItem* item = _imp->createItemForKnob(knob, index - 1); |
| 612 | item->insertChildren(0, children); |
| 613 | _imp->saveAndRebuildPages(); |
| 614 | QItemSelectionModel* model = _imp->tree->selectionModel(); |
| 615 | model->select(_imp->tree->indexFromItemPublic(item), QItemSelectionModel::ClearAndSelect); |
| 616 | |
| 617 | KnobPagePtr isPage = std::dynamic_pointer_cast<KnobPage>(knob); |
| 618 | if (isPage) { |
| 619 | _imp->panel->setPageActiveIndex(isPage); |
| 620 | } |
| 621 | |
| 622 | break; |
| 623 | } |
| 624 | } |
nothing calls this directly
no test coverage detected