package ryuslash.org.dvdroid; import java.util.List; import android.app.ListActivity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; public class DVDroidActivity extends ListActivity implements ActionMode.Callback { private DVDDataSource datasource; private Intent add_dvd; private int saved_position = 0; private ActionMode mode; private List getData() { return datasource.getCollection(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 2) { add_dvd.putExtra(SQLiteHelper.COLUMN_ID, 0l); if (mode != null) mode.finish(); } datasource.open(); reloadList(); } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { ArrayAdapter adapter = (ArrayAdapter) getListAdapter(); DVD dvd = adapter.getItem(saved_position); switch (item.getItemId()) { case R.id.main_context_menu_edit: showEditDVD(dvd.getId()); return true; case R.id.main_context_menu_delete: datasource.deleteDVD(dvd.getId()); reloadList(); if (mode != null) mode.finish(); return true; } return false; } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); datasource = new DVDDataSource(this); datasource.open(); List values = getData(); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, values); setListAdapter(adapter); add_dvd = new Intent(this, AddDVDActivity.class); } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.main_context_menu, menu); return true; } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_activity, menu); return true; } @Override public void onDestroyActionMode(ActionMode mode) { saved_position = 0; } @Override public void onListItemClick(ListView l, View v, int pos, long id) { saved_position = pos; mode = startActionMode(this); v.setSelected(true); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.main_menu_add: showAddDVD(); return true; } return false; } @Override protected void onPause() { datasource.close(); super.onPause(); } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override protected void onResume() { datasource.open(); super.onResume(); } private void reloadList() { ArrayAdapter adapter = (ArrayAdapter)getListAdapter(); List dvds = getData(); adapter.clear(); adapter.addAll(dvds); adapter.notifyDataSetChanged(); } public void showAddDVD() { datasource.close(); startActivityForResult(add_dvd, 1); } public void showEditDVD(long id) { datasource.close(); add_dvd.putExtra(SQLiteHelper.COLUMN_ID, id); startActivityForResult(add_dvd, 2); } }