@Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); Log.i(TAG, "intent=" + intent); if (intent == null) { return; } int widgetId = intent.getIntExtra("widgetId", -1); if (widgetId == -1) { return; } entity = queryEntityById(widgetId); if (entity != null) {} if (entity == null) { return; } if (mTokenizer == null) { mTokenizer = new CalculatorExpressionTokenizer(this); } if (mSymbols == null) { mSymbols = new Symbols(); } Uri data = intent.getData(); if (data != null) { int index = Integer.parseInt(data.getSchemeSpecificPart()); if (isEvalClick) { if (index <= BUTTON_INDEX_9) { entity.setFormula(""); } isEvalClick = false; } checkInput(index); if (index == BUTTON_INDEX_EQUAL) return; } if (entity.getView() != null) { int res = evaluate(entity.getFormula()); entity.getView().setTextViewText(R.id.widget_formula, entity.getFormula()); if (res == RESULT) { entity.getView().setTextViewText(R.id.widget_result, entity.getResult()); } else { entity.getView().setTextViewText(R.id.widget_result, ""); } AppWidgetManager.getInstance(this).updateAppWidget(widgetId, entity.getView()); } }
public void checkInput(int buttonId) { switch (buttonId) { case BUTTON_INDEX_0: // 0 zeroClick(); break; case BUTTON_INDEX_POINT: // . pointClick(); break; case BUTTON_INDEX_EQUAL: // = evaluateClick(); break; case BUTTON_INDEX_DIV: // / case BUTTON_INDEX_MUL: // * case BUTTON_INDEX_ADD: // + symbloClick(buttonId); break; case BUTTON_INDEX_SUB: // - subClick(); break; case BUTTON_INDEX_DEL: // DEL deleteClick(); break; case BUTTON_INDEX_CLEAR: // CLR entity.setFormula(""); break; default: entity.setFormula(entity.getFormula() + buttonValues[buttonId]); break; } }
public void evaluateClick() { if (entity.getFormula().equals("")) return; isEvalClick = true; int res = evaluate(entity.getFormula()); if (res == NAN) { entity.setFormula(""); entity.getView().setTextViewText(R.id.widget_result, getText(R.string.error_nan)); } else if (res == RESULT) { entity.setFormula(entity.getResult()); entity.getView().setTextViewText(R.id.widget_formula, entity.getResult()); } else { entity.setFormula(""); entity.getView().setTextViewText(R.id.widget_formula, getText(R.string.error_syntax)); entity.getView().setTextViewText(R.id.widget_result, ""); } AppWidgetManager.getInstance(this).updateAppWidget(entity.getViewId(), entity.getView()); }
public void symbloClick(int buttonId) { while (entity.getFormula().length() > 0 && ".+−÷×".indexOf(entity.getFormula().charAt(entity.getFormula().length() - 1)) != -1) { entity.setFormula(entity.getFormula().substring(0, entity.getFormula().length() - 1)); } if (entity.getFormula().length() > 0) { entity.setFormula(entity.getFormula() + buttonValues[buttonId]); } }
public void subClick() { while (entity.getFormula().length() > 0 && ".+−".indexOf(entity.getFormula().charAt(entity.getFormula().length() - 1)) != -1) { entity.setFormula(entity.getFormula().substring(0, entity.getFormula().length() - 1)); } entity.setFormula(entity.getFormula() + "-"); }
public void pointClick() { if (entity.getFormula().equalsIgnoreCase("")) { entity.setFormula("0."); } else { int pointLastIndex = entity.getFormula().lastIndexOf("."); int subLastIndex = entity.getFormula().lastIndexOf("−"); // - int addLastIndex = entity.getFormula().lastIndexOf("+"); // + int divLastIndex = entity.getFormula().lastIndexOf("÷"); // ÷ int mulLastIndex = entity.getFormula().lastIndexOf("×"); // × int maxIndex = Math.max(divLastIndex, mulLastIndex); maxIndex = Math.max(maxIndex, addLastIndex); maxIndex = Math.max(maxIndex, subLastIndex); if (maxIndex == -1 && pointLastIndex == -1) { entity.setFormula(entity.getFormula() + "."); } if (pointLastIndex < maxIndex) { if (maxIndex == entity.getFormula().length() - 1) { entity.setFormula(entity.getFormula() + "0."); } else { entity.setFormula(entity.getFormula() + "."); } } } }
public void deleteClick() { if (entity.getFormula().length() > 0) { entity.setFormula(entity.getFormula().substring(0, entity.getFormula().length() - 1)); } }
public void zeroClick() { entity.setFormula(entity.getFormula() + "0"); }