package com.greenaddress.greenbits.ui.preferences; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import android.text.InputType; import android.widget.Toast; import com.greenaddress.greenbits.GaService; import com.greenaddress.greenbits.ui.R; import com.greenaddress.greenbits.ui.UI; import org.bitcoinj.core.Coin; public class ExchangerPreferenceFragment extends GAPreferenceFragment implements Preference.OnPreferenceChangeListener { private EditTextPreference mBuyCommissionPerc; private EditTextPreference mBuyCommissionFixed; private EditTextPreference mSellCommissionPerc; private EditTextPreference mSellCommissionFixed; private EditTextPreference mFiatBtns; @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference_exchanger); setHasOptionsMenu(true); final String btcUnit = mService.getBitcoinUnit(); final String buyFixed = mService.cfg().getString("buy_commission_fixed_coin", ""); final String buyFixedCurrentFormat; if (!buyFixed.isEmpty()) { final Coin coinBuy = Coin.valueOf(Long.valueOf(buyFixed)); buyFixedCurrentFormat = UI.formatCoinValue(mService, coinBuy); } else buyFixedCurrentFormat = ""; final String sellFixed = mService.cfg().getString("sell_commission_fixed_coin", ""); final String sellFixedCurrentFormat; if (!sellFixed.isEmpty()) { final Coin coinSell = Coin.valueOf(Long.valueOf(sellFixed)); sellFixedCurrentFormat = UI.formatCoinValue(mService, coinSell); } else sellFixedCurrentFormat = ""; mBuyCommissionPerc = find("buy_commission_percentage"); mBuyCommissionPerc.setOnPreferenceChangeListener(this); mSellCommissionPerc = find("sell_commission_percentage"); mSellCommissionPerc.setOnPreferenceChangeListener(this); // element used only for edit mBuyCommissionFixed = find("buy_commission_fixed"); mBuyCommissionFixed.setText(buyFixedCurrentFormat); mBuyCommissionFixed.setOnPreferenceChangeListener(this); // element used only for edit mSellCommissionFixed = find("sell_commission_fixed"); mSellCommissionFixed.setText(sellFixedCurrentFormat); mSellCommissionFixed.setOnPreferenceChangeListener(this); mFiatBtns = find("exchanger_fiat_btns"); mFiatBtns.getEditText().setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); mFiatBtns.setOnPreferenceChangeListener(this); if (GaService.IS_ELEMENTS) { mBuyCommissionFixed.setTitle(R.string.buy_commission_fixed_elements); mSellCommissionFixed.setTitle(R.string.sell_commission_fixed_elements); mBuyCommissionPerc.setTitle(R.string.buy_commission_percentage_elements); mSellCommissionPerc.setTitle(R.string.sell_commission_percentage_elements); } mBuyCommissionFixed.setSummary(String.format("%s %s", getString(R.string.fixedCommissionDesc), btcUnit)); mSellCommissionFixed.setSummary(String.format("%s %s", getString(R.string.fixedCommissionDesc), btcUnit)); } private boolean commissionPerc(final String value) { if (value.isEmpty()) return true; final float floatValue = Float.valueOf(value); if (floatValue < 0 || floatValue > 100) { UI.popup(getActivity(), R.string.enterValidValue, android.R.string.ok) .content(R.string.enterValidPerc).build().show(); return false; } return true; } private boolean commissionBuyFixed(final String value) { if (value.isEmpty()) { mService.cfg().edit().putString("buy_commission_fixed_coin", "").apply(); return true; } final Coin coin = UI.parseCoinValue(mService, value); mService.cfg().edit().putString("buy_commission_fixed_coin", coin.toString()).apply(); mBuyCommissionFixed.setText(value); return false; } private boolean commissionSellFixed(final String value) { if (value.isEmpty()) { mService.cfg().edit().putString("sell_commission_fixed_coin", "").apply(); return true; } final Coin coin = UI.parseCoinValue(mService, value); mService.cfg().edit().putString("sell_commission_fixed_coin", coin.toString()).apply(); mSellCommissionFixed.setText(value); return false; } @Override public boolean onPreferenceChange(final Preference preference, final Object newValue) { if (preference == mBuyCommissionPerc || preference == mSellCommissionPerc) { return commissionPerc((String) newValue); } else if (preference == mBuyCommissionFixed) { return commissionBuyFixed((String) newValue); } else if (preference == mSellCommissionFixed) { return commissionSellFixed((String) newValue); } else if (preference == mFiatBtns) { final String strValue = (String) newValue; try { final String[] btnsValueArray = strValue.split(" "); for (final String value : btnsValueArray) { UI.parseCoinValue(mService, value); } return true; } catch (final Exception e) { e.printStackTrace(); UI.toast(getActivity(), "Invalid format", Toast.LENGTH_SHORT); } } return false; } }