Android Open Source - Joetz-Android-V2 Register Fragment






From Project

Back to project page Joetz-Android-V2.

License

The source code is released under:

GNU General Public License

If you think the Android project Joetz-Android-V2 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.example.jens.myapplication.account;
//w w w.j  a va  2s . c  o m
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.Toast;

import com.example.jens.myapplication.R;
import com.example.jens.myapplication.apimanager.ApiConnection;
import com.example.jens.myapplication.apimanager.CancellableTask;
import com.example.jens.myapplication.apimanager.SimpleRequestTask;
import com.example.jens.myapplication.apimanager.manager.LoginManager;
import com.example.jens.myapplication.apimanager.manager.RegisterManager;
import com.example.jens.myapplication.domain.Person;
import com.example.jens.myapplication.domain.User;
import com.example.jens.myapplication.domain.binding.PersonValidatorBinding;
import com.example.jens.myapplication.domain.binding.UserValidatorBinding;
import com.example.jens.myapplication.domain.binding.ValidatorBinding;
import com.example.jens.myapplication.domain.validator.PersonValidator;
import com.example.jens.myapplication.domain.validator.UserValidator;
import com.example.jens.myapplication.sam.JoetzApplication;
import com.example.jens.myapplication.sam.MyFragment;
import com.example.jens.myapplication.util.ActivityUtils;
import com.example.jens.myapplication.view.MyLinearLayout;

import org.joda.time.DateTime;

import java.util.ArrayList;
import java.util.List;

public class RegisterFragment extends MyFragment {
    private static final String ARG_DIALOG = "dialog";

    private boolean isDialog = false;

    private OnFragmentInteractionListener mListener;

    private User user;
    private Person person;
    private UserValidator userValidator;
    private PersonValidator personValidator;

    private ScrollView mRootScrollView;
    private MyLinearLayout mRootLinearLayout;

    private Button mBtnRegister;
    private Button mBtnReturnLogin;
  //  private Button mBtnChooseDob;

    private EditText mTxtEmail;
    private EditText mTxtPassword;
    private EditText mTxtRepeatPassword;
    private EditText mTxtFirstName;
    private EditText mTxtLastName;
    private EditText mTxtTelephone;
    private EditText mTxtDateOfBirth;
    private EditText mTxtRijksRegisterNummer;

    private CheckBox mChkSubscribe;

    private List<ValidatorBinding> mValidators;
    private ValidatorBinding mDobValidatorBinding;

    private CancellableTask mRegisterTask;

    public static RegisterFragment newInstance() {
        RegisterFragment fragment = new RegisterFragment();
        return fragment;
    }

    public static RegisterFragment newInstance(boolean isDialog){
        RegisterFragment fragment = new RegisterFragment();
        Bundle b = new Bundle();
        b.putBoolean(ARG_DIALOG, isDialog);
        fragment.setArguments(b);
        return fragment;
    }

    public RegisterFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if(getArguments() != null){
            if(getArguments().containsKey(ARG_DIALOG)){
                isDialog = getArguments().getBoolean(ARG_DIALOG);
            }
        }

        user = new User();
        person = new Person();
        user.setPerson(person);
        if(savedInstanceState != null){
            if(savedInstanceState.containsKey("dobYear")){
                DateTime dob = new DateTime(savedInstanceState.getInt("dobYear"),
                        savedInstanceState.getInt("dobMonth"),
                        savedInstanceState.getInt("dobDay"), 0, 0);
                person.setDateOfBirth(dob);
            }
        }

        userValidator = new UserValidator(user);
        personValidator = new PersonValidator(person);

        mValidators = new ArrayList<ValidatorBinding>();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        DateTime dob = person.getDateOfBirth();
        if(dob != null){
            outState.putInt("dobYear", dob.getYear());
            outState.putInt("dobMonth", dob.getMonthOfYear());
            outState.putInt("dobDay", dob.getDayOfMonth());
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.fragment_register, container, false);

