package tw.kenshinn.keyboardTerm; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import tw.kenshinn.keyboardTerm.R; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.MenuItem.OnMenuItemClickListener; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.AdapterView.OnItemClickListener; import com.roiding.rterm.EditFunctionButtonActivity; import com.roiding.rterm.bean.FunctionButton; import com.roiding.rterm.util.DBUtils; public class FunctionButtonActivity extends ListActivity { private static final String TAG = "rterm.funcbtn"; private static List<FunctionButton> btns; private DBUtils dbUtils; @Override public void onCreate(Bundle savedInstanceState) { Log.i(TAG, "onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.act_functionbtns); } @Override public void onResume() { super.onResume(); if (dbUtils == null) dbUtils = new DBUtils(this); this.getListView().setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { System.out.println("onItemClick..."); FunctionButton btn = btns.get(position); Intent intent = new Intent(); intent.setClass(FunctionButtonActivity.this, EditFunctionButtonActivity.class); intent.putExtra("button", btn); FunctionButtonActivity.this.startActivityForResult(intent, 0); } }); this.registerForContextMenu(this.getListView()); update(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.i(TAG, "onActivityResult"); update(); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuItem add = menu.add(R.string.editfunctionbtn_add).setIcon( android.R.drawable.ic_menu_add); add.setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(); intent.setClass(FunctionButtonActivity.this, EditFunctionButtonActivity.class); FunctionButtonActivity.this.startActivityForResult(intent, 0); return true; } }); return true; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; final FunctionButton btn = btns.get(info.position); menu.setHeaderTitle(btn.getName()); MenuItem edit = menu.add(R.string.editfunctionbtn_edit); edit.setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(); intent.setClass(FunctionButtonActivity.this, EditFunctionButtonActivity.class); intent.putExtra("button", btn); FunctionButtonActivity.this.startActivityForResult(intent, 0); return true; } }); MenuItem delete = menu.add(R.string.editfunctionbtn_delete); delete.setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { dbUtils.functionsButtonsDelegate.delete(btn); FunctionButtonActivity.this.update(); return true; } }); } protected void update() { if (dbUtils == null) { dbUtils = new DBUtils(this); } btns = dbUtils.functionsButtonsDelegate.get(); SimpleAdapter adapter = new SimpleAdapter(this, getList(btns), R.layout.item_functionbtn, new String[] { "name", "key" }, new int[] { android.R.id.text1, android.R.id.text2 }); this.setListAdapter(adapter); } private List<Map<String, String>> getList(List<FunctionButton> list) { ArrayList<Map<String, String>> btnList = new ArrayList<Map<String, String>>(); for (FunctionButton btn : list) { Map<String, String> map = new HashMap<String, String>(); map.put("name", btn.getName()); map.put("key", btn.getKeys()); btnList.add(map); } return btnList; } @Override public void onStop() { super.onStop(); if (dbUtils != null) { dbUtils.close(); dbUtils = null; } } }