diff --git a/briar-android/briar-android.iml b/briar-android/briar-android.iml
index c465a22dc..87ea58344 100644
--- a/briar-android/briar-android.iml
+++ b/briar-android/briar-android.iml
@@ -59,6 +59,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml
index f14644bd5..2a3b21c7a 100644
--- a/briar-android/res/values/strings.xml
+++ b/briar-android/res/values/strings.xml
@@ -16,6 +16,8 @@
Create Account
Enter your password:
Password
+ Yes
+ No
I have forgotten my password
Wrong password, try again:
Sign In
@@ -108,4 +110,8 @@
Default ringtone
None
Choose ringtone
+
+
+ Lost password
+ Password recovery is not possible. Do you wish to delete your user and re-register ?
\ No newline at end of file
diff --git a/briar-android/src/org/briarproject/android/BaseActivity.java b/briar-android/src/org/briarproject/android/BaseActivity.java
index 61efc68bd..db3628f06 100644
--- a/briar-android/src/org/briarproject/android/BaseActivity.java
+++ b/briar-android/src/org/briarproject/android/BaseActivity.java
@@ -48,6 +48,11 @@ public abstract class BaseActivity extends RoboActivity {
this.finish();
}
+ protected void gotoAndFinish(Class classInstance)
+ {
+ this.gotoAndFinish(classInstance, Integer.MIN_VALUE);
+ }
+
protected void hideSoftKeyboard()
{
Object o = getSystemService(INPUT_METHOD_SERVICE);
diff --git a/briar-android/src/org/briarproject/android/PasswordActivity.java b/briar-android/src/org/briarproject/android/PasswordActivity.java
index 736991d90..86c3bc02e 100644
--- a/briar-android/src/org/briarproject/android/PasswordActivity.java
+++ b/briar-android/src/org/briarproject/android/PasswordActivity.java
@@ -9,12 +9,15 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;
import org.briarproject.R;
+import org.briarproject.android.util.BriarIOUtils;
import org.briarproject.api.crypto.CryptoComponent;
import org.briarproject.api.crypto.CryptoExecutor;
import org.briarproject.api.crypto.SecretKey;
import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.util.StringUtils;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Editable;
import android.view.KeyEvent;
@@ -70,7 +73,7 @@ public class PasswordActivity extends BaseActivity {
@Override
protected void clearDbPrefs() {
super.clearDbPrefs();
- this.delete(databaseConfig.getDatabaseDirectory());
+ BriarIOUtils.deleteFileOrDir(databaseConfig.getDatabaseDirectory());
this.gotoAndFinish(SetupActivity.class, RESULT_CANCELED);
}
@@ -79,12 +82,19 @@ public class PasswordActivity extends BaseActivity {
}
public void onForgottenPasswordClick(View v) {
- this.clearDbPrefs();
- }
-
- private void delete(File f) {
- if (f.isFile()) f.delete();
- else if (f.isDirectory()) for (File child : f.listFiles()) delete(child);
+ // TODO Encapsulate the dialog in a re-usable fragment
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.dialog_title_lost_password);
+ builder.setMessage(R.string.dialog_message_lost_password);
+ builder.setNegativeButton(R.string.no, null);
+ builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ PasswordActivity.this.clearDbPrefs();
+ }
+ });
+ AlertDialog dialog = builder.create();
+ dialog.show();
}
private void validatePassword(final byte[] encrypted, Editable e) {
diff --git a/briar-android/src/org/briarproject/android/util/BriarIOUtils.java b/briar-android/src/org/briarproject/android/util/BriarIOUtils.java
new file mode 100644
index 000000000..f4a9ff38f
--- /dev/null
+++ b/briar-android/src/org/briarproject/android/util/BriarIOUtils.java
@@ -0,0 +1,18 @@
+package org.briarproject.android.util;
+
+import java.io.File;
+
+/**
+ * Created by Ernir Erlingsson (ernir@ymirmobile.com) on 9.12.2015.
+ */
+public class BriarIOUtils {
+
+ public static void deleteFileOrDir(File f)
+ {
+ if (f.isFile())
+ f.delete();
+ else if (f.isDirectory())
+ for (File child : f.listFiles())
+ deleteFileOrDir(child);
+ }
+}