package com.code44.finance.ui.transactions; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.v4.content.CursorLoader; import android.view.View; import android.widget.ImageView; import com.code44.finance.R; import com.code44.finance.adapters.NavigationAdapter; import com.code44.finance.data.db.Tables; import com.code44.finance.data.model.Currency; import com.code44.finance.data.model.Model; import com.code44.finance.data.model.Transaction; import com.code44.finance.data.providers.TransactionsProvider; import com.code44.finance.qualifiers.Main; import com.code44.finance.ui.common.BaseModelsAdapter; import com.code44.finance.ui.common.ModelListActivity; import com.code44.finance.utils.CurrentInterval; import com.code44.finance.utils.analytics.Analytics; import com.squareup.otto.Subscribe; import javax.inject.Inject; import se.emilsjolander.stickylistheaders.ExpandableStickyListHeadersListView; import se.emilsjolander.stickylistheaders.StickyListHeadersListView; public class TransactionsActivity extends ModelListActivity { @Inject @Main Currency mainCurrency; @Inject CurrentInterval currentInterval; private ExpandableStickyListHeadersListView headerList_V; public static Intent makeViewIntent(Context context) { return makeViewIntent(context, TransactionsActivity.class); } @Override protected int getLayoutId() { return R.layout.activity_transactions; } @Override protected void onCreate(Bundle savedInstanceState) { setShowDrawer(true); setShowDrawerToggle(true); super.onCreate(savedInstanceState); } @Override protected void onSetupList(BaseModelsAdapter adapter) { // Get views headerList_V = (ExpandableStickyListHeadersListView) findViewById(R.id.headerList); // Setup headerList_V.setAdapter((TransactionsAdapter) adapter); headerList_V.setOnItemClickListener(this); headerList_V.setOnHeaderClickListener(new StickyListHeadersListView.OnHeaderClickListener() { @Override public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, boolean currentlySticky) { if (headerList_V.isHeaderCollapsed(headerId)) { headerList_V.expand(headerId); ((ImageView) header.findViewById(R.id.arrow_IV)).setImageResource(R.drawable.ic_arrow_down_small); } else { headerList_V.collapse(headerId); ((ImageView) header.findViewById(R.id.arrow_IV)).setImageResource(R.drawable.ic_arrow_right_small); } } }); } @Override public void onResume() { super.onResume(); getEventBus().register(this); } @Override public void onPause() { super.onPause(); getEventBus().unregister(this); } @Override protected BaseModelsAdapter createAdapter() { return new TransactionsAdapter(this, mainCurrency, currentInterval); } @Override protected CursorLoader getModelsCursorLoader() { return Tables.Transactions.getQuery().asCursorLoader(this, TransactionsProvider.uriTransactions()); } @Override protected Model modelFrom(Cursor cursor) { return Transaction.from(cursor); } @Override protected void onModelClick(View view, int position, String modelId, Model model) { TransactionActivity.start(this, modelId); } @Override protected void startModelEdit(String modelId) { TransactionEditActivity.start(this, modelId); } @Override protected NavigationAdapter.NavigationScreen getNavigationScreen() { return NavigationAdapter.NavigationScreen.Transactions; } @Override protected Analytics.Screen getScreen() { return Analytics.Screen.TransactionList; } @Subscribe public void onIntervalChanged(CurrentInterval interval) { adapter.notifyDataSetChanged(); } }