package tk.djcrazy.MyCC98.fragment;
import java.util.ArrayList;
import java.util.List;
import roboguice.inject.InjectView;
import tk.djcrazy.MyCC98.PostListActivity;
import tk.djcrazy.MyCC98.R;
import tk.djcrazy.MyCC98.adapter.BaseItemListAdapter;
import tk.djcrazy.MyCC98.adapter.SearchBoardListAdapter;
import tk.djcrazy.MyCC98.helper.LoadingModelHelper;
import tk.djcrazy.libCC98.NewCC98Service;
import tk.djcrazy.libCC98.data.BoardStatus;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import com.google.inject.Inject;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
public
class SearchBoardFragment extends PullToRefeshListFragment<BoardStatus> {
private int position = 0;
private static final String TAG = "SearchBoardFragment";
private List<BoardStatus> totalBoards = new ArrayList<BoardStatus>();
@InjectView(R.id.search_board_text)
private EditText searchContentEditText;
@InjectView(R.id.board_filter)
private ImageView mboardFilter;
@InjectView(R.id.search_board_bar)
private LinearLayout mSearchBar;
@Inject
private NewCC98Service service;
private int mOriginalSearchBarWidth = 0;
private TextWatcher textWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
doSearch(searchContentEditText.getText().toString().trim());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return LayoutInflater.from(getActivity()).inflate(
R.layout.fragment_search_board, null);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
helper = new LoadingModelHelper(view.findViewById(R.id.search_board_main_container),
view.findViewById(android.R.id.empty), view.findViewById(R.id.pb_loading), this);
super.onViewCreated(view, savedInstanceState);
setListeners();
}
private void toggleFilter() {
if (searchContentEditText.getVisibility()==View.GONE) {
searchContentEditText.setVisibility(View.VISIBLE);
} else {
searchContentEditText.setVisibility(View.GONE);
}
}
private void setListeners() {
searchContentEditText.addTextChangedListener(textWatcher);
mboardFilter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
toggleFilter();
}
});
}
private void doSearch(String string) {
if (string.equals("")) {
if (totalBoards.size() <= 50) {
setItems(totalBoards);
} else {
setItems(totalBoards.subList(0, 50));
}
} else {
List<BoardStatus> tmplist = new ArrayList<BoardStatus>();
for (BoardStatus np : items) {
if (np.getBoardName().toLowerCase()
.contains(string.toLowerCase())) {
tmplist.add(np);
}
}
setItems(tmplist);
}
refreshListViewData();
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
getActivity().startActivity(PostListActivity.createIntent(items.get(position - 1)
.getBoardName(), items.get(position - 1)
.getBoardId()));
}
@Override
public void onRequestComplete(List<BoardStatus> result) {
super.onRequestComplete(result);
totalBoards = new ArrayList<BoardStatus>(items);
doSearch(searchContentEditText.getText().toString().trim());
}
@Override
protected BaseItemListAdapter<BoardStatus> createAdapter(
List<BoardStatus> items) {
return new SearchBoardListAdapter(getActivity(), items);
}
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
service.submitTodayBoardlList(this.getClass(), this);
}
@Override
public void onCancelRequest() {
service.cancelRequest(this.getClass());
}
}