package com.vladstoick.gotocinema; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; import com.actionbarsherlock.app.SherlockActivity; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; import com.vladstoick.utility.CinemaRestClient; import org.json.JSONException; import org.json.JSONObject; public class LoginActivity extends SherlockActivity { private static final String EXTRA_EMAIL = "com.vladstoick.gotocinema.login"; private String mEmail; private EditText mEmailView; private EditText mPasswordView; private View mLoginFormView; private View mLoginStatusView; private TextView mLoginStatusMessageView; @Override public void onResume() { super.onResume(); SharedPreferences settings = getSharedPreferences("appPref", Context.MODE_PRIVATE); String apiKey = settings.getString("api_acces","0"); String user_id = settings.getString("user_id","0"); if(!apiKey.equals("0") && !user_id.equals("0")) { Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(intent); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); // Set up the login form. mEmail = getIntent().getStringExtra(EXTRA_EMAIL); mEmailView = (EditText) findViewById(R.id.email); mEmailView.setText(mEmail); mPasswordView = (EditText) findViewById(R.id.password); mPasswordView .setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { if (id == R.id.login || id == EditorInfo.IME_NULL) { attemptLogin(); return true; } return false; } }); mLoginFormView = findViewById(R.id.login_form); mLoginStatusView = findViewById(R.id.login_status); mLoginStatusMessageView = (TextView) findViewById(R.id.login_status_message); findViewById(R.id.sign_in_button).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { attemptLogin(); } }); } void attemptLogin() { mEmailView.setError(null); mPasswordView.setError(null); mEmail = mEmailView.getText().toString(); String mPassword = mPasswordView.getText().toString(); boolean cancel = false; View focusView = null; if (TextUtils.isEmpty(mPassword)) { mPasswordView.setError(getResources().getString(R.string.wrong_password)); focusView = mPasswordView; cancel = true; } else if (mPassword.length() < 4) { mPasswordView.setError(getString(R.string.wrong_password)); focusView = mPasswordView; cancel = true; } if (TextUtils.isEmpty(mEmail)) { mEmailView.setError(getString(R.string.wrong_username)); focusView = mEmailView; cancel = true; } if (cancel) { focusView.requestFocus(); } else { mLoginStatusMessageView.setText(R.string.login_progress_signing_in); showProgress(true); RequestParams params = new RequestParams(); params.put("username", mEmail); params.put("password", mPassword); CinemaRestClient.post("user/login", params, new AsyncHttpResponseHandler() { @Override public void onFailure(Throwable e, String response) { e.printStackTrace(); } @Override public void onSuccess(String response) { JSONObject jObject = null; boolean loginStatus = false; try { jObject = new JSONObject(response); loginStatus = jObject.getBoolean("loggedIn"); } catch (JSONException e) { e.printStackTrace(); } if (loginStatus) { Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); SharedPreferences sharedPref = getSharedPreferences("appPref", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); String key = null; String userid = null; try { key = jObject.getString("key"); userid = jObject.getString("user_id"); } catch (JSONException e) { e.printStackTrace(); } editor.putString("api_acces", key); editor.putString("user_id", userid); editor.commit(); startActivity(intent); finish(); } else { String error = null; try { error = jObject.getString("error"); } catch (JSONException e) { e.printStackTrace(); } if (error.equals("email")) mEmailView.setError(getString(R.string.wrong_username)); mPasswordView.setError(getString(R.string.wrong_password)); } showProgress(false); } }); } } @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) private void showProgress(final boolean show) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { int shortAnimTime = getResources().getInteger( android.R.integer.config_shortAnimTime); mLoginStatusView.setVisibility(View.VISIBLE); mLoginStatusView.animate().setDuration(shortAnimTime) .alpha(show ? 1 : 0) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mLoginStatusView.setVisibility(show ? View.VISIBLE : View.GONE); } }); mLoginFormView.setVisibility(View.VISIBLE); mLoginFormView.animate().setDuration(shortAnimTime) .alpha(show ? 0 : 1) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); } }); } else { // The ViewPropertyAnimator APIs are not available, so simply show // and hide the relevant UI components. mLoginStatusView.setVisibility(show ? View.VISIBLE : View.GONE); mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); } } }