void GraphicalBoardFrame::setGlobalCandidate() { if (m_candidate.action == Quackle::Move::Place && m_candidate.wordTilesWithNoPlayThru().empty()) { emit statusMessage(tr("Click again to switch arrow orientation, or type a word.")); return; } if (m_candidate.wordTilesWithNoPlayThru().length() == 1) { emit setCandidateMove(flip(m_candidate)); } else { emit setCandidateMove(m_candidate); } }
void MoveBox::moveActivated(QTreeWidgetItem *item) { if (item == 0) { emit setCandidateMove(Quackle::Move::createNonmove()); return; } // do nothing if no item was clicked or if more than one item is selected if (m_treeWidget->selectedItems().size() != 1) return; for (QMap<Quackle::Move, QTreeWidgetItem *>::iterator it = m_moveMap.begin(); it != m_moveMap.end(); ++it) { if (it.value() == item) { emit setCandidateMove(it.key()); break; } } }
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; } } } }
int View::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = BaseView::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: setCandidateMove((*reinterpret_cast< const Quackle::Move(*)>(_a[1]))); break; case 1: removeCandidateMoves((*reinterpret_cast< const Quackle::MoveList(*)>(_a[1]))); break; case 2: commit(); break; case 3: setRack((*reinterpret_cast< const Quackle::Rack(*)>(_a[1]))); break; case 4: setNote((*reinterpret_cast< const UVString(*)>(_a[1]))); break; case 5: positionChanged((*reinterpret_cast< const Quackle::GamePosition(*)>(_a[1]))); break; case 6: movesChanged((*reinterpret_cast< const Quackle::MoveList(*)>(_a[1]))); break; case 7: grabFocus(); break; } _id -= 8; } return _id; }
void BoardWithQuickEntry::processCommand(const QString &command) { QStringList items(command.split(" ", QString::SkipEmptyParts)); Quackle::Move move(Quackle::Move::createNonmove()); if (items.size() <= 0) { provideHelp(); return; } const QString verb(items.first().toLower()); if (verb.startsWith("pass")) move = Quackle::Move::createPassMove(); else { if (items.size() != 2) { provideHelp(); return; } if (verb.startsWith(tr("ex"))) { QString letters = items.at(1); bool isIntConvertable = false; int exchangeLength = letters.toInt(&isIntConvertable); bool isPass = false; Quackle::LetterString encodedLetters; if (isIntConvertable) { if (exchangeLength == 0) { isPass = true; } else { for (int i = 0; i < exchangeLength; ++i) encodedLetters.push_back(QUACKLE_BLANK_MARK); } } else { encodedLetters = QuackleIO::Util::nonBlankEncode(letters); } if (isPass) move = Quackle::Move::createPassMove(); else move = Quackle::Move::createExchangeMove(encodedLetters); } else { QString prettyLetters(items.at(1)); QString letters; bool replace = false; for (int i = 0; i < prettyLetters.length(); ++i) { QChar character = prettyLetters.at(i); if (character == '(') replace = true; else if (character == ')') replace = false; else if (replace) letters += "."; else letters += character; } move = Quackle::Move::createPlaceMove(QuackleIO::Util::qstringToString(items.first()), QuackleIO::Util::encode(letters)); } } if (move.isAMove()) emit setCandidateMove(move); }
void BoardWithQuickEntry::reset() { emit setCandidateMove(Quackle::Move::createNonmove()); }
void BoardWithQuickEntry::performCommit() { emit setCandidateMove(m_localCandidateMove); emit commit(); }
void BoardWithQuickEntry::plusFive() { m_localCandidateMove.setScoreAddition(m_localCandidateMove.scoreAddition() + 5); emit setCandidateMove(m_localCandidateMove); }