package eoc.studio.voicecard.card.editor;
import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import eoc.studio.voicecard.BaseActivity;
import eoc.studio.voicecard.R;
import eoc.studio.voicecard.card.CardDraft;
import eoc.studio.voicecard.card.Constant;
import eoc.studio.voicecard.card.database.CardDatabaseHelper;
import eoc.studio.voicecard.card.database.CategoryAssistant;
import eoc.studio.voicecard.menu.Favorite;
import eoc.studio.voicecard.menu.OpenDraft;
import eoc.studio.voicecard.utils.FileUtility;
public class CardCategorySelectorActivity extends BaseActivity implements OnItemClickListener
{
private static final String TAG = "CardCategorySelector";
private static final int INT_FAVORITE = -999;
private Context context;
private GridView categories;
private CardDraftManager cardDraftManager;
private OpenDraft openDraft;
private Favorite favorite;
private CardDatabaseHelper cardDatabaseHelper;
ArrayList<CategoryAssistant> categoryAssistantList = new ArrayList<CategoryAssistant>();
private String sendBackId;
@Override
protected void onCreate(Bundle savedInstanceState)
{
context = getApplicationContext();
initCardDataBase();
categoryAssistantList = cardDatabaseHelper.getEnabledCategory(cardDatabaseHelper
.getSystemDPI(context));
Log.d(TAG, "categoryAssistantList: " + categoryAssistantList);
initCardDraftManager();
initSendBackId();
initLayout();
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
}
@Override
protected void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
cardDatabaseHelper.close();
}
@Override
protected void onPause()
{
// TODO Auto-generated method stub
super.onPause();
}
@Override
protected void onResume()
{
// TODO Auto-generated method stub
super.onResume();
}
private void initCardDraftManager()
{
Log.d(TAG, "initCardDraftManager()");
cardDraftManager = new CardDraftManager();
cardDraftManager.init(getApplicationContext());
}
private void initCardDataBase()
{
cardDatabaseHelper = new CardDatabaseHelper(context);
cardDatabaseHelper.open();
}
private void initLayout()
{
setContentView(R.layout.activity_card_category_selector);
findViews();
initCategories();
setListener();
}
private void initCategories()
{
categories.setAdapter(new CategoryAdapter());
}
private void initSendBackId()
{
Intent intent = getIntent();
sendBackId = intent.getStringExtra(Constant.EXTRA_KEY_SENDBACK_ID);
}
private void findViews()
{
categories = (GridView) findViewById(R.id.act_card_category_selector_gv_categories);
openDraft = (OpenDraft) findViewById(R.id.act_card_category_iv_menu_open_draft);
favorite = (Favorite) findViewById(R.id.act_card_category_selector_iv_menu_favorite);
}
private void setListener()
{
categories.setOnItemClickListener(this);
openDraft.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
CardDraft cardDraft = cardDraftManager.openDraft();
Log.d(TAG, "openDraft - onClick()");
Intent intent = new Intent(CardCategorySelectorActivity.this,
CardEditorActivity.class);
intent.putExtra(CardEditorActivity.EXTRA_KEY_CARD_DRAFT, cardDraft);
intent.putExtra(CardEditorActivity.EXTRA_KEY_CARD_ID, cardDraft.getCardId());
startActivity(intent);
}
catch (Exception e)
{
Log.d(TAG, "openDraft - openDraft error:" + e.toString());
}
}
});
favorite.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
if (cardDatabaseHelper.getEnabledFavoriteCardListCount() > 0)
{
Intent intent = new Intent(context, CardSelectorActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(CardSelectorActivity.EXTRA_KEY_CATEGORY,
new CategoryAssistant(INT_FAVORITE));
context.startActivity(intent);
}
else
{
Toast.makeText(context, getResources().getString(R.string.no_favorite_exist), Toast.LENGTH_LONG)
.show();
}
}
catch (Exception e)
{
Log.d(TAG, "favorite - openDraft error:" + e.toString());
}
}
});
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id)
{
// CardCategory category = (CardCategory)
// categories.getItemAtPosition(position);
// Log.d(TAG, "clicked: " + category.name());
CategoryAssistant category = (CategoryAssistant) categories.getItemAtPosition(position);
Log.d(TAG, "clicked: " + category.getCategoryName());
startCardSelector(category);
}
/*
* private class CategoryAdapter extends BaseAdapter {
*
* @Override public int getCount() {
*
* return CardCategory.values().length - 1; // don't contain //
* USER_FAVORITE }
*
* @Override public CardCategory getItem(int position) {
*
* return CardCategory.values()[position]; }
*
* @Override public long getItemId(int position) {
*
* return position; }
*
* @Override public View getView(int position, View convertView, ViewGroup
* parent) {
*
* ViewHolder holder; if (convertView == null) { LayoutInflater inflater =
* LayoutInflater.from(getApplicationContext()); convertView =
* inflater.inflate(R.layout.view_card_category_grid_item, null); holder =
* new ViewHolder(); holder.image = (ImageView) convertView
* .findViewById(R.id.glb_card_category_grid_item_iv_image); holder.name =
* (TextView) convertView
* .findViewById(R.id.glb_card_category_grid_item_tv_name);
* convertView.setTag(holder); } else { holder = (ViewHolder)
* convertView.getTag(); } CardCategory category = getItem(position);
* holder.image.setImageResource(category.getDrawableResource());
* holder.name.setText(category.getStringResource()); return convertView; }
*
* }
*/
private class CategoryAdapter extends BaseAdapter
{
@Override
public int getCount()
{
return categoryAssistantList.size(); // don't contain
// USER_FAVORITE
}
@Override
public CategoryAssistant getItem(int position)
{
return categoryAssistantList.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null)
{
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
convertView = inflater.inflate(R.layout.view_card_category_grid_item, null);
holder = new ViewHolder();
holder.image = (ImageView) convertView
.findViewById(R.id.glb_card_category_grid_item_iv_image);
holder.name = (TextView) convertView
.findViewById(R.id.glb_card_category_grid_item_tv_name);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
CategoryAssistant category = getItem(position);
Log.d(TAG, "category.getCategoryLoocalPath(): " + category.getCategoryLoocalPath());
Log.d(TAG, "category.getCategoryName(): " + category.getCategoryName());
Bitmap categoryBitmap = FileUtility.getBitmapFromPath(category.getCategoryLoocalPath());
FileUtility.setImageViewWithBitmap(holder.image, categoryBitmap);
holder.name.setText(category.getCategoryName());
return convertView;
}
}
private class ViewHolder
{
ImageView image;
TextView name;
}
private void startCardSelector(CategoryAssistant category)
{
Intent intent = new Intent(this, CardSelectorActivity.class);
intent.putExtra(CardSelectorActivity.EXTRA_KEY_CATEGORY, category);
intent.putExtra(Constant.EXTRA_KEY_SENDBACK_ID, sendBackId);
startActivity(intent);
}
}