package com.abewy.android.apps.klyph.fragment;
import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.Spinner;
import com.abewy.android.apps.klyph.Klyph;
import com.abewy.android.apps.klyph.adapter.MultiObjectAdapter;
import com.abewy.android.apps.klyph.core.graph.GraphObject;
import com.abewy.android.apps.klyph.request.AsyncRequest.Query;
import com.abewy.android.apps.klyph.widget.KlyphGridView;
import com.abewy.android.apps.klyph.R;
public class Search extends KlyphFragment2
{
private EditText searchText;
private Spinner spinner;
private ImageButton button;
private ProgressBar progress;
public Search()
{
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState)
{
searchText = (EditText) view.findViewById(R.id.search_text);
spinner = (Spinner) view.findViewById(R.id.search_type);
button = (ImageButton) view.findViewById(R.id.button);
progress = (ProgressBar) view.findViewById(android.R.id.progress);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
search();
}
});
searchText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP)
{
search();
return true;
}
return false;
}
});
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(), R.array.search_labels,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
setListAdapter(new MultiObjectAdapter(getGridView()));
defineEmptyText(R.string.empty_list_no_data);
setListVisible(false);
setAutoLoad(false);
super.onViewCreated(view, savedInstanceState);
progress.setVisibility(View.GONE);
}
@Override
public void onGridItemClick(KlyphGridView l, View v, int position, long id)
{
GraphObject graphObject = (GraphObject) l.getItemAtPosition(position);
startActivity(Klyph.getIntentForGraphObject(getActivity(), graphObject));
}
@Override
protected void populate(List<GraphObject> data)
{
super.populate(data);
}
private void search()
{
String keywords = searchText.getText().toString();
if (keywords.length() > 0)
{
switch (spinner.getSelectedItemPosition())
{
case 0:
setRequestType(Query.SEARCH_USER);
defineEmptyText(R.string.empty_list_no_user);
break;
case 1:
setRequestType(Query.SEARCH_PAGE);
defineEmptyText(R.string.empty_list_no_page);
break;
case 2:
setRequestType(Query.SEARCH_GROUP);
defineEmptyText(R.string.empty_list_no_group);
break;
case 3:
setRequestType(Query.SEARCH_EVENT);
defineEmptyText(R.string.empty_list_no_event);
break;
default:
break;
}
setElementId(keywords);
progress.setVisibility(View.VISIBLE);
clearAndRefresh();
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchText.getWindowToken(), 0);
}
}
@Override
protected int getCustomLayout()
{
return R.layout.fragment_search;
}
@Override
public void onDestroy()
{
super.onDestroy();
searchText = null;
spinner = null;
button = null;
progress = null;
}
}