/**
*
*/
package com.gmail.charleszq.picorner.ui.flickr;
import android.app.Service;
import android.content.Context;
import android.text.Editable;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
import com.gmail.charleszq.picorner.R;
import com.gmail.charleszq.picorner.model.FlickrTagSearchParameter;
import com.gmail.charleszq.picorner.model.FlickrTagSearchParameter.FlickrTagSearchMode;
import com.gmail.charleszq.picorner.ui.command.ICommand;
import com.gmail.charleszq.picorner.ui.helper.AbstractHiddenView;
/**
* @author charles(charleszq@gmail.com)
*
*/
public class FlickrTagSearchView extends AbstractHiddenView {
private Button mCancelButton;
private Button mSearchButton;
private EditText mTagText;
private RadioButton mRadioAnd, mRadioOr;
private CheckBox mCheckInCommon, mCheckHasGeo;
private FlickrTagSearchParameter mSearchParameter;
private OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
InputMethodManager imm = (InputMethodManager) v.getContext()
.getSystemService(Service.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mTagText.getWindowToken(), 0);
if (v == mCancelButton) {
onAction(ACTION_CANCEL);
} else if (v == mSearchButton) {
doSearch(v.getContext());
} else if (v == mRadioAnd) {
mSearchParameter.setSearchMode(FlickrTagSearchMode.ALL);
} else if (v == mRadioOr) {
mSearchParameter.setSearchMode(FlickrTagSearchMode.ANY);
}
}
};
private OnCheckedChangeListener mOnCheckedChangeListener = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (buttonView == mCheckInCommon) {
mSearchParameter.setSearchInCommon(isChecked);
} else if (buttonView == mCheckHasGeo) {
mSearchParameter.setHasGeoInformation(isChecked);
}
}
};
@Override
public void init(ICommand<?> command, IHiddenViewActionListener listener) {
super.init(command, listener);
mSearchParameter = new FlickrTagSearchParameter();
Context ctx = (Context) command.getAdapter(Context.class);
if (mView == null) {
getView(ctx);
}
mTagText = (EditText) mView.findViewById(R.id.txt_flickr_tag_search);
mTagText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
doSearch(v.getContext());
return true;
}
return false;
}
});
Editable tag = mTagText.getText();
if (tag != null)
mSearchParameter.setTags(tag.toString().trim());
mCancelButton = (Button) mView.findViewById(R.id.btn_cancel_search);
mCancelButton.setOnClickListener(mOnClickListener);
mSearchButton = (Button) mView.findViewById(R.id.btn_search);
mSearchButton.setOnClickListener(mOnClickListener);
mRadioAnd = (RadioButton) mView.findViewById(R.id.radio_and);
mRadioAnd.setOnClickListener(mOnClickListener);
mRadioOr = (RadioButton) mView.findViewById(R.id.radio_or);
mRadioOr.setOnClickListener(mOnClickListener);
mCheckInCommon = (CheckBox) mView
.findViewById(R.id.cb_f_search_in_common);
mCheckHasGeo = (CheckBox) mView.findViewById(R.id.cb_f_search_has_geo);
mCheckInCommon.setOnCheckedChangeListener(mOnCheckedChangeListener);
mCheckHasGeo.setOnCheckedChangeListener(mOnCheckedChangeListener);
// initialize the values for the search parameter
mSearchParameter
.setSearchMode(mRadioAnd.isChecked() ? FlickrTagSearchMode.ALL
: FlickrTagSearchMode.ANY);
mSearchParameter.setHasGeoInformation(mCheckHasGeo.isChecked());
mSearchParameter.setSearchInCommon(mCheckInCommon.isChecked());
}
private void doSearch(Context ctx) {
String s = mTagText.getText().toString();
if (s == null || s.trim().length() == 0) {
Toast.makeText(ctx,
ctx.getString(R.string.msg_flickr_tag_search_empty_tag),
Toast.LENGTH_LONG).show();
return;
}
mSearchParameter.setTags(s);
onAction(ACTION_DO, mSearchParameter);
}
@Override
public View getView(Context ctx) {
if (mView == null) {
mView = LayoutInflater.from(ctx).inflate(
R.layout.flickr_tag_search, null);
}
return mView;
}
}