void MoveBox::removeMove() { QList<QTreeWidgetItem *> selectedItems = m_treeWidget->selectedItems(); if (selectedItems.empty()) return; Quackle::MoveList selectedMoves; for (QList<QTreeWidgetItem *>::iterator it = selectedItems.begin(); it != selectedItems.end(); ++it) { for (QMap<Quackle::Move, QTreeWidgetItem *>::iterator mapIt = m_moveMap.begin(); mapIt != m_moveMap.end(); ++mapIt) { if (mapIt.value() == *it) { selectedMoves.push_back(mapIt.key()); break; } } } emit removeCandidateMoves(selectedMoves); // TODO make this code work to select the next item QTreeWidgetItem *prevLastSelection = m_moveMap.value(selectedMoves.back()); QTreeWidgetItem *nextSelection = 0; const int numItems = m_treeWidget->topLevelItemCount(); for (int i = 0; i < numItems; ++i) { if (m_treeWidget->topLevelItem(i) == prevLastSelection) { if (i != numItems - 1) { nextSelection = m_treeWidget->topLevelItem(i + 1); break; } } } if (nextSelection) { for (QMap<Quackle::Move, QTreeWidgetItem *>::iterator mapIt = m_moveMap.begin(); mapIt != m_moveMap.end(); ++mapIt) { if (mapIt.value() == nextSelection) { emit setCandidateMove(mapIt.key()); break; } } } }