package com.athena.asm;
import java.io.Serializable;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.athena.asm.data.Subject;
import com.athena.asm.util.SmthSupport;
import com.athena.asm.util.StringUtility;
import com.athena.asm.viewmodel.SearchPostViewModel;
public class SearchPostActivity extends SherlockActivity implements
OnClickListener {
public SmthSupport m_smthSupport;
EditText m_titleEditText;
EditText m_title2EditText;
EditText m_title3EditText;
EditText m_useridEditText;
EditText m_dtEditText;
CheckBox m_mgCheckBox;
CheckBox m_agCheckBox;
CheckBox m_ogCheckBox;
Button m_startSearchButton;
private SearchPostViewModel m_viewModel;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(aSMApplication.THEME);
super.onCreate(savedInstanceState);
setContentView(R.layout.search_post);
m_smthSupport = SmthSupport.getInstance();
m_viewModel = (SearchPostViewModel) getLastNonConfigurationInstance();
if (m_viewModel == null) {
m_viewModel = new SearchPostViewModel();
}
m_viewModel.setBoardName(getIntent()
.getStringExtra(StringUtility.BOARD));
m_viewModel.setBoardID(getIntent().getStringExtra(StringUtility.BID));
setTitle(m_viewModel.getTitleText());
m_titleEditText = (EditText) findViewById(R.id.edittext_title);
// turn on IME automatically
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 300);
m_title2EditText = (EditText) findViewById(R.id.edittext_title2);
m_title3EditText = (EditText) findViewById(R.id.edittext_title3);
m_useridEditText = (EditText) findViewById(R.id.edittext_userid);
m_dtEditText = (EditText) findViewById(R.id.edittext_dt);
m_mgCheckBox = (CheckBox) findViewById(R.id.checkbox_mg);
m_agCheckBox = (CheckBox) findViewById(R.id.checkbox_ag);
m_ogCheckBox = (CheckBox) findViewById(R.id.checkbox_og);
m_startSearchButton = (Button) findViewById(R.id.btn_start_post_search);
m_startSearchButton.setOnClickListener(this);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// do nothing to stop onCreated
super.onConfigurationChanged(newConfig);
}
@Override
public Object onRetainNonConfigurationInstance() {
updateViewModel();
return m_viewModel;
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_start_post_search) {
updateViewModel();
new SearchTask().execute();
}
}
public static final int MENU_SEARCH = Menu.FIRST;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean isLight = aSMApplication.THEME == R.style.Theme_Sherlock_Light;
menu.add(0, MENU_SEARCH, Menu.NONE, "搜索").setIcon(isLight ? R.drawable.search_inverse : R.drawable.search)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_SEARCH:
m_startSearchButton.performClick();
break;
}
return super.onOptionsItemSelected(item);
}
public void parseSearchResult(List<Subject> subjects) {
Intent intent = new Intent();
intent.setClassName("com.athena.asm",
"com.athena.asm.SearchPostResultListActivity");
Bundle bundle = new Bundle();
bundle.putSerializable(StringUtility.SUBJECT_LIST,
(Serializable) subjects);
intent.putExtras(bundle);
startActivity(intent);
}
class SearchTask extends AsyncTask<String, Integer, String> {
private List<Subject> m_subjects;
@Override
protected String doInBackground(String... arg0) {
m_subjects = m_viewModel.searchSubject();
return null;
}
@Override
protected void onPostExecute(String result) {
parseSearchResult(m_subjects);
}
}
private void updateViewModel() {
m_viewModel.setTitle(m_titleEditText.getText().toString().trim());
m_viewModel.setTitle2(m_title2EditText.getText().toString().trim());
m_viewModel.setTitle3(m_title3EditText.getText().toString().trim());
m_viewModel.setUserId(m_useridEditText.getText().toString().trim());
m_viewModel.setDays(m_dtEditText.getText().toString().trim());
m_viewModel.setMgFlag(m_mgCheckBox.isChecked());
m_viewModel.setAgFlag(m_agCheckBox.isChecked());
m_viewModel.setOgFlag(m_ogCheckBox.isChecked());
}
}