package org.witness.informacam.app.screens.wizard; import org.witness.informacam.app.R; import org.witness.informacam.app.utils.UIHelpers; import org.witness.informacam.app.utils.Constants.WizardActivityListener; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; public class WizardCreateDB extends Fragment implements OnClickListener { View rootView; Activity a; private Button commit; private EditText alias, email, password, passwordAgain; public final static int MINIMUM_PASSWORD_LENGTH = 4; //we know it sucks, but we'll leave it up to the user to provide longer @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater li, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(li, container, savedInstanceState); rootView = li.inflate(R.layout.fragment_wizard_create_db, null); alias = (EditText) rootView.findViewById(R.id.user_name); alias.addTextChangedListener(readAlias); email = (EditText) rootView.findViewById(R.id.user_email); password = (EditText) rootView.findViewById(R.id.user_password); password.addTextChangedListener(readPassword); passwordAgain = (EditText) rootView.findViewById(R.id.user_password_again); passwordAgain.addTextChangedListener(readPassword); commit = (Button) rootView.findViewById(R.id.wizard_commit); commit.setEnabled(false); commit.setOnClickListener(this); return rootView; } @Override public void onAttach(Activity a) { super.onAttach(a); this.a = a; } @Override public void onClick(View v) { if (v == commit) { if (isEverythingOk()) { UIHelpers.hideSoftKeyboard(a); if (a instanceof WizardActivityListener) { ((WizardActivityListener) a).onUsernameCreated(alias.getText().toString(), email.getText().toString(), password.getText().toString()); } } } } private boolean checkAlias() { if(alias.getText().length() >= 2) { return true; } return false; } private boolean checkPasswordFormat(String password) { if(password.length() >= MINIMUM_PASSWORD_LENGTH) return true; return false; } private boolean checkPasswordsMatch(String p1, String p2) { return checkPasswordFormat(p1) && String.valueOf(p1).equals(p2); } private void updateCommitButtonText() { if (!checkPasswordFormat(password.getText().toString())) commit.setText(R.string.wizard_password_wrong_format); else if (!checkPasswordsMatch(password.getText().toString(), passwordAgain.getText().toString())) commit.setText(R.string.wizard_password_dont_match); else commit.setText(R.string.wizard_ok_next); } private boolean isEverythingOk() { return checkAlias() && checkPasswordFormat(password.getText().toString()) && checkPasswordsMatch(password.getText().toString(), passwordAgain.getText().toString()); } private void enableDisableCommit() { commit.setEnabled(isEverythingOk()); } TextWatcher readAlias = new TextWatcher() { @Override public void afterTextChanged(Editable s) { enableDisableCommit(); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } }; TextWatcher readPassword = new TextWatcher() { @Override public void afterTextChanged(Editable s) { enableDisableCommit(); updateCommitButtonText(); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} }; }