/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.fragments; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; import com.galaxy.meetup.client.android.EsCursorAdapter; import com.galaxy.meetup.client.android.EsCursorLoader; import com.galaxy.meetup.client.android.Intents; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.analytics.EsAnalytics; import com.galaxy.meetup.client.android.analytics.OzActions; import com.galaxy.meetup.client.android.analytics.OzViews; import com.galaxy.meetup.client.android.content.AudienceData; import com.galaxy.meetup.client.android.content.DbEmotishareMetadata; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.EsEmotiShareData; import com.galaxy.meetup.client.android.content.EsProvider; import com.galaxy.meetup.client.android.ui.view.ColumnGridView; import com.galaxy.meetup.client.android.ui.view.ImageResourceView; /** * * @author sihai * */ public class HostedEmotiShareChooserFragment extends HostedEsFragment implements LoaderCallbacks, OnClickListener { private EmotiShareGridViewAdapter mAdapter; private Bundle mExtras; private ColumnGridView mGridView; private View mMainView; private DbEmotishareMetadata mSelectedObject; public HostedEmotiShareChooserFragment() { } private void updateView(View view) { if(view != null) { Cursor cursor = mAdapter.getCursor(); boolean flag; if(cursor != null && cursor.getCount() > 0) flag = true; else flag = false; if(flag) showContent(view); else showEmptyViewProgress(view); } } public final OzViews getViewForLogging() { return OzViews.COMPOSE; } protected final boolean isEmpty() { boolean flag; if(mAdapter == null) flag = true; else flag = mAdapter.isEmpty(); return flag; } public void onClick(View view) { if(null == view) { return; } DbEmotishareMetadata dbemotisharemetadata; FragmentActivity fragmentactivity; dbemotisharemetadata = (DbEmotishareMetadata)view.getTag(); if(dbemotisharemetadata == null) { Integer integer = (Integer)view.getTag(R.id.tag_position); if(integer != null) dbemotisharemetadata = mAdapter.getEmotiShareForItem(integer.intValue()); } if(dbemotisharemetadata == null) { return; } fragmentactivity = getActivity(); if("android.intent.action.PICK".equals(getActivity().getIntent().getAction())) { EsAnalytics.recordActionEvent(fragmentactivity, mAccount, OzActions.EMOTISHARE_SELECTED, OzViews.COMPOSE, EsAnalytics.addExtrasForLogging(getExtrasForLogging(), dbemotisharemetadata)); Intent intent1 = new Intent(); intent1.putExtra("typed_image_embed", dbemotisharemetadata); fragmentactivity.setResult(-1, intent1); } else { Intent intent = Intents.getPostActivityIntent(getActivity(), mAccount, dbemotisharemetadata); AudienceData audiencedata; if(getActivity() != null && getActivity().getIntent() != null) audiencedata = (AudienceData)getActivity().getIntent().getParcelableExtra("audience"); else audiencedata = null; if(audiencedata != null) intent.putExtra("audience", audiencedata); startActivity(intent); } fragmentactivity.finish(); } public final void onCreate(Bundle bundle) { super.onCreate(bundle); if(bundle != null) { mExtras = new Bundle(); mExtras.putAll(bundle.getBundle("INTENT")); } else { mExtras = getArguments(); } if(mExtras.containsKey("typed_image_embed")) mSelectedObject = (DbEmotishareMetadata)mExtras.getParcelable("typed_image_embed"); getLoaderManager().initLoader(1, null, this); } public final Loader onCreateLoader(int i, Bundle bundle) { Object obj = null; if(i == 1) { EsAccount esaccount = mAccount; obj = null; if(esaccount != null) obj = new EsCursorLoader(getSafeContext(), EsProvider.appendAccountParameter(EsProvider.EMOTISHARE_URI, mAccount), EsEmotiShareData.EMOTISHARE_PROJECTION, null, null, null) { public final Cursor esLoadInBackground() { EsEmotiShareData.ensureSynced(getSafeContext(), mAccount); return super.esLoadInBackground(); } }; } return ((Loader) (obj)); } public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle) { mMainView = layoutinflater.inflate(R.layout.hosted_emotishare_chooser_view, viewgroup, false); mGridView = (ColumnGridView)mMainView.findViewById(R.id.grid); Resources resources = getSafeContext().getResources(); int i = resources.getInteger(R.integer.emotishare_icon_columns); int j = resources.getDimensionPixelOffset(R.dimen.emotishare_item_margin); mGridView.setColumnCount(i); mGridView.setItemMargin(j); mGridView.setPadding(j, j, j, j); mAdapter = new EmotiShareGridViewAdapter(getActivity(), null, mGridView, this); mGridView.setAdapter(mAdapter); mGridView.setSelector(R.drawable.list_selected_holo); if(mGridView.isInSelectionMode()) mGridView.endSelectionMode(); setupEmptyView(mMainView, R.string.no_emotishares); updateView(mMainView); return mMainView; } public final void onDestroyView() { super.onDestroyView(); mGridView.unregisterSelectionListener(); mGridView.setOnScrollListener(null); } public final void onLoadFinished(Loader loader, Object obj) { Cursor cursor = (Cursor)obj; if(loader.getId() == 1) { mAdapter.swapCursor(cursor); updateView(getView()); } } public final void onLoaderReset(Loader loader) { } public final void onPause() { super.onPause(); EmotiShareGridViewAdapter _tmp = mAdapter; EmotiShareGridViewAdapter.onPause(); } public final void onResume() { super.onResume(); mAdapter.onResume(); updateView(getView()); } public final void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); if(mExtras != null) bundle.putParcelable("INTENT", mExtras); } public final void onStop() { super.onStop(); mAdapter.onStop(); } private static DbEmotishareMetadata createEmotiShareFromCursor(Cursor cursor) { DbEmotishareMetadata dbemotisharemetadata = null; if(cursor != null) { byte abyte0[] = cursor.getBlob(2); dbemotisharemetadata = null; if(abyte0 != null) dbemotisharemetadata = DbEmotishareMetadata.deserialize(abyte0); } return dbemotisharemetadata; } private final class EmotiShareGridViewAdapter extends EsCursorAdapter { public final void bindView(View view, Context context, Cursor cursor) { view.setOnClickListener(mClickListener); int i = cursor.getPosition(); int j = R.string.emotishare_in_list_count; Object aobj[] = new Object[2]; aobj[0] = Integer.valueOf(i + 1); aobj[1] = Integer.valueOf(cursor.getCount()); view.setContentDescription(context.getString(j, aobj)); view.setTag(R.id.tag_position, Integer.valueOf(i)); DbEmotishareMetadata dbemotisharemetadata = createEmotiShareFromCursor(cursor); ImageResourceView imageresourceview = (ImageResourceView)view.findViewById(R.id.image_view); if(dbemotisharemetadata != null) { imageresourceview.setMediaRef(dbemotisharemetadata.getIconRef()); if(mSelectedObject != null && dbemotisharemetadata.getId() == mSelectedObject.getId()) view.findViewById(R.id.selector_view).setBackgroundResource(R.drawable.list_selected_holo); } imageresourceview.setTag(dbemotisharemetadata); ((TextView)view.findViewById(R.id.image_label)).setText(dbemotisharemetadata.getName()); int k; if(mLandscape) k = 1; else k = 2; view.setLayoutParams(new ColumnGridView.LayoutParams(k, -3)); } public final DbEmotishareMetadata getEmotiShareForItem(int i) { Cursor cursor = getCursor(); DbEmotishareMetadata dbemotisharemetadata; if(cursor != null && cursor.moveToPosition(i)) dbemotisharemetadata = createEmotiShareFromCursor(cursor); else dbemotisharemetadata = null; return dbemotisharemetadata; } public final boolean hasStableIds() { return false; } public final View newView(Context context, Cursor cursor, ViewGroup viewgroup) { return LayoutInflater.from(context).inflate(R.layout.emotishare_view, null); } public final void onResume() { super.onResume(); if(mGrid != null) { int i = 0; for(int j = mGrid.getChildCount(); i < j; i++) ((ImageResourceView)mGrid.getChildAt(i).findViewById(R.id.image_view)).onResume(); mGrid.onResume(); } } public final void onStop() { super.onStop(); int i = 0; for(int j = mGrid.getChildCount(); i < j; i++) ((ImageResourceView)mGrid.getChildAt(i).findViewById(R.id.image_view)).onStop(); } private final android.view.View.OnClickListener mClickListener; private final ColumnGridView mGrid; private final boolean mLandscape; public EmotiShareGridViewAdapter(Context context, Cursor cursor, ColumnGridView columngridview, android.view.View.OnClickListener onclicklistener) { super(context, null); int i = 1; boolean flag; if(context.getResources().getConfiguration().orientation == 2) flag = true; else flag = false; mLandscape = flag; if(!mLandscape) i = 2; columngridview.setOrientation(i); mClickListener = onclicklistener; mGrid = columngridview; } } }