com.victorkifer.AndroidTemplates.fragments.SignInFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.victorkifer.AndroidTemplates.fragments.SignInFragment.java

Source

package com.victorkifer.AndroidTemplates.fragments;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.victorkifer.AndroidTemplates.R;
import com.victorkifer.AndroidTemplates.entities.User;
import com.victorkifer.AndroidTemplates.workers.SignInWorker;

import java.util.regex.Pattern;

/**
 * Author: Victor Kifer (droiddevua[at]gmail[dot]com)
 * License: MIT (see LICENSE file)
 * Year: 2014
 */
public class SignInFragment extends Fragment implements SignInWorker.OnSignInFinished {
    public static final int DEFAULT_MIN_PASSWORD_LENGTH = 6;

    private int minPasswordLength = DEFAULT_MIN_PASSWORD_LENGTH;

    EditText etEmail;
    EditText etPassword;
    Button btnSignIn;

    View signInForm;
    View signInProgress;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.sign_in, container, false);

        signInProgress = v.findViewById(R.id.sign_in_progress);
        signInForm = v.findViewById(R.id.sign_in_form);

        etEmail = (EditText) v.findViewById(R.id.etEmail);
        etPassword = (EditText) v.findViewById(R.id.etPassword);
        btnSignIn = (Button) v.findViewById(R.id.btnSignIn);
        btnSignIn.setOnClickListener(signInListener);

        return super.onCreateView(inflater, container, savedInstanceState);
    }

    private int checkInput() {
        int result = Activity.RESULT_OK;
        if (etEmail.getText() == null || etEmail.getText().length() == 0) {
            etEmail.setError(getString(R.string.err_email_empty));
            result = Activity.RESULT_CANCELED;
        } else {
            Pattern emailPattern = Patterns.EMAIL_ADDRESS;
            if (!emailPattern.matcher(etEmail.getText()).matches()) {
                etEmail.setError(getString(R.string.err_not_an_email));
                result = Activity.RESULT_CANCELED;
            }
        }

        if (etPassword.getText() == null || etPassword.getText().length() == 0) {
            etPassword.setError(getString(R.string.err_password_empty));
            result = Activity.RESULT_CANCELED;
        } else if (etPassword.getText().length() < minPasswordLength) {
            etPassword.setError(getString(R.string.err_password_too_short));
            result = Activity.RESULT_CANCELED;
        }
        return result;
    }

    private void hideSoftKeyboard() {
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(etPassword.getWindowToken(), 0);
    }

    private void signIn(String email, String password) {
        hideSoftKeyboard();
        signInForm.setVisibility(View.GONE);
        signInProgress.setVisibility(View.VISIBLE);

        // do sign in
    }

    private View.OnClickListener signInListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int result = checkInput();
            if (result == Activity.RESULT_OK) {
                signIn(etEmail.getText().toString(), etPassword.getText().toString());
            }
        }
    };

    @Override
    public void onSignInSuccessful(User user) {
        // inform activity to change fragment
    }

    @Override
    public void onSignInFailed(String error) {
        signInForm.setVisibility(View.VISIBLE);
        signInProgress.setVisibility(View.GONE);
        Toast.makeText(getActivity(), getString(R.string.err_invalid_email_password), Toast.LENGTH_LONG).show();
    }
}