/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.activity; import java.util.ArrayList; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.widget.Toast; import com.galaxy.meetup.client.android.Intents; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.EsAccountsData; 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.android.ui.fragments.ProgressFragmentDialog; import com.galaxy.meetup.client.util.EsLog; /** * * @author sihai * */ public class EsProfileGatewayActivity extends FragmentActivity { protected EsAccount mAccount; private final Handler mHandler = new Handler(); protected Integer mPendingRequestId; protected String mPersonId; protected String mPersonName; protected boolean mRedirected; private final EsServiceListener mServiceListener = new EsServiceListener() { public final void onSetCircleMembershipComplete(int i, ServiceResult serviceresult) { handleServiceCallback(i, serviceresult); } }; public EsProfileGatewayActivity() { } protected final void handleServiceCallback(int i, ServiceResult serviceresult) { if(mPendingRequestId != null && i == mPendingRequestId.intValue()) { DialogFragment dialogfragment = (DialogFragment)getSupportFragmentManager().findFragmentByTag("req_pending"); if(dialogfragment != null) dialogfragment.dismiss(); mPendingRequestId = null; if(serviceresult != null && serviceresult.hasError()) { Toast.makeText(getApplicationContext(), R.string.transient_server_error, 0).show(); } else { android.content.Context context = getApplicationContext(); int j = R.string.add_to_circle_confirmation_toast; Object aobj[] = new Object[1]; aobj[0] = mPersonName; Toast.makeText(context, getString(j, aobj), 0).show(); } finish(); } } protected void onActivityResult(int i, int j, Intent intent) { boolean flag = false; if(0 == i) { flag = false; if(j == -1) { final ArrayList circleIds = intent.getStringArrayListExtra("selected_circle_ids"); mHandler.post(new Runnable() { public final void run() { setCircleMembership(circleIds); } }); flag = true; } } if(!flag) finish(); } protected void onCreate(Bundle bundle) { super.onCreate(bundle); if(bundle != null) { mAccount = (EsAccount)bundle.getParcelable("account"); mPersonId = bundle.getString("person_id"); mPersonName = bundle.getString("person_name"); if(bundle.containsKey("pending_req_id")) mPendingRequestId = Integer.valueOf(bundle.getInt("pending_req_id")); mRedirected = bundle.getBoolean("redirected"); } else { mAccount = EsAccountsData.getActiveAccount(this); } if(mAccount != null && !mRedirected) { if(getIntent().getData() == null) finish(); } else { finish(); } } public void onPause() { super.onPause(); EsService.unregisterListener(mServiceListener); } public void onResume() { super.onResume(); EsService.registerListener(mServiceListener); if(mPendingRequestId != null && !EsService.isRequestPending(mPendingRequestId.intValue())) { ServiceResult serviceresult = EsService.removeResult(mPendingRequestId.intValue()); handleServiceCallback(mPendingRequestId.intValue(), serviceresult); mPendingRequestId = null; } } protected void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); bundle.putParcelable("account", mAccount); bundle.putString("person_id", mPersonId); bundle.putString("person_name", mPersonName); if(mPendingRequestId != null) bundle.putInt("pending_req_id", mPendingRequestId.intValue()); bundle.putBoolean("redirected", mRedirected); } protected final void setCircleMembership(ArrayList arraylist) { try { mPendingRequestId = EsService.setCircleMembership(this, mAccount, mPersonId, mPersonName, (String[])arraylist.toArray(new String[0]), null); ProgressFragmentDialog progressfragmentdialog = ProgressFragmentDialog.newInstance(null, getString(R.string.add_to_circle_operation_pending), false); progressfragmentdialog.show(getSupportFragmentManager(), "req_pending"); } catch (Throwable throwable) { if(EsLog.isLoggable("EsProfileGatewayActivity", 6)) Log.e("EsProfileGatewayActivity", "Cannot show dialog", throwable); } } protected final void showCirclePicker() { startActivityForResult(Intents.getCircleMembershipActivityIntent(this, mAccount, mPersonId, mPersonName, false), 0); } }