package com.mygeopay.wallet.ui;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
import com.mygeopay.core.wallet.Wallet;
import com.mygeopay.wallet.Constants;
import com.mygeopay.wallet.R;
import com.mygeopay.wallet.util.Fonts;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Generates and shows a new passphrase
*/
public class SeedFragment extends Fragment {
private static final Logger log = LoggerFactory.getLogger(SeedFragment.class);
private WelcomeFragment.Listener mListener;
private boolean hasExtraEntropy = false;
private TextView mnemonicView;
public SeedFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_seed, container, false);
TextView seedFontIcon = (TextView) view.findViewById(R.id.seed_icon);
Fonts.setTypeface(seedFontIcon, Fonts.Font.COINOMI_FONT_ICONS);
final Button buttonNext = (Button) view.findViewById(R.id.button_next);
buttonNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
log.info("Clicked restore wallet");
if (mListener != null) {
mListener.onSeedCreated(mnemonicView.getText().toString());
}
}
});
buttonNext.setEnabled(false);
mnemonicView = (TextView) view.findViewById(R.id.seed);
generateNewMnemonic();
// Touch the seed icon to generate extra long seed
seedFontIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hasExtraEntropy = !hasExtraEntropy; // toggle
generateNewMnemonic();
if (hasExtraEntropy) {
Toast.makeText(getActivity(), R.string.extra_entropy, Toast.LENGTH_SHORT).show();
}
}
});
final CheckBox backedUpSeed = (CheckBox) view.findViewById(R.id.backed_up_seed);
backedUpSeed.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
buttonNext.setEnabled(isChecked);
}
});
View.OnClickListener generateNewSeedListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
generateNewMnemonic();
}
};
mnemonicView.setOnClickListener(generateNewSeedListener);
view.findViewById(R.id.seed_regenerate_title).setOnClickListener(generateNewSeedListener);
return view;
}
private void generateNewMnemonic() {
log.info("Clicked generate a new mnemonic");
String mnemonic;
if (hasExtraEntropy) {
mnemonic = Wallet.generateMnemonicString(Constants.SEED_ENTROPY_EXTRA);
} else {
mnemonic = Wallet.generateMnemonicString(Constants.SEED_ENTROPY_DEFAULT);
}
mnemonicView.setText(mnemonic);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (WelcomeFragment.Listener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement WelcomeFragment.OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
}