package info.blockchain.wallet.ui;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Locale;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.content.SharedPreferences;
import com.google.bitcoin.core.Utils;
import piuk.blockchain.android.util.WalletUtils;
public class BlockchainUtil {
private static BlockchainUtil instance = null;
public static int BLOCKCHAIN_RED = 0xFFd17d7d;
public static int BLOCKCHAIN_GREEN = 0xFF6daf50;
public static String ZEROBLOCK_PACKAGE = "com.phlint.android.zeroblock";
public static String MERCHANT_DIRECTORY_PACKAGE = "info.blockchain.merchant.directory";
// public static String BLOCKCHAIN_DONATE = "1JArS6jzE3AJ9sZ3aFij1BmTcpFGgN86hA";
public static String BLOCKCHAIN_DONATE = "Add New Address";
public static String BLOCKCHAIN_DONATE2 = "Address Book Empty";
private static double BTC_RATE = 635.0;
private static String strFiatCode = null;
private static String strFiatSymbol = null;
private static Context context = null;
private BlockchainUtil() { ; }
public static BlockchainUtil getInstance(Context ctx) {
context = ctx;
if(instance == null) {
instance = new BlockchainUtil();
}
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
strFiatCode = prefs.getString("ccurrency", "USD");
if(strFiatCode.length() != 3) {
strFiatCode = "USD";
}
try {
strFiatSymbol = java.util.Currency.getInstance(strFiatCode).getSymbol(Locale.US);
}
catch(IllegalArgumentException iae) {
strFiatSymbol = strFiatCode.substring(strFiatCode.length() - 1, strFiatCode.length());
}
if(strFiatSymbol == null || strFiatSymbol.length() != 1) {
strFiatSymbol = CurrencyExchange.getInstance(context).getCurrencySymbol(strFiatCode);
if(strFiatSymbol == null || strFiatSymbol.length() != 1) {
strFiatSymbol = strFiatCode.substring(strFiatCode.length() - 1, strFiatCode.length());
}
}
BTC_RATE = CurrencyExchange.getInstance(ctx).getCurrencyPrice(strFiatCode);
return instance;
}
public static String BTC2Fiat(String btc) {
double val = 0.0;
try {
val = Double.parseDouble(btc);
}
catch(NumberFormatException nfe) {
val = 0.0;
}
DecimalFormat df = new DecimalFormat("######0.00");
return df.format(BTC2Fiat(val));
}
public static String Fiat2BTC(String fiat) {
double val = 0.0;
try {
val = Double.parseDouble(fiat);
}
catch(NumberFormatException nfe) {
val = 0.0;
}
DecimalFormat df = new DecimalFormat("####0.0000");
return df.format(Fiat2BTC(val));
}
public static double BTC2Fiat(double btc) {
return btc * BTC_RATE;
}
public static double Fiat2BTC(double fiat) {
return fiat / BTC_RATE;
}
public static void updateRate(Context context, String currency) {
BTC_RATE = CurrencyExchange.getInstance(context).getCurrencyPrice(currency);
}
public static String formatBitcoin(BigInteger value) {
DecimalFormat df = new DecimalFormat("####0.0000");
return df.format(Double.parseDouble(WalletUtils.formatValue(value)));
}
public static String formatAddress(String address, int charactersToDisplay) {
if (address.length() > charactersToDisplay+1)
return address.substring(0,charactersToDisplay) + "...";
else
return address;
}
public static BigInteger bitcoinAmountStringToBigInteger(String amount) {
if (isValidAmount(amount))
return Utils.toNanoCoins(amount);
else
return null;
}
private static boolean isValidAmount(String amount) {
try {
if (amount.length() > 0) {
final BigInteger nanoCoins = Utils.toNanoCoins(amount);
if (nanoCoins.signum() >= 0)
return true;
}
} catch (final Exception x) {
;
}
return false;
}
public String getFiatCode() {
return strFiatCode;
}
public String getFiatSymbol() {
return strFiatSymbol;
}
}