package com.door43.translationstudio;
import android.app.ProgressDialog;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ToggleButton;
import com.door43.translationstudio.core.Profile;
import com.door43.translationstudio.dialogs.CustomAlertDialog;
import com.door43.translationstudio.tasks.RegisterDoor43Task;
import com.door43.util.tasks.ManagedTask;
import com.door43.util.tasks.TaskManager;
import com.door43.widget.ViewUtil;
import org.unfoldingword.gogsclient.User;
public class RegisterDoor43Activity extends AppCompatActivity implements ManagedTask.OnFinishedListener {
private ProgressDialog progressDialog = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_door43);
final EditText fullNameText = (EditText)findViewById(R.id.full_name);
final EditText emailText = (EditText)findViewById(R.id.email);
final EditText usernameText = (EditText)findViewById(R.id.username);
final EditText passwordText = (EditText)findViewById(R.id.password);
final EditText password2Text = (EditText)findViewById(R.id.password2);
final ToggleButton showPasswordButton = (ToggleButton) findViewById(R.id.show_password_button);
showPasswordButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int inputType = showPasswordButton.isChecked() ? InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_TEXT_VARIATION_PASSWORD;
passwordText.setInputType(InputType.TYPE_CLASS_TEXT | inputType);
passwordText.setSelection(passwordText.getText().length());
password2Text.setInputType(InputType.TYPE_CLASS_TEXT | inputType);
password2Text.setSelection(password2Text.getText().length());
}
});
Button cancelButton = (Button)findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Button continueButton = (Button)findViewById(R.id.ok_button);
continueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppContext.closeKeyboard(RegisterDoor43Activity.this);
final String fullName = fullNameText.getText().toString().trim();
final String username = usernameText.getText().toString();
final String email = emailText.getText().toString().trim();
final String password = passwordText.getText().toString();
String password2 = password2Text.getText().toString();
if(!fullName.isEmpty() && !username.trim().isEmpty() && !email.trim().isEmpty() && !password.trim().isEmpty()) {
if(password.equals(password2)) {
ProfileActivity.showPrivacyNotice(RegisterDoor43Activity.this, new View.OnClickListener() {
@Override
public void onClick(View v) {
RegisterDoor43Task task = new RegisterDoor43Task(username, password, fullName, email);
showProgressDialog();
task.addOnFinishedListener(RegisterDoor43Activity.this);
TaskManager.addTask(task, RegisterDoor43Task.TASK_ID);
}
});
} else {
Snackbar snack = Snackbar.make(findViewById(android.R.id.content), R.string.passwords_mismatch, Snackbar.LENGTH_SHORT);
ViewUtil.setSnackBarTextColor(snack, getResources().getColor(R.color.light_primary_text));
snack.show();
}
} else {
Snackbar snack = Snackbar.make(findViewById(android.R.id.content), R.string.complete_required_fields, Snackbar.LENGTH_SHORT);
ViewUtil.setSnackBarTextColor(snack, getResources().getColor(R.color.light_primary_text));
snack.show();
}
}
});
findViewById(R.id.privacy_notice).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ProfileActivity.showPrivacyNotice(RegisterDoor43Activity.this, null);
}
});
RegisterDoor43Task task = (RegisterDoor43Task) TaskManager.getTask(RegisterDoor43Task.TASK_ID);
if(task != null) {
showProgressDialog();
task.addOnFinishedListener(this);
}
}
private void showProgressDialog() {
if(progressDialog == null) {
progressDialog = new ProgressDialog(this);
}
progressDialog.setTitle(getResources().getString(R.string.logging_in));
progressDialog.setMessage(getResources().getString(R.string.please_wait));
progressDialog.setIndeterminate(true);
progressDialog.show();
}
@Override
public void onFinished(ManagedTask task) {
TaskManager.clearTask(task);
if(progressDialog != null) {
progressDialog.dismiss();
}
User user = ((RegisterDoor43Task)task).getUser();
if(user != null) {
// save gogs user to profile
Profile profile = new Profile(user.fullName);
profile.gogsUser = user;
AppContext.setProfile(profile);
finish();
} else {
String error =((RegisterDoor43Task)task).getError();
error = error == null ? getResources().getString(R.string.registration_failed) : error;
// registration failed
CustomAlertDialog.Create(this)
.setTitle(R.string.error)
.setMessage(error)
.setPositiveButton(R.string.label_ok, null)
.show("registration_failed");
}
}
}