diff --git a/res/values/strings.xml b/res/values/strings.xml index e44c9a941..4a59d2b85 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -110,6 +110,7 @@ Working... Remembers the location of keyfiles Save keyfile + Remove Rijndael (AES) Root Encryption Rounds diff --git a/src/com/keepassdroid/fileselect/FileDbHelper.java b/src/com/keepassdroid/fileselect/FileDbHelper.java index c95e57264..dec815d3e 100644 --- a/src/com/keepassdroid/fileselect/FileDbHelper.java +++ b/src/com/keepassdroid/fileselect/FileDbHelper.java @@ -187,6 +187,11 @@ public class FileDbHelper { mDb.update(FILE_TABLE, vals, null, null); } + public void deleteFile(String filename) { + mDb.delete(FILE_TABLE, KEY_FILE_FILENAME + " = ?", new String[] {filename}); + } + + public Cursor fetchAllFiles() { Cursor ret; ret = mDb.query(FILE_TABLE, new String[] {KEY_FILE_ID, KEY_FILE_FILENAME, KEY_FILE_KEYFILE }, null, null, null, null, KEY_FILE_UPDATED + " DESC", Integer.toString(MAX_FILES)); diff --git a/src/com/keepassdroid/fileselect/FileSelectActivity.java b/src/com/keepassdroid/fileselect/FileSelectActivity.java index 5a0f12140..214a9d2dd 100644 --- a/src/com/keepassdroid/fileselect/FileSelectActivity.java +++ b/src/com/keepassdroid/fileselect/FileSelectActivity.java @@ -28,13 +28,18 @@ import android.content.ActivityNotFoundException; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; +import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ContextMenu.ContextMenuInfo; import android.widget.Button; +import android.widget.CursorAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; +import android.widget.TextView; import android.widget.Toast; +import android.widget.AdapterView.AdapterContextMenuInfo; import com.android.keepass.R; import com.keepassdroid.AboutDialog; @@ -52,7 +57,8 @@ public class FileSelectActivity extends ListActivity { private static final int MENU_DONATE = Menu.FIRST; private static final int MENU_ABOUT = Menu.FIRST + 1; private static final int MENU_APP_SETTINGS = Menu.FIRST + 2; - + + private static final int CMENU_CLEAR = Menu.FIRST; private FileDbHelper mDbHelper; @@ -165,7 +171,8 @@ public class FileSelectActivity extends ListActivity { }); fillData(); - + + registerForContextMenu(getListView()); } private class LaunchGroupActivity extends FileOnFinish { @@ -310,4 +317,37 @@ public class FileSelectActivity extends ListActivity { return super.onOptionsItemSelected(item); } + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + + menu.add(0, CMENU_CLEAR, 0, R.string.remove_from_filelist); + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + super.onContextItemSelected(item); + + if ( item.getItemId() == CMENU_CLEAR ) { + AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo(); + + TextView tv = (TextView) acmi.targetView; + String filename = tv.getText().toString(); + mDbHelper.deleteFile(filename); + + refreshList(); + + return true; + } + + return false; + } + + private void refreshList() { + CursorAdapter ca = (CursorAdapter) getListAdapter(); + Cursor cursor = ca.getCursor(); + cursor.requery(); + } + }