diff options
author | Tom Willemsen | 2012-08-10 22:03:34 +0200 |
---|---|---|
committer | Tom Willemsen | 2012-08-10 22:03:34 +0200 |
commit | f30b4fcd3a525d2fa3c2d85fb11e8e7aa3a6a031 (patch) | |
tree | 00cdeeb15ca9de3574e9c1e80ece9c849e926eb6 /src/ryuslash/org/dvdroid/DVDroidActivity.java | |
parent | 2689fd0c5010d6e97616dfbc8557d0828b3d4064 (diff) | |
download | dvdroid-f30b4fcd3a525d2fa3c2d85fb11e8e7aa3a6a031.tar.gz dvdroid-f30b4fcd3a525d2fa3c2d85fb11e8e7aa3a6a031.zip |
Add edit and delete functionality
* res/values/strings.xml: Add strings for `main_context_menu_edit' and
`main_context_menu_delete'.
* src/ryuslash/org/dvdroid/AddDVDActivity.java (saveDVD): Renamed from
`createDVD'. When ID is greater than 0 update, otherwise create.
(onCreate): Get ID from the `Intent' that was used to start this
activity. If ID is greater than 0, show known information in the
inputs.
* src/ryuslash/org/dvdroid/DVDDataSource.java:
(createValues):
(updateDVD):
(getById): New functions.
(createDVD): Use `createValues' to get the values for the database.
(deleteDVD): Add overloaded function that takes a `long', make the
original function use this to delete a `DVD'.
* src/ryuslash/org/dvdroid/DVDroidActivity.java: Implement
`ActionMode.Callback'.
(onActivityResult): If REQUESTCODE is `2' reset the intent
information so as not to confuse it during its next invocation.
Finish action mode.
(onActionItemClicked):
(onCreateActionMode):
(onDestroyActionMode):
(onListItemClick):
(onPrepareActionMode):
(reloadList):
(showEditDVD): New functions.
(onCreate): Instantiate the ADD_DVD `Intent'.
Diffstat (limited to 'src/ryuslash/org/dvdroid/DVDroidActivity.java')
-rw-r--r-- | src/ryuslash/org/dvdroid/DVDroidActivity.java | 92 |
1 files changed, 84 insertions, 8 deletions
diff --git a/src/ryuslash/org/dvdroid/DVDroidActivity.java b/src/ryuslash/org/dvdroid/DVDroidActivity.java index 533bc62..07fe1fb 100644 --- a/src/ryuslash/org/dvdroid/DVDroidActivity.java +++ b/src/ryuslash/org/dvdroid/DVDroidActivity.java @@ -6,17 +6,22 @@ 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.Toast; +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<DVD> getData() { @@ -29,14 +34,40 @@ public class DVDroidActivity extends ListActivity 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(); + } - ArrayAdapter<DVD> adapter = (ArrayAdapter<DVD>)getListAdapter(); - List<DVD> dvds = getData(); + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) + { + ArrayAdapter<DVD> adapter = (ArrayAdapter<DVD>) getListAdapter(); + DVD dvd = adapter.getItem(saved_position); - adapter.clear(); - adapter.addAll(dvds); - adapter.notifyDataSetChanged(); + 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. */ @@ -56,6 +87,16 @@ public class DVDroidActivity extends ListActivity 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 @@ -67,6 +108,20 @@ public class DVDroidActivity extends ListActivity } @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()) { @@ -86,17 +141,38 @@ public class DVDroidActivity extends ListActivity } @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) + { + return false; + } + + @Override protected void onResume() { datasource.open(); super.onResume(); } + private void reloadList() + { + ArrayAdapter<DVD> adapter = (ArrayAdapter<DVD>)getListAdapter(); + List<DVD> dvds = getData(); + + adapter.clear(); + adapter.addAll(dvds); + adapter.notifyDataSetChanged(); + } + public void showAddDVD() { - Intent intent = new Intent(this, AddDVDActivity.class); + datasource.close(); + startActivityForResult(add_dvd, 1); + } + public void showEditDVD(long id) + { datasource.close(); - startActivityForResult(intent, 1); + add_dvd.putExtra(SQLiteHelper.COLUMN_ID, id); + startActivityForResult(add_dvd, 2); } } |