        mBtnRegister = (Button) rootView.findViewById(R.id.btnRegisterOrCancel);
        mBtnRegister.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                doRegister();
            }
        });

        mTxtEmail = (EditText) rootView.findViewById(R.id.txtEmail);
        mTxtPassword = (EditText) rootView.findViewById(R.id.txtPassword);
        mTxtRepeatPassword = (EditText) rootView.findViewById(R.id.txtRepeatPassword);
        mTxtFirstName = (EditText) rootView.findViewById(R.id.txtFirstName);
        mTxtLastName = (EditText) rootView.findViewById(R.id.txtLastName);
        mTxtTelephone = (EditText) rootView.findViewById(R.id.txtTelephone);
        mTxtDateOfBirth = (EditText) rootView.findViewById(R.id.txtDateOfBirth);

        mTxtRijksRegisterNummer = (EditText) rootView.findViewById(R.id.txtRijksRegisterNummer);

        mTxtRepeatPassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(!hasFocus){
                    validateRepeatPassword();
                }
            }
        });

        mChkSubscribe = (CheckBox) rootView.findViewById(R.id.chkSubscribe);
        user.setSubscribedToNewsletter(mChkSubscribe.isChecked());
        mChkSubscribe.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                user.setSubscribedToNewsletter(isChecked);
            }
        });

        //Dont allow typing in here
        mTxtDateOfBirth.setKeyListener(null);

        initValidators();

        mRootLinearLayout = (MyLinearLayout) rootView.findViewById(R.id.llyRootLinearLayout);
        mRootLinearLayout.setOnDispatchTouchEventListener(new MyLinearLayout.OnDispatchTouchEventListener() {
            @Override
            public void onDispatchTouchEvent(MotionEvent e) {
                clearFocus();
            }
        });
        mRootScrollView = (ScrollView) rootView.findViewById(R.id.scrRootScrollView);
        /*mRootScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {
                clearFocus();
            }
        });*/

        return rootView;
    }

    /**
     * Check if form has errors
     * @return true if form has errors
     */
    private boolean formHasErrors(){
        for(ValidatorBinding vb : mValidators){
            if(vb.getView().getError() != null){
                return true;
            }
        }
        if(mTxtDateOfBirth.getError() != null){
            return true;
        }
        if(mTxtRepeatPassword.getError() != null){
            return true;
        }

        return false;
    }

    /**
     * Do the registration request
     */
    private void doRegister(){
        validateAll();

        if(mRegisterTask != null){
            return;
        }

        if(formHasErrors()){
            new AlertDialog.Builder(getActivity())
                    .setNeutralButton(R.string.ok, null)
                    .setMessage(R.string.error_errors_exist)
                    .create().show();
            return;
        }

        final ProgressDialog pgdProgress = new ProgressDialog(getActivity());
        pgdProgress.setMessage(getString(R.string.registration_is_being_processed));
        pgdProgress.setCancelable(false);
        pgdProgress.show();

        SimpleRequestTask postTask = new SimpleRequestTask() {
            @Override
            public void doTask(int statusCode) {
                mRegisterTask = null;
                pgdProgress.dismiss();
                if(statusCode == ApiConnection.STATUS_OK){
                    /*Toast.makeText(getActivity().getApplication(), getString(R.string.register_successful),
                            Toast.LENGTH_SHORT).show();*/
                    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    builder.setMessage(R.string.register_successful)
                            .setNeutralButton(R.string.ok, new AlertDialog.OnClickListener(){
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    onRegistrationCompleted();
                                }
                            });
                    builder.setOnCancelListener(new AlertDialog.OnCancelListener(){
                        @Override
                        public void onCancel(DialogInterface dialog) {
                            onRegistrationCompleted();
                        }
                    });
                    builder.create().show();
                }
                else{
                    String msg;
                    if(statusCode < 0){
                        msg = getString(R.string.error_connection_failed);
                    }
                    else if(statusCode == ApiConnection.STATUS_CONFLICT){
                        msg = getString(R.string.error_email_already_exists);
                    }
                    else{
                        msg = getString(R.string.error_unknown);
                    }
                    Toast.makeText(getActivity().getApplication(), msg, Toast.LENGTH_SHORT).show();
                    setFieldsAndButtonsEnabled(true);
                }
            }
        };

        mRegisterTask = RegisterManager.registerUser(user, postTask);
        setFieldsAndButtonsEnabled(false);
    }

    /**
     * Called when the registration is completed
     */
    private void onRegistrationCompleted(){
        LoginManager loginManager = JoetzApplication.getContext().getLoginManager();

        mListener.onRegistrationCompleted();
    }

    private void setFieldsAndButtonsEnabled(boolean enabled){
        mBtnRegister.setEnabled(enabled);
        mTxtRepeatPassword.setEnabled(enabled);
        mTxtDateOfBirth.setEnabled(enabled);
        mChkSubscribe.setEnabled(enabled);
        for(ValidatorBinding vb : mValidators){
            vb.getView().setEnabled(enabled);
        }
    }

    /**
     * Clear the focus of the views
     */
    private void clearFocus(){
        View view = getActivity() == null ? null : getActivity().getCurrentFocus();
        if(view == null || view == mRootLinearLayout){
            return;
        }

        mRootLinearLayout.requestFocus();
    }

    /**
     * Validate the repeat password field
     */
    private void validateRepeatPassword(){
        String txt = mTxtRepeatPassword.getText().toString();
        if(!txt.equals(mTxtPassword.getText().toString())){
            mTxtRepeatPassword.setError(getString(R.string.error_passwords_equal));
        }else if(txt.isEmpty()){
            mTxtRepeatPassword.setError(
                    getString(R.string.$_need_filled_in, mTxtPassword.getHint().toString()));
        }
        else{
            mTxtRepeatPassword.setError(null);
        }
    }

    @Override
    public boolean onBackPressed() {
        super.onBackPressed();
        closeRegister();
        return true;
    }

    @Override
    public void onPause() {
        super.onPause();
        if(mRegisterTask != null){
            mRegisterTask.cancelTask();
        }
    }

    /**
     * Open dialog to choose the date of birth
     */
    private void chooseDateOfBirth(){
        ActivityUtils.chooseDateOfBirth(getActivity(), person, new ActivityUtils.OnDateChosenListener() {
            @Override
            public void onDateChosen(int year, int monthOfYear, int dayOfMonth) {
                person.setDateOfBirth(new DateTime(year, monthOfYear, dayOfMonth, 0, 0));
                //fillDateOfBirth();
                //validateDateOfBirth();
                mDobValidatorBinding.fillValue();
                mDobValidatorBinding.validate();
                mTxtDateOfBirth.requestFocus();
            }
        });
    }

    private void closeRegister(){
        mListener.onCloseRegisterFragment();
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (OnFragmentInteractionListener) activity;
            mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    /**
     * Validate all the fields
     */
    private void validateAll(){
        for(ValidatorBinding vb : mValidators){
            vb.validate();
        }
        validateRepeatPassword();
    }

    /**
     * Initialize the bindings
     */
    private void initValidators(){
        mValidators.add(new UserValidatorBinding(userValidator, mTxtPassword,
                UserValidatorBinding.FIELD_PASSWORD, mTxtPassword.getHint().toString()));

        mValidators.add(new PersonValidatorBinding(personValidator, mTxtEmail,
                PersonValidatorBinding.FIELD_EMAIL, mTxtEmail.getHint().toString()));

        mValidators.add(new PersonValidatorBinding(personValidator, mTxtFirstName,
                PersonValidatorBinding.FIELD_FIRST_NAME, mTxtFirstName.getHint().toString()));

        mValidators.add(new PersonValidatorBinding(personValidator, mTxtLastName,
                PersonValidatorBinding.FIELD_LAST_NAME, mTxtLastName.getHint().toString()));

        mValidators.add(new PersonValidatorBinding(personValidator, mTxtTelephone,
                PersonValidatorBinding.FIELD_PHONE, mTxtTelephone.getHint().toString(), false));

        mValidators.add(new PersonValidatorBinding(personValidator, mTxtRijksRegisterNummer,
                PersonValidatorBinding.FIELD_RIJKSREGISTERNUMMER, mTxtRijksRegisterNummer.getHint().toString()));

        mDobValidatorBinding = new PersonValidatorBinding(personValidator, mTxtDateOfBirth,
                PersonValidatorBinding.FIELD_DATE_OF_BIRTH, mTxtDateOfBirth.getHint().toString());
        mValidators.add(mDobValidatorBinding);
        //Open datepicker on click
        mDobValidatorBinding.addOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus){
                    chooseDateOfBirth();
                }
            }
        });

        mTxtRepeatPassword.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {}

            @Override
            public void afterTextChanged(Editable s) {
                validateRepeatPassword();
            }
        });

        mTxtRepeatPassword.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if(keyCode == KeyEvent.KEYCODE_DEL){
                    validateRepeatPassword();
                }
                return false;
            }
        });

        mTxtPassword.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                validateRepeatPassword();
            }
        });
    }

    public interface OnFragmentInteractionListener {
        public void onCloseRegisterFragment();
        public void onRegistrationCompleted();
    }
}




