package com.code44.finance.ui.categories;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.support.v4.content.CursorLoader;
import android.view.Menu;
import android.view.View;
import com.code44.finance.R;
import com.code44.finance.common.model.TransactionType;
import com.code44.finance.data.db.Tables;
import com.code44.finance.data.model.Category;
import com.code44.finance.data.model.Model;
import com.code44.finance.data.providers.CategoriesProvider;
import com.code44.finance.ui.common.BaseModelsAdapter;
import com.code44.finance.ui.common.ModelListActivity;
import com.code44.finance.utils.analytics.Analytics;
import se.emilsjolander.stickylistheaders.ExpandableStickyListHeadersListView;
public class CategoriesActivity extends ModelListActivity {
private static final String EXTRA_TRANSACTION_TYPE = "EXTRA_TRANSACTION_TYPE";
private TransactionType transactionType;
public static void start(Context context) {
final Intent intent = makeViewIntent(context, CategoriesActivity.class);
startActivity(context, intent);
}
public static void startSelect(Activity activity, int requestCode, TransactionType transactionType) {
final Intent intent = makeSelectIntent(activity, CategoriesActivity.class);
intent.putExtra(EXTRA_TRANSACTION_TYPE, transactionType);
startActivityForResult(activity, intent, requestCode);
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.findItem(R.id.action_settings).setVisible(false);
return true;
}
@Override protected int getLayoutId() {
return R.layout.activity_categories;
}
@Override protected BaseModelsAdapter createAdapter() {
return new CategoriesAdapter(this);
}
@Override protected CursorLoader getModelsCursorLoader() {
return Tables.Categories
.getQuery(transactionType)
.sortOrder(Tables.Categories.TRANSACTION_TYPE.getName())
.sortOrder(Tables.Categories.SORT_ORDER.getName())
.asCursorLoader(this, CategoriesProvider.uriCategories());
}
@Override protected Model modelFrom(Cursor cursor) {
return Category.from(cursor);
}
@Override protected void onModelClick(View view, int position, String modelId, Model model) {
CategoryActivity.start(this, modelId);
}
@Override protected void startModelEdit(String modelId) {
CategoryEditActivity.start(this, modelId);
}
@Override protected void onExtras(Intent extras) {
super.onExtras(extras);
transactionType = (TransactionType) extras.getSerializableExtra(EXTRA_TRANSACTION_TYPE);
}
@Override protected void onSetupList(BaseModelsAdapter adapter) {
@SuppressLint("WrongViewCast") final ExpandableStickyListHeadersListView listView = (ExpandableStickyListHeadersListView) findViewById(R.id.listView);
listView.setAdapter((CategoriesAdapter) adapter);
listView.setOnItemClickListener(this);
}
@Override protected Analytics.Screen getScreen() {
return Analytics.Screen.CategoryList;
}
}