Back to project page Joetz-Android-V2.
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.
package com.example.jens.myapplication.account; //w w w. java2 s.c o m import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; 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.sam.JoetzApplication; import com.example.jens.myapplication.sam.MyFragment; /** * Fragment for Logging in */ public class LoginFragment extends MyFragment { private static final String ARG_DIALOG = "dialog"; //If the fragment is shown as a dialog private boolean isDialog = false; private OnFragmentInteractionListener mListener; private CancellableTask loginTask = null; private LoginManager mLoginManager; private CheckBox mChkStayLoggedIn; private EditText mTxtEmail; private EditText mTxtPass; private TextView mTxtNoAccount; private Button mBtnLogin; private Button mBtnCancel; /** * * @param isDialog If the fragment is shown as a dialog (for cancel button), set to true * @return */ public static LoginFragment newInstance(boolean isDialog){ LoginFragment fragment = new LoginFragment(); Bundle b = new Bundle(); b.putBoolean(ARG_DIALOG, isDialog); fragment.setArguments(b); return fragment; } public static LoginFragment newInstance(){ //Standard not as dialog return newInstance(false); } public LoginFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Retrieve data from arguments if(getArguments() != null && getArguments().containsKey(ARG_DIALOG)){ isDialog = getArguments().getBoolean(ARG_DIALOG); } //Load login manager mLoginManager = JoetzApplication.getContext().getLoginManager(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView; //Load similar but different layout when its a dialog if(!isDialog){ rootView = inflater.inflate(R.layout.fragment_login, container, false); }else{ rootView = inflater.inflate(R.layout.fragment_login_dialog, container, false); } //Remember me button mChkStayLoggedIn = (CheckBox) rootView.findViewById(R.id.chkStayLoggedIn); mTxtEmail = (EditText) rootView.findViewById(R.id.txtEmail); mTxtPass = (EditText) rootView.findViewById(R.id.txtPass); mTxtNoAccount = (TextView) rootView.findViewById(R.id.txtNoAccount); mBtnLogin = (Button) rootView.findViewById(R.id.btnLogin); mBtnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { login(); } }); mTxtNoAccount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onGoRegister(); } }); /* mBtnCancel = (Button) rootView.findViewById(R.id.btnRegisterOrCancel); if(isDialog){ mBtnCancel.setText(R.string.cancel); } mBtnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onGoRegisterOrCancel(); } });*/ if(isDialog){ mBtnCancel = (Button) rootView.findViewById(R.id.btnCancel); mBtnCancel.setVisibility(View.VISIBLE); mBtnCancel.setText(R.string.cancel); mBtnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onLoginCancel(); } }); } return rootView; } /** * Perform the login * */ private void login(){ //Remove keyboard View v = getActivity().getCurrentFocus(); if(v != null){ InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } if(loginTask != null){ return; } String email = mTxtEmail.getText().toString(); String password = mTxtPass.getText().toString(); //email and pass should be filled in if(email == null || email.isEmpty() || password == null || password.isEmpty()){ return; } //Disable buttons etc during request mTxtEmail.setEnabled(false); mTxtPass.setEnabled(false); mBtnLogin.setEnabled(false); //Progressdialog shown during request final ProgressDialog prgDialog = new ProgressDialog(getActivity()); prgDialog.setMessage(getString(R.string.info_logging_in)); prgDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { if(loginTask != null){ loginTask.cancelTask(); } loginTask = null; mTxtEmail.setEnabled(true); mTxtPass.setEnabled(true); mBtnLogin.setEnabled(true); } }); //Task executed after login has finished SimpleRequestTask postTask = new SimpleRequestTask() { @Override public void doTask(int statusCode) { prgDialog.dismiss(); loginTask = null; String authKey = mLoginManager.getAuthKey(); mTxtEmail.setEnabled(true); mTxtPass.setEnabled(true); mBtnLogin.setEnabled(true); if(authKey == null){ //Show informative error message String msg; if(statusCode < 0){ msg = getString(R.string.error_connection_failed); }else{ switch(statusCode){ case ApiConnection.STATUS_UNAUTHORIZED: msg = getString(R.string.error_wrong_login); break; default: msg = getString(R.string.error_unknown); } } new AlertDialog.Builder(getActivity()) .setMessage(msg) .setNeutralButton(R.string.ok, null) .create().show(); } else{ onLoginFinished(); } } }; //Send login request. When returned, will call postTask's doTask() loginTask = mLoginManager.login(mTxtEmail.getText().toString(), mTxtPass.getText().toString(), postTask, mChkStayLoggedIn.isChecked()); prgDialog.show(); } private void onLoginFinished(){ mListener.onLoginFinished(); } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (OnFragmentInteractionListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } @Override public void onPause() { super.onPause(); if(loginTask != null){ loginTask.cancelTask(); } } public interface OnFragmentInteractionListener { public void onLoginFinished(); public void onGoRegister(); public void onLoginCancel(); } }