/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import android.app.Activity;
import android.content.Intent;
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.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.analytics.OzViews;
import com.galaxy.meetup.client.android.content.AudienceData;
import com.galaxy.meetup.client.android.content.DbSquareStream;
import com.galaxy.meetup.client.android.content.SquareTargetData;
import com.galaxy.meetup.client.android.service.EsService;
import com.galaxy.meetup.client.android.service.EsServiceListener;
import com.galaxy.meetup.client.android.service.ServiceResult;
import com.galaxy.meetup.client.android.ui.view.HostActionBar;
/**
*
* @author sihai
*
*/
public class SelectSquareCategoryFragment extends HostedEsFragment implements
LoaderCallbacks, OnItemClickListener {
private ArrayAdapter mAdapter;
private ListView mListView;
private boolean mLoaderError;
private final EsServiceListener mServiceListener = new EsServiceListener() {
public final void onGetSquareComplete(int i, ServiceResult serviceresult) {
if(mNewerReqId != null && i == mNewerReqId.intValue()) {
mNewerReqId = null;
if(!serviceresult.hasError() || mLoaderError) {
if(null != getActivity() && !getActivity().isFinishing())
getLoaderManager().restartLoader(0, null, SelectSquareCategoryFragment.this);
} else {
Toast.makeText(getActivity(), getString(R.string.people_list_error), 0).show();
}
updateSpinner();
}
}
};
private String mSquareId;
private String mSquareName;
private boolean mSquareStreamLoaderActive;
public SelectSquareCategoryFragment()
{
mSquareStreamLoaderActive = true;
}
private boolean isLoading()
{
boolean flag;
if(mAdapter == null || mAdapter.getCount() == 0)
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() || mSquareStreamLoaderActive)
flag = true;
else
flag = false;
return flag;
}
public final void onAttach(Activity activity)
{
super.onAttach(activity);
mAdapter = new ArrayAdapter(activity, 0x1090003);
}
public final void onCreate(Bundle bundle)
{
super.onCreate(bundle);
Intent intent = getActivity().getIntent();
mSquareId = intent.getStringExtra("square_id");
mSquareName = intent.getStringExtra("square_name");
getLoaderManager().initLoader(0, null, this);
}
public final Loader onCreateLoader(int i, Bundle bundle) {
Loader loader = null;
if(0 == i) {
loader = new SquareCategoryLoader(getActivity(), getAccount(), mSquareId);
}
return loader;
}
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.setFastScrollEnabled(false);
return view;
}
public void onItemClick(AdapterView adapterview, View view, int i, long l)
{
SquareStreamInfo squarestreaminfo = (SquareStreamInfo)mAdapter.getItem(i);
String s = squarestreaminfo.getStreamId();
String s1 = squarestreaminfo.getStreamName();
AudienceData audiencedata = new AudienceData(new SquareTargetData(mSquareId, mSquareName, s, s1));
Intent intent = new Intent();
intent.putExtra("audience", audiencedata);
FragmentActivity fragmentactivity = getActivity();
fragmentactivity.setResult(-1, intent);
fragmentactivity.finish();
}
public final void onLoadFinished(Loader loader, Object obj)
{
boolean flag;
int i;
DbSquareStream adbsquarestream[];
flag = true;
i = 0;
adbsquarestream = (DbSquareStream[])obj;
boolean flag1;
if(adbsquarestream == null)
flag1 = flag;
else
flag1 = false;
mLoaderError = flag1;
int id = loader.getId();
if(0 == id) {
mSquareStreamLoaderActive = false;
if((loader instanceof SquareCategoryLoader) && ((SquareCategoryLoader)loader).isDataStale())
refresh();
if(mLoaderError) {
updateView(getView());
return;
} else {
boolean flag2;
int j = mAdapter.getCount();
int k = adbsquarestream.length;
DbSquareStream dbsquarestream;
if(k != j)
flag2 = flag;
else
flag2 = false;
if(flag2) {
flag = flag2;
} else {
for(int l = 0; l < k; l++) {
if(!TextUtils.equals(adbsquarestream[l].getStreamId(), ((SquareStreamInfo)mAdapter.getItem(l)).getStreamId())) {
if(flag)
{
mAdapter.clear();
for(; i < k; i++)
{
dbsquarestream = adbsquarestream[i];
mAdapter.add(new SquareStreamInfo(dbsquarestream.getName(), dbsquarestream.getStreamId()));
}
}
updateView(getView());
break;
}
}
}
}
}
}
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 final void refresh()
{
super.refresh();
if(mNewerReqId == null && getActivity() != null)
mNewerReqId = Integer.valueOf(EsService.getSquare(getActivity(), mAccount, mSquareId));
updateSpinner();
}
//==================================================================================================================
// Inner class
//==================================================================================================================
private static final class SquareStreamInfo {
private final String mStreamId;
private final String mStreamName;
public SquareStreamInfo(String s, String s1)
{
mStreamId = s1;
mStreamName = s;
}
public final String getStreamId()
{
return mStreamId;
}
public final String getStreamName()
{
return mStreamName;
}
public final String toString()
{
return mStreamName;
}
}
}