/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.api.OzServerException;
import com.galaxy.meetup.client.android.content.AccountSettingsData;
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.android.ui.activity.OobDeviceActivity;
import com.galaxy.meetup.client.android.ui.activity.OobSelectPlusPageActivity;
import com.galaxy.meetup.client.android.ui.fragments.AlertFragmentDialog.AlertDialogListener;
/**
*
* @author sihai
*
*/
public class OobSelectPlusPageFragment extends ListFragment implements
AlertDialogListener {
private static final String DIALOG_IDS[] = {
"activation_progress", "net_failure", "server_error"
};
private AccountSettingsData mAccountSettings;
private final EsServiceListener mEsServiceListener = new ServiceListener();
private Integer mPendingRequestId;
private int mSelectedAccountPosition;
public OobSelectPlusPageFragment()
{
mSelectedAccountPosition = -1;
}
private String[] createAccountNameArray()
{
Resources resources = getActivity().getResources();
int i = mAccountSettings.getNumPlusPages();
String as[] = new String[i + 1];
as[0] = mAccountSettings.getUserDisplayName();
for(int j = 0; j < i; j++)
{
String s = mAccountSettings.getPlusPageName(j);
as[j + 1] = resources.getString(R.string.oob_plus_page_name, new Object[] {
s
});
}
return as;
}
private void handleServiceCallback(int i, ServiceResult serviceresult) {
if(mPendingRequestId == null || mPendingRequestId.intValue() != i) {
return;
}
mPendingRequestId = null;
String as[] = DIALOG_IDS;
int j = as.length;
for(int k = 0; k < j; k++)
{
String s2 = as[k];
DialogFragment dialogfragment = (DialogFragment)getFragmentManager().findFragmentByTag(s2);
if(dialogfragment != null)
dialogfragment.dismiss();
}
if(serviceresult.hasError()) {
Exception exception = serviceresult.getException();
if(!(exception instanceof OzServerException)) {
AlertFragmentDialog alertfragmentdialog = AlertFragmentDialog.newInstance(getString(R.string.signup_title_no_connection), getString(R.string.signup_error_network), getString(R.string.signup_retry), getString(R.string.cancel));
alertfragmentdialog.setCancelable(false);
alertfragmentdialog.setTargetFragment(this, 0);
alertfragmentdialog.show(getFragmentManager(), "net_failure");
return;
} else {
String s;
String s1;
switch(((OzServerException)exception).getErrorCode()) {
case 1:
s1 = getString(R.string.signup_authentication_error);
s = null;
break;
case 10:
s1 = getString(R.string.signup_required_update_available);
s = null;
break;
case 12:
s1 = getString(R.string.signup_profile_error);
s = null;
break;
case 14:
case 15:
s = getString(R.string.signup_title_mobile_not_available);
s1 = getString(R.string.signup_text_mobile_not_available);
break;
default:
s = getString(R.string.signup_title_no_connection);
s1 = getString(R.string.signup_error_network);
break;
}
AlertFragmentDialog alertfragmentdialog1 = AlertFragmentDialog.newInstance(s, s1, getString(R.string.ok), null);
alertfragmentdialog1.setCancelable(false);
alertfragmentdialog1.setTargetFragment(this, 0);
alertfragmentdialog1.show(getFragmentManager(), "server_error");
return;
}
} else {
((OobDeviceActivity)getActivity()).onContinue();
}
}
public final void activateAccount()
{
if(isAccountSelected())
{
FragmentActivity fragmentactivity = getActivity();
EsAccount esaccount = (EsAccount)fragmentactivity.getIntent().getParcelableExtra("account");
boolean flag;
String s;
String s1;
String s2;
if(mSelectedAccountPosition > 0)
flag = true;
else
flag = false;
if(flag)
{
int i = -1 + mSelectedAccountPosition;
s = mAccountSettings.getPlusPageId(i);
s1 = mAccountSettings.getPlusPageName(i);
s2 = mAccountSettings.getPlusPagePhotoUrl(i);
} else
{
s = mAccountSettings.getUserGaiaId();
s1 = mAccountSettings.getUserDisplayName();
s2 = mAccountSettings.getUserPhotoUrl();
}
ProgressFragmentDialog.newInstance(null, getString(R.string.signup_signing_in), false).show(getFragmentManager(), "activation_progress");
mPendingRequestId = Integer.valueOf(EsService.activateAccount(fragmentactivity, esaccount, s, s1, s2, flag, mAccountSettings));
}
}
public final boolean isAccountSelected()
{
boolean flag;
if(mSelectedAccountPosition != -1)
flag = true;
else
flag = false;
return flag;
}
public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle)
{
mAccountSettings = (AccountSettingsData)getActivity().getIntent().getParcelableExtra("plus_pages");
View view = layoutinflater.inflate(R.layout.oob_select_plus_page_fragment, viewgroup, false);
setListAdapter(new ArrayAdapter(getActivity(), 0x109000f, createAccountNameArray()));
if(bundle != null)
{
mSelectedAccountPosition = bundle.getInt("selected_account", -1);
if(bundle.containsKey("reqid"))
mPendingRequestId = Integer.valueOf(bundle.getInt("reqid"));
}
return view;
}
public final void onDialogCanceled(String s)
{
throw new IllegalStateException("OOB dialog not cancelable");
}
public final void onDialogListClick(int i, Bundle bundle)
{
}
public final void onDialogNegativeClick(String s)
{
}
public final void onDialogPositiveClick(Bundle bundle, String s)
{
if("net_failure".equals(s))
activateAccount();
}
public final void onListItemClick(ListView listview, View view, int i, long l)
{
super.onListItemClick(listview, view, i, l);
boolean flag = isAccountSelected();
mSelectedAccountPosition = i;
if(!flag)
((OobSelectPlusPageActivity)getActivity()).setContinueButtonEnabled(true);
}
public final void onPause()
{
super.onPause();
EsService.unregisterListener(mEsServiceListener);
}
public final void onResume()
{
super.onResume();
EsService.registerListener(mEsServiceListener);
if(mPendingRequestId != null && !EsService.isRequestPending(mPendingRequestId.intValue()))
{
ServiceResult serviceresult = EsService.removeResult(mPendingRequestId.intValue());
if(serviceresult != null)
handleServiceCallback(mPendingRequestId.intValue(), serviceresult);
}
}
public final void onSaveInstanceState(Bundle bundle)
{
super.onSaveInstanceState(bundle);
bundle.putInt("selected_account", mSelectedAccountPosition);
if(mPendingRequestId != null)
bundle.putInt("reqid", mPendingRequestId.intValue());
}
public final void onViewCreated(View view, Bundle bundle)
{
super.onViewCreated(view, bundle);
getListView().setChoiceMode(1);
}
private final class ServiceListener extends EsServiceListener
{
public final void onAccountActivated$6a63df5(int i, ServiceResult serviceresult)
{
handleServiceCallback(i, serviceresult);
}
}
}