summaryrefslogtreecommitdiffstats
path: root/src/ryuslash/org/dvdroid/DVDroidActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/ryuslash/org/dvdroid/DVDroidActivity.java')
-rw-r--r--src/ryuslash/org/dvdroid/DVDroidActivity.java92
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);
}
}