/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ProgressBar;
import com.galaxy.meetup.client.android.DumpDatabase;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.content.CircleData;
import com.galaxy.meetup.client.android.content.PersonData;
import com.galaxy.meetup.client.android.ui.fragments.PeopleSearchAdapter.SearchListAdapterListener;
import com.galaxy.meetup.client.android.ui.view.PeopleListItemView;
import com.galaxy.meetup.client.android.ui.view.PeopleListItemView.OnActionButtonClickListener;
import com.galaxy.meetup.client.android.ui.view.SearchViewAdapter;
import com.galaxy.meetup.client.android.ui.view.SearchViewAdapter.OnQueryChangeListener;
import com.galaxy.meetup.client.util.EsLog;
/**
*
* @author sihai
*
*/
public class PeopleSearchFragment extends EsPeopleListFragment implements
SearchListAdapterListener, Refreshable, OnActionButtonClickListener,
OnQueryChangeListener {
private PeopleSearchListAdapter mAdapter;
private boolean mAddToCirclesActionEnabled;
private int mCircleUsageType;
private OnSelectionChangeListener mListener;
private boolean mPeopleInCirclesEnabled;
private boolean mPhoneOnlyContactsEnabled;
private boolean mPlusPagesEnabled;
private ProgressBar mProgressView;
private boolean mPublicProfileSearchEnabled;
private String mQuery;
private SearchViewAdapter mSearchViewAdapter;
public PeopleSearchFragment()
{
mCircleUsageType = -1;
}
protected final ListAdapter getAdapter()
{
return mAdapter;
}
protected final int getEmptyText()
{
return 0;
}
protected final View inflateView(LayoutInflater layoutinflater, ViewGroup viewgroup)
{
return layoutinflater.inflate(R.layout.people_search_fragment, viewgroup, false);
}
protected final boolean isEmpty()
{
boolean flag;
if(mAdapter == null || mAdapter.isSearchingForFirstResult())
flag = true;
else
flag = false;
return flag;
}
protected final boolean isError()
{
return mAdapter.isError();
}
protected final boolean isLoaded()
{
return mAdapter.isLoaded();
}
public final void onActionButtonClick(PeopleListItemView peoplelistitemview, int i)
{
}
public final void onAddPersonToCirclesAction(String s, String s1, boolean flag)
{
showCircleMembershipDialog(s, s1);
}
public final void onAttach(Activity activity)
{
super.onAttach(activity);
mAdapter = new PeopleSearchListAdapter(activity, getFragmentManager(), getLoaderManager(), getAccount());
mAdapter.setAddToCirclesActionEnabled(mAddToCirclesActionEnabled);
mAdapter.setPublicProfileSearchEnabled(mPublicProfileSearchEnabled);
mAdapter.setIncludePhoneNumberContacts(mPhoneOnlyContactsEnabled);
mAdapter.setCircleUsageType(mCircleUsageType);
mAdapter.setIncludePlusPages(mPlusPagesEnabled);
mAdapter.setIncludePeopleInCircles(mPeopleInCirclesEnabled);
mAdapter.setShowProgressWhenEmpty(false);
mAdapter.setFilterNullGaiaIds(activity.getIntent().getBooleanExtra("filter_null_gaia_ids", false));
mAdapter.setListener(this);
mAdapter.setQueryString(mQuery);
}
public final void onChangeCirclesAction(String s, String s1)
{
showCircleMembershipDialog(s, s1);
}
public final void onCircleSelected(String s, CircleData circledata)
{
mListener.onCircleSelected(s, circledata);
}
public final void onCreate(Bundle bundle)
{
if(bundle != null)
mQuery = bundle.getString("query");
super.onCreate(bundle);
}
public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle)
{
View view = super.onCreateView(layoutinflater, viewgroup, bundle);
mSearchViewAdapter = SearchViewAdapter.createInstance(view.findViewById(R.id.search_src_text));
mSearchViewAdapter.setQueryHint(R.string.search_people_hint_text);
mSearchViewAdapter.addOnChangeListener(this);
updateView(view);
return view;
}
public final void onDismissSuggestionAction(String s, String s1)
{
}
protected final void onInitLoaders(Bundle bundle)
{
mAdapter.onCreate(bundle);
}
public void onItemClick(AdapterView adapterview, View view, int i, long l)
{
mAdapter.onItemClick(i);
}
public final void onPersonSelected(String s, String s1, PersonData persondata)
{
mListener.onPersonSelected(s, s1, persondata);
}
public final void onQueryClose()
{
mSearchViewAdapter.setQueryText(null);
mAdapter.setQueryString(null);
}
public final void onQueryTextChanged(CharSequence charsequence)
{
String s;
if(charsequence == null)
s = null;
else
s = charsequence.toString().trim();
mQuery = s;
if(EsLog.ENABLE_DOGFOOD_FEATURES && null != charsequence) {
if(!"*#*#dumpdb*#*#".equals(charsequence.toString())) {
if("*#*#cleandb*#*#".equals(charsequence.toString()))
DumpDatabase.cleanNow(getActivity());
} else {
DumpDatabase.dumpNow(getActivity());
}
}
if(mAdapter != null)
mAdapter.setQueryString(mQuery);
return;
}
public final void onQueryTextSubmitted(CharSequence charsequence)
{
}
public final void onSaveInstanceState(Bundle bundle)
{
super.onSaveInstanceState(bundle);
if(mAdapter != null)
mAdapter.onSaveInstanceState(bundle);
bundle.putString("query", mQuery);
}
public final void onSearchListAdapterStateChange(PeopleSearchAdapter peoplesearchadapter)
{
View view = getView();
if(view != null)
updateView(view);
}
public final void onStart()
{
super.onStart();
mAdapter.onStart();
}
public final void onStop()
{
super.onStart();
mAdapter.onStop();
}
public final void onUnblockPersonAction(String s, boolean flag)
{
}
public final void setAddToCirclesActionEnabled(boolean flag)
{
mAddToCirclesActionEnabled = flag;
if(mAdapter != null)
mAdapter.setAddToCirclesActionEnabled(flag);
}
public final void setCircleUsageType(int i)
{
mCircleUsageType = i;
if(mAdapter != null)
mAdapter.setCircleUsageType(i);
}
public final void setInitialQueryString(String s)
{
if(mQuery == null)
mQuery = s;
}
public final void setOnSelectionChangeListener(OnSelectionChangeListener onselectionchangelistener)
{
mListener = onselectionchangelistener;
}
public final void setPeopleInCirclesEnabled(boolean flag)
{
mPeopleInCirclesEnabled = flag;
if(mAdapter != null)
mAdapter.setIncludePeopleInCircles(flag);
}
public final void setPhoneOnlyContactsEnabled(boolean flag)
{
mPhoneOnlyContactsEnabled = flag;
if(mAdapter != null)
mAdapter.setIncludePhoneNumberContacts(flag);
}
public final void setPlusPagesEnabled(boolean flag)
{
mPlusPagesEnabled = flag;
if(mAdapter != null)
mAdapter.setIncludePlusPages(flag);
}
public final void setProgressBar(ProgressBar progressbar)
{
mProgressView = progressbar;
updateSpinner(mProgressView);
}
public final void setPublicProfileSearchEnabled(boolean flag)
{
mPublicProfileSearchEnabled = flag;
if(mAdapter != null)
mAdapter.setPublicProfileSearchEnabled(flag);
}
public final void startSearch()
{
if(mSearchViewAdapter != null)
mSearchViewAdapter.setQueryText(mQuery);
}
protected final void updateView(View view)
{
if(mAdapter != null)
if(mAdapter.isSearchingForFirstResult())
{
view.findViewById(0x102000a).setVisibility(0);
view.findViewById(R.id.shim).setVisibility(0);
showEmptyViewProgress(view);
} else
if(!TextUtils.isEmpty(mQuery))
{
view.findViewById(0x102000a).setVisibility(0);
view.findViewById(R.id.shim).setVisibility(8);
showContent(view);
} else
{
view.findViewById(0x102000a).setVisibility(8);
view.findViewById(R.id.shim).setVisibility(8);
showContent(view);
}
}
public static interface OnSelectionChangeListener {
public abstract void onCircleSelected(String s, CircleData circledata);
public abstract void onPersonSelected(String s, String s1, PersonData persondata);
}
}