/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.activity;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import WriteReviewOperation.MediaRef;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.TaskStackBuilder;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.galaxy.meetup.client.android.CameraPhotoLoader;
import com.galaxy.meetup.client.android.EsCursorLoader;
import com.galaxy.meetup.client.android.EsMatrixCursor;
import com.galaxy.meetup.client.android.Intents;
import com.galaxy.meetup.client.android.Pageable;
import com.galaxy.meetup.client.android.PhotoPagerAdapter;
import com.galaxy.meetup.client.android.PhotoPagerLoader;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.analytics.OzViews;
import com.galaxy.meetup.client.android.content.EsAccount;
import com.galaxy.meetup.client.android.content.EsEventData;
import com.galaxy.meetup.client.android.content.EsProvider;
import com.galaxy.meetup.client.android.service.EsService;
import com.galaxy.meetup.client.android.ui.fragments.EsFragmentPagerAdapter;
import com.galaxy.meetup.client.android.ui.fragments.HostedFragment;
import com.galaxy.meetup.client.android.ui.fragments.PhotoOneUpCallbacks;
import com.galaxy.meetup.client.android.ui.fragments.PhotoOneUpFragment;
import com.galaxy.meetup.client.android.ui.view.HostActionBar;
import com.galaxy.meetup.client.android.ui.view.PhotoViewPager;
import com.galaxy.meetup.client.util.EsLog;
/**
*
* @author sihai
*
*/
public class PhotoOneUpActivity extends BaseActivity implements
android.support.v4.app.LoaderManager.LoaderCallbacks,
android.support.v4.view.ViewPager.OnPageChangeListener,
PhotoOneUpCallbacks, EsFragmentPagerAdapter.OnFragmentPagerListener,
HostActionBar.HostActionBarListener,
HostActionBar.OnUpButtonClickListener,
PhotoViewPager.OnInterceptTouchListener {
private static final String EVENT_NAME_PROJECTION[] = {
"name"
};
private EsAccount mAccount;
private HostActionBar mActionBar;
private PhotoPagerAdapter mAdapter;
private int mAlbumCount;
private String mAlbumId;
private String mAlbumName;
private String mAuthkey;
private int mCurrentIndex;
private MediaRef mCurrentRef;
private String mEventId;
private android.content.DialogInterface.OnClickListener mFailedListener;
private boolean mFragmentIsLoading;
private boolean mFullScreen;
private HostedFragment mHostedFragment;
private boolean mIsEmpty;
private boolean mIsPaused;
private boolean mKeyboardIsVisible;
private MediaRef mMediaRefs[];
private Set mMenuItemListeners;
private String mOwnerGaiaId;
private int mPageHint;
private String mPhotoOfUserGaiaId;
private MediaRef mPhotoRef;
private String mPhotoUrl;
private boolean mRestartLoader;
private View mRootView;
private Set mScreenListeners;
private String mStreamId;
private PhotoViewPager mViewPager;
public PhotoOneUpActivity()
{
mPageHint = -1;
mAlbumCount = -1;
mScreenListeners = new HashSet();
mMenuItemListeners = new HashSet();
mIsPaused = true;
mFailedListener = new android.content.DialogInterface.OnClickListener() {
public final void onClick(DialogInterface dialoginterface, int i)
{
dialoginterface.dismiss();
}
};
}
private void updateTitleAndSubtitle()
{
int i = 1 + mViewPager.getCurrentItem();
boolean flag;
String s;
if(mAlbumCount >= 0)
flag = true;
else
flag = false;
if(mIsEmpty || !flag || i <= 0)
{
if(mAlbumName != null)
s = mAlbumName;
else
s = getResources().getString(R.string.photo_view_default_title);
} else
{
Resources resources = getResources();
int j = R.string.photo_view_count;
Object aobj[] = new Object[2];
aobj[0] = Integer.valueOf(i);
aobj[1] = Integer.valueOf(mAlbumCount);
s = resources.getString(j, aobj);
}
if(mHostedFragment instanceof PhotoOneUpFragment)
((PhotoOneUpFragment)mHostedFragment).setTitle(s);
mActionBar.invalidateActionBar();
}
private void updateView(View view)
{
if(view != null)
if(mFragmentIsLoading || mAdapter.getCursor() == null && !mIsEmpty)
{
view.findViewById(R.id.photo_activity_empty_text).setVisibility(8);
view.findViewById(R.id.photo_activity_empty_progress).setVisibility(0);
view.findViewById(R.id.photo_activity_empty).setVisibility(0);
} else
if(!mIsEmpty)
{
view.findViewById(R.id.photo_activity_empty).setVisibility(8);
} else
{
String s = getResources().getString(R.string.camera_photo_error);
view.findViewById(R.id.photo_activity_empty_progress).setVisibility(8);
TextView textview = (TextView)view.findViewById(R.id.photo_activity_empty_text);
textview.setText(s);
textview.setVisibility(0);
view.findViewById(R.id.photo_activity_empty).setVisibility(0);
}
}
public final void addMenuItemListener(OnMenuItemListener onmenuitemlistener)
{
mMenuItemListeners.add(onmenuitemlistener);
}
public final void addScreenListener(OnScreenListener onscreenlistener)
{
mScreenListeners.add(onscreenlistener);
}
protected final EsAccount getAccount()
{
return mAccount;
}
public final OzViews getViewForLogging()
{
return OzViews.PHOTO;
}
public final boolean isFragmentActive(Fragment fragment) {
PhotoViewPager photoviewpager;
photoviewpager = mViewPager;
boolean flag = false;
if(photoviewpager == null) {
return flag;
} else {
PhotoPagerAdapter photopageradapter;
photopageradapter = mAdapter;
flag = false;
if(photopageradapter != null) {
int i = mViewPager.getCurrentItem();
int j = mAdapter.getItemPosition(fragment);
flag = false;
if(i == j)
flag = true;
}
return flag;
}
}
public final void onActionBarInvalidated()
{
if(mActionBar != null && mHostedFragment != null)
{
mActionBar.reset();
mHostedFragment.attachActionBar(mActionBar);
mActionBar.commit();
}
}
public final void onActionButtonClicked(int i)
{
if(mHostedFragment != null)
mHostedFragment.onActionButtonClicked(i);
}
public void onBackPressed()
{
if(mFullScreen)
toggleFullScreen();
else
super.onBackPressed();
}
protected void onCreate(Bundle bundle)
{
// TODO
}
protected Dialog onCreateDialog(int i, Bundle bundle)
{
String s = bundle.getString("tag");
Object obj;
if(i == R.id.photo_view_pending_dialog)
{
obj = new ProgressDialog(this);
((ProgressDialog) (obj)).setMessage(bundle.getString("dialog_message"));
((ProgressDialog) (obj)).setProgressStyle(0);
((ProgressDialog) (obj)).setCancelable(false);
} else
if(i == R.id.photo_view_download_full_failed_dialog)
{
RetryDialogListener retrydialoglistener = new RetryDialogListener(s);
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);
builder.setMessage(R.string.download_photo_retry).setPositiveButton(R.string.yes, retrydialoglistener).setNegativeButton(R.string.no, retrydialoglistener);
obj = builder.create();
} else
if(i == R.id.photo_view_download_nonfull_failed_dialog)
{
android.app.AlertDialog.Builder builder1 = new android.app.AlertDialog.Builder(this);
builder1.setMessage(R.string.download_photo_error).setNeutralButton(R.string.ok, mFailedListener);
obj = builder1.create();
} else
{
obj = null;
}
return ((Dialog) (obj));
}
public final Loader onCreateLoader(int i, Bundle bundle)
{
Loader loader = null;
if(1360862707 == i) {
loader = new CursorLoader(this) {
public final Cursor loadInBackground()
{
EsMatrixCursor esmatrixcursor = new EsMatrixCursor(PhotoOneUpActivity.EVENT_NAME_PROJECTION);
String s1 = EsEventData.getEventName(PhotoOneUpActivity.this, getAccount(), mEventId);
esmatrixcursor.newRow().add(s1);
return esmatrixcursor;
}
};
} else if(2131361833 == i) {
mFragmentIsLoading = true;
MediaRef amediaref[] = mMediaRefs;
boolean flag;
if(amediaref != null && amediaref.length == 1)
{
String s = amediaref[0].getUrl();
if(s == null)
{
Uri uri = amediaref[0].getLocalUri();
if(uri != null)
s = uri.toString();
}
if(!TextUtils.isEmpty(s) && s.startsWith("content:"))
flag = true;
else
flag = false;
} else
{
flag = false;
}
if(flag)
{
loader = new CameraPhotoLoader(this);
} else
{
loader = new PhotoPagerLoader(this, mAccount, mOwnerGaiaId, mMediaRefs, mAlbumId, mPhotoOfUserGaiaId, mStreamId, mEventId, mPhotoUrl, mPageHint, mAuthkey);
}
} else if(2131361834 == i) {
loader = new EsCursorLoader(this, EsProvider.appendAccountParameter(Uri.withAppendedPath(Uri.withAppendedPath(EsProvider.ALBUM_VIEW_BY_ALBUM_AND_OWNER_URI, mAlbumId), mOwnerGaiaId), mAccount), AlbumDetailsQuery.PROJECTION, null, null, null);
}
return loader;
}
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.photo_view_menu, menu);
return true;
}
public final void onFragmentVisible(Fragment fragment)
{
if(mViewPager != null && mAdapter != null)
{
if(mViewPager.getCurrentItem() == mAdapter.getItemPosition(fragment))
mFragmentIsLoading = false;
updateView(mRootView);
}
}
public final void onLoadFinished(final Loader loader, Object obj)
{
boolean flag = true;
final Cursor data = (Cursor)obj;
int id = loader.getId();
if(1360862707 == id) {
if(data == null || !data.moveToFirst()) {
return;
} else {
if(mAlbumName == null)
mAlbumName = data.getString(0);
updateTitleAndSubtitle();
}
} else if(2131361833 == id) {
boolean flag1;
boolean flag2;
if(data == null || data.getCount() == 0)
{
mIsEmpty = flag;
mFragmentIsLoading = false;
updateView(mRootView);
} else
{
(new Handler()).post(new Runnable() {
public final void run()
{
if(mIsPaused || data.isClosed())
{
mRestartLoader = true;
} else
{
mIsEmpty = false;
int j;
if(mCurrentRef != null)
j = PhotoOneUpActivity.access$900(PhotoOneUpActivity.this, data, mCurrentRef);
else
j = mCurrentIndex;
if(j < 0 && mPhotoRef != null)
j = PhotoOneUpActivity.access$900(PhotoOneUpActivity.this, data, mPhotoRef);
if(j < 0)
j = 0;
mAdapter.setPageable((Pageable)loader);
mAdapter.swapCursor(data);
updateView(mRootView);
mViewPager.setCurrentItem(j, false);
}
}
});
}
if(mOwnerGaiaId != null && mAlbumId != null)
flag1 = flag;
else
flag1 = false;
flag2 = TextUtils.isEmpty(mAlbumName);
if(mAlbumCount != -1)
flag = false;
if(!flag2 || mEventId == null) {
if(!flag1 || !flag2 && !flag) {
if(flag2) {
return;
} else {
updateTitleAndSubtitle();
return;
}
} else {
getSupportLoaderManager().restartLoader(0x7f0a002a, null, this);
}
} else {
getSupportLoaderManager().restartLoader(0x511d1df3, null, this);
return;
}
} else if(2131361834 == id) {
if(data != null && data.moveToFirst())
{
String s = data.getString(0);
if(mAlbumName == null)
mAlbumName = s;
if(mAlbumCount == -1)
{
int i;
if(data.isNull(1))
i = -2;
else
i = data.getInt(1);
mAlbumCount = i;
}
updateTitleAndSubtitle();
}
}
}
public final void onLoaderReset(Loader loader)
{
}
public boolean onOptionsItemSelected(MenuItem menuitem)
{
for(Iterator iterator = mMenuItemListeners.iterator(); iterator.hasNext();) {
if(((OnMenuItemListener)iterator.next()).onOptionsItemSelected(menuitem))
return true;
}
return false;
}
public final void onPageActivated(Fragment fragment)
{
if(fragment instanceof HostedFragment)
{
mHostedFragment = (HostedFragment)fragment;
for(Iterator iterator = mScreenListeners.iterator(); iterator.hasNext(); ((OnScreenListener)iterator.next()).onViewActivated());
updateTitleAndSubtitle();
} else
{
mHostedFragment = null;
}
}
public final void onPageScrollStateChanged(int i)
{
}
public final void onPageScrolled(int i, float f, int j)
{
}
public final void onPageSelected(int i)
{
mCurrentIndex = i;
PhotoPagerAdapter photopageradapter = mAdapter;
Cursor cursor;
MediaRef mediaref;
if(photopageradapter.isDataValid())
cursor = photopageradapter.getCursor();
else
cursor = null;
if(cursor == null || cursor.isClosed() || !cursor.moveToPosition(i))
{
mediaref = null;
} else
{
long l = cursor.getLong(1);
String s = cursor.getString(2);
String s1 = cursor.getString(3);
boolean flag;
MediaRef.MediaType mediatype;
if(cursor.getInt(6) != 0)
flag = true;
else
flag = false;
if(flag)
mediatype = MediaRef.MediaType.PANORAMA;
else
mediatype = MediaRef.MediaType.IMAGE;
mediaref = new MediaRef(s1, l, s, null, mediatype);
}
mCurrentRef = mediaref;
}
protected void onPause()
{
mIsPaused = true;
super.onPause();
}
public final void onPhotoRemoved()
{
Cursor cursor = mAdapter.getCursor();
if(cursor != null)
if(cursor.getCount() <= 1)
{
Intent intent = Intents.getHostNavigationActivityIntent(this, mAccount);
intent.addFlags(0x4000000);
startActivity(intent);
finish();
} else
{
getSupportLoaderManager().restartLoader(0x7f0a0029, null, this);
}
}
protected void onPrepareDialog(int i, Dialog dialog, Bundle bundle)
{
super.onPrepareDialog(i, dialog, bundle);
if(i == R.id.photo_view_pending_dialog && (dialog instanceof ProgressDialog))
((ProgressDialog)dialog).setMessage(bundle.getString("dialog_message"));
}
public boolean onPrepareOptionsMenu(Menu menu)
{
int i = menu.size();
for(int j = 0; j < i; j++)
menu.getItem(j).setVisible(false);
for(Iterator iterator = mMenuItemListeners.iterator(); iterator.hasNext(); ((OnMenuItemListener)iterator.next()).onPrepareOptionsMenu(menu));
return true;
}
public final void onPrimarySpinnerSelectionChange(int i)
{
}
public final void onRefreshButtonClicked()
{
if(mHostedFragment != null)
mHostedFragment.refresh();
}
protected void onResume()
{
super.onResume();
EsAccount esaccount = (EsAccount)getIntent().getParcelableExtra("account");
boolean flag;
if(esaccount != null)
{
if(!esaccount.equals(EsService.getActiveAccount(this)))
{
if(EsLog.isLoggable("PhotoOneUp", 6))
Log.e("PhotoOneUp", (new StringBuilder("Activity finished because it is associated with a signed-out account: ")).append(getClass().getName()).toString());
flag = false;
} else
{
flag = true;
}
} else
{
flag = false;
}
if(flag)
{
mIsPaused = false;
if(mRestartLoader)
{
mRestartLoader = false;
getSupportLoaderManager().restartLoader(0x7f0a0029, null, this);
}
} else
{
finish();
}
}
public void onSaveInstanceState(Bundle bundle)
{
super.onSaveInstanceState(bundle);
bundle.putInt("com.google.android.apps.plus.PhotoViewFragment.ITEM", mViewPager.getCurrentItem());
bundle.putBoolean("com.google.android.apps.plus.PhotoViewFragment.FULLSCREEN", mFullScreen);
bundle.putParcelable("com.google.android.apps.plus.PhotoViewFragment.CURRENT_REF", mCurrentRef);
}
public final PhotoViewPager.InterceptType onTouchIntercept(float f, float f1)
{
boolean flag = false;
boolean flag1 = false;
OnScreenListener onscreenlistener;
for(Iterator iterator = mScreenListeners.iterator(); iterator.hasNext(); onscreenlistener.onViewActivated())
{
onscreenlistener = (OnScreenListener)iterator.next();
if(!flag)
flag = onscreenlistener.onInterceptMoveLeft();
if(!flag1)
flag1 = onscreenlistener.onInterceptMoveRight();
}
PhotoViewPager.InterceptType intercepttype;
if(flag)
{
if(flag1)
intercepttype = PhotoViewPager.InterceptType.BOTH;
else
intercepttype = PhotoViewPager.InterceptType.LEFT;
} else
if(flag1)
intercepttype = PhotoViewPager.InterceptType.RIGHT;
else
intercepttype = PhotoViewPager.InterceptType.NONE;
return intercepttype;
}
public final void onUpButtonClick()
{
Intent intent = null;
TaskStackBuilder taskstackbuilder;
if(!getIntent().getBooleanExtra("from_url_gateway", false) && !getIntent().getBooleanExtra("com.google.plus.analytics.intent.extra.FROM_NOTIFICATION", false)) {
onBackPressed();
} else {
taskstackbuilder = TaskStackBuilder.create(this);
if(!mAccount.isMyGaiaId(mOwnerGaiaId))
taskstackbuilder.addNextIntent(Intents.getStreamActivityIntent(this, mAccount));
taskstackbuilder.addNextIntent(Intents.getProfilePhotosActivityIntent(this, mAccount, (new StringBuilder("g:")).append(mOwnerGaiaId).toString()));
if(mEventId != null) {
intent = null;
} else {
if(mStreamId == null) {
if(mPhotoOfUserGaiaId != null || mAlbumId == null)
intent = null;
else
intent = Intents.newPhotosActivityIntentBuilder(this).setAccount(mAccount).setAlbumId(mAlbumId).setAlbumName(mAlbumName).setGaiaId(mOwnerGaiaId).build();
} else {
intent = Intents.newPhotosActivityIntentBuilder(this).setAccount(mAccount).setStreamId(mStreamId).setAlbumName(mAlbumName).setGaiaId(mOwnerGaiaId).build();
}
}
if(intent != null)
taskstackbuilder.addNextIntent(intent);
taskstackbuilder.startActivities();
finish();
}
}
public final void removeMenuItemListener(OnMenuItemListener onmenuitemlistener)
{
mMenuItemListeners.remove(onmenuitemlistener);
}
public final void removeScreenListener(OnScreenListener onscreenlistener)
{
mScreenListeners.remove(onscreenlistener);
}
public final void toggleFullScreen()
{
if(!mKeyboardIsVisible)
{
boolean flag;
Iterator iterator;
if(!mFullScreen)
flag = true;
else
flag = false;
mFullScreen = flag;
iterator = mScreenListeners.iterator();
while(iterator.hasNext())
((OnScreenListener)iterator.next()).onFullScreenChanged(mFullScreen);
}
}
static int access$900(PhotoOneUpActivity photooneupactivity, Cursor cursor, MediaRef mediaref)
{
long l;
int i = -1;
l = mediaref.getPhotoId();
Uri uri = mediaref.getLocalUri();
Object obj;
if(uri == null)
obj = null;
else
obj = uri.toString();
cursor.moveToPosition(-1);
if(TextUtils.isEmpty(((CharSequence) (obj)))) {
if(l == 0L)
return -1;
while(cursor.moveToNext()) {
if(l == cursor.getLong(1)) {
i = cursor.getPosition();
}
}
} else {
while(cursor.moveToNext()) {
if(((String) (obj)).equals(cursor.getString(2))) {
i = cursor.getPosition();
}
}
}
return i;
}
private static interface AlbumDetailsQuery {
public static final String PROJECTION[] = {
"title", "photo_count"
};
}
public static interface OnMenuItemListener {
public abstract boolean onOptionsItemSelected(MenuItem menuitem);
public abstract void onPrepareOptionsMenu(Menu menu);
}
public static interface OnScreenListener {
public abstract void enableImageTransforms(boolean flag);
public abstract void onFullScreenChanged(boolean flag);
public abstract boolean onInterceptMoveLeft();
public abstract boolean onInterceptMoveRight();
public abstract void onViewActivated();
}
final class RetryDialogListener implements android.content.DialogInterface.OnClickListener {
public final void onClick(DialogInterface dialoginterface, int i) {
if(-1 == i) {
Fragment fragment = getSupportFragmentManager().findFragmentByTag(mTag);
if(fragment != null)
((PhotoOneUpFragment)fragment).doDownload(PhotoOneUpActivity.this, false);
}
dialoginterface.dismiss();
}
final String mTag;
public RetryDialogListener(String s)
{
super();
mTag = s;
}
}
}