Java Source Code List

com.example.jens.myapplication.ApplicationTest.java
com.example.jens.myapplication.account.FragmentAccount.java
com.example.jens.myapplication.account.LoginDialogActivity.java
com.example.jens.myapplication.account.LoginFragment.java
com.example.jens.myapplication.account.PersonsFragment.java
com.example.jens.myapplication.account.ProfileFragment.java
com.example.jens.myapplication.account.RegisterDialogActivity.java
com.example.jens.myapplication.account.RegisterFragment.java
com.example.jens.myapplication.account.TabsPagerAdapter.java
com.example.jens.myapplication.activities.ActivityDetailActivity.java
com.example.jens.myapplication.activities.ActivityDetailFragment.java
com.example.jens.myapplication.activities.FragmentListActivities.java
com.example.jens.myapplication.activities.JoetzActivitiesAdapter.java
com.example.jens.myapplication.activities.JoetzActivity.java
com.example.jens.myapplication.activities.StartActivity.java
com.example.jens.myapplication.apimanager.ApiConnection.java
com.example.jens.myapplication.apimanager.CancellableTask.java
com.example.jens.myapplication.apimanager.JSONParsingTask.java
com.example.jens.myapplication.apimanager.PostRequestTask.java
com.example.jens.myapplication.apimanager.RequestParams.java
com.example.jens.myapplication.apimanager.SimpleRequestTask.java
com.example.jens.myapplication.apimanager.filter.PersonFilter.java
com.example.jens.myapplication.apimanager.manager.ActivityManager.java
com.example.jens.myapplication.apimanager.manager.AuthToken.java
com.example.jens.myapplication.apimanager.manager.BookingManager.java
com.example.jens.myapplication.apimanager.manager.CampManager.java
com.example.jens.myapplication.apimanager.manager.ImageManager.java
com.example.jens.myapplication.apimanager.manager.LoginManager.java
com.example.jens.myapplication.apimanager.manager.ProfileManager.java
com.example.jens.myapplication.apimanager.manager.RegisterManager.java
com.example.jens.myapplication.booking.AddPersonActivity.java
com.example.jens.myapplication.booking.BookingActivity.java
com.example.jens.myapplication.booking.BookingBondFragment.java
com.example.jens.myapplication.booking.BookingContactFragment.java
com.example.jens.myapplication.booking.BookingExtraFragment.java
com.example.jens.myapplication.booking.BookingParticipantsFragment.java
com.example.jens.myapplication.bookingHistory.BookingHistoryDetailActivity.java
com.example.jens.myapplication.bookingHistory.BookingHistoryDetailFragment.java
com.example.jens.myapplication.bookingHistory.BookingHistoryOverviewFragment.java
com.example.jens.myapplication.bookingHistory.BookingsAdapter.java
com.example.jens.myapplication.calendar.FragmentCalendar.java
com.example.jens.myapplication.calendar.KalenderAdapter.java
com.example.jens.myapplication.calendar.KalenderItem.java
com.example.jens.myapplication.camps.CampAdapter.java
com.example.jens.myapplication.camps.CampDetailActivity.java
com.example.jens.myapplication.camps.CampFilterActivity.java
com.example.jens.myapplication.camps.FilterFragment.java
com.example.jens.myapplication.camps.FragmentListCamps.java
com.example.jens.myapplication.camps.ImageActivity.java
com.example.jens.myapplication.camps.ImagePagerFragment.java
com.example.jens.myapplication.camps.InfoFragment.java
com.example.jens.myapplication.camps.PhotoFragment.java
com.example.jens.myapplication.camps.RecyclerItemClickListener.java
com.example.jens.myapplication.camps.SquareImageView.java
com.example.jens.myapplication.camps.TabsPagerAdapter.java
com.example.jens.myapplication.domain.BookingStatus.java
com.example.jens.myapplication.domain.Booking.java
com.example.jens.myapplication.domain.Camp.java
com.example.jens.myapplication.domain.PeriodCategory.java
com.example.jens.myapplication.domain.Person.java
com.example.jens.myapplication.domain.UserRole.java
com.example.jens.myapplication.domain.User.java
com.example.jens.myapplication.domain.binding.PersonValidatorBinding.java
com.example.jens.myapplication.domain.binding.UserValidatorBinding.java
com.example.jens.myapplication.domain.binding.ValidatorBinding.java
com.example.jens.myapplication.domain.converter.ErrorConverter.java
com.example.jens.myapplication.domain.converter.MyStringParser.java
com.example.jens.myapplication.domain.converter.UnixDateTimeConverter.java
com.example.jens.myapplication.domain.validator.PersonValidator.java
com.example.jens.myapplication.domain.validator.UserValidator.java
com.example.jens.myapplication.domain.validator.Validator.java
com.example.jens.myapplication.home.AanbevolenAdapter.java
com.example.jens.myapplication.home.HomeFragment.java
com.example.jens.myapplication.home.ImageSlideAdapter.java
com.example.jens.myapplication.home.Reclame.java
com.example.jens.myapplication.lib.RangeSeekBar.java
com.example.jens.myapplication.main.MainActivity.java
com.example.jens.myapplication.main.NavDrawerAdapter.java
com.example.jens.myapplication.main.NavDrawerItem.java
com.example.jens.myapplication.main.NavMenuItem.java
com.example.jens.myapplication.main.NavMenuSection.java
com.example.jens.myapplication.sam.JoetzApplication.java
com.example.jens.myapplication.sam.MyFragment.java
com.example.jens.myapplication.sam.MySaveableFragment.java
com.example.jens.myapplication.util.AESEncryption.java
com.example.jens.myapplication.util.ActivityUtils.java
com.example.jens.myapplication.util.BindingUtils.java
com.example.jens.myapplication.util.DateTimeStringConverter.java
com.example.jens.myapplication.util.JsonUtils.java
com.example.jens.myapplication.util.MyMonths.java
com.example.jens.myapplication.util.StringUtils.java
com.example.jens.myapplication.view.MyLinearLayout.java