/** * 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.FragmentActivity; import android.util.Log; import android.widget.Toast; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.service.EsService; import com.galaxy.meetup.client.android.service.EsServiceListener; import com.galaxy.meetup.client.android.service.ServiceResult; import com.galaxy.meetup.client.util.EsLog; /** * * @author sihai * */ public class BlockFragment extends ProgressFragmentDialog { private EsAccount mAccount; private final EsServiceListener mServiceListener = new EsServiceListener() { public final void onSetBlockedRequestComplete(int i, ServiceResult serviceresult) { handleSetBlockedCallback(i, serviceresult); } }; private int mSetBlockedRequestId; public static interface Listener { void onBlockCompleted(boolean flag); } public BlockFragment() { } public static BlockFragment getInstance(Context context, EsAccount esaccount, String s, String s1, boolean flag, boolean flag1) { int i; BlockFragment blockfragment; String s2; Bundle bundle; if(flag1) { if(flag) i = R.string.block_page_operation_pending; else i = R.string.block_person_operation_pending; } else if(flag) i = R.string.unblock_page_operation_pending; else i = R.string.unblock_person_operation_pending; blockfragment = new BlockFragment(); s2 = context.getResources().getString(i); bundle = new Bundle(); bundle.putString("message", s2); blockfragment.setArguments(bundle); blockfragment.setCancelable(false); blockfragment.mAccount = esaccount; blockfragment.mSetBlockedRequestId = EsService.setPersonBlocked(context, esaccount, s, s1, flag1).intValue(); return blockfragment; } protected final void handleSetBlockedCallback(int i, ServiceResult serviceresult) { if(mSetBlockedRequestId == i) { dismiss(); Listener listener; if(getTargetFragment() instanceof Listener) listener = (Listener)getTargetFragment(); else if(getActivity() instanceof Listener) listener = (Listener)getActivity(); else listener = null; if(listener != null) if(serviceresult != null && serviceresult.hasError()) { Toast.makeText(getActivity(), R.string.transient_server_error, 0).show(); listener.onBlockCompleted(false); } else { listener.onBlockCompleted(true); } } } public final void onCreate(Bundle bundle) { super.onCreate(bundle); if(bundle != null && bundle.containsKey("set_blocked_req_id")) { mSetBlockedRequestId = bundle.getInt("set_blocked_req_id"); mAccount = (EsAccount)bundle.getParcelable("set_account"); } } public final void onPause() { super.onPause(); EsService.unregisterListener(mServiceListener); } public final void onResume() { super.onResume(); EsAccount esaccount = mAccount; boolean flag = false; if(esaccount != null) if(!mAccount.equals(EsService.getActiveAccount(getActivity()))) { boolean flag1 = EsLog.isLoggable("BlockFragment", 6); flag = false; if(flag1) Log.e("BlockFragment", (new StringBuilder("Activity finished because it is associated with a signed-out account: ")).append(getActivity().getClass().getName()).toString()); } else { flag = true; } if(flag) { EsService.registerListener(mServiceListener); if(!EsService.isRequestPending(mSetBlockedRequestId)) { ServiceResult serviceresult = EsService.removeResult(mSetBlockedRequestId); handleSetBlockedCallback(mSetBlockedRequestId, serviceresult); } } else { getActivity().finish(); } } public final void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); bundle.putInt("set_blocked_req_id", mSetBlockedRequestId); bundle.putParcelable("set_account", mAccount); } public final void show(FragmentActivity fragmentactivity) { show(fragmentactivity.getSupportFragmentManager(), "block_pending"); } }