New features

- Created PlaceholderManager for a better readability
- Added Pound (GBP) as a default currency option
This commit is contained in:
Tanguy Herbron 2018-04-19 18:10:36 +02:00
parent 749c7792ba
commit 26d3761d2c
11 changed files with 352 additions and 174 deletions

View File

@ -43,11 +43,11 @@ import com.github.mikephil.charting.highlight.Highlight;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener; import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency; import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDataChart; import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDataChart;
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDetailsList;
import com.nauk.coinfolio.DataManagers.CurrencyData.Transaction; import com.nauk.coinfolio.DataManagers.CurrencyData.Transaction;
import com.nauk.coinfolio.DataManagers.DatabaseManager; import com.nauk.coinfolio.DataManagers.DatabaseManager;
import com.nauk.coinfolio.DataManagers.ExchangeManager.BinanceManager; import com.nauk.coinfolio.DataManagers.ExchangeManager.BinanceManager;
import com.nauk.coinfolio.DataManagers.PreferencesManager; import com.nauk.coinfolio.DataManagers.PreferencesManager;
import com.nauk.coinfolio.PlaceholderManager;
import com.nauk.coinfolio.R; import com.nauk.coinfolio.R;
import java.text.DecimalFormat; import java.text.DecimalFormat;
@ -84,7 +84,6 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
private BarChart barChart; private BarChart barChart;
private PreferencesManager preferencesManager; private PreferencesManager preferencesManager;
private BinanceManager binanceManager; private BinanceManager binanceManager;
private CurrencyDetailsList currencyDetailsList;
private boolean displayLineChart; private boolean displayLineChart;
@ -142,7 +141,6 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
databaseManager = new DatabaseManager(this); databaseManager = new DatabaseManager(this);
preferencesManager = new PreferencesManager(this); preferencesManager = new PreferencesManager(this);
currencyDetailsList = new CurrencyDetailsList(this);
displayLineChart = true; displayLineChart = true;
@ -549,9 +547,9 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
date = getDate(dataChartList.get(index).getTimestamp() * 1000); date = getDate(dataChartList.get(index).getTimestamp() * 1000);
} }
volumePlaceholder = getResources().getString(R.string.volumeDollarPlaceholder, numberConformer(barChart.getData().getDataSets().get(0).getEntryForIndex(index).getY())); volumePlaceholder = PlaceholderManager.getVolumeString(numberConformer(barChart.getData().getDataSets().get(0).getEntryForIndex(index).getY()), this);
pricePlaceholder = getResources().getString(R.string.priceDollarPlaceholder, numberConformer(e.getY())); pricePlaceholder = PlaceholderManager.getPriceString(numberConformer(e.getY()), this);
timestampPlaceholder = getResources().getString(R.string.timestampPlaceholder, date); timestampPlaceholder = PlaceholderManager.getTimestampString(date, this);
((TextView) findViewById(R.id.volumeHightlight)).setText(volumePlaceholder); ((TextView) findViewById(R.id.volumeHightlight)).setText(volumePlaceholder);
findViewById(R.id.volumeHightlight).setVisibility(View.VISIBLE); findViewById(R.id.volumeHightlight).setVisibility(View.VISIBLE);
@ -726,8 +724,8 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
updateFluctuation(start, end); updateFluctuation(start, end);
((TextView) findViewById(R.id.txtViewPriceStart)).setText(getResources().getString(R.string.currencyDollarPlaceholder, numberConformer(start))); ((TextView) findViewById(R.id.txtViewPriceStart)).setText(PlaceholderManager.getValueString(numberConformer(start), this));
((TextView) findViewById(R.id.txtViewPriceNow)).setText(getResources().getString(R.string.currencyDollarPlaceholder, numberConformer(end))); ((TextView) findViewById(R.id.txtViewPriceNow)).setText(PlaceholderManager.getValueString(numberConformer(end), this));
for(int i = 1; i < dataChartList.size(); i++) for(int i = 1; i < dataChartList.size(); i++)
{ {
@ -744,9 +742,9 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
} }
} }
((TextView) findViewById(R.id.totalVolume)).setText(getResources().getString(R.string.currencyDollarPlaceholder, numberConformer(totalVolume))); ((TextView) findViewById(R.id.totalVolume)).setText(PlaceholderManager.getValueString(numberConformer(totalVolume), this));
((TextView) findViewById(R.id.highestPrice)).setText(getResources().getString(R.string.currencyDollarPlaceholder, numberConformer(highestPrice))); ((TextView) findViewById(R.id.highestPrice)).setText(PlaceholderManager.getValueString(numberConformer(highestPrice), this));
((TextView) findViewById(R.id.lowestPrice)).setText(getResources().getString(R.string.currencyDollarPlaceholder, numberConformer(lowestPrice))); ((TextView) findViewById(R.id.lowestPrice)).setText(PlaceholderManager.getValueString(numberConformer(lowestPrice), this));
} }
private void updateFluctuation(float start, float end) private void updateFluctuation(float start, float end)

View File

@ -73,7 +73,6 @@ import java.util.Locale;
public class HomeActivity extends AppCompatActivity { public class HomeActivity extends AppCompatActivity {
private BottomNavigationView bottomNavigationView; private BottomNavigationView bottomNavigationView;
private ViewPager viewPager; private ViewPager viewPager;

View File

@ -50,6 +50,7 @@ public class MarketCapitalization extends Fragment {
private HashMap<String, Integer> dominantCurrenciesColors; private HashMap<String, Integer> dominantCurrenciesColors;
private SwipeRefreshLayout refreshLayout; private SwipeRefreshLayout refreshLayout;
private long lastTimestamp; private long lastTimestamp;
private String defaultCurrency;
private View view; private View view;
@ -68,12 +69,13 @@ public class MarketCapitalization extends Fragment {
new SwipeRefreshLayout.OnRefreshListener() { new SwipeRefreshLayout.OnRefreshListener() {
@Override @Override
public void onRefresh() { public void onRefresh() {
updateMarketCap(); updateMarketCap(false);
} }
} }
); );
defaultCurrency = preferencesManager.getDefaultCurrency();
lastTimestamp = 0; lastTimestamp = 0;
ImageButton settingsButton = view.findViewById(R.id.settings_button); ImageButton settingsButton = view.findViewById(R.id.settings_button);
@ -86,7 +88,7 @@ public class MarketCapitalization extends Fragment {
} }
}); });
updateMarketCap(); updateMarketCap(true);
return view; return view;
} }
@ -96,7 +98,16 @@ public class MarketCapitalization extends Fragment {
{ {
super.onResume(); super.onResume();
updateMarketCap(); if(!defaultCurrency.equals(preferencesManager.getDefaultCurrency()))
{
defaultCurrency = preferencesManager.getDefaultCurrency();
updateMarketCap(true);
}
else
{
updateMarketCap(false);
}
} }
private void setupDominantCurrenciesColors() private void setupDominantCurrenciesColors()
@ -120,9 +131,9 @@ public class MarketCapitalization extends Fragment {
dominantCurrenciesColors.put("ETC", -10448784); dominantCurrenciesColors.put("ETC", -10448784);
} }
private void updateMarketCap() private void updateMarketCap(boolean mustUpdate)
{ {
if(System.currentTimeMillis() / 1000 - lastTimestamp > 60) if(System.currentTimeMillis() / 1000 - lastTimestamp > 60 || mustUpdate)
{ {
if(!refreshLayout.isRefreshing()) if(!refreshLayout.isRefreshing())
{ {
@ -157,6 +168,48 @@ public class MarketCapitalization extends Fragment {
} }
} }
private void refreshDisplayedData()
{
setupTextViewMarketCap();
view.findViewById(R.id.progressBarMarketCap).setVisibility(View.GONE);
view.findViewById(R.id.layoutProgressMarketCap).setVisibility(View.VISIBLE);
List<PieEntry> entries = new ArrayList<>();
ArrayList<Integer> colors = new ArrayList<>();
float otherCurrenciesDominance = 0;
for(Iterator i = marketCapManager.getDominance().keySet().iterator(); i.hasNext(); )
{
String key = (String) i.next();
entries.add(new PieEntry(marketCapManager.getDominance().get(key), key));
otherCurrenciesDominance += marketCapManager.getDominance().get(key);
colors.add(dominantCurrenciesColors.get(key));
}
entries.add(new PieEntry(100-otherCurrenciesDominance, "Others"));
colors.add(-12369084);
PieDataSet set = new PieDataSet(entries, "Market Cap Dominance");
set.setColors(colors);
set.setSliceSpace(1);
set.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
set.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
PieData data = new PieData(set);
data.setValueTextSize(10);
data.setValueFormatter(new PercentFormatter());
setupPieChart(data);
if(refreshLayout.isRefreshing())
{
refreshLayout.setRefreshing(false);
}
}
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
private void countCompletedMarketCapRequest() private void countCompletedMarketCapRequest()
{ {
@ -164,44 +217,7 @@ public class MarketCapitalization extends Fragment {
if(marketCapCounter == 2) if(marketCapCounter == 2)
{ {
setupTextViewMarketCap(); refreshDisplayedData();
view.findViewById(R.id.progressBarMarketCap).setVisibility(View.GONE);
view.findViewById(R.id.layoutProgressMarketCap).setVisibility(View.VISIBLE);
List<PieEntry> entries = new ArrayList<>();
ArrayList<Integer> colors = new ArrayList<>();
float otherCurrenciesDominance = 0;
for(Iterator i = marketCapManager.getDominance().keySet().iterator(); i.hasNext(); )
{
String key = (String) i.next();
entries.add(new PieEntry(marketCapManager.getDominance().get(key), key));
otherCurrenciesDominance += marketCapManager.getDominance().get(key);
colors.add(dominantCurrenciesColors.get(key));
}
entries.add(new PieEntry(100-otherCurrenciesDominance, "Others"));
colors.add(-12369084);
PieDataSet set = new PieDataSet(entries, "Market Cap Dominance");
set.setColors(colors);
set.setSliceSpace(1);
set.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
set.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
PieData data = new PieData(set);
data.setValueTextSize(10);
data.setValueFormatter(new PercentFormatter());
setupPieChart(data);
if(refreshLayout.isRefreshing())
{
refreshLayout.setRefreshing(false);
}
} }
} }

View File

@ -34,13 +34,20 @@ import com.nauk.coinfolio.DataManagers.BalanceManager;
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency; import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
import com.nauk.coinfolio.DataManagers.PreferencesManager; import com.nauk.coinfolio.DataManagers.PreferencesManager;
import com.nauk.coinfolio.LayoutManagers.HomeLayoutGenerator; import com.nauk.coinfolio.LayoutManagers.HomeLayoutGenerator;
import com.nauk.coinfolio.PlaceholderManager;
import com.nauk.coinfolio.R; import com.nauk.coinfolio.R;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import static java.lang.Math.abs;
/** /**
* Created by Tiji on 13/04/2018. * Created by Tiji on 13/04/2018.
@ -54,6 +61,7 @@ public class Summary extends Fragment {
private HomeLayoutGenerator layoutGenerator; private HomeLayoutGenerator layoutGenerator;
private SwipeRefreshLayout refreshLayout; private SwipeRefreshLayout refreshLayout;
private Dialog loadingDialog; private Dialog loadingDialog;
private String defaultCurrency;
private TextView toolbarSubtitle; private TextView toolbarSubtitle;
private CollapsingToolbarLayout toolbarLayout; private CollapsingToolbarLayout toolbarLayout;
@ -85,6 +93,8 @@ public class Summary extends Fragment {
totalFluctuation = 0; totalFluctuation = 0;
lastTimestamp = 0; lastTimestamp = 0;
defaultCurrency = preferencesManager.getDefaultCurrency();
handler = new Handler(); handler = new Handler();
updateRunnable = new Runnable() { updateRunnable = new Runnable() {
@Override @Override
@ -180,7 +190,16 @@ public class Summary extends Fragment {
displayBalance(preferencesManager.isBalanceHidden()); displayBalance(preferencesManager.isBalanceHidden());
updateAll(preferencesManager.mustUpdateSummary()); if(!defaultCurrency.equals(preferencesManager.getDefaultCurrency()))
{
defaultCurrency = preferencesManager.getDefaultCurrency();
updateAll(true);
}
else
{
updateAll(preferencesManager.mustUpdateSummary());
}
} }
private void updateAll(boolean mustUpdate) private void updateAll(boolean mustUpdate)
@ -240,13 +259,14 @@ public class Summary extends Fragment {
Runnable newRunnable = new Runnable() { Runnable newRunnable = new Runnable() {
@Override @Override
public void run() { public void run() {
for(int i = 0; i < balanceManager.getTotalBalance().size(); i++) if (balanceManager.getTotalBalance() != null)
{ {
final Currency currency = balanceManager.getTotalBalance().get(i); for (int i = 0; i < balanceManager.getTotalBalance().size(); i++) {
final Currency currency = balanceManager.getTotalBalance().get(i);
if(!currency.getSymbol().equals("USD") && ((currency.getBalance() * currency.getValue()) > 0.001)) if (!currency.getSymbol().equals("USD") && ((currency.getBalance() * currency.getValue()) > 0.001)) {
{ currencyView.add(layoutGenerator.getInfoLayout(currency, totalValue, preferencesManager.isBalanceHidden()));
currencyView.add(layoutGenerator.getInfoLayout(currency, totalValue, preferencesManager.isBalanceHidden())); }
} }
} }
@ -353,7 +373,7 @@ public class Summary extends Fragment {
if(preferencesManager.isBalanceHidden()) if(preferencesManager.isBalanceHidden())
{ {
toolbarLayout.setTitle(getResources().getString(R.string.currencyPercentagePlaceholder, String.format("%.2f", totalFluctuationPercentage))); toolbarLayout.setTitle(PlaceholderManager.getPercentageString(numberConformer(totalFluctuationPercentage), getActivity()));
toolbarSubtitle.setVisibility(View.GONE); toolbarSubtitle.setVisibility(View.GONE);
if(totalFluctuation > 0) if(totalFluctuation > 0)
@ -369,15 +389,7 @@ public class Summary extends Fragment {
} }
else else
{ {
switch (preferencesManager.getDefaultCurrency()) toolbarLayout.setTitle(PlaceholderManager.getValueString(numberConformer(totalValue), getActivity()));
{
case "EUR":
toolbarLayout.setTitle(getResources().getString(R.string.currencyEurosPlaceholder, String.format("%.2f", totalValue)));
break;
default:
toolbarLayout.setTitle(getResources().getString(R.string.currencyDollarPlaceholder, String.format("%.2f", totalValue)));
break;
}
toolbarLayout.setCollapsedTitleTextColor(Color.WHITE); toolbarLayout.setCollapsedTitleTextColor(Color.WHITE);
toolbarLayout.setExpandedTitleColor(Color.WHITE); toolbarLayout.setExpandedTitleColor(Color.WHITE);
@ -394,33 +406,32 @@ public class Summary extends Fragment {
if(totalFluctuation == 0) if(totalFluctuation == 0)
{ {
switch (preferencesManager.getDefaultCurrency()) toolbarSubtitle.setText(PlaceholderManager.getValueString(numberConformer(totalValue), getActivity()));
{
case "EUR":
toolbarSubtitle.setText(getResources().getString(R.string.currencyEurosPlaceholder, "0.00"));
break;
default:
toolbarSubtitle.setText(getResources().getString(R.string.currencyDollarPlaceholder, "0.00"));
break;
}
toolbarSubtitle.setTextColor(-1275068417); toolbarSubtitle.setTextColor(-1275068417);
} }
else else
{ {
switch (preferencesManager.getDefaultCurrency()) toolbarSubtitle.setText(PlaceholderManager.getValuePercentageString(numberConformer(totalFluctuation), numberConformer(totalFluctuationPercentage), getActivity()));
{
case "EUR":
toolbarSubtitle.setText(String.format("%.2f", totalFluctuation) + "€ (" + String.format("%.2f", totalFluctuationPercentage) + "%)");
break;
default:
toolbarSubtitle.setText("US$" + String.format("%.2f", totalFluctuation) + " (" + String.format("%.2f", totalFluctuationPercentage) + "%)");
break;
}
} }
} }
} }
private String numberConformer(double number)
{
String str;
if(abs(number) > 1)
{
str = String.format( Locale.UK, "%.2f", number).replaceAll("\\.?0*$", "");
}
else
{
str = String.format( Locale.UK, "%.4f", number).replaceAll("\\.?0*$", "");
}
return str;
}
private class UiHeavyLoadCalculator extends AsyncTask<Void, Integer, Void> private class UiHeavyLoadCalculator extends AsyncTask<Void, Integer, Void>
{ {
@ -622,7 +633,7 @@ public class Summary extends Fragment {
{ {
for(int i = 0; i < balanceManager.getTotalBalance().size(); i++) for(int i = 0; i < balanceManager.getTotalBalance().size(); i++)
{ {
balance.get(i).updatePrice(getActivity(), preferencesManager.getDefaultCurrency(), new Currency.CurrencyCallBack() { balance.get(i).updatePrice(getActivity(), defaultCurrency, new Currency.CurrencyCallBack() {
@Override @Override
public void onSuccess(Currency currency) { public void onSuccess(Currency currency) {
countCoins(true, false); countCoins(true, false);

View File

@ -70,7 +70,7 @@ public class Watchlist extends Fragment {
private SwipeRefreshLayout refreshLayout; private SwipeRefreshLayout refreshLayout;
private long lastTimestamp; private long lastTimestamp;
private PreferencesManager preferencesManager; private PreferencesManager preferencesManager;
private Toolbar toolbar; private String defaultCurrency;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
@ -82,6 +82,7 @@ public class Watchlist extends Fragment {
preferencesManager = new PreferencesManager(getContext()); preferencesManager = new PreferencesManager(getContext());
lastTimestamp = 0; lastTimestamp = 0;
defaultCurrency = preferencesManager.getDefaultCurrency();
watchlistManager = new WatchlistManager(getContext()); watchlistManager = new WatchlistManager(getContext());
@ -93,7 +94,6 @@ public class Watchlist extends Fragment {
updateWatchlist(false); updateWatchlist(false);
} }
}); });
toolbar = view.findViewById(R.id.toolbar);
Button addWatchlistButton = view.findViewById(R.id.buttonAddWatchlist); Button addWatchlistButton = view.findViewById(R.id.buttonAddWatchlist);
addWatchlistButton.setOnClickListener(new View.OnClickListener() { addWatchlistButton.setOnClickListener(new View.OnClickListener() {
@ -189,7 +189,15 @@ public class Watchlist extends Fragment {
{ {
super.onResume(); super.onResume();
updateWatchlist(preferencesManager.mustUpdateWatchlist()); if(!defaultCurrency.equals(preferencesManager.getDefaultCurrency()))
{
defaultCurrency = preferencesManager.getDefaultCurrency();
updateWatchlist(true);
}
else
{
updateWatchlist(preferencesManager.mustUpdateWatchlist());
}
} }
private void updateWatchlist(boolean mustUpdate) private void updateWatchlist(boolean mustUpdate)
@ -222,42 +230,47 @@ public class Watchlist extends Fragment {
} }
} }
private void generateCards()
{
final List<View> watchlistViews = new ArrayList<View>();
((LinearLayout) view.findViewById(R.id.linearLayoutWatchlist)).removeAllViews();
Runnable newRunnable = new Runnable() {
@Override
public void run() {
for(final Currency currency : watchlistManager.getWatchlist())
{
watchlistViews.add(getCurrencyCardFor(currency));
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < watchlistViews.size(); i++)
{
((LinearLayout) view.findViewById(R.id.linearLayoutWatchlist)).addView(watchlistViews.get(i), 0);
}
}
});
}
};
newRunnable.run();
if(refreshLayout.isRefreshing())
{
refreshLayout.setRefreshing(false);
}
}
private void countWatchlist() private void countWatchlist()
{ {
watchlistCounter++; watchlistCounter++;
if(watchlistCounter >= watchlistManager.getWatchlist().size()) if(watchlistCounter >= watchlistManager.getWatchlist().size())
{ {
final List<View> watchlistViews = new ArrayList<View>(); generateCards();
((LinearLayout) view.findViewById(R.id.linearLayoutWatchlist)).removeAllViews();
Runnable newRunnable = new Runnable() {
@Override
public void run() {
for(final Currency currency : watchlistManager.getWatchlist())
{
watchlistViews.add(getCurrencyCardFor(currency));
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < watchlistViews.size(); i++)
{
((LinearLayout) view.findViewById(R.id.linearLayoutWatchlist)).addView(watchlistViews.get(i), 0);
}
}
});
}
};
newRunnable.run();
if(refreshLayout.isRefreshing())
{
refreshLayout.setRefreshing(false);
}
} }
} }

View File

@ -233,18 +233,6 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
}); });
bindPreferenceSummaryToValue(findPreference("default_currency")); bindPreferenceSummaryToValue(findPreference("default_currency"));
findPreference("default_currency").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("refresh_default_currency", true);
editor.apply();
return false;
}
});
} }
@Override @Override

View File

@ -128,7 +128,6 @@ public class DatabaseManager extends SQLiteOpenHelper{
values.put(KEY_CURRENCY_BALANCE, balance); values.put(KEY_CURRENCY_BALANCE, balance);
values.put(KEY_CURRENCY_DATE, date.getTime()); values.put(KEY_CURRENCY_DATE, date.getTime());
values.put(KEY_CURRENCY_PURCHASED_PRICE, purchasedPrice); values.put(KEY_CURRENCY_PURCHASED_PRICE, purchasedPrice);
//values.put(KEY_CURRENCY_PURCHASED_PRICE, something);
db.insert(TABLE_MANUAL_CURRENCIES, null, values); db.insert(TABLE_MANUAL_CURRENCIES, null, values);
db.close(); db.close();

View File

@ -9,6 +9,7 @@ import android.preference.PreferenceManager;
public class PreferencesManager { public class PreferencesManager {
private static int fragmentUpdated = 0;
private static final String currencyListFile = "CustomCurrencies"; private static final String currencyListFile = "CustomCurrencies";
private static final String preferencesFile = "Preferences"; private static final String preferencesFile = "Preferences";
private SharedPreferences settingPreferences; private SharedPreferences settingPreferences;
@ -34,7 +35,20 @@ public class PreferencesManager {
return preferencesList.getBoolean("DetailOption", true); return preferencesList.getBoolean("DetailOption", true);
} }
public void disableRefreshDefaultCurrency() public boolean mustRefreshDefaultCurrency()
{
fragmentUpdated++;
if(fragmentUpdated == 3)
{
disableRefreshDefaultCurrency();
fragmentUpdated = 0;
}
return settingPreferences.getBoolean("refresh_default_currency", false);
}
private void disableRefreshDefaultCurrency()
{ {
SharedPreferences.Editor editor = settingPreferences.edit(); SharedPreferences.Editor editor = settingPreferences.edit();
editor.putBoolean("refresh_default_currency", false); editor.putBoolean("refresh_default_currency", false);

View File

@ -26,6 +26,7 @@ import com.nauk.coinfolio.Activities.CurrencyDetailsActivity;
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency; import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDataChart; import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDataChart;
import com.nauk.coinfolio.DataManagers.PreferencesManager; import com.nauk.coinfolio.DataManagers.PreferencesManager;
import com.nauk.coinfolio.PlaceholderManager;
import com.nauk.coinfolio.R; import com.nauk.coinfolio.R;
import java.text.DecimalFormat; import java.text.DecimalFormat;
@ -64,7 +65,6 @@ public class HomeLayoutGenerator {
currency.updateHistoryMinutes(context, preferencesManager.getDefaultCurrency(), new Currency.CurrencyCallBack() { currency.updateHistoryMinutes(context, preferencesManager.getDefaultCurrency(), new Currency.CurrencyCallBack() {
@Override @Override
public void onSuccess(Currency currency) { public void onSuccess(Currency currency) {
//setupLineChart(view, currency);
ChartLoader chartLoader = new ChartLoader(view, currency); ChartLoader chartLoader = new ChartLoader(view, currency);
chartLoader.execute(); chartLoader.execute();
} }
@ -206,39 +206,24 @@ public class HomeLayoutGenerator {
double value = currency.getValue() * currency.getBalance(); double value = currency.getValue() * currency.getBalance();
double percentage = value / totalValue * 100; double percentage = value / totalValue * 100;
DecimalFormat df = new DecimalFormat(".##"); DecimalFormat df = new DecimalFormat(".##");
PreferencesManager preferencesManager = new PreferencesManager(context);
switch (preferencesManager.getDefaultCurrency()) ((TextView) view.findViewById(R.id.currencyValueOwnedTextView))
{ .setText(PlaceholderManager.getValueParenthesisString(numberConformer(currency.getValue() * currency.getBalance()), context));
case "EUR": ((TextView) view.findViewById(R.id.currencyValueTextView))
((TextView) view.findViewById(R.id.currencyValueOwnedTextView)) .setText(PlaceholderManager.getValueString(numberConformer(currency.getValue()), context));
.setText(context.getResources().getString(R.string.currencyEurosParenthesisPlaceholder, numberConformer(currency.getValue() * currency.getBalance()))); ((TextView) view.findViewById(R.id.currencyFluctuationTextView))
((TextView) view.findViewById(R.id.currencyValueTextView)) .setText(PlaceholderManager.getValueParenthesisString(numberConformer(currency.getDayFluctuation()), context));
.setText(context.getResources().getString(R.string.currencyEurosPlaceholder, numberConformer(currency.getValue())));
((TextView) view.findViewById(R.id.currencyFluctuationTextView))
.setText(context.getResources().getString(R.string.currencyEurosParenthesisPlaceholder, numberConformer(currency.getDayFluctuation())));
break;
default:
((TextView) view.findViewById(R.id.currencyValueOwnedTextView))
.setText(context.getResources().getString(R.string.currencyDollarParenthesisPlaceholder, numberConformer(currency.getValue() * currency.getBalance())));
((TextView) view.findViewById(R.id.currencyValueTextView))
.setText(context.getResources().getString(R.string.currencyDollarPlaceholder, numberConformer(currency.getValue())));
((TextView) view.findViewById(R.id.currencyFluctuationTextView))
.setText(context.getResources().getString(R.string.currencyDollarParenthesisPlaceholder, numberConformer(currency.getDayFluctuation())));
break;
}
((ImageView) view.findViewById(R.id.currencyIcon)) ((ImageView) view.findViewById(R.id.currencyIcon))
.setImageBitmap(currency.getIcon()); .setImageBitmap(currency.getIcon());
((TextView) view.findViewById(R.id.currencyNameTextView)) ((TextView) view.findViewById(R.id.currencyNameTextView))
.setText(currency.getName()); .setText(currency.getName());
((TextView) view.findViewById(R.id.currencySymbolTextView)) ((TextView) view.findViewById(R.id.currencySymbolTextView))
.setText(context.getResources().getString(R.string.currencySymbolPlaceholder, currency.getSymbol())); .setText(PlaceholderManager.getSymbolString(currency.getSymbol(), context));
((TextView) view.findViewById(R.id.currencyOwnedTextView)) ((TextView) view.findViewById(R.id.currencyOwnedTextView))
.setText(context.getResources().getString(R.string.currencyBalancePlaceholder, numberConformer(currency.getBalance()), currency.getSymbol())); .setText(PlaceholderManager.getBalanceString(numberConformer(currency.getBalance()), currency.getSymbol(), context));
((TextView) view.findViewById(R.id.currencyFluctuationPercentageTextView)) ((TextView) view.findViewById(R.id.currencyFluctuationPercentageTextView))
.setText(context.getResources().getString(R.string.currencyPercentagePlaceholder, numberConformer(currency.getDayFluctuationPercentage()))); .setText(PlaceholderManager.getPercentageString(numberConformer(currency.getDayFluctuationPercentage()), context));
Drawable arrowDrawable = ((ImageView) view.findViewById(R.id.detailsArrow)).getDrawable(); Drawable arrowDrawable = ((ImageView) view.findViewById(R.id.detailsArrow)).getDrawable();
arrowDrawable.mutate(); arrowDrawable.mutate();
@ -251,7 +236,7 @@ public class HomeLayoutGenerator {
progressBarDrawable.invalidateSelf(); progressBarDrawable.invalidateSelf();
((ProgressBar) view.findViewById(R.id.currencyPortfolioDominance)).setProgress((int) Math.round(percentage)); ((ProgressBar) view.findViewById(R.id.currencyPortfolioDominance)).setProgress((int) Math.round(percentage));
((TextView) view.findViewById(R.id.percentageOwnedTextView)).setText(context.getResources().getString(R.string.currencyPercentagePlaceholder, df.format(percentage))); ((TextView) view.findViewById(R.id.percentageOwnedTextView)).setText(PlaceholderManager.getPercentageString(numberConformer(percentage), context));
if(isBalanceHidden) if(isBalanceHidden)
{ {

View File

@ -0,0 +1,135 @@
package com.nauk.coinfolio;
import com.nauk.coinfolio.DataManagers.PreferencesManager;
/**
* Created by Tiji on 19/04/2018.
*/
public class PlaceholderManager {
public static String getValueString(String value, android.content.Context context)
{
PreferencesManager preferencesManager = new PreferencesManager(context);
String formattedString = null;
switch (preferencesManager.getDefaultCurrency())
{
case "EUR":
formattedString = context.getResources().getString(R.string.currencyEurosPlaceholder, value);
break;
case "GBP":
formattedString = context.getResources().getString(R.string.currencyPoundPlaceholder, value);
break;
default:
formattedString = context.getResources().getString(R.string.currencyDollarPlaceholder, value);
break;
}
return formattedString;
}
public static String getValuePercentageString(String value, String percentage, android.content.Context context)
{
PreferencesManager preferencesManager = new PreferencesManager(context);
String formattedString = null;
switch (preferencesManager.getDefaultCurrency())
{
case "EUR":
formattedString = context.getResources().getString(R.string.fluctuationEurosPercentagePlaceholder, value, percentage);
break;
case "GBP":
formattedString = context.getResources().getString(R.string.fluctuationPoundPercentagePlaceholder, value, percentage);
break;
default:
formattedString = context.getResources().getString(R.string.fluctuationDollarPercentagePlaceholder, value, percentage);
break;
}
return formattedString;
}
public static String getValueParenthesisString(String value, android.content.Context context)
{
PreferencesManager preferencesManager = new PreferencesManager(context);
String formattedString = null;
switch (preferencesManager.getDefaultCurrency())
{
case "EUR":
formattedString = context.getResources().getString(R.string.currencyEurosParenthesisPlaceholder, value);
break;
case "GBP":
formattedString = context.getResources().getString(R.string.currencyPoundParenthesisPlaceholder, value);
break;
default:
formattedString = context.getResources().getString(R.string.currencyDollarParenthesisPlaceholder, value);
break;
}
return formattedString;
}
public static String getPriceString(String value, android.content.Context context)
{
PreferencesManager preferencesManager = new PreferencesManager(context);
String formattedString = null;
switch (preferencesManager.getDefaultCurrency())
{
case "EUR":
formattedString = context.getResources().getString(R.string.priceEurosPlaceholder, value);
break;
case "GBP":
formattedString = context.getResources().getString(R.string.pricePoundPlaceholder, value);
break;
default:
formattedString = context.getResources().getString(R.string.priceDollarPlaceholder, value);
break;
}
return formattedString;
}
public static String getVolumeString(String value, android.content.Context context)
{
PreferencesManager preferencesManager = new PreferencesManager(context);
String formattedString = null;
switch (preferencesManager.getDefaultCurrency())
{
case "EUR":
formattedString = context.getResources().getString(R.string.volumeEurosPlaceholder, value);
break;
case "GBP":
formattedString = context.getResources().getString(R.string.volumePoundPlaceholder, value);
break;
default:
formattedString = context.getResources().getString(R.string.volumeDollarPlaceholder, value);
break;
}
return formattedString;
}
public static String getSymbolString(String symbol, android.content.Context context)
{
return context.getResources().getString(R.string.currencySymbolPlaceholder, symbol);
}
public static String getBalanceString(String balance, String symbol, android.content.Context context)
{
return context.getResources().getString(R.string.currencyBalancePlaceholder, balance, symbol);
}
public static String getPercentageString(String value, android.content.Context context)
{
return context.getResources().getString(R.string.currencyPercentagePlaceholder, value);
}
public static String getTimestampString(String date, android.content.Context context)
{
return context.getResources().getString(R.string.timestampPlaceholder, date);
}
}

View File

@ -34,17 +34,19 @@
<string name="pref_title_default_currency">Default currency</string> <string name="pref_title_default_currency">Default currency</string>
<string-array name="pref_default_currencies_titles"> <string-array name="pref_default_currencies_titles">
<item>USD</item> <item>Dollar (USD)</item>
<item>EUR</item> <item>Euro (EUR)</item>
<item>BTC</item> <item>Pound (GBP)</item>
<item>ETH</item> <!--<item>Bitcoin (BTC)</item>
<item>Ethereum (ETH)</item>-->
</string-array> </string-array>
<string-array name="pref_default_currencies_values"> <string-array name="pref_default_currencies_values">
<item>USD</item> <item>USD</item>
<item>EUR</item> <item>EUR</item>
<item>BTC</item> <item>GBP</item>
<item>ETH</item> <!--<item>BTC</item>
<item>ETH</item>-->
</string-array> </string-array>
<string-array name="list_preference_entries"> <string-array name="list_preference_entries">
@ -137,20 +139,31 @@
<!--Cardview placeholders--> <!--Cardview placeholders-->
<string name="currencySymbolPlaceholder">(%1$s)</string> <string name="currencySymbolPlaceholder">(%1$s)</string>
<string name="currencyBalancePlaceholder">%1$s%2$s</string> <string name="currencyBalancePlaceholder">%1$s%2$s</string>
<string name="currencyPercentagePlaceholder">%1$s%%</string>
<!--Dollar-->
<string name="currencyDollarParenthesisPlaceholder">(US$%1$s)</string> <string name="currencyDollarParenthesisPlaceholder">(US$%1$s)</string>
<string name="currencyDollarPlaceholder">US$%1$s</string> <string name="currencyDollarPlaceholder">US$%1$s</string>
<string name="fluctuationDollarPercentagePlaceholder">US$%1$s (%2$s%%)</string>
<!--Euro-->
<string name="currencyEurosParenthesisPlaceholder">(%1$s€)</string> <string name="currencyEurosParenthesisPlaceholder">(%1$s€)</string>
<string name="currencyEurosPlaceholder">%1$s€</string> <string name="currencyEurosPlaceholder">%1$s€</string>
<string name="currencyPercentagePlaceholder">%1$s%%</string> <string name="fluctuationEurosPercentagePlaceholder">%1$s€ (%2$s%%)</string>
<string name="fluctuationDollarPercentagePlaceholder">US$%1$s (%2$s%)</string> <!--Pound-->
<string name="fluctuationEurosPercentagePlaceholder">%1$s€ (%2$s%)</string> <string name="currencyPoundParenthesisPlaceholder">(%1$s£)</string>
<string name="currencyPoundPlaceholder">%1$s£</string>
<string name="fluctuationPoundPercentagePlaceholder">%1$s£ (%2$s%%)</string>
<!--DetailsActivity placeholders--> <!--DetailsActivity placeholders-->
<string name="timestampPlaceholder">Date\n%1$s</string>
<!--Dollar-->
<string name="volumeDollarPlaceholder">Volume\nUS$%1$s</string> <string name="volumeDollarPlaceholder">Volume\nUS$%1$s</string>
<string name="priceDollarPlaceholder">Price\nUS$%1$s</string> <string name="priceDollarPlaceholder">Price\nUS$%1$s</string>
<!--Euro-->
<string name="volumeEurosPlaceholder">Volume\n%1$s€</string> <string name="volumeEurosPlaceholder">Volume\n%1$s€</string>
<string name="priceEurosPlaceholder">Price\n%1$s€</string> <string name="priceEurosPlaceholder">Price\n%1$s€</string>
<string name="timestampPlaceholder">Date\n%1$s</string> <!--Pound-->
<string name="volumePoundPlaceholder">Volume\n%1$s£</string>
<string name="pricePoundPlaceholder">Price\n%1$s£</string>
<string name="title_activity_main">MainActivity</string> <string name="title_activity_main">MainActivity</string>
@ -158,10 +171,17 @@
<string name="fingerprint_dialog_title">Verify your fingerprint to continue</string> <string name="fingerprint_dialog_title">Verify your fingerprint to continue</string>
<!--Marketcap placeholders-->
<!--Dollar-->
<string name="market_cap_dollar_textview">Total Market Capitalization :\nUS$%1$s</string> <string name="market_cap_dollar_textview">Total Market Capitalization :\nUS$%1$s</string>
<string name="volume_dollar_market_cap_textview">24h volume :\nUS$%1$s</string> <string name="volume_dollar_market_cap_textview">24h volume :\nUS$%1$s</string>
<!--Euro-->
<string name="market_cap_euros_textview">Total Market Capitalization :\n%1$s€</string> <string name="market_cap_euros_textview">Total Market Capitalization :\n%1$s€</string>
<string name="volume_euros_market_cap_textview">24h volume :\n%1$s€</string> <string name="volume_euros_market_cap_textview">24h volume :\n%1$s€</string>
<!--Pound-->
<string name="market_cap_pound_textview">Total Market Capitalization :\n%1$s£</string>
<string name="volume_pound_market_cap_textview">24h volume :\n%1$s£</string>
<string name="title_activity_scrolling">ScrollingActivity</string> <string name="title_activity_scrolling">ScrollingActivity</string>
</resources> </resources>