package com.money.manager.ex.common; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.text.TextUtils; import info.javaperformance.money.Money; import info.javaperformance.money.MoneyFactory; /** * Helper for calculator (numeric input). */ public final class Calculator { /* Static / Factory methods. */ public static Calculator forActivity(Activity activity) { Calculator calculator = new Calculator(activity); return calculator; } public static Calculator forFragment(Fragment fragment) { Calculator calculator = new Calculator(fragment.getActivity()); calculator.fragment = fragment; return calculator; } /** * Extracts the entered amount in onActivityResult. * @return Amount entered */ public static Money getAmountFromResult(Intent data) { if (data == null) return null; String stringExtra = data.getStringExtra(CalculatorActivity.RESULT_AMOUNT); if (TextUtils.isEmpty(stringExtra)) return null; return MoneyFactory.fromString(stringExtra); } /* Instance */ private Calculator(Activity activity) { this.activity = activity; this.intent = new Intent(this.activity, CalculatorActivity.class); } private Activity activity; private Fragment fragment; private Intent intent; public void show(int requestCode) { if (fragment == null) { activity.startActivityForResult(intent, requestCode); } else { fragment.startActivityForResult(intent, requestCode); } } public Calculator currency(int currencyId) { intent.putExtra(CalculatorActivity.EXTRA_CURRENCY_ID, currencyId); return this; } public Calculator amount(Money amount) { intent.putExtra(CalculatorActivity.EXTRA_AMOUNT, amount.toString()); return this; } public Calculator roundToCurrency(boolean value) { intent.putExtra(CalculatorActivity.EXTRA_ROUND_TO_CURRENCY, value); return this; } }