Android Open Source - My-Wallet-Android Request Coins Fragment






From Project

Back to project page My-Wallet-Android.

License

The source code is released under:

GNU General Public License

If you think the Android project My-Wallet-Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2011-2012 the original author or authors.
 *//  w w w.  ja  v a  2  s. c  o m
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package piuk.blockchain.android.ui;

import java.math.BigInteger;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.text.ClipboardManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.google.bitcoin.core.Address;
import com.google.bitcoin.uri.BitcoinURI;

import piuk.blockchain.R;
import piuk.blockchain.android.Constants;
import piuk.blockchain.android.WalletApplication;
import piuk.blockchain.android.ui.CurrencyAmountView.Listener;
import piuk.blockchain.android.util.ActionBarFragment;
import piuk.blockchain.android.util.NfcTools;
import piuk.blockchain.android.util.QrDialog;
import piuk.blockchain.android.util.WalletUtils;

/**
 * @author Andreas Schildbach
 */
public final class RequestCoinsFragment extends Fragment
{
  private WalletApplication application;
  private Object nfcManager;

  private ImageView qrView;
  private Bitmap qrCodeBitmap;
  private CurrencyAmountView amountView;
  private View nfcEnabledView;

  @Override
  public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState)
  {
    nfcManager = getActivity().getSystemService(Context.NFC_SERVICE);

    application = (WalletApplication) getActivity().getApplication();

    final View view = inflater.inflate(R.layout.request_coins_fragment, container);

    qrView = (ImageView) view.findViewById(R.id.request_coins_qr);
    qrView.setOnClickListener(new OnClickListener()
    {
      public void onClick(final View v)
      {
        new QrDialog(getActivity(), qrCodeBitmap).show();
      }
    });

    amountView = (CurrencyAmountView) view.findViewById(R.id.request_coins_amount);
    amountView.setListener(new Listener()
    {
      public void changed()
      {
        updateView();
      }

      public void done()
      {
      }
    });
    amountView.setContextButton(R.drawable.ic_input_calculator, new OnClickListener()
    {
      public void onClick(final View v)
      {
        final FragmentTransaction ft = getFragmentManager().beginTransaction();
        final Fragment prev = getFragmentManager().findFragmentByTag(AmountCalculatorFragment.FRAGMENT_TAG);
        if (prev != null)
          ft.remove(prev);
        ft.addToBackStack(null);
        final DialogFragment newFragment = new AmountCalculatorFragment(new AmountCalculatorFragment.Listener()
        {
          public void use(final BigInteger amount)
          {
            amountView.setAmount(amount);
          }
        });
        newFragment.show(ft, AmountCalculatorFragment.FRAGMENT_TAG);
      }
    }); 

    nfcEnabledView = view.findViewById(R.id.request_coins_fragment_nfc_enabled);

    return view;
  }

  @Override
  public void onAttach(final Activity activity)
  {
    super.onAttach(activity);

    final ActionBarFragment actionBar = ((AbstractWalletActivity) activity).getActionBar();

    actionBar.addButton(R.drawable.ic_action_share).setOnClickListener(new OnClickListener()
    {
      public void onClick(final View v)
      {
        startActivity(Intent.createChooser(
            new Intent(Intent.ACTION_SEND).putExtra(Intent.EXTRA_TEXT, determineAddressStr()).setType("text/plain"), getActivity()
                .getString(R.string.request_coins_share_dialog_title)));
      }
    }); 

    actionBar.addButton(R.drawable.icon_piggy_bank).setOnClickListener(new OnClickListener()
    {
      public void onClick(final View v)
      {
        
        WalletAddressesActivity.start(getActivity(), true);

        /*
        final ClipboardManager clipboardManager = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
        final String addressStr = determineAddressStr();
        
        if (addressStr == null)
          return;
        
        clipboardManager.setText(addressStr);
        ((AbstractWalletActivity) getActivity()).toast(R.string.request_coins_clipboard_msg);

        System.out.println("bitcoin request uri: " + addressStr + (Constants.TEST ? " [testnet]" : ""));*/
      }
    });
  }

  @Override
  public void onResume()
  {
    super.onResume();

    updateView();
  }

  @Override
  public void onPause()
  {
    super.onPause();

    if (nfcManager != null)
      NfcTools.unpublish(nfcManager, getActivity());
  }

  private void updateView()
  {
    final String addressStr = determineAddressStr();

    if (addressStr == null)
      return;
  
    if (qrCodeBitmap != null)
      qrCodeBitmap.recycle();

    final int size = (int) (256 * getResources().getDisplayMetrics().density);
    qrCodeBitmap = WalletUtils.getQRCodeBitmap(addressStr, size);
    qrView.setImageBitmap(qrCodeBitmap);

    if (nfcManager != null)
    {
      final boolean success = NfcTools.publishUri(nfcManager, getActivity(), addressStr);
      if (success)
        nfcEnabledView.setVisibility(View.VISIBLE);
    }
  }

  private String determineAddressStr()
  {
    final Address address = application.determineSelectedAddress();
    
    if (address == null)
      return null;
    
    final BigInteger amount = amountView.getAmount();

    return BitcoinURI.convertToBitcoinURI(address, amount, null, null).toString();
  }
}




Java Source Code List

piuk.BitcoinAddress.java
piuk.BitcoinScript.java
piuk.Hash.java
piuk.MyBlockChain.java
piuk.MyRemoteWallet.java
piuk.MyTransactionConfidence.java
piuk.MyTransactionInput.java
piuk.MyTransactionOutPoint.java
piuk.MyTransactionOutput.java
piuk.MyTransaction.java
piuk.MyWallet.java
piuk.blockchain.android.AddressBookProvider.java
piuk.blockchain.android.BlockchainService.java
piuk.blockchain.android.Constants.java
piuk.blockchain.android.DetermineFirstSeenThread.java
piuk.blockchain.android.ExchangeRatesProvider.java
piuk.blockchain.android.WalletApplication.java
piuk.blockchain.android.WalletBalanceWidgetProvider.java
piuk.blockchain.android.ui.AbstractWalletActivity.java
piuk.blockchain.android.ui.AmountCalculatorFragment.java
piuk.blockchain.android.ui.CurrencyAmountView.java
piuk.blockchain.android.ui.CurrencyCodeDrawable.java
piuk.blockchain.android.ui.EditAddressBookEntryFragment.java
piuk.blockchain.android.ui.ExchangeRatesFragment.java
piuk.blockchain.android.ui.NewAccountFragment.java
piuk.blockchain.android.ui.PairWalletActivity.java
piuk.blockchain.android.ui.PreferencesActivity.java
piuk.blockchain.android.ui.RequestCoinsActivity.java
piuk.blockchain.android.ui.RequestCoinsFragment.java
piuk.blockchain.android.ui.SecondPasswordFragment.java
piuk.blockchain.android.ui.SendCoinsActivity.java
piuk.blockchain.android.ui.SendCoinsFragment.java
piuk.blockchain.android.ui.SendingAddressesFragment.java
piuk.blockchain.android.ui.TransactionActivity.java
piuk.blockchain.android.ui.TransactionFragment.java
piuk.blockchain.android.ui.WalletActivity.java
piuk.blockchain.android.ui.WalletAddressesFragment.java
piuk.blockchain.android.ui.WalletBalanceFragment.java
piuk.blockchain.android.ui.WalletTransactionsFragment.java
piuk.blockchain.android.ui.WelcomeFragment.java
piuk.blockchain.android.util.ActionBarFragment.java
piuk.blockchain.android.util.Base43.java
piuk.blockchain.android.util.CircularProgressView.java
piuk.blockchain.android.util.ErrorReporter.java
piuk.blockchain.android.util.IOUtils.java
piuk.blockchain.android.util.Iso8601Format.java
piuk.blockchain.android.util.NfcTools.java
piuk.blockchain.android.util.QrDialog.java
piuk.blockchain.android.util.ViewPagerTabs.java
piuk.blockchain.android.util.WalletUtils.java