/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.activity; import java.util.ArrayList; import java.util.Collections; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.DialogFragment; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.util.Log; import android.view.ContextThemeWrapper; import android.widget.ArrayAdapter; import com.galaxy.meetup.client.android.Intents; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsCursorLoader; import com.galaxy.meetup.client.android.content.PersonData; import com.galaxy.meetup.client.util.EsLog; /** * * @author sihai * */ public class InviteContactActivity extends EsProfileGatewayActivity implements LoaderCallbacks { private static final String ENTITY_PROJECTION[] = { "display_name", "mimetype", "data1" }; private final Handler mHandler = new Handler(); public InviteContactActivity() { } protected void onActivityResult(int i, int j, Intent intent) { if(i == 1) { boolean flag = false; if(j == -1) { mPersonId = intent.getStringExtra("person_id"); String s = mPersonId; flag = false; if(s != null) { mPersonName = ((PersonData)intent.getParcelableExtra("person_data")).getName(); showCirclePicker(); flag = true; } } if(!flag) finish(); } else { super.onActivityResult(i, j, intent); } } protected void onCreate(Bundle bundle) { super.onCreate(bundle); if(!isFinishing()) { Uri uri = getIntent().getData(); if(uri == null) { finish(); } else { Bundle bundle1 = new Bundle(); bundle1.putParcelable("data_uri", uri); getSupportLoaderManager().initLoader(0, bundle1, this); } } } public final Loader onCreateLoader(int i, Bundle bundle) { return new EsCursorLoader(this, Uri.withAppendedPath((Uri)bundle.getParcelable("data_uri"), "entities"), ENTITY_PROJECTION, "mimetype IN ('vnd.android.cursor.item/name','vnd.android.cursor.item/email_v2')", null, null); } public final void onLoadFinished(Loader loader, Object obj) { Cursor cursor = (Cursor)obj; if(cursor == null) { finish(); return; } if(!mRedirected) { mRedirected = true; final ArrayList emails = new ArrayList(); do { if(!cursor.moveToNext()) break; String s = cursor.getString(0); if(s != null) mPersonName = s; if("vnd.android.cursor.item/email_v2".equals(cursor.getString(1))) { String s1 = cursor.getString(2); if(s1 != null) s1 = s1.trim(); if(!emails.contains(s1)) emails.add(s1); } } while(true); Collections.sort(emails); int i = emails.size(); if(i == 0) mHandler.post(new Runnable() { public final void run() { showSearchActivity(); } }); else if(i == 1) mHandler.post(new Runnable() { public final void run() { showCirclePicker((String)emails.get(0)); } }); else mHandler.post(new Runnable() { public final void run() { show(emails); } }); } } public final void onLoaderReset(Loader loader) { } public final void showCirclePicker(String s) { mPersonId = (new StringBuilder("e:")).append(s).toString(); showCirclePicker(); } protected final void showSearchActivity() { startActivityForResult(Intents.getPeopleSearchActivityIntent(this, mAccount, mPersonName, true, -1, true, false, true, false, false), 1); } void show(ArrayList arraylist) { try { (new EmailPickerDialog((String[])arraylist.toArray(new String[0]))).show(getSupportFragmentManager(), "pick_email"); } catch (Throwable throwable) { if(EsLog.isLoggable("InviteContactActivity", 6)) Log.e("InviteContactActivity", "Cannot show dialog", throwable); finish(); } } private class EmailPickerDialog extends DialogFragment implements android.content.DialogInterface.OnClickListener { public void onCancel(DialogInterface dialoginterface) { getActivity().finish(); } public void onClick(DialogInterface dialoginterface, int i) { if(i == -2) { getActivity().finish(); } else { Bundle bundle = getArguments(); ((InviteContactActivity)getActivity()).showCirclePicker(bundle.getStringArray("emails")[i]); } } public final Dialog onCreateDialog(Bundle bundle) { android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(new ContextThemeWrapper(getActivity(), R.style.Theme_EmeraldSea)); builder.setTitle(R.string.add_to_circle_email_picker_title); builder.setAdapter(new ArrayAdapter(getActivity(), 0x1090012, getArguments().getStringArray("emails")), this); builder.setNegativeButton(0x1040000, this); builder.setCancelable(true); return builder.create(); } public EmailPickerDialog() { } public EmailPickerDialog(String as[]) { Bundle bundle = new Bundle(); bundle.putStringArray("emails", as); setArguments(bundle); } } }