package com.ztspeech.simutalk2.dictionary.activity;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.ztspeech.recognizer.OnEngineListener;
import com.ztspeech.recognizerDialog.UnisayRecognizerDialog;
import com.ztspeech.simutalk2.R;
import com.ztspeech.simutalk2.data.UserInfo;
import com.ztspeech.simutalk2.dictionary.adapter.BaseLvAdapter;
import com.ztspeech.simutalk2.dictionary.adapter.UserInputLvAdapter;
import com.ztspeech.simutalk2.dictionary.adapter.WordsSimpleLvAdapter;
import com.ztspeech.simutalk2.dictionary.dom.SQLiteDom;
import com.ztspeech.simutalk2.dictionary.entity.Words;
import com.ztspeech.simutalk2.dictionary.util.LogInfo;
import com.ztspeech.simutalk2.dictionary.util.PublicArithmetic;
import com.ztspeech.simutalk2.dictionary.util.Util;
import com.ztspeech.simutalk2.qa.view.InterpretView;
public class WordsAutoCompletedActivity extends BaseActivity implements OnClickListener, TextWatcher,
OnItemClickListener, OnEngineListener {
private int page;
private ListView lvWords;
private EditText edtWord;
private Button btnSure;
private List list = null;
private Integer childId;
private Integer categroyId;
private String strWords;
private Intent fromWhere;
private SQLiteDom sqliteDom = null;
private TextView tvNoResult;
BaseLvAdapter wLv;
private UserInfo mUser = UserInfo.getInstanse();
private UnisayRecognizerDialog mDialog = null;
private Button btnLuyin = null;
// =========================================================
// private PopupWindow mRecognizerWindow = null;
private InterpretView mInterpretView;
private Handler mHandlerKeyboard = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case Util.ON_RECORD_END:
mInterpretView.clearNoVoiceAnim();
mInterpretView.clearViewAnim();
mInterpretView.startViewAnim();
mInterpretView.setBtnRecordEnable(false);
break;
case Util.ON_RECORD_BEGIN:
mInterpretView.clearViewAnim();
mInterpretView.startNoVoiceAnim();
// btnDispProcess(true);
mInterpretView.setBtnRecordEnable(true);
break;
case Util.ON_RECORDER_ERROR:
mInterpretView.clearViewAnim();
mInterpretView.setBtnRecordEnable(true);
break;
case Util.ON_WAIT_BEGIN:
mInterpretView.setBtnRecordEnable(false);
mInterpretView.clearViewAnim();
mInterpretView.startViewAnim();
break;
case Util.ON_WAIT_END:
mInterpretView.setBtnRecordEnable(true);
// btnDispProcess(false);
mInterpretView.clearViewAnim();
break;
case Util.ON_RECOGNIZER_ERROR:
mInterpretView.clearViewAnim();
mInterpretView.setBtnRecordEnable(true);
mInterpretView.setTextStatusDisp(View.VISIBLE);
mDialog.close();
mInterpretView.setTextStatus((Integer) msg.obj);
break;
case Util.ON_VOICE_VALUE:
mInterpretView.clearViewAnim();
mInterpretView.setBtnRecordEnable(false);
int value = (Integer) msg.obj;
mInterpretView.setBtnRecordBg(value);
break;
case Util.SET_LIST_VIEW:
mInterpretView.setBtnRecordEnable(true);
mInterpretView.clearViewAnim();
mDialog.close();
mInterpretView.dispRresultList((ArrayList<String>) msg.obj);
break;
case Util.SELECT_RESULT:
break;
default:
break;
}
}
};
private void btnDispProcess(boolean flag) {
if (flag) {
mInterpretView.setBtnCancelDisp(View.VISIBLE);
} else {
mInterpretView.setBtnCancelDisp(View.GONE);
}
}
private boolean btnClickflag = false;
// =========================================================
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
sqliteDom = new SQLiteDom();
super.onCreate(savedInstanceState);
page = 1;
setTitleAndContentView(R.layout.activity_words_simple, "����");
fromWhere = getIntent();
categroyId = fromWhere.getIntExtra("categroyId", 0);
strWords = fromWhere.getStringExtra("strWords");
childId = fromWhere.getIntExtra("childId", 0);
if (childId == 0 && categroyId == 0) {
childId = null;
categroyId = null;
// list = sqliteDom.getSimilarResult(null, null, childId,1);
} else if (childId != 0 && categroyId == 0) {
categroyId = null;
// list = sqliteDom.getSimilarResult(null, null, childId,1);
} else if (childId == 0 && categroyId != 0) {
childId = null;
// list = sqliteDom.getSimilarResult(categroyId,null, null,1);
} else if (childId != 0 && categroyId != 0) {
// list = sqliteDom.getSimilarResult(null, null, childId,1);
}
lvWords = (ListView) findViewById(R.id.lvWords);
edtWord = (EditText) findViewById(R.id.edtInputWords);
edtWord.setText(strWords);
btnSure = (Button) findViewById(R.id.btnSure);
btnSure.setOnClickListener(this);
edtWord.addTextChangedListener(this);
tvNoResult = (TextView) findViewById(R.id.tvNoResult);
if (edtWord.getText().toString().equals("") || edtWord.getText().toString() == null) {
getUserInput();
} else {
getList();
}
lvWords.setOnItemClickListener(this);
btnLuyin = (Button) findViewById(R.id.btnLuyin);
btnLuyin.setOnClickListener(this);
mInterpretView = new InterpretView(this, mHandlerKeyboard, this);
mDialog = new UnisayRecognizerDialog(this, "", this, mInterpretView.mNewRecognizerViewListenerInterface);
}
@Override
protected void onResume() {
fromWhere = getIntent();
super.onResume();
}
@Override
public void onClick(View v) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (v == btnSure) {
strWords = edtWord.getText().toString().trim();
if (!"".equals(strWords) && strWords != null) {
imm.hideSoftInputFromWindow(edtWord.getWindowToken(), 0);
if (list != null) {
if (list.size() > 0) {
sqliteDom.saveUserInput(strWords);
}
if (fromWhere.getStringExtra("from").equals("yes")) {
Intent intent = new Intent(WordsAutoCompletedActivity.this, WordsActivity.class);
intent.putExtra("words", strWords);
intent.putExtra("categroyId", categroyId);
intent.putExtra("title", getResources().getString(R.string.dictionary_result_title));
startActivity(intent);
} else {
Intent intent = new Intent(Util.ACTION_SENDMSG);
// Intent intent = new
// Intent(WordsAutoCompletedActivity.this,fromWhere.getClass());
// intent.putParcelableArrayListExtra("wordsList",
// wordsList);
intent.putExtra("words", strWords);
intent.putExtra("categroyId", categroyId);
sendBroadcast(intent);
WordsAutoCompletedActivity.this.finish();
}
}
} else {
Toast.makeText(WordsAutoCompletedActivity.this, "��������������", Toast.LENGTH_SHORT).show();
}
} else if (v == btnLuyin) {
imm.hideSoftInputFromWindow(edtWord.getWindowToken(), 0);
if (mUser.s2sType.equals(UserInfo.S2T_CH2EN)) {
mDialog.setToChineseEngine();
} else if (mUser.s2sType.equals(UserInfo.S2T_EN2CH)) {
mDialog.setToEnglishEngine();
}
mInterpretView.showPopWindowLocation();
mDialog.show();
// new AlertDialog.Builder(this).setTitle("ѡ��ʶ��ʽ").setItems(
// new String[] { "����", "Ӣ��" }, new
// DialogInterface.OnClickListener() {
//
// @Override
// public void onClick(DialogInterface dialog, int which) {
// switch(which){
// case 0:
// mDialog.setToChineseEngine();
// mDialog.show();
// break;
// case 1:
// mDialog.setToEnglishEngine();
// mDialog.show();
// break;
// }
//
// }
// }).setNegativeButton(
// null, null).show();
} else if (v.getId() == R.id.btn_bg || v.getId() == R.id.imagenovoiceanim) {
mDialog.onRecognizerViewRecord();
LogInfo.LogOutE("haitian", "---------------stop record------------");
} else if (v.getId() == R.id.btn_cancel) {
mDialog.onRecognizerViewCancel();
mInterpretView.dismissPopWindow();
} else if (v.getId() == R.id.btn_record) {
if (!btnClickflag) {
btnClickflag = true;
mDialog.show();
mInterpretView.setBtnRecordEnable(true);
} else {
btnClickflag = false;
mDialog.close();
mInterpretView.dismissPopWindow();
}
}
}
@Override
public void afterTextChanged(Editable s) {
strWords = edtWord.getText().toString().trim();
if (wLv != null) {
wLv.removeFooter(lvWords);
}
if (strWords.equals("")) {
getUserInput();
} else {
getList();
}
}
public void getList() {
PublicArithmetic pa = new PublicArithmetic();
Integer enOrCh = pa.isWhat(strWords);
switch (enOrCh) {
case 0:
case 3:
searchByChinese(strWords);
// list = sqliteDom.getSimilarResult(strWords, null, childId,1);
break;
case 1:
case 2:
searchByEnglish(strWords);
// list = sqliteDom.getSimilarResult(null, strWords, childId,1);
break;
}
if (list.size() > 0) {
lvWords.setVisibility(View.VISIBLE);
tvNoResult.setVisibility(View.GONE);
wLv = new WordsSimpleLvAdapter(this, list, enOrCh);
lvWords.setAdapter(wLv);
} else {
lvWords.setVisibility(View.GONE);
tvNoResult.setVisibility(View.VISIBLE);
tvNoResult.setText(getResources().getString(R.string.dictionary_noresult));
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
if (arg2 == list.size()) {
sqliteDom.deleteAllUserInput();
lvWords.setVisibility(View.GONE);
lvWords.setVisibility(View.GONE);
tvNoResult.setVisibility(View.VISIBLE);
tvNoResult.setText(getResources().getString(R.string.dictionary_noresult));
} else {
if ("".equals(strWords) || strWords == null) {
if (fromWhere.getStringExtra("from").equals("yes")) {
Intent intent = new Intent(WordsAutoCompletedActivity.this, WordsActivity.class);
intent.putExtra("words", list.get(arg2).toString());
intent.putExtra("categroyId", categroyId);
intent.putExtra("title", getResources().getString(R.string.dictionary_result_title));
startActivity(intent);
} else {
Intent intent = new Intent(Util.ACTION_SENDMSG);
intent.putExtra("words", list.get(arg2).toString());
intent.putExtra("categroyId", categroyId);
// intent.putExtra("title",
// getResources().getString(R.string.dictionary_result_title));
sendBroadcast(intent);
WordsAutoCompletedActivity.this.finish();
}
} else {
if (fromWhere.getStringExtra("from").equals("yes")) {
ArrayList<Words> wordsList = new ArrayList<Words>();
wordsList.add((Words) list.get(arg2));
Intent intent = new Intent(WordsAutoCompletedActivity.this, WordsActivity.class);
intent.putParcelableArrayListExtra("wordsList", wordsList);
switch (new PublicArithmetic().isWhat(strWords)) {
case 0:
case 3:
intent.putExtra("words", wordsList.get(0).getChinese());
sqliteDom.saveUserInput(edtWord.getText().toString().trim());
break;
case 1:
case 2:
intent.putExtra("words", wordsList.get(0).getEnglish());
sqliteDom.saveUserInput(edtWord.getText().toString().trim());
break;
}
intent.putExtra("categroyId", categroyId);
intent.putExtra("title", getResources().getString(R.string.dictionary_result_title));
startActivity(intent);
} else {
ArrayList<Words> wordsList = new ArrayList<Words>();
wordsList.add((Words) list.get(arg2));
Intent intent = new Intent(Util.ACTION_SENDMSG);
intent.putParcelableArrayListExtra("wordsList", wordsList);
switch (new PublicArithmetic().isWhat(strWords)) {
case 0:
case 3:
intent.putExtra("words", wordsList.get(0).getChinese());
sqliteDom.saveUserInput(edtWord.getText().toString().trim());
break;
case 1:
case 2:
intent.putExtra("words", wordsList.get(0).getEnglish());
sqliteDom.saveUserInput(edtWord.getText().toString().trim());
break;
}
intent.putExtra("categroyId", categroyId);
// intent.putExtra("title",
// getResources().getString(R.string.dictionary_result_title));
sendBroadcast(intent);
WordsAutoCompletedActivity.this.finish();
}
}
}
}
public void searchByChinese(String strWords) {
page = 1;
List newList = null;
if (childId == null && categroyId == null) {
newList = sqliteDom.getSimilarResult(strWords, null, childId, page);
} else if (childId != null && categroyId == null) {
newList = sqliteDom.getSimilarResult(strWords, null, childId, page);
} else if (childId == null && categroyId != null) {
// newList = sqliteDom.getSimilarResult(categroyId,strWords,
// null,page);
newList = sqliteDom.getSimilarResult(strWords, null, childId, page);
} else if (childId != null && categroyId != null) {
newList = sqliteDom.getSimilarResult(strWords, null, childId, page);
}
list = newList;
}
public void searchByEnglish(String strWords) {
page = 1;
List newList = null;
if (childId == null && categroyId == null) {
newList = sqliteDom.getSimilarResult(null, strWords, childId, page);
} else if (childId != null && categroyId == null) {
newList = sqliteDom.getSimilarResult(null, strWords, childId, page);
} else if (childId == null && categroyId != null) {
newList = sqliteDom.getSimilarResult(null, strWords, childId, page);
// newList = sqliteDom.getSimilarResult(categroyId,null,
// strWords,page);
} else if (childId != null && categroyId != null) {
newList = sqliteDom.getSimilarResult(null, strWords, childId, page);
}
list = newList;
}
public void getUserInput() {
list = sqliteDom.getUserInput();
wLv = new UserInputLvAdapter(this, list);
// wLv = new WordsSimpleLvAdapter(this, list, 100);
wLv.addFooter(lvWords);
lvWords.setAdapter(wLv);
if (list.size() == 0) {
lvWords.setVisibility(View.GONE);
tvNoResult.setVisibility(View.VISIBLE);
tvNoResult.setText("- ����ʷ��¼ -");
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onEngineEnd() {
// TODO Auto-generated method stub
}
@Override
public void onEngineResult(List arg0, int arg1, String id) {
mDialog.close();
mInterpretView.dismissPopWindow();
if (arg0 == null) {
return;
}
if (arg0.size() > 0) {
String text = (String) ((String) arg0.get(0)).replace(".", "").replace("��", "").replace("?", "")
.replace("��", "").replace("!", "").replace("��", "");
edtWord.setText(text);
}
}
@Override
public void onEngineStart() {
// TODO Auto-generated method stub
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
mDialog.close();
mInterpretView.dismissPopWindow();
}
return super.onKeyDown(keyCode, event);
}
}