package com.code44.finance.ui.accounts; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v4.content.CursorLoader; import android.util.Pair; import android.view.View; import android.widget.TextView; import com.code44.finance.R; import com.code44.finance.data.db.Tables; import com.code44.finance.data.model.Account; import com.code44.finance.data.model.Currency; import com.code44.finance.data.providers.AccountsProvider; import com.code44.finance.qualifiers.Main; import com.code44.finance.ui.common.ModelActivity; import com.code44.finance.utils.MoneyFormatter; import com.code44.finance.utils.analytics.Analytics; import javax.inject.Inject; public class AccountActivity extends ModelActivity<Account> { @Inject @Main Currency mainCurrency; private TextView titleTextView; private TextView balanceTextView; private TextView mainCurrencyBalanceTextView; private TextView noteTextView; public static void start(Context context, String accountServerId) { final Intent intent = makeIntent(context, AccountActivity.class, accountServerId); startActivity(context, intent); } @Override protected int getLayoutId() { return R.layout.activity_account; } @Override protected void onViewCreated(Bundle savedInstanceState) { super.onViewCreated(savedInstanceState); // Get views titleTextView = (TextView) findViewById(R.id.titleTextView); balanceTextView = (TextView) findViewById(R.id.balanceTextView); mainCurrencyBalanceTextView = (TextView) findViewById(R.id.mainCurrencyBalanceTextView); noteTextView = (TextView) findViewById(R.id.noteTextView); } @Override protected CursorLoader getModelCursorLoader(String modelId) { return Tables.Accounts.getQuery().asCursorLoader(this, AccountsProvider.uriAccount(modelId)); } @Override protected Account getModelFrom(Cursor cursor) { return Account.from(cursor); } @Override protected void onModelLoaded(Account model) { titleTextView.setText(model.getTitle()); balanceTextView.setText(MoneyFormatter.format(model.getCurrency(), model.getBalance())); noteTextView.setText(model.getNote()); if (model.getCurrency() == null || model.getCurrency().getId().equals(mainCurrency.getId())) { mainCurrencyBalanceTextView.setVisibility(View.GONE); } else { mainCurrencyBalanceTextView.setVisibility(View.VISIBLE); mainCurrencyBalanceTextView.setText(MoneyFormatter.format(mainCurrency, (long) (model.getBalance() * model.getCurrency().getExchangeRate()))); } } @Override protected Uri getDeleteUri() { return AccountsProvider.uriAccounts(); } @Override protected Pair<String, String[]> getDeleteSelection() { return Pair.create(Tables.Accounts.ID + "=?", new String[]{modelId}); } @Override protected void startModelEdit(String modelId) { AccountEditActivity.start(this, modelId); } @Override protected Analytics.Screen getScreen() { return Analytics.Screen.Account; } }