package com.commonsensenet.realfarm; import java.util.List; import android.app.Dialog; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnLongClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ImageView; import android.widget.ListView; import com.commonsensenet.realfarm.model.Resource; import com.commonsensenet.realfarm.utils.ApplicationTracker; import com.commonsensenet.realfarm.utils.ApplicationTracker.EventType; import com.commonsensenet.realfarm.view.DialogAdapter; public abstract class TopSelectorActivity extends HelpEnabledActivity implements OnItemClickListener, OnLongClickListener, OnItemLongClickListener { /** Indicates that the selector works with aggregate data. */ public static final int LIST_WITH_TOP_SELECTOR_TYPE_AGGREGATE = 1; /** Indicates that the Selector works with Market data. */ public static final int LIST_WITH_TOP_SELECTOR_TYPE_MARKET = 2; /** Current Resource used as the active filter. */ protected Resource mTopSelectorData; /** Inflater used to dynamically add layouts from XML. */ protected LayoutInflater mLayoutInflater; public void onCreate(Bundle savedInstanceState, int layoutId) { super.onCreate(savedInstanceState, layoutId); // loads the inflater used to add new layouts. mLayoutInflater = getLayoutInflater(); } // adds audio from 1000 to 10000 protected void add_action_aggregate(int n) { switch (n) { case 1: mSoundQueue.addToQueue(R.raw.farmers); // say "farmers" break; case 2: mSoundQueue.addToQueue(R.raw.done_sowing); // says "done sowing" break; case 3: mSoundQueue.addToQueue(R.raw.this_season); // says "this season" break; case 4: mSoundQueue.addToQueue(R.raw.people_from_past); // says // "people from past" break; case 5: mSoundQueue.addToQueue(R.raw.days_done); // says "days done" break; case 6: mSoundQueue.addToQueue(R.raw.about_farmer_and_sowing_click); // says // "about farmers and sowing" break; case 7: mSoundQueue.addToQueue(R.raw.aggregate_in); // says "in" break; case 8: mSoundQueue.addToQueue(R.raw.every_acre); // says "every acre" break; case 9: mSoundQueue.addToQueue(R.raw.seru); // says "seru" break; case 10: mSoundQueue.addToQueue(R.raw.in_call_sowing); // says "sowing done" break; default: break; } } protected void setTopSelector(int mActionTypeId) { // ActionType actionType = // mDataProvider.getActionTypeById(mActionTypeId); // final ImageView actionImg = (ImageView) // findViewById(R.id.aggr_action); // actionImg.setImageResource(actionType.getImage1()); // final ImageView selectorImg = (ImageView) // findViewById(R.id.aggr_crop_img); // selectorImg // .setBackgroundResource(mTopSelectorData.getBackgroundImage()); // final TextView selectorText = (TextView) // findViewById(R.id.textView1); // selectorText.setText(mTopSelectorData.getShortName()); } protected void displayDialog(View v, final List<Resource> data, final String title, int entryAudio, final ImageView actionTypeImage, final int type) { final Dialog dialog = new Dialog(v.getContext()); dialog.setContentView(R.layout.mc_dialog); dialog.setTitle(title); dialog.setCancelable(true); dialog.setCanceledOnTouchOutside(true); DialogAdapter m_adapter = new DialogAdapter(v.getContext(), data); ListView mList = (ListView) dialog.findViewById(R.id.dialog_list); mList.setAdapter(m_adapter); dialog.show(); playAudio(entryAudio); // TODO AUDIO: adapt the audio in the database. mList.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Does whatever is specific to the application Log.d("var " + position + " picked ", "in dialog"); Resource choice = data.get(position); setList(type, choice); if (actionTypeImage != null) actionTypeImage.setBackgroundResource(data.get(position) .getBackgroundImage()); // tracks the application usage. ApplicationTracker.getInstance().logEvent(EventType.CLICK, Global.userId, getLogTag(), "dialog " + choice.getShortName()); // onClose dialog.cancel(); int iden = choice.getAudio(); playAudio(iden); } }); mList.setOnItemLongClickListener(new OnItemLongClickListener() { // TODO: adapt the audio in the database public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { ApplicationTracker.getInstance().logEvent(EventType.LONG_CLICK, Global.userId, getLogTag(), "dialog " + data.get(position).getShortName()); int iden = data.get(position).getAudio(); playAudio(iden, true); return true; } }); } public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { } public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { return false; } protected abstract void setList(int type, Resource choice); }