/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SectionIndexer;
import android.widget.Toast;
import com.galaxy.meetup.client.android.EsCursorAdapter;
import com.galaxy.meetup.client.android.Intents;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.analytics.OzViews;
import com.galaxy.meetup.client.android.api.ApiUtils;
import com.galaxy.meetup.client.android.service.EsService;
import com.galaxy.meetup.client.android.service.EsServiceListener;
import com.galaxy.meetup.client.android.service.ImageCache;
import com.galaxy.meetup.client.android.service.ServiceResult;
import com.galaxy.meetup.client.android.ui.view.HostActionBar;
import com.galaxy.meetup.client.android.ui.view.PeopleListItemView;
/**
*
* @author sihai
*
*/
public class EditSquareAudienceFragment extends HostedEsFragment implements android.support.v4.app.LoaderManager.LoaderCallbacks, android.widget.AbsListView.OnScrollListener, android.widget.AdapterView.OnItemClickListener {
private static final String SQUARES_PROJECTION[] = {
"_id", "square_id", "square_name", "photo_url"
};
private static Bitmap sDefaultSquareImage;
private EditAudienceAdapter mAdapter;
private ImageCache mAvatarCache;
private ListView mListView;
private boolean mLoaderError;
private final EsServiceListener mServiceListener = new EsServiceListener() {
public final void onGetSquaresComplete(int i, ServiceResult serviceresult)
{
if(mNewerReqId != null && i == mNewerReqId.intValue())
{
mNewerReqId = null;
if(serviceresult.hasError() && !mLoaderError)
Toast.makeText(getActivity(), getString(R.string.people_list_error), 0).show();
updateSpinner();
}
}
};
private boolean mSquaresLoaderActive;
public EditSquareAudienceFragment()
{
mSquaresLoaderActive = true;
}
private boolean isLoading()
{
boolean flag;
if(mAdapter == null || mAdapter.getCursor() == null)
flag = true;
else
flag = false;
return flag;
}
private void updateView(View view)
{
View view1 = view.findViewById(0x102000a);
View view2 = view.findViewById(R.id.server_error);
if(mLoaderError)
{
view1.setVisibility(8);
view2.setVisibility(0);
showContent(view);
} else
if(isLoading())
{
view1.setVisibility(8);
view2.setVisibility(8);
showEmptyViewProgress(view);
} else
if(isEmpty())
{
view1.setVisibility(8);
view2.setVisibility(8);
showEmptyView(view, getString(R.string.no_squares));
} else
{
view1.setVisibility(0);
view2.setVisibility(8);
showContent(view);
}
}
public final OzViews getViewForLogging()
{
return OzViews.PEOPLE_PICKER;
}
protected final boolean isEmpty()
{
boolean flag;
if(isLoading() || mAdapter.isEmpty())
flag = true;
else
flag = false;
return flag;
}
protected final boolean isProgressIndicatorVisible()
{
boolean flag;
if(super.isProgressIndicatorVisible() || mSquaresLoaderActive)
flag = true;
else
flag = false;
return flag;
}
public final void onActivityResult(int i, int j, Intent intent)
{
FragmentActivity fragmentactivity = getActivity();
if(i == 0 && j == -1)
{
fragmentactivity.setResult(j, intent);
fragmentactivity.finish();
}
}
public final void onAttach(Activity activity)
{
super.onAttach(activity);
mAdapter = new EditAudienceAdapter(activity);
mAvatarCache = ImageCache.getInstance(activity);
}
public final void onCreate(Bundle bundle)
{
super.onCreate(bundle);
getLoaderManager().initLoader(0, null, this);
if(sDefaultSquareImage == null)
sDefaultSquareImage = ((BitmapDrawable)getResources().getDrawable(R.drawable.ic_community_avatar)).getBitmap();
}
public final Loader onCreateLoader(int i, Bundle bundle)
{
Object obj = null;
if(0 == i) {
obj = new SquareListLoader(getActivity(), getAccount(), SQUARES_PROJECTION);
}
return ((Loader) (obj));
}
public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle)
{
View view = layoutinflater.inflate(R.layout.edit_audience_fragment, viewgroup, false);
mListView = (ListView)view.findViewById(0x102000a);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(this);
mListView.setOnScrollListener(this);
return view;
}
public void onItemClick(AdapterView adapterview, View view, int i, long l)
{
if(view instanceof PeopleListItemView)
{
PeopleListItemView peoplelistitemview = (PeopleListItemView)view;
String s = peoplelistitemview.getGaiaId();
String s1 = peoplelistitemview.getContactName();
startActivityForResult(Intents.getSelectSquareCategoryActivityIntent(getActivity(), mAccount, s1, s, s1), 0);
}
}
public final void onLoadFinished(Loader loader, Object obj)
{
Cursor cursor = (Cursor)obj;
boolean flag;
if(cursor == null)
flag = true;
else
flag = false;
mLoaderError = flag;
if(0 == loader.getId()) {
mSquaresLoaderActive = false;
if((loader instanceof SquareListLoader) && ((SquareListLoader)loader).isDataStale())
refresh();
mAdapter.changeCursor(cursor);
updateView(getView());
}
}
public final void onLoaderReset(Loader loader)
{
}
public final boolean onOptionsItemSelected(MenuItem menuitem)
{
boolean flag;
if(menuitem.getItemId() == R.id.refresh)
{
refresh();
flag = true;
} else
{
flag = super.onOptionsItemSelected(menuitem);
}
return flag;
}
public final void onPause()
{
super.onPause();
EsService.unregisterListener(mServiceListener);
}
protected final void onPrepareActionBar(HostActionBar hostactionbar)
{
hostactionbar.showTitle(getActivity().getIntent().getStringExtra("title"));
hostactionbar.showRefreshButton();
}
public final void onResume()
{
super.onResume();
EsService.registerListener(mServiceListener);
updateView(getView());
}
public void onScroll(AbsListView abslistview, int i, int j, int k)
{
}
public void onScrollStateChanged(AbsListView abslistview, int i)
{
if(i == 2)
mAvatarCache.pause();
else
mAvatarCache.resume();
}
public final void refresh()
{
super.refresh();
if(mNewerReqId == null && getActivity() != null)
mNewerReqId = Integer.valueOf(EsService.getSquares(getActivity(), mAccount));
updateSpinner();
}
private final class EditAudienceAdapter extends EsCursorAdapter implements SectionIndexer {
private EsAlphabetIndexer mIndexer;
public EditAudienceAdapter(Context context)
{
super(context, null);
}
public final void bindView(View view, Context context, Cursor cursor)
{
PeopleListItemView peoplelistitemview = (PeopleListItemView)view;
peoplelistitemview.setGaiaIdAndAvatarUrl(cursor.getString(1), ApiUtils.prependProtocol(cursor.getString(3)));
peoplelistitemview.setContactName(cursor.getString(2));
peoplelistitemview.updateContentDescription();
}
public final void changeCursor(Cursor cursor)
{
if(cursor != null)
mIndexer = new EsAlphabetIndexer(cursor, 2);
super.changeCursor(cursor);
}
public final int getItemViewType(int i)
{
return 0;
}
public final int getPositionForSection(int i)
{
int j;
if(mIndexer == null)
j = 0;
else
j = mIndexer.getPositionForSection(i);
return j;
}
public final int getSectionForPosition(int i)
{
int j;
if(mIndexer == null || i < 0)
j = 0;
else
j = mIndexer.getSectionForPosition(i);
return j;
}
public final Object[] getSections()
{
Object aobj[];
if(mIndexer == null)
aobj = null;
else
aobj = mIndexer.getSections();
return aobj;
}
public final int getViewTypeCount()
{
return 1;
}
public final View newView(Context context, Cursor cursor, ViewGroup viewgroup)
{
PeopleListItemView peoplelistitemview = PeopleListItemView.createInstance(context);
peoplelistitemview.setCheckBoxVisible(false);
peoplelistitemview.setDefaultAvatar(EditSquareAudienceFragment.sDefaultSquareImage);
return peoplelistitemview;
}
}
}