@Override public void onViewCreated(final View view, final Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); amountCalculatorLink.setExchangeDirection(config.getLastExchangeDirection()); amountCalculatorLink.requestFocus(); }
@Override public void onViewCreated(final View view, final Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // don't call in onCreate() because ActionBarSherlock invokes onCreateOptionsMenu() too early setHasOptionsMenu(true); amountCalculatorLink.setExchangeDirection(config.getLastExchangeDirection()); amountCalculatorLink.requestFocus(); }
private void updateView() { sendConfirmButton.setEnabled(everythingValid()); if (address == null) { setVisible(sendToAddressView); setGone(sendToStaticAddressView); setVisible(scanQrCodeButton); setGone(eraseAddressButton); if (actionMode != null) { actionMode.finish(); actionMode = null; } } else { setGone(sendToAddressView); setVisible(sendToStaticAddressView); sendToStaticAddressView.setAddressAndLabel(address); setGone(scanQrCodeButton); setVisible(eraseAddressButton); } if (sendCoinAmountView.resetType(sendAmountType)) { amountCalculatorLink.setExchangeRate(getCurrentRate()); } startOrStopMarketRatePolling(); // enable actions scanQrCodeButton.setEnabled(state == State.INPUT); eraseAddressButton.setEnabled(state == State.INPUT); }
@Override public void onLoadFinished(final Loader<Cursor> loader, final Cursor data) { if (data != null && data.getCount() > 0) { data.moveToFirst(); final ExchangeRate exchangeRate = ExchangeRatesProvider.getExchangeRate(data); amountCalculatorLink.setExchangeRate(exchangeRate); updateView(); } }
@Override public void onPause() { loaderManager.destroyLoader(ID_RATE_LOADER); Nfc.unpublish(nfcManager, activity); amountCalculatorLink.setListener(null); super.onPause(); }
/** Decide if should show errors in the UI. */ private boolean shouldShowErrors(boolean isTyping, Value amount) { if (amount != null && !amount.isZero() && !isAmountWithinLimits(amount)) { return true; } if (isTyping) return false; if (amountCalculatorLink.isEmpty()) return false; if (amount != null && amount.isZero()) return false; return true; }
private byte[] determinePaymentRequest(final boolean includeBluetoothMac) { final Address address = application.determineSelectedAddress(); final BigInteger amount = amountCalculatorLink.getAmount(); return PaymentProtocol.createPaymentRequest( amount, address, null, includeBluetoothMac && bluetoothMac != null ? "bt:" + bluetoothMac : null) .toByteArray(); }
private byte[] determinePaymentRequest(final boolean includeBluetoothMac) { final ECKey key = (ECKey) addressView.getSelectedItem(); final Address address = key.toAddress(Constants.NETWORK_PARAMETERS); return PaymentProtocol.createPaymentRequest( amountCalculatorLink.getAmount(), address, null, includeBluetoothMac && bluetoothMac != null ? "bt:" + bluetoothMac : null) .toByteArray(); }
private String determineBitcoinRequestStr(final boolean includeBluetoothMac) { final Address address = application.determineSelectedAddress(); final BigInteger amount = amountCalculatorLink.getAmount(); final StringBuilder uri = new StringBuilder(BitcoinURI.convertToBitcoinURI(address, amount, null, null)); if (includeBluetoothMac && bluetoothMac != null) { uri.append(amount == null ? '?' : '&'); uri.append(Bluetooth.MAC_URI_PARAM).append('=').append(bluetoothMac); } return uri.toString(); }
private void reset() { clearAddress(true); sendToAddressView.setVisibility(View.VISIBLE); sendToStaticAddressView.setVisibility(View.GONE); amountCalculatorLink.setPrimaryAmount(null); sendAmount = null; state = State.INPUT; addressError.setVisibility(View.GONE); amountError.setVisibility(View.GONE); amountWarning.setVisibility(View.GONE); updateView(); }
private void validateAmount(boolean isTyping) { Value amountParsed = amountCalculatorLink.getPrimaryAmount(); if (isAmountValid(amountParsed)) { sendAmount = amountParsed; amountError.setVisibility(View.GONE); // Show warning that fees apply when entered the full amount inside the pocket if (canCompare(sendAmount, lastBalance) && sendAmount.compareTo(lastBalance) == 0) { amountWarning.setText(R.string.amount_warn_fees_apply); amountWarning.setVisibility(View.VISIBLE); } else { amountWarning.setVisibility(View.GONE); } } else { amountWarning.setVisibility(View.GONE); // ignore printing errors for null and zero amounts if (shouldShowErrors(isTyping, amountParsed)) { sendAmount = null; if (amountParsed == null) { amountError.setText(R.string.amount_error); } else if (amountParsed.isNegative()) { amountError.setText(R.string.amount_error_negative); } else if (!isAmountWithinLimits(amountParsed)) { String message = getString(R.string.error_generic); // If the amount is dust or lower than the deposit limit if (isAmountTooSmall(amountParsed)) { Value minAmount = getLowestAmount(amountParsed.type); message = getString(R.string.amount_error_too_small, minAmount.toFriendlyString()); } else { // If we have the amount if (canCompare(lastBalance, amountParsed) && amountParsed.compareTo(lastBalance) > 0) { message = getString(R.string.amount_error_not_enough_money, lastBalance.toFriendlyString()); } if (marketInfo != null && canCompare(marketInfo.limit, amountParsed) && amountParsed.compareTo(marketInfo.limit) > 0) { message = getString(R.string.trade_error_max_limit, marketInfo.limit.toFriendlyString()); } } amountError.setText(message); } else { // Should not happen, but show a generic error amountError.setText(R.string.amount_error); } amountError.setVisibility(View.VISIBLE); } else { amountError.setVisibility(View.GONE); } } updateView(); }
private void setAmountForEmptyWallet() { updateBalance(); if (state != State.INPUT || pocket == null || lastBalance == null) return; if (lastBalance.isZero()) { String message = getResources().getString(R.string.amount_error_not_enough_money_plain); Toast.makeText(getActivity(), message, Toast.LENGTH_LONG).show(); } else { amountCalculatorLink.setPrimaryAmount(lastBalance); validateAmount(); } }
private String determineBitcoinRequestStr(final boolean includeBluetoothMac) { final ECKey key = (ECKey) addressView.getSelectedItem(); final Address address = key.toAddress(Constants.NETWORK_PARAMETERS); final BigInteger amount = amountCalculatorLink.getAmount(); final StringBuilder uri = new StringBuilder(BitcoinURI.convertToBitcoinURI(address, amount, null, null)); if (includeBluetoothMac && bluetoothMac != null) { uri.append(amount == null ? '?' : '&'); uri.append(Bluetooth.MAC_URI_PARAM).append('=').append(bluetoothMac); } return uri.toString(); }
private void requestFocusFirst() { if (!isOutputsValid()) { sendToAddressView.requestFocus(); } else if (!isAmountValid()) { amountCalculatorLink.requestFocus(); // FIXME causes problems in older Androids // Keyboard.focusAndShowKeyboard(sendAmountView, getActivity()); } else if (everythingValid()) { sendConfirmButton.requestFocus(); } else { log.warn("unclear focus"); } }
@Override public void onPause() { if (pocket != null) pocket.removeEventListener(transactionChangeListener); transactionChangeListener.removeCallbacks(); resolver.unregisterContentObserver(addressBookObserver); amountCalculatorLink.setListener(null); stopPolling(); super.onPause(); }
public void reset() { // No-op if the view is not created if (getView() == null) return; clearAddress(true); hideTxMessage(); sendToAddressView.setVisibility(View.VISIBLE); sendToStaticAddressView.setVisibility(View.GONE); amountCalculatorLink.setPrimaryAmount(null); sendAmount = null; state = State.INPUT; addressError.setVisibility(View.GONE); amountError.setVisibility(View.GONE); amountWarning.setVisibility(View.GONE); updateView(); }
@Override public void onResume() { super.onResume(); amountCalculatorLink.setListener(amountsListener); resolver.registerContentObserver( AddressBookProvider.contentUri(getActivity().getPackageName()), true, addressBookObserver); if (pocket != null) { pocket.addEventListener(transactionChangeListener, Threading.SAME_THREAD); } updateBalance(); updateView(); }
@Override public void onResume() { super.onResume(); amountCalculatorLink.setListener( new CurrencyAmountView.Listener() { @Override public void changed() { updateView(); updateShareIntent(); } @Override public void focusChanged(final boolean hasFocus) {} }); addressView.setOnItemSelectedListener( new OnItemSelectedListener() { @Override public void onItemSelected( final AdapterView<?> parent, final View view, final int position, final long id) { // ignore layout operations if (view == null) return; updateView(); // updateShareIntent(); } @Override public void onNothingSelected(final AdapterView<?> parent) {} }); loaderManager.initLoader(ID_RATE_LOADER, null, rateLoaderCallbacks); if (ENABLE_BLUETOOTH_LISTENING && bluetoothAdapter != null && bluetoothAdapter.isEnabled() && acceptBluetoothPaymentView.isChecked()) startBluetoothListening(); updateView(); }
private void updateView() { if (!isResumed()) return; final String bitcoinRequest = determineBitcoinRequestStr(true); final byte[] paymentRequest = determinePaymentRequest(true); // update qr-code final int size = (int) (256 * getResources().getDisplayMetrics().density); final String qrContent; if (config.getQrPaymentRequestEnabled()) qrContent = "RDDCOIN:-" + Qr.encodeBinary(paymentRequest); else qrContent = bitcoinRequest; qrCodeBitmap = Qr.bitmap(qrContent, size); qrView.setImageBitmap(qrCodeBitmap); // update nfc ndef message final boolean nfcSuccess = Nfc.publishMimeObject( nfcManager, activity, com.google.reddcoin.protocols.payments.PaymentProtocol.MIMETYPE_PAYMENTREQUEST, paymentRequest, false); // update initiate request message final SpannableStringBuilder initiateText = new SpannableStringBuilder(getString(R.string.request_coins_fragment_initiate_request_qr)); if (nfcSuccess) initiateText .append(' ') .append(getString(R.string.request_coins_fragment_initiate_request_nfc)); initiateRequestView.setText(initiateText); // focus linking final int activeAmountViewId = amountCalculatorLink.activeTextView().getId(); acceptBluetoothPaymentView.setNextFocusUpId(activeAmountViewId); }
@Override public void onResume() { super.onResume(); amountCalculatorLink.setListener( new CurrencyAmountView.Listener() { @Override public void changed() { updateView(); } @Override public void focusChanged(final boolean hasFocus) {} }); loaderManager.initLoader(ID_RATE_LOADER, null, rateLoaderCallbacks); if (ENABLE_BLUETOOTH_LISTENING && bluetoothAdapter != null && bluetoothAdapter.isEnabled() && acceptBluetoothPaymentView.isChecked()) startBluetoothListening(); updateView(); }
@Override public void onDestroyView() { super.onDestroyView(); config.setLastExchangeDirection(amountCalculatorLink.getExchangeDirection()); }
private void onLocalExchangeRatesUpdate(HashMap<String, ExchangeRate> rates) { localRates = rates; if (state == State.INPUT) { amountCalculatorLink.setExchangeRate(getCurrentRate()); } }
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_send, container, false); sendToAddressView = (AutoCompleteTextView) view.findViewById(R.id.send_to_address); sendToAddressViewAdapter = new ReceivingAddressViewAdapter(application); sendToAddressView.setAdapter(sendToAddressViewAdapter); sendToAddressView.setOnFocusChangeListener(receivingAddressListener); sendToAddressView.addTextChangedListener(receivingAddressListener); sendToStaticAddressView = (AddressView) view.findViewById(R.id.send_to_address_static); sendToStaticAddressView.setOnClickListener(addressOnClickListener); sendCoinAmountView = (AmountEditView) view.findViewById(R.id.send_coin_amount); sendCoinAmountView.resetType(sendAmountType); if (sendAmount != null) sendCoinAmountView.setAmount(sendAmount, false); AmountEditView sendLocalAmountView = (AmountEditView) view.findViewById(R.id.send_local_amount); sendLocalAmountView.setFormat(FiatType.FRIENDLY_FORMAT); amountCalculatorLink = new CurrencyCalculatorLink(sendCoinAmountView, sendLocalAmountView); amountCalculatorLink.setExchangeDirection(config.getLastExchangeDirection()); amountCalculatorLink.setExchangeRate(getCurrentRate()); addressError = (TextView) view.findViewById(R.id.address_error_message); addressError.setVisibility(View.GONE); amountError = (TextView) view.findViewById(R.id.amount_error_message); amountError.setVisibility(View.GONE); amountWarning = (TextView) view.findViewById(R.id.amount_warning_message); amountWarning.setVisibility(View.GONE); scanQrCodeButton = (ImageButton) view.findViewById(R.id.scan_qr_code); scanQrCodeButton.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { handleScan(); } }); eraseAddressButton = (ImageButton) view.findViewById(R.id.erase_address); eraseAddressButton.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { clearAddress(true); updateView(); } }); sendConfirmButton = (Button) view.findViewById(R.id.send_confirm); sendConfirmButton.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { validateAddress(); validateAmount(); if (everythingValid()) handleSendConfirm(); else requestFocusFirst(); } }); return view; }