/* * Copyright (C) 2010 Nullbyte <http://nullbyte.eu> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.liato.bankdroid; import com.liato.bankdroid.banking.Account; import com.liato.bankdroid.banking.Bank; import com.liato.bankdroid.banking.BankFactory; import com.liato.bankdroid.banking.Transaction; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class TransactionsActivity extends LockableActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.transactions); Bundle extras = getIntent().getExtras(); Bank bank = BankFactory.bankFromDb(extras.getLong("bank"), this, false); if (bank == null) { redirectToMain(getString(R.string.error_bank_not_found)); return; } Account account = BankFactory .accountFromDb(this, extras.getLong("bank") + "_" + extras.getString("account"), true); if (account == null) { redirectToMain(getString(R.string.error_account_not_found)); return; } TextView viewBankName = (TextView) findViewById(R.id.txtListitemAccountsGroupAccountname); TextView viewAccountName = (TextView) findViewById(R.id.txtListitemAccountsGroupBankname); TextView viewAccountBalance = (TextView) findViewById(R.id.txtListitemAccountsGroupTotal); ImageView icon = (ImageView) findViewById(R.id.imgListitemAccountsGroup); viewBankName.setText(bank.getDisplayName()); viewAccountName.setText(account.getName()); viewAccountBalance .setText(Helpers.formatBalance(account.getBalance(), account.getCurrency())); icon.setImageResource(bank.getImageResource()); List<Transaction> transactions = account.getTransactions(); if (bank.isDisabled()) { findViewById(R.id.txtDisabledWarning).setVisibility(View.VISIBLE); } if (!transactions.isEmpty()) { Collections.sort(transactions); findViewById(R.id.txtTranDesc).setVisibility(View.GONE); TransactionsAdapter adapter = new TransactionsAdapter(transactions); ListView viewTransactionsList = (ListView) findViewById(R.id.lstTransactionsList); viewTransactionsList.setAdapter(adapter); } findViewById(R.id.layBankHeader).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } @Override protected void onResume() { super.onResume(); } private void redirectToMain(String errorMessage) { final Intent intent = new Intent(this, MainActivity.class); ((BankdroidApplication) getApplicationContext()) .setApplicationMessage(errorMessage); startActivity(intent); } private class TransactionsAdapter extends BaseAdapter { private LayoutInflater inflater; private ArrayList<Object> items = new ArrayList<>(); public TransactionsAdapter(List<Transaction> transactions) { inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (!transactions.isEmpty()) { String date = transactions.get(0).getDate(); items.add(date); for (Transaction transaction : transactions) { if (!date.equals(transaction.getDate())) { date = transaction.getDate(); items.add(date); } items.add(transaction); } } } public View newTransactionView(Transaction transaction, ViewGroup parent, View convertView) { if (convertView == null) { convertView = inflater.inflate(R.layout.transaction_item, parent, false); } ((TextView) convertView.findViewById(R.id.txtTransaction)) .setText(transaction.getTransaction()); ((TextView) convertView.findViewById(R.id.txtAmount)).setText( Helpers.formatBalance(transaction.getAmount(), transaction.getCurrency())); if (transaction.getAmount().signum() == 1) { convertView.findViewById(R.id.imgColor) .setBackgroundResource(R.drawable.transaction_positive); } else { convertView.findViewById(R.id.imgColor) .setBackgroundResource(R.drawable.transaction_negative); } return convertView; } public View newDateView(String date, ViewGroup parent, View convertView) { if (convertView == null) { convertView = inflater.inflate(R.layout.transaction_date, parent, false); } ((TextView) convertView.findViewById(R.id.txtDate)).setText(date); return convertView; } @Override public int getCount() { return items.size(); } @Override public Object getItem(int position) { return items.get(position); } @Override public long getItemId(int position) { return position; } @Override @Nullable public View getView(int position, View convertView, ViewGroup parent) { Object item = getItem(position); if (item == null) { return null; } if (item instanceof Transaction) { return newTransactionView((Transaction) item, parent, convertView); } else if (item instanceof String) { return newDateView((String) item, parent, convertView); } return null; } @Override public boolean areAllItemsEnabled() { return true; } @Override public boolean isEnabled(int position) { return true; } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { Object item = getItem(position); if (item instanceof Transaction) { return 0; } return 1; } } }