package com.buddycloud;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ImageButton;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.MenuItem;
import com.buddycloud.fragments.SearchChannelsFragment;
import com.buddycloud.utils.ActionbarUtil;
import com.buddycloud.utils.InputUtils;
public class SearchActivity extends SherlockFragmentActivity {
protected static final String TAG = SearchActivity.class.getSimpleName();
public static final int REQUEST_CODE = 102;
private static final long SEARCH_DELAY = 2000;
private ImageButton searchCancelBtn;
private TextView searchView;
private boolean searchScheduled = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
ActionbarUtil.showActionBarwithBack(this, getString(R.string.search_title));
String q = getIntent().getStringExtra(SearchChannelsFragment.FILTER);
searchView = (TextView) findViewById(R.id.searchTxt);
searchView.setText(q);
final SearchChannelsFragment searchChannelsFragment = new SearchChannelsFragment();
String[] affiliationsToDisplay = getIntent().getStringArrayExtra(
SearchChannelsFragment.AFFILIATIONS);
if (affiliationsToDisplay != null) {
searchChannelsFragment
.setAffiliationsToDisplay(affiliationsToDisplay);
}
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
searchChannelsFragment.setInitialFilter(q);
searchChannelsFragment.setWindowToken(searchView.getWindowToken());
transaction.replace(R.id.contentFrame, searchChannelsFragment);
transaction.commitAllowingStateLoss();
searchView.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void onTextChanged(final CharSequence searchString,
int arg1, int arg2, int arg3) {
if (searchString.toString().length() > 0) {
searchCancelBtn.setImageDrawable(getResources()
.getDrawable(R.drawable.ic_cancel_dark));
} else {
searchCancelBtn.setImageDrawable(getResources()
.getDrawable(R.drawable.ic_cancel_light));
}
if (!searchScheduled) {
searchScheduled = true;
searchView.postDelayed(new Runnable() {
@Override
public void run() {
searchChannelsFragment.filter(SearchActivity.this,
searchString.toString());
searchScheduled = false;
}
}, SEARCH_DELAY);
}
}
});
searchCancelBtn = (ImageButton) findViewById(R.id.search_cancel_btn);
searchCancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchCancel();
}
});
}
@Override
protected void onPause() {
TextView et = ((TextView) findViewById(R.id.searchTxt));
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
super.onPause();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
InputUtils.hideKeyboard(SearchActivity.this);
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/**
* Cancel the search and clear filter.
*
*/
private void searchCancel() {
if (searchView != null && searchView.getText().length() != 0) {
searchView.setText("");
}
}
}