package net.ggelardi.flucso;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.view.Window;
import android.widget.Toast;
import net.ggelardi.flucso.R;
import net.ggelardi.flucso.serv.FFService;
import net.ggelardi.flucso.serv.FFSession;
public abstract class BaseActivity extends Activity {
private BroadcastReceiver receiver;
private ProgressDialog progress;
protected FFSession session;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
Log.v(logTag(), "onCreate");
session = FFSession.getInstance(this);
progress = new ProgressDialog(this);
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.setIndeterminate(true);
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v(logTag(), "onDestroy");
}
@Override
protected void onResume() {
super.onResume();
Log.v(logTag(), "onResume");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case FFService.SERVICE_ERROR:
Toast.makeText(BaseActivity.this, intent.getStringExtra("message"), Toast.LENGTH_LONG).show();
break;
case FFService.PROFILE_READY:
hideWaitingBox();
profileReady();
break;
default:
Toast.makeText(BaseActivity.this, "Unknown service request: " + intent.getAction(),
Toast.LENGTH_SHORT).show();
break;
}
}
};
IntentFilter filters = new IntentFilter();
filters.addAction(FFService.SERVICE_ERROR);
filters.addAction(FFService.PROFILE_READY);
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filters);
if (session.hasProfile())
profileReady();
else if (session.hasAccount())
showWaitingBox(R.string.waiting_profile);
startService(new Intent(this, FFService.class));
}
@Override
protected void onPause() {
super.onPause();
Log.v(logTag(), "onPause");
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.v(logTag(), "onSaveInstanceState");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.v(logTag(), "onRestoreInstanceState");
}
protected String logTag() {
return this.getClass().getSimpleName();
}
protected abstract void profileReady();
protected void showWaitingBox(String msg) {
progress.setTitle(msg);
progress.show();
}
protected void showWaitingBox(int stringResId) {
showWaitingBox(getString(stringResId));
}
protected void hideWaitingBox() {
progress.dismiss();
}
}