void SpellCheckWorker::processSpellingQuery(const std::shared_ptr<SpellCheckItem> &item) { const bool neededSuggestions = item->needsSuggestions(); auto &queryItems = item->getQueries(); const auto wordAnalysisFlags = item->getWordAnalysisFlags(); const bool shouldCheckSpelling = Common::HasFlag(wordAnalysisFlags, Common::WordAnalysisFlags::Spelling); const bool shouldStemWord = Common::HasFlag(wordAnalysisFlags, Common::WordAnalysisFlags::Stemming); bool anyWrong = false; if (!neededSuggestions) { const size_t size = queryItems.size(); Q_ASSERT(size > 0); for (size_t i = 0; i < size; ++i) { auto &queryItem = queryItems.at(i); bool isOk = true; if (shouldCheckSpelling) { isOk = checkQuerySpelling(queryItem); } if (shouldStemWord) { stemWord(queryItem); } anyWrong = anyWrong || !isOk; } if (shouldStemWord && !item->getIsOnlyOneKeyword()) { findSemanticDuplicates(queryItems); } item->accountResults(); item->submitSpellCheckResult(); } else { for (auto &queryItem: queryItems) { if (!queryItem->m_IsCorrect) { findSuggestions(queryItem->m_Word); } } } if (anyWrong) { item->requestSuggestions(); this->submitItem(item); } }
bool SpellCheckWorker::processOneItem(SpellCheckItemBase *item) { Q_ASSERT(item != NULL); if (dynamic_cast<SpellCheckSeparatorItem*>(item)) { emit queueIsEmpty(); return true; } bool neededSuggestions = item->needsSuggestions(); const QVector<SpellCheckQueryItem*> &queryItems = item->getQueries(); bool anyWrong = false; if (!neededSuggestions) { int length = queryItems.length(); for (int i = 0; i < length; ++i) { SpellCheckQueryItem *queryItem = queryItems.at(i); bool isOk = isWordSpelledOk(queryItem->m_Word); queryItem->m_IsCorrect = isOk; item->accountResultAt(i); anyWrong = anyWrong || !isOk; } item->submitSpellCheckResult(); } else { foreach (SpellCheckQueryItem *queryItem, queryItems) { if (!queryItem->m_IsCorrect) { findSuggestions(queryItem->m_Word); } } } bool canDelete = false; if (anyWrong) { item->requestSuggestions(); this->submitItem(item); } else { canDelete = true; } return canDelete; }
//-------------------------------------------------------------- void ofApp::draw(){ for (int i = 0; i < vectorOfButtons.size(); i++) { vectorOfButtons[i].redrawObject(); if (vectorOfButtons[i].eyeOnButton(posX, posY) && !vectorOfButtons[i].getClicked()) { cursor.setClicking(true); if (cursor.checkClicked()) { vectorOfButtons[i].setClicked(true); switch (currentGrid) { case 0: currentGrid = menuMain(i); if (currentGrid == 2) { findSuggestions(); } if (currentGrid == 5) { vectorOfLabelArrays[0][4] = ""; typedSoFar += wordToType + " "; vectorOfLabelArrays[0][7] = typedSoFar; wordToType = ""; currentGrid = 0; } break; case 1: menuABC(i); currentGrid = 0; vectorOfLabelArrays[0][4] = wordToType; break; case 2: menuSuggestions(i); currentGrid = 0; vectorOfLabelArrays[0][4] = wordToType; break; case 3: menuHIJ(i); currentGrid = 0; vectorOfLabelArrays[0][4] = wordToType; break; case 4: currentGrid = 0; break; case 5: // Will not be reached break; case 6: currentGrid = 0; break; case 7: menuOPQ(i); currentGrid = 0; vectorOfLabelArrays[0][4] = wordToType; break; case 8: currentGrid = 0; break; case 9: menuUVW(i); currentGrid = 0; vectorOfLabelArrays[0][4] = wordToType; break; default: break; } for (int i = 0; i < vectorOfButtons.size(); i++) { vectorOfButtons[i].setValue(vectorOfLabelArrays[currentGrid][i]); } } } else if (!vectorOfButtons[i].eyeOnButton(posX, posY) && vectorOfButtons[i].getClicked()) { vectorOfButtons[i].setClicked(false); } } //cursor.redrawObject(posX,posY); ***COMMENTED OUT - UNCOMMENT ON MAC AND COMMENT NEXT LINE*** cursor.redrawObject(posX, posY); }