/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import java.util.ArrayList;
import java.util.Iterator;
import android.os.Build;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.util.SoftInput;
/**
*
* @author sihai
*
*/
public class SearchViewAdapter implements TextWatcher,
TextView.OnEditorActionListener {
protected final ArrayList mListeners = new ArrayList();
protected boolean mRequestFocus;
private TextView mSearchView;
protected SearchViewAdapter(View view) {
mRequestFocus = true;
mSearchView = (TextView) view;
if (mSearchView != null) {
mSearchView.addTextChangedListener(this);
mSearchView.setOnEditorActionListener(this);
View view1 = (View) mSearchView.getParent();
if (view1 != null) {
View view2 = view1.findViewById(R.id.search_go_btn);
if (view2 != null)
view2.setOnClickListener(new android.view.View.OnClickListener() {
public final void onClick(View view3) {
onQueryTextSubmit(mSearchView.getText().toString());
SoftInput.hide(mSearchView);
}
});
}
}
}
public static SearchViewAdapter createInstance(View view) {
SearchViewAdapter obj;
if (android.os.Build.VERSION.SDK_INT >= 12)
obj = new SearchViewAdapterV12(view);
else if (android.os.Build.VERSION.SDK_INT >= 11)
obj = new SearchViewAdapterV11(view);
else
obj = new SearchViewAdapter(view);
return obj;
}
public void addOnChangeListener(OnQueryChangeListener onquerychangelistener) {
mListeners.add(onquerychangelistener);
}
public void afterTextChanged(Editable editable) {
}
public void beforeTextChanged(CharSequence charsequence, int i, int j, int k) {
}
public void hideSoftInput() {
SoftInput.hide(mSearchView);
}
public boolean onEditorAction(TextView textview, int i, KeyEvent keyevent) {
boolean flag;
if ((i == 6 || i == 3) && mSearchView == textview) {
onQueryTextSubmit(mSearchView.getText().toString());
SoftInput.hide(mSearchView);
flag = true;
} else {
flag = false;
}
return flag;
}
public boolean onQueryTextChange(String s) {
for (Iterator iterator = mListeners.iterator(); iterator.hasNext(); ((OnQueryChangeListener) iterator
.next()).onQueryTextChanged(s))
;
return false;
}
public boolean onQueryTextSubmit(String s) {
for (Iterator iterator = mListeners.iterator(); iterator.hasNext(); ((OnQueryChangeListener) iterator
.next()).onQueryTextSubmitted(s))
;
return false;
}
public void onTextChanged(CharSequence charsequence, int i, int j, int k) {
onQueryTextChange(charsequence.toString());
}
public void requestFocus(boolean flag) {
mRequestFocus = flag;
}
public void setQueryHint(int i) {
mSearchView.setHint(i);
}
public void setQueryText(String s) {
mSearchView.setText(s);
if (mRequestFocus)
mSearchView.requestFocus();
}
public void setVisible(boolean flag) {
setVisible(flag, ((View) (mSearchView)));
}
protected final void setVisible(boolean flag, View view)
{
if(null == view) {
return;
} else {
int i = view.getVisibility();
int j;
if(flag)
j = View.VISIBLE;
else
j = View.GONE;
if(i == j) {
return;
} else {
view.setVisibility(j);
if(j == View.VISIBLE) {
SoftInput.hide(view);
if(view.hasFocus())
view.getRootView().requestFocus();
} else {
showSoftInput();
}
}
}
}
protected void showSoftInput() {
mSearchView.requestFocus();
mSearchView.postDelayed(new Runnable() {
public final void run() {
SoftInput.show(mSearchView);
}
}, 50L);
}
public static interface OnQueryChangeListener {
void onQueryClose();
void onQueryTextChanged(CharSequence charsequence);
void onQueryTextSubmitted(CharSequence charsequence);
}
}