/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import com.galaxy.meetup.client.android.analytics.EsAnalytics;
import com.galaxy.meetup.client.android.analytics.OzActions;
import com.galaxy.meetup.client.android.analytics.OzViews;
import com.galaxy.meetup.client.android.content.EsAccount;
import com.galaxy.meetup.client.android.service.ImageCache;
import com.galaxy.meetup.client.android.ui.view.HostActionBar;
/**
*
* @author sihai
*
*/
public abstract class HostedFragment extends Fragment {
private HostActionBar mActionBar;
private boolean mCalled;
private OzViews mEndView;
private Bundle mEndViewExtras;
private boolean mPaused;
private boolean mRecorded;
private long mStartTime;
private OzViews mStartView;
private Bundle mStartViewExtras;
public HostedFragment() {
}
public final void attachActionBar(HostActionBar hostactionbar) {
mActionBar = hostactionbar;
onPrepareActionBar(hostactionbar);
}
public final void clearNavigationAction() {
mRecorded = false;
mStartView = null;
mStartViewExtras = null;
mStartTime = 0L;
mEndView = null;
mEndViewExtras = null;
}
public final void detachActionBar() {
mActionBar = null;
}
public abstract EsAccount getAccount();
public final HostActionBar getActionBar() {
return mActionBar;
}
public Bundle getExtrasForLogging() {
return null;
}
protected final Context getSafeContext() {
FragmentActivity fragmentactivity = getActivity();
Context context;
if(fragmentactivity != null)
context = fragmentactivity.getApplicationContext();
else
context = null;
return context;
}
public abstract OzViews getViewForLogging();
protected final void invalidateActionBar() {
if(mActionBar != null)
mActionBar.invalidateActionBar();
}
protected final boolean isPaused() {
return mPaused;
}
protected boolean needsAsyncData() {
return false;
}
public void onActionButtonClicked(int i) {
}
protected void onAsyncData() {
EsAccount esaccount = getAccount();
if(esaccount != null && !mRecorded && mEndView != null) {
EsAnalytics.recordNavigationEvent(getActivity(), esaccount, mStartView, mEndView, Long.valueOf(mStartTime), null, mStartViewExtras, mEndViewExtras);
mRecorded = true;
}
}
public boolean onBackPressed() {
return false;
}
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
mCalled = false;
onSetArguments(getArguments());
if(!mCalled)
throw new IllegalStateException("Did you forget to call super.onSetArguments()?");
else
return;
}
public void onPause() {
super.onPause();
mPaused = true;
}
protected void onPrepareActionBar(HostActionBar hostactionbar) {
}
public void onPrimarySpinnerSelectionChange(int i) {
}
public void onResume() {
super.onResume();
mPaused = false;
}
protected void onSetArguments(Bundle bundle) {
mCalled = true;
}
public boolean onUpButtonClicked() {
return false;
}
public void recordNavigationAction() {
recordNavigationAction(null, getViewForLogging(), null, null, getExtrasForLogging());
}
public final void recordNavigationAction(OzViews ozviews, long l, Bundle bundle) {
recordNavigationAction(ozviews, getViewForLogging(), Long.valueOf(l), bundle, getExtrasForLogging());
}
public final void recordNavigationAction(OzViews ozviews, OzViews ozviews1, Long long1, Bundle bundle, Bundle bundle1) {
if(!needsAsyncData()) {
EsAccount esaccount = getAccount();
if(esaccount != null && !mRecorded && ozviews1 != null) {
EsAnalytics.recordNavigationEvent(getActivity(), esaccount, ozviews, ozviews1, long1, null, bundle, bundle1);
mRecorded = true;
}
} else {
mStartView = ozviews;
mStartViewExtras = bundle;
long l;
if(long1 == null)
l = System.currentTimeMillis();
else
l = long1.longValue();
mStartTime = l;
mEndView = ozviews1;
mEndViewExtras = bundle1;
}
}
protected final void recordUserAction(OzActions ozactions) {
EsAccount esaccount = getAccount();
if(esaccount != null)
EsAnalytics.recordActionEvent(getActivity(), esaccount, ozactions, getViewForLogging());
}
protected final void recordUserAction(OzActions ozactions, Bundle bundle) {
EsAccount esaccount = getAccount();
if (esaccount != null)
EsAnalytics.recordActionEvent(getActivity(), esaccount, ozactions, getViewForLogging(), bundle);
}
public void refresh() {
ImageCache.getInstance(getActivity()).clearFailedRequests();
}
}