package com.ecollege.android;
import org.apache.commons.lang.StringUtils;
import roboguice.inject.InjectView;
import roboguice.util.Ln;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import com.ecollege.android.activities.ECollegeDefaultActivity;
import com.ecollege.android.errors.ECollegeAlertException;
import com.ecollege.android.errors.ECollegePromptException;
import com.ecollege.api.ECollegeClient;
import com.ecollege.api.exceptions.IncorrectCredentialsException;
import com.ecollege.api.services.users.FetchMeService;
import com.google.inject.Inject;
import com.google.inject.internal.Nullable;
public class LoginActivity extends ECollegeDefaultActivity {
@Nullable @InjectView(R.id.login_button) Button loginButton;
@Nullable @InjectView(R.id.username_text) EditText usernameText;
@Nullable @InjectView(R.id.password_text) EditText passwordText;
@Nullable @InjectView(R.id.remember_check) CheckBox rememberCheck;
@Inject ECollegeApplication app;
@Inject SharedPreferences prefs;
protected ECollegeClient client;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
client = app.getClient();
setTitle("PEARSON");
setContentView(R.layout.login);
}
public void onLoginClick(View v)
{
if (StringUtils.isBlank(usernameText.getText().toString()) || StringUtils.isBlank(passwordText.getText().toString())) {
app.reportError(new ECollegePromptException(this, R.string.e_no_login_provided));
return;
}
client.setupAuthentication(usernameText.getText().toString(), passwordText.getText().toString());
if (!rememberCheck.isChecked()) {
if (prefs.contains("grantToken")) {
SharedPreferences.Editor editor = prefs.edit();
editor.remove("grantToken");
editor.commit(); //change to apply if android 2.2
}
}
buildService(new FetchMeService()).makeModal().execute(); //used to check login
}
public boolean onServiceCallException(FetchMeService service, Exception e) {
if (e instanceof IncorrectCredentialsException) {
app.reportError(new ECollegeAlertException(this, R.string.e_invalid_login, e));
return true; //handled
}
return false;
}
public void onServiceCallSuccess(FetchMeService service) {
if (rememberCheck != null && rememberCheck.isChecked()) {
SharedPreferences.Editor editor = prefs.edit();
editor.putString("grantToken",client.getGrantToken());
editor.commit(); //change to apply if android 2.2
}
app.setCurrentUser(service.getResult());
Ln.i("User loaded from the Login activity");
setResult(RESULT_OK);
finish();
}
}