package au.id.teda.broadband.usage.activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import au.id.teda.broadband.usage.R;
import au.id.teda.broadband.usage.authenticator.AccountAuthenticator;
import au.id.teda.broadband.usage.authenticator.AuthenticatorActivity;
import au.id.teda.broadband.usage.helper.AccountInfoHelper;
import au.id.teda.broadband.usage.helper.AccountStatusHelper;
import au.id.teda.broadband.usage.helper.ConnectivityHelper;
import au.id.teda.broadband.usage.util.FontUtils;
import com.actionbarsherlock.app.SherlockFragmentActivity;
/**
* Created by ian on 4/06/13.
*
* Initialisation app so we don't show peak/offpeak layout with anytime accounts
* on MainActivity load.
*/
public class InitialiseActivity extends SherlockFragmentActivity {
// Broadcast receiver objects
private SyncReceiver mSyncReceiver;
private IntentFilter filter;
private ProgressBar mProgress;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set layout to load
setContentView(R.layout.activity_initialise);
// Set font to Roboto on SDK < 11
if (Build.VERSION.SDK_INT < 11) {
ViewGroup godfatherView = (ViewGroup) this.getWindow().getDecorView();
FontUtils.setRobotoFont(this, godfatherView);
}
// Set action bar title
getSupportActionBar().setTitle(getString(R.string.action_bar_title_initialise));
// Setup broadcast receiver for background sync, with broadcast filter
String BROADCAST = getString(R.string.sync_broadcast_action);
filter = new IntentFilter(BROADCAST);
mSyncReceiver = new SyncReceiver();
// Setup indeterminate progress bar
mProgress = (ProgressBar) findViewById(R.id.activity_initialise_progressBar);
mProgress.isIndeterminate();
mProgress.setVisibility(View.VISIBLE);
//TODO: Will this trigger two syncs on first load?
ConnectivityHelper mNetwork = new ConnectivityHelper(this);
mNetwork.requestSync();
}
// Called 3rd in the activity life cycle
@Override
protected void onResume(){
super.onResume();
// Register sync reciever
registerReceiver(mSyncReceiver, filter);
// Check to see if info and status has been set
AccountInfoHelper mInfo = new AccountInfoHelper(this);
AccountStatusHelper mStatus = new AccountStatusHelper(this);
// Make sure we don't get stuck if info and status is set
if(mInfo.isInfoSet() && mStatus.isStatusSet()){
startMainActivity();
}
}
// Called 2nd during activity destruction
@Override
protected void onPause() {
super.onPause();
// Unregister broadcast receiver
unregisterReceiver(mSyncReceiver);
}
/**
* Broadcast reciever class to listen for background data syncs
* @author iteda
*
*/
private class SyncReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent i) {
String MESSAGE = getString(R.string.sync_broadcast_message);
String SYNC_START = getString(R.string.sync_broadcast_start);
String SYNC_COMPLETE = getString(R.string.sync_broadcast_complete);
String msg = i.getStringExtra(MESSAGE);
if (msg.equals(SYNC_COMPLETE)){
// Start MainActivity after sync complete
startMainActivity();
} else if (msg.equals(SYNC_START)){
// Nothing to see here
}
}
}
private void startMainActivity() {
Intent mi = new Intent(getBaseContext(), MainActivity.class);
startActivity(mi);
}
}