/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.activity; import WriteReviewOperation.MediaRef; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; 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.text.TextUtils; import android.util.Log; import android.widget.Toast; import com.galaxy.meetup.client.android.EsMatrixCursor; import com.galaxy.meetup.client.android.Intents; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.api.GetActivityOperation; import com.galaxy.meetup.client.android.content.DbEmbedMedia; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.EsAccountsData; import com.galaxy.meetup.client.android.content.EsCursorLoader; import com.galaxy.meetup.client.android.content.EsProvider; /** * * @author sihai * */ public class ViewStreamItemPhotoActivity extends FragmentActivity implements LoaderCallbacks { private static final String ACTIVITY_RESULT_PROJECTION[] = { "person_id", "activity_id", "embed_media" }; private static final String STREAM_ITEM_PHOTO_PROJECTION[] = { "raw_contact_source_id", "stream_item_photo_sync1", "stream_item_photo_sync2" }; public ViewStreamItemPhotoActivity() { } protected void onCreate(Bundle bundle) { super.onCreate(bundle); Uri uri = getIntent().getData(); if(uri == null) { finish(); } else { EsAccount esaccount = EsAccountsData.getActiveAccount(this); if(esaccount == null) { finish(); } else { Bundle bundle1 = new Bundle(); bundle1.putParcelable("account", esaccount); bundle1.putParcelable("stream_item_uri", uri); getSupportLoaderManager().initLoader(0, bundle1, this); } } } public final Loader onCreateLoader(int i, Bundle bundle) { return new ActivityIdLoader(this, (EsAccount)bundle.getParcelable("account"), (Uri)bundle.getParcelable("stream_item_uri")); } public final void onLoadFinished(Loader loader, Object obj) { Cursor cursor = (Cursor)obj; EsAccount esaccount = EsAccountsData.getActiveAccount(this); if(esaccount != null) { cursor.moveToFirst(); String s = cursor.getString(1); String s1 = cursor.getString(0); byte abyte0[] = cursor.getBlob(2); if(abyte0 != null && abyte0.length != 0) { DbEmbedMedia dbembedmedia = DbEmbedMedia.deserialize(abyte0); if(!TextUtils.isEmpty(dbembedmedia.getImageUrl())) { Intents.PhotoViewIntentBuilder photoviewintentbuilder = Intents.newPhotoViewActivityIntentBuilder(this); if(dbembedmedia.getPhotoId() != 0L) { String s2 = dbembedmedia.getOwnerId(); MediaRef mediaref = new MediaRef(s2, dbembedmedia.getPhotoId(), null, null, MediaRef.MediaType.IMAGE); String s3 = dbembedmedia.getAlbumId(); photoviewintentbuilder.setAccount(esaccount).setPhotoRef(mediaref).setGaiaId(s2).setAlbumId(s3).setRefreshAlbumId(s3); } else { photoviewintentbuilder.setAccount(esaccount).setPhotoUrl(dbembedmedia.getImageUrl()).setPhotoOnly(Boolean.valueOf(true)); } startActivity(photoviewintentbuilder.build()); } else { Intents.viewContent(this, esaccount, dbembedmedia.getContentUrl()); } } else if(s != null) startActivity(Intents.getPostCommentsActivityIntent(this, esaccount, s)); else if(s1 != null) startActivity(Intents.getProfileActivityIntent(this, esaccount, s1, null)); else Toast.makeText(this,R.string.profile_does_not_exist, 0).show(); } finish(); } public final void onLoaderReset(Loader loader) { } private static final class ActivityIdLoader extends EsCursorLoader { private final EsAccount mAccount; private final Uri mStreamItemUri; public ActivityIdLoader(Context context, EsAccount esaccount, Uri uri) { super(context); mAccount = esaccount; mStreamItemUri = uri; } private byte[] loadMediaFromDatabase(ContentResolver contentresolver, String s) { Cursor cursor = null; try { byte abyte0[] = null; cursor = contentresolver.query(EsProvider.appendAccountParameter(Uri.withAppendedPath(EsProvider.ACTIVITY_VIEW_BY_ACTIVITY_ID_URI, s), mAccount), new String[] { "embed_media" }, null, null, null); if(null != cursor && cursor.moveToFirst()) { abyte0 = cursor.getBlob(0); if(abyte0 == null) abyte0 = new byte[0]; } return abyte0; } finally { if(null != cursor) { cursor.close(); } } } public final Cursor esLoadInBackground() { Cursor cursor = null; ContentResolver contentresolver = getContext().getContentResolver(); try { String s1; String s2; String s; cursor = contentresolver.query(mStreamItemUri, ViewStreamItemPhotoActivity.STREAM_ITEM_PHOTO_PROJECTION, null, null, null); if(null != cursor && cursor.moveToFirst()) { s1 = cursor.getString(0); s2 = cursor.getString(1); s = s2; } else { s = null; s1 = null; } byte abyte0[] = null; if(s != null) { abyte0 = loadMediaFromDatabase(contentresolver, s); if(abyte0 == null) { GetActivityOperation getactivityoperation = new GetActivityOperation(getContext(), mAccount, s, null, null, null, null); getactivityoperation.start(); boolean flag; if(getactivityoperation.getException() != null) { Log.e("ViewStreamItemActivity", "Cannot download activity", getactivityoperation.getException()); flag = false; } else if(getactivityoperation.hasError()) { Log.e("ViewStreamItemActivity", (new StringBuilder("Cannot download activity: ")).append(getactivityoperation.getErrorCode()).toString()); flag = false; } else { flag = true; } if(flag) abyte0 = loadMediaFromDatabase(contentresolver, s); } } EsMatrixCursor esmatrixcursor = new EsMatrixCursor(ViewStreamItemPhotoActivity.ACTIVITY_RESULT_PROJECTION); esmatrixcursor.addRow(new Object[] { s1, s, abyte0 }); return esmatrixcursor; } finally { if(null != cursor) { cursor.close(); } } } } }