// process current active action public void performAction(Action.Type currentActionType, String result) { switch (currentActionType) { case LOG_LITTER_TYPE: populateLitterItem(yesNoSearch.getPotentialField(), null, "type"); break; case LOG_OTHER_LITTER_TYPE: populateLitterItem("other", yesNoSearch.getPotentialOtherField(), "type"); break; case LOG_LITTER_BRAND: populateLitterItem(yesNoSearch.getPotentialField(), null, "brand"); break; case LOG_OTHER_BRAND: Log.d(TAG, "Logging other brand"); populateLitterItem("other", yesNoSearch.getPotentialOtherField(), "brand"); break; case LOG_BIN_ITEM: populateBinItem(yesNoSearch.getPotentialField(), null); logBin(mBin); setCurrentSearch(brandSearch, result); break; case LOG_OTHER_BIN_TYPE: populateBinItem("other", yesNoSearch.getPotentialOtherField()); break; case LITTER_BRAND_SEARCH: setCurrentSearch(brandSearch, result); break; case LITTER_TYPE_SEARCH: setCurrentSearch(typeSearch, result); break; case BIN_SEARCH: setCurrentSearch(binSearch, result); break; case MENU_SEARCH: setCurrentSearch(menuSearch, result); break; default: Log.d(TAG, "invalid action type"); } mActionHandler.setActionPerformed(true); Log.d(TAG, "action performed"); Toast.makeText(mContext, "action performed", Toast.LENGTH_SHORT).show(); }
// Deal with unexpected results private String processUnexpectedResult(String result) { String toastText = ""; // Cancel item and start again if needed if (result.equals("cancel") || result.equals("council") || result.equals("Council") || result.equals("cancer") || result.equals("pencil")) { mOutingManager.speak("item cancelled"); setCurrentSearch(brandSearch, result); mBin = null; mLitter = null; return null; } for (LocalEntity menuItem : menuSearch.getSearchObjects()) { if (menuItem.getSearchTerms().contains(result)) { setCurrentSearchByString(menuItem.getName()); return null; } } if (!Search.getCurrentSearch().getName().equals("menu")) { toastText = "I haven't heard of " + result + ". Should I log it as other?"; // log current item as 'other' and record the result yesNoSearch.setActive(true); yesNoSearch.setResponse(toastText); yesNoSearch.setPotentialOtherField(result); if (Search.getCurrentSearch().equals(brandSearch)) { mActionHandler.getCurrentAction().setActionType(Action.Type.LOG_OTHER_BRAND); } if (Search.getCurrentSearch().equals(typeSearch)) { mActionHandler.getCurrentAction().setActionType(Action.Type.LOG_OTHER_LITTER_TYPE); } if (Search.getCurrentSearch().equals(binSearch)) { mActionHandler.getCurrentAction().setActionType(Action.Type.LOG_OTHER_BIN_TYPE); } Log.d(TAG, "result at other: " + result); Log.d(TAG, "yesnosearch potentialotherfield set to " + yesNoSearch.getPotentialOtherField()); Log.d(TAG, "currentSearch at unexpected result = " + Search.getCurrentSearch().getName()); setCurrentSearch(yesNoSearch, ""); return toastText; } else { setCurrentSearch(brandSearch, result); return null; } }
public void checkForLitterBrand() { mActionHandler.getCurrentAction().setActionType(Action.Type.LITTER_BRAND_SEARCH); setCurrentSearch(yesNoSearch, ""); yesNoSearch.setResponse(mContext.getString(R.string.confirm_log_litter_brand_caption)); yesNoSearch.setYesAction(Action.Type.LITTER_BRAND_SEARCH); // If an 'other' item is being processed, then set no action to Log other type, // Otherwise log regular type if (yesNoSearch.getPotentialOtherField() != null) { yesNoSearch.setNoAction(Action.Type.LOG_OTHER_LITTER_TYPE); } else { yesNoSearch.setNoAction(Action.Type.LOG_LITTER_TYPE); } }