/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import WriteReviewOperation.MediaRef;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.galaxy.meetup.client.android.AlbumGridViewAdapter;
import com.galaxy.meetup.client.android.Intents;
import com.galaxy.meetup.client.android.Pageable;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.Pageable.LoadingListener;
import com.galaxy.meetup.client.android.PhotosSelectionLoader;
import com.galaxy.meetup.client.android.analytics.OzViews;
import com.galaxy.meetup.client.android.content.AudienceData;
import com.galaxy.meetup.client.android.content.EsAccount;
import com.galaxy.meetup.client.android.content.PersonData;
import com.galaxy.meetup.client.android.content.PhotoTaggeeData;
import com.galaxy.meetup.client.android.ui.view.ColumnGridView;
import com.galaxy.meetup.client.android.ui.view.PhotoAlbumView;
import com.galaxy.meetup.client.util.ScreenMetrics;
/**
*
* @author sihai
*
*/
public class PhotosSelectionFragment extends HostedEsFragment implements
LoaderCallbacks, LoadingListener {
private AlbumGridViewAdapter mAdapter;
private PhotoAlbumView mAlbumView;
private DateFormat mDateFormat;
private AudienceData mDefaultAudience;
private ColumnGridView mGridView;
private boolean mLoaderActive;
private Map mMediaRefUserMap;
private List mMediaRefs;
private View mNextButton;
private String mOwnerId;
private Pageable mPageableLoader;
private final HashSet mSelectedMediaRefs = new HashSet();
public PhotosSelectionFragment()
{
mDateFormat = DateFormat.getDateInstance(2);
}
private AudienceData createAudienceData()
{
if(mSelectedMediaRefs != null && !mSelectedMediaRefs.isEmpty() && mMediaRefUserMap != null && !mMediaRefUserMap.isEmpty()) {
HashSet hashset = new HashSet();
ArrayList arraylist = new ArrayList();
Set set = mMediaRefUserMap.keySet();
for(Iterator iterator = mSelectedMediaRefs.iterator(); iterator.hasNext();)
{
MediaRef mediaref = (MediaRef)iterator.next();
if(set.contains(mediaref))
{
List list = (List)mMediaRefUserMap.get(mediaref);
if(list != null && !list.isEmpty())
{
Iterator iterator1 = list.iterator();
while(iterator1.hasNext())
{
PhotoTaggeeData.PhotoTaggee phototaggee = (PhotoTaggeeData.PhotoTaggee)iterator1.next();
String s = phototaggee.getId();
if(!hashset.contains(s))
{
hashset.add(s);
arraylist.add(new PersonData(s, phototaggee.getName(), null));
}
}
}
}
}
if(arraylist.isEmpty())
return mDefaultAudience;
else
return new AudienceData(arraylist, null);
} else {
return mDefaultAudience;
}
}
private void updatePostUI()
{
if(mNextButton != null)
{
View view = mNextButton;
boolean flag;
if(mSelectedMediaRefs != null && mSelectedMediaRefs.size() > 0)
flag = true;
else
flag = false;
view.setEnabled(flag);
mNextButton.invalidate();
}
}
private void updateView(View view) {
if(null == view) {
return;
}
boolean flag;
Cursor cursor = mAdapter.getCursor();
if(cursor != null && cursor.getCount() > 0)
flag = true;
else
flag = false;
if(flag) {
showContent(view);
} else {
if(mLoaderActive)
showEmptyViewProgress(view);
else
showEmptyView(view, getString(R.string.no_photos));
}
updateSpinner();
}
public final EsAccount getAccount()
{
return mAccount;
}
public final OzViews getViewForLogging()
{
return OzViews.PHOTOS_LIST;
}
protected final boolean isEmpty()
{
boolean flag;
if(mAdapter == null || mAdapter.isEmpty())
flag = true;
else
flag = false;
return flag;
}
protected final boolean isProgressIndicatorVisible()
{
boolean flag;
if(mLoaderActive || super.isProgressIndicatorVisible())
flag = true;
else
flag = false;
return flag;
}
public final void onCreate(Bundle bundle)
{
int i;
android.os.Parcelable aparcelable[];
super.onCreate(bundle);
Bundle bundle1 = getArguments();
if(bundle1.containsKey("mediarefs"))
{
android.os.Parcelable aparcelable1[] = bundle1.getParcelableArray("mediarefs");
mMediaRefs = new ArrayList(aparcelable1.length);
for(int j = 0; j < aparcelable1.length; j++)
mMediaRefs.add((MediaRef)aparcelable1[j]);
}
if(bundle1.containsKey("owner_id"))
mOwnerId = bundle1.getString("owner_id");
if(bundle1.containsKey("mediaref_user_map"))
try
{
mMediaRefUserMap = (Map)bundle1.getSerializable("mediaref_user_map");
}
catch(ClassCastException classcastexception1)
{
mMediaRefUserMap = null;
}
if(bundle1.containsKey("audience"))
{
android.os.Parcelable parcelable = bundle1.getParcelable("audience");
try
{
mDefaultAudience = (AudienceData)parcelable;
}
catch(ClassCastException classcastexception)
{
mDefaultAudience = null;
}
}
if(bundle != null)
{
if(bundle.containsKey("SELECTED_ITEMS"))
{
aparcelable = bundle.getParcelableArray("SELECTED_ITEMS");
for(i = 0; i < aparcelable.length; i++)
mSelectedMediaRefs.add((MediaRef)aparcelable[i]);
}
} else
if(mMediaRefUserMap != null && !mMediaRefUserMap.isEmpty())
mSelectedMediaRefs.addAll(mMediaRefUserMap.keySet());
}
public final Loader onCreateLoader(int i, Bundle bundle)
{
mLoaderActive = true;
PhotosSelectionLoader photosselectionloader = new PhotosSelectionLoader(getActivity(), mAccount, mOwnerId, mMediaRefs);
mPageableLoader = (Pageable)photosselectionloader;
mPageableLoader.setLoadingListener(this);
return photosselectionloader;
}
public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle)
{
View view = layoutinflater.inflate(R.layout.photos_selection_fragment, viewgroup, false);
mAlbumView = (PhotoAlbumView)view.findViewById(R.id.album_view);
mGridView = (ColumnGridView)view.findViewById(R.id.grid);
ScreenMetrics screenmetrics = ScreenMetrics.getInstance(getActivity());
mGridView.setItemMargin(screenmetrics.itemMargin);
mGridView.setPadding(screenmetrics.itemMargin, screenmetrics.itemMargin, screenmetrics.itemMargin, screenmetrics.itemMargin);
mAdapter = new AlbumGridViewAdapter(getActivity(), null, "from_my_phone", mGridView, null, null, null);
mAdapter.setSelectedMediaRefs(mSelectedMediaRefs);
mGridView.setAdapter(mAdapter);
mGridView.setSelector(R.drawable.list_selected_holo);
getLoaderManager().initLoader(0, null, this);
mGridView.startSelectionMode();
updateView(mAlbumView);
setupEmptyView(mAlbumView, R.string.no_photos);
mGridView.setOnScrollListener(new ColumnGridView.OnScrollListener() {
int mCachedFirstVisibleIndex = -1;
public final void onScroll(ColumnGridView columngridview, int i, int j, int k, int l, int i1)
{
if(k != 0 && mAdapter != null) {
int j1 = i + j;
if(mCachedFirstVisibleIndex != j1)
{
int k1 = Math.min(j1 + columngridview.getColumnCount(), l - 1);
long l1 = mAdapter.getTimestampForItem(k1);
mAlbumView.setDate(mDateFormat.format(Long.valueOf(l1)));
mCachedFirstVisibleIndex = j1;
}
}
}
public final void onScrollStateChanged(ColumnGridView columngridview, int i)
{
int j = 0;
if(i == 0) {
j = 8;
} else {
Cursor cursor = mAdapter.getCursor();
boolean flag;
if(cursor != null && cursor.getCount() > 0)
flag = true;
else
flag = false;
if(!flag) {
j = 8;
} else {
j = 0;
}
}
mAlbumView.setDateVisibility(j);
}
});
mGridView.registerSelectionListener(new ColumnGridView.ItemSelectionListener() {
public final void onItemDeselected(View view2, int i)
{
MediaRef mediaref = null;
if(view2 != null)
mediaref = (MediaRef)view2.getTag();
if(mediaref == null)
mediaref = mAdapter.getMediaRefForItem(i);
mSelectedMediaRefs.remove(mediaref);
updatePostUI();
}
public final void onItemSelected(View view2, int i)
{
MediaRef mediaref = null;
if(view2 != null)
mediaref = (MediaRef)view2.getTag();
if(mediaref == null)
{
mediaref = mAdapter.getMediaRefForItem(i);
if(view2 != null)
view2.setTag(mediaref);
}
mSelectedMediaRefs.add(mediaref);
updatePostUI();
}
});
mAlbumView.enableDateDisplay(true);
View view1 = view.findViewById(R.id.cancel_button);
if(view1 != null)
view1.setOnClickListener(new android.view.View.OnClickListener() {
public final void onClick(View view2)
{
getActivity().finish();
}
});
mNextButton = view.findViewById(R.id.next_button);
if(mNextButton != null)
mNextButton.setOnClickListener(new android.view.View.OnClickListener() {
public final void onClick(View view2)
{
boolean _tmp = PhotosSelectionFragment.access$500(PhotosSelectionFragment.this);
}
});
updatePostUI();
return view;
}
public final void onDataSourceLoading(boolean flag)
{
mLoaderActive = flag;
}
public final void onLoadFinished(Loader loader, Object obj)
{
Cursor cursor = (Cursor)obj;
mAdapter.swapCursor(cursor);
updateView(getView());
}
public final void onLoaderReset(Loader loader)
{
}
public final void onPause()
{
super.onPause();
mPageableLoader.setLoadingListener(null);
}
public final void onResume()
{
super.onResume();
mPageableLoader = (Pageable)getLoaderManager().getLoader(0);
mPageableLoader.setLoadingListener(this);
if(mLoaderActive && !mPageableLoader.isDataSourceLoading())
mLoaderActive = false;
}
public final void onSaveInstanceState(Bundle bundle)
{
super.onSaveInstanceState(bundle);
if(mSelectedMediaRefs.size() > 0)
{
MediaRef amediaref[] = new MediaRef[mSelectedMediaRefs.size()];
mSelectedMediaRefs.toArray(amediaref);
bundle.putParcelableArray("SELECTED_ITEMS", amediaref);
}
}
static boolean access$500(PhotosSelectionFragment photosselectionfragment)
{
boolean flag;
if(photosselectionfragment.mSelectedMediaRefs == null || photosselectionfragment.mSelectedMediaRefs.size() <= 0)
{
flag = false;
} else
{
ArrayList arraylist = new ArrayList(photosselectionfragment.mSelectedMediaRefs);
AudienceData audiencedata = photosselectionfragment.createAudienceData();
photosselectionfragment.startActivity(Intents.getPostActivityIntent(photosselectionfragment.getActivity(), photosselectionfragment.mAccount, arraylist, audiencedata));
photosselectionfragment.getActivity().finish();
flag = true;
}
return flag;
}
}