package com.zhan_dui.dictionary.fragments;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Resources.Theme;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AutoCompleteTextView;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.widget.SearchView;
import com.actionbarsherlock.widget.SearchView.OnQueryTextListener;
import com.viewpagerindicator.TitlePageIndicator;
import com.zhan_dui.dictionary.R;
import com.zhan_dui.dictionary.asynctasks.AddWordAsyncTask;
import com.zhan_dui.dictionary.asynctasks.QueryAsyncTask;
import com.zhan_dui.dictionary.datacenter.DictionaryDataCenter;
import com.zhan_dui.dictionary.listeners.IndicatorOnPageChangeListener;
import com.zhan_dui.dictionary.pageradapter.QueryManageFragmentPager;
public class QueryWordFragment extends SherlockFragment implements
OnQueryTextListener {
private QueryManageFragmentPager mQueryManageFragmentPager;
private ViewPager mViewPager;
private TitlePageIndicator mTitlePageIndicator;
private String mQueryWord = "";
private SearchView mSearchView;
private ActionBar mActionBar;
private static Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
DictionaryDataCenter.instance(getActivity());
mActionBar = ((SherlockFragmentActivity) getActivity())
.getSupportActionBar();
mActionBar.setTitle(R.string.app_name);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mContext = getActivity();
return inflater.inflate(com.zhan_dui.dictionary.R.layout.query,
container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
mTitlePageIndicator = (TitlePageIndicator) view
.findViewById(R.id.titles);
mQueryManageFragmentPager = new QueryManageFragmentPager();
mViewPager.setAdapter(mQueryManageFragmentPager);
mTitlePageIndicator.setViewPager(mViewPager);
mTitlePageIndicator
.setOnPageChangeListener(new IndicatorOnPageChangeListener());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
mSearchView.setQuery("", false);
break;
case R.id.search:
mSearchView.setIconified(false);
mSearchView.requestFocusFromTouch();
InputMethodManager imm = (InputMethodManager) getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
break;
case R.id.add:
// DictionaryDataCenter.instance(getActivity()).addWord(mQueryWord);
if (mQueryWord.length() != 0)
new AddWordAsyncTask(mQueryWord, getActivity()).execute();
break;
default:
break;
}
return true;
}
@SuppressLint("NewApi")
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
mSearchView = new SearchView(mActionBar.getThemedContext());
mSearchView.setQueryHint(getActivity().getString(R.string.query_hint));
Theme theme = getActivity().getTheme();
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) mSearchView
.findViewById(R.id.abs__search_src_text);
TypedValue typedValue = new TypedValue();
if (theme.resolveAttribute(R.attr.search_view_text_color, typedValue,
true)) {
autoCompleteTextView.setTextColor(typedValue.data);
} else {
autoCompleteTextView.setTextColor(Color.BLACK);
}
mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM
| ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME
| ActionBar.DISPLAY_HOME_AS_UP);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
Gravity.CENTER_VERTICAL | Gravity.RIGHT);
layoutParams.setMargins(0, 0, 15, 0);
mActionBar.setCustomView(mSearchView, layoutParams);
inflater.inflate(R.menu.search_split_menu, menu);
mSearchView.setOnQueryTextListener(this);
mSearchView.setId(android.R.id.inputArea);
mSearchView.setIconifiedByDefault(true);
}
@Override
public boolean onQueryTextSubmit(String query) {
DictionaryDataCenter.instance(getActivity()).clear();
mQueryManageFragmentPager.notifyDataSetChanged();
mTitlePageIndicator.notifyDataSetChanged();
// if(mC)
new QueryAsyncTask(getActivity(), mTitlePageIndicator,
mQueryManageFragmentPager, query).execute();
if (query != null && query.length() != 0) {
mQueryWord = query;
}
mSearchView.clearFocus();
return true;
}
@Override
public void onDestroyView() {
super.onDestroyView();
if (mActionBar != null)
mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
| ActionBar.DISPLAY_SHOW_TITLE
| ActionBar.DISPLAY_HOME_AS_UP);
}
@Override
public boolean onQueryTextChange(String newText) {
return true;
}
public static Handler QueryMessageHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == QueryAsyncTask.MSG_NO_USEFUL_DICTIONARY) {
Toast.makeText(mContext, R.string.no_dictionary_using,
Toast.LENGTH_LONG).show();
} else if (msg.what == QueryAsyncTask.MSG_NOT_FOUND_WORD) {
Toast.makeText(mContext, R.string.no_this_word,
Toast.LENGTH_LONG).show();
}
};
};
}