Newer
Older
package org.briarproject.android;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AlertDialog;
import android.text.Editable;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

Ernir Erlingsson
committed
import org.briarproject.android.controller.PasswordController;
import org.briarproject.android.controller.handler.UiResultHandler;
import org.briarproject.android.util.AndroidUtils;
import static android.content.Intent.ACTION_MAIN;
import static android.content.Intent.CATEGORY_HOME;

Ernir Erlingsson
committed
public class PasswordActivity extends BaseActivity {
@Inject
protected PasswordController passwordController;
private Button signInButton;
private ProgressBar progress;

Ernir Erlingsson
committed
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
if (!passwordController.accountExists()) {
deleteAccount();
return;
}
setContentView(R.layout.activity_password);
signInButton = (Button) findViewById(R.id.btn_sign_in);
progress = (ProgressBar) findViewById(R.id.progress_wheel);
input = (TextInputLayout) findViewById(R.id.password_layout);
password = (EditText) findViewById(R.id.edit_password);
password.setOnEditorActionListener(new OnEditorActionListener() {

Ernir Erlingsson
committed
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
password.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (count > 0) AndroidUtils.setError(input, null, false);
}
@Override
public void afterTextChanged(Editable s) {
}

Ernir Erlingsson
committed
}
public void injectActivity(ActivityComponent component) {
component.inject(this);
}
@Override
public void onBackPressed() {
// Show the home screen rather than another password prompt
Intent intent = new Intent(ACTION_MAIN);
intent.addCategory(CATEGORY_HOME);
startActivity(intent);
}
private void deleteAccount() {
passwordController.deleteAccount(this);
setResult(RESULT_CANCELED);
startActivity(new Intent(this, SetupActivity.class));
finish();

Ernir Erlingsson
committed
}

Ernir Erlingsson
committed
public void onSignInClick(View v) {

Ernir Erlingsson
committed
}

Ernir Erlingsson
committed
public void onForgottenPasswordClick(View v) {
// TODO Encapsulate the dialog in a re-usable fragment
AlertDialog.Builder builder = new AlertDialog.Builder(this,
R.style.BriarDialogTheme);
builder.setTitle(R.string.dialog_title_lost_password);
builder.setMessage(R.string.dialog_message_lost_password);
builder.setPositiveButton(R.string.cancel, null);
builder.setNegativeButton(R.string.delete,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AlertDialog dialog = builder.create();
dialog.show();
}
hideSoftKeyboard(password);
progress.setVisibility(VISIBLE);
passwordController.validatePassword(password.getText().toString(),
new UiResultHandler<Boolean>(this) {

Ernir Erlingsson
committed
@Override
public void onResultUi(@NonNull Boolean result) {
if (result) {

Ernir Erlingsson
committed
setResult(RESULT_OK);
finish();
} else {
tryAgain();
}
}
});
AndroidUtils.setError(input, getString(R.string.try_again), true);
signInButton.setVisibility(VISIBLE);
progress.setVisibility(INVISIBLE);
password.setText("");
// show the keyboard again
showSoftKeyboard(password);
}