package com.ecollege.android; import roboguice.inject.InjectResource; import roboguice.util.Ln; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import com.ecollege.android.activities.ECollegeDefaultActivity; import com.ecollege.api.ECollegeClient; import com.ecollege.api.services.courses.FetchMyCoursesService; import com.ecollege.api.services.users.FetchMeService; import com.google.inject.Inject; public class SplashActivity extends ECollegeDefaultActivity { @Inject ECollegeApplication app; @Inject SharedPreferences prefs; protected ECollegeClient client; private boolean meLoaded; private boolean coursesLoaded; @InjectResource(R.string.use_sso) String use_sso; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash); client = app.getClient(); if (app.getCurrentUser() == null) { String grantToken = prefs.getString("grantToken", null); if (grantToken != null) { client.setupAuthentication(grantToken); fetchCurrentUserAndCourses(); } else { if (use_sso.equals("true")) { Intent myIntent = new Intent(this, SingleSignonActivity.class); startActivityForResult(myIntent, SSO_LOGIN_REQUEST_CODE); } else { Intent myIntent = new Intent(this, LoginActivity.class); startActivityForResult(myIntent, LOGIN_REQUEST_CODE); } } } else { fetchCurrentUserAndCourses(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == LOGIN_REQUEST_CODE && resultCode == RESULT_OK) { fetchCurrentUserAndCourses(); } else if (requestCode == SSO_LOGIN_REQUEST_CODE && resultCode == RESULT_OK){ fetchCurrentUserAndCourses(); } else { finish(); } } protected void fetchCurrentUserAndCourses() { buildService(new FetchMeService()).execute(); buildService(new FetchMyCoursesService()).execute(); } public void onServiceCallSuccess(FetchMeService service) { app.setCurrentUser(service.getResult()); Ln.i("User loaded from the Splash activity"); meLoaded = true; showMainActivityIfServiceCallsAreComplete(); } public void onServiceCallSuccess(FetchMyCoursesService service) { app.setCurrentCourseList(service.getResult()); Ln.i("Courses loaded from the Splash activity"); coursesLoaded = true; showMainActivityIfServiceCallsAreComplete(); } protected void showMainActivityIfServiceCallsAreComplete() { if (meLoaded && coursesLoaded) { showMainActivity(); } } protected void showMainActivity() { Intent i = new Intent(this,MainActivity.class); startActivityForResult(i,MAIN_ACTIVITY_REQUEST_CODE); } }