package com.buddycloud.fragments;
import org.json.JSONObject;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.ExpandableListView;
import com.actionbarsherlock.app.SherlockFragment;
import com.buddycloud.R;
import com.buddycloud.fragments.adapter.SearchChannelsAdapter;
public class SearchChannelsFragment extends SherlockFragment {
public static final String FILTER = "com.buddycloud.FILTER";
public static final String AFFILIATIONS = "com.buddycloud.AFFILIATIONS";
private IBinder windowToken;
private String lastFilter;
private String initialFilter;
private SearchChannelsAdapter adapter = new SearchChannelsAdapter();
private GenericChannelsFragment genericChannelFrag = new GenericChannelsFragment(adapter) {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
final View emptyView = View.inflate(container.getContext(), R.layout.list_empty_view, null);
final ExpandableListView channelsView = (ExpandableListView) view.findViewById(R.id.channelListView);
channelsView.setEmptyView(emptyView);
view.findViewById(R.id.channelListProgress).setVisibility(View.GONE);
adapter.configure(genericChannelFrag, view);
return view;
};
@Override
public void channelSelected(JSONObject channelItem) {
if (channelItem.has("post_id")) {
selectItem(channelItem.optString("post_id"),
channelItem.optString("jid"));
} else {
selectChannel(channelItem.optString("jid"));
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = genericChannelFrag.onCreateView(inflater, container, savedInstanceState);
adapter.configure(view);
adapter.load(container.getContext());
if (initialFilter != null) {
filter(getActivity(), initialFilter);
}
return view;
}
protected void selectItem(String itemId, String channelJid) {
hideKeyboard();
finishActivity(itemId, channelJid);
}
private void selectChannel(String channelJid) {
hideKeyboard();
finishActivity(null, channelJid);
}
private void finishActivity(String itemId, String channelJid) {
Intent returnIntent = new Intent();
returnIntent.putExtra(GenericChannelsFragment.CHANNEL, channelJid);
returnIntent.putExtra(GenericChannelsFragment.POST_ID, itemId);
returnIntent.putExtra(SearchChannelsFragment.FILTER, lastFilter);
getActivity().setResult(0, returnIntent);
getActivity().finish();
}
private void hideKeyboard() {
InputMethodManager imm = (InputMethodManager) getSherlockActivity().getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(windowToken, 0);
}
public void filter(Context context, String q) {
lastFilter = q;
adapter.filter(context, q);
}
public void setWindowToken(IBinder windowToken) {
this.windowToken = windowToken;
}
public void setInitialFilter(String q) {
initialFilter = q;
}
public void setAffiliationsToDisplay(String[] affiliationsToDisplay) {
adapter.enableRemoteSearch(false);
for (String affiliation : affiliationsToDisplay) {
adapter.addAffiliationToDisplay(affiliation);
}
}
}