/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.fragments; import android.content.Context; import android.net.Uri; import android.support.v4.content.Loader; import com.galaxy.meetup.client.android.EsAsyncTaskLoader; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.EsPeopleData; import com.galaxy.meetup.client.android.content.EsProvider; /** * * @author sihai * */ public class ProfileLoader extends EsAsyncTaskLoader { private final EsAccount mAccount; private EsPeopleData.ProfileAndContactData mData; private final boolean mFullProfileNeeded; private final Loader.ForceLoadContentObserver mObserver = new Loader.ForceLoadContentObserver(); private boolean mObserverRegistered; private final String mPersonId; public ProfileLoader(Context context, EsAccount esaccount, String s, boolean flag) { super(context); mAccount = esaccount; mPersonId = s; mFullProfileNeeded = flag; } public final void deliverResult(Object obj) { EsPeopleData.ProfileAndContactData profileandcontactdata = (EsPeopleData.ProfileAndContactData)obj; if(!isReset()) { mData = profileandcontactdata; if(isStarted()) super.deliverResult(profileandcontactdata); } } public final Object esLoadInBackground() { return EsPeopleData.getProfileAndContactData(getContext(), mAccount, mPersonId, mFullProfileNeeded); } protected final void onAbandon() { if(mObserverRegistered) { getContext().getContentResolver().unregisterContentObserver(mObserver); mObserverRegistered = false; } } protected final void onReset() { super.onReset(); mData = null; } protected final void onStartLoading() { if(!mObserverRegistered) { getContext().getContentResolver().registerContentObserver(Uri.withAppendedPath(EsProvider.CONTACT_BY_PERSON_ID_URI, mPersonId), false, mObserver); mObserverRegistered = true; } if(mData == null) forceLoad(); } }