package net.ggelardi.flucso; import net.ggelardi.flucso.serv.FFService; import net.ggelardi.flucso.serv.FFSession; import android.app.Activity; import android.app.Fragment; 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.animation.AlphaAnimation; import android.view.animation.Animation; public abstract class BaseFragment extends Fragment { protected FFSession session; protected BroadcastReceiver mReceiver; protected OnFFReqsListener mContainer; protected ProgressDialog mProgress; protected AlphaAnimation blink; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.v(logTag(), "onCreate"); session = FFSession.getInstance(getActivity()); mProgress = new ProgressDialog(getActivity()); mProgress.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgress.setIndeterminate(true); blink = new AlphaAnimation(0.0f, 1.0f); blink.setDuration(400); blink.setStartOffset(20); blink.setRepeatMode(Animation.REVERSE); blink.setRepeatCount(2); } @Override public void onResume() { super.onResume(); Log.v(logTag(), "onResume"); if (session.hasProfile()) initFragment(); else { mProgress.setTitle(R.string.waiting_profile); mProgress.show(); mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { LocalBroadcastManager.getInstance(context).unregisterReceiver(mReceiver); mProgress.dismiss(); initFragment(); } }; IntentFilter filter = new IntentFilter(); filter.addAction(FFService.PROFILE_READY); LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mReceiver, filter); } } @Override public void onPause() { super.onPause(); Log.v(logTag(), "onPause"); mProgress.dismiss(); if (mReceiver != null) LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mReceiver); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.v(logTag(), "onSaveInstanceState"); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.v(logTag(), "onActivityCreated"); } @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.v(logTag(), "onAttach"); try { mContainer = (OnFFReqsListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnFFReqsListener"); } } @Override public void onDetach() { super.onDetach(); Log.v(logTag(), "onDetach"); mContainer = null; } protected String logTag() { return this.getClass().getSimpleName(); } protected abstract void initFragment(); public interface OnFFReqsListener { void openInfo(String feed_id); void openFeed(String name, String feed_id, String query); void openEntry(String entry_id); void openGallery(String entry_id, int position); void openPostNew(String[] dsts, String body, String link, String[] tmbs); void openPostEdit(String entry_id, String body); } }