package org.carelife.creader.ui.activity; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import org.carelife.creader.db.BookDao; import org.carelife.creader.ui.adapter.BaseFragmentPagerAdapter; import org.carelife.creader.ui.fragment.SearchHistoryFragment; import org.carelife.creader.ui.fragment.SearchHotFragment; import android.app.ActionBar; import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.graphics.Color; import org.carelife.creader.R; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.SearchView; import android.widget.RadioGroup.OnCheckedChangeListener; public class SearchPage extends FragmentActivity { LinearLayout outside; InputMethodManager imm; private SharedPreferences sp; private Editor edit; private RadioGroup tabGroup; private RadioButton hot, history; protected BookDao bookDao; private ViewPager pager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.searchpage); sp = getSharedPreferences("sogounovel", MODE_PRIVATE); edit = sp.edit(); imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); outside = (LinearLayout) findViewById(R.id.search_outside); bookDao = BookDao.getInstance(SearchPage.this); buildActionBarAndViewPagerTitles(); outside.setOnClickListener(new OnClickListener() { public void onClick(View v) { imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } }); tabGroup = (RadioGroup) findViewById(R.id.search_group); hot = (RadioButton) findViewById(R.id.group_hot); history = (RadioButton) findViewById(R.id.group_history); tabGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.group_hot: pager.setCurrentItem(0); hot.setTextColor(Color.WHITE); history.setTextColor(Color.BLACK); hot.setBackgroundResource(R.drawable.cate_left_bt); history.setBackgroundResource(R.drawable.cate_right_g_bt); break; case R.id.group_history: pager.setCurrentItem(1); hot.setTextColor(Color.BLACK); history.setTextColor(Color.WHITE); history.setBackgroundResource(R.drawable.cate_right_bt); hot.setBackgroundResource(R.drawable.cate_left_g_bt); break; default: break; } } }); } private void buildActionBarAndViewPagerTitles() { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowHomeEnabled(true); actionBar.setDisplayUseLogoEnabled(false); actionBar.setDisplayShowTitleEnabled(true); actionBar.setTitle(getString(R.string.search)); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); List<Fragment> fragmentList = new ArrayList<Fragment>(); fragmentList.add(SearchHotFragment.newInstance()); fragmentList.add(SearchHistoryFragment.newInstance()); FragmentPagerAdapter adapter = new BaseFragmentPagerAdapter( getSupportFragmentManager(), fragmentList); pager = (ViewPager) findViewById(R.id.vPager); pager.setAdapter(adapter); pager.setOnPageChangeListener(pageChangeListener); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.actionbar_menu_searchmainactivity, menu); final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); final SearchView searchView = (SearchView) menu.findItem(R.id.search) .getActionView(); searchView.setSearchableInfo(searchManager .getSearchableInfo(getComponentName())); searchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH); searchView.setIconifiedByDefault(false); searchView.setSubmitButtonEnabled(true); searchView.setLayoutParams(new LayoutParams(getResources() .getDisplayMetrics().widthPixels / 4 * 3, LayoutParams.WRAP_CONTENT)); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { String query_word = query.trim(); if (query_word.equals("")) { return true; } bookDao.insertHistory(query_word); try { query_word = URLEncoder.encode(query_word, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (query_word.equals("")) { return true; } edit.putString("querystring", query_word); edit.commit(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm.isActive()) imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS); Intent intent = new Intent(SearchPage.this, SearchResultList.class); startActivity(intent); return true; } @Override public boolean onQueryTextChange(String newText) { return false; } }); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: SearchPage.this.finish(); return true; } return true; } private OnPageChangeListener pageChangeListener = new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { switch (arg0) { case 0: hot.setTextColor(Color.WHITE); history.setTextColor(Color.BLACK); hot.setBackgroundResource(R.drawable.cate_left_bt); history.setBackgroundResource(R.drawable.cate_right_g_bt); break; case 1: pager.setCurrentItem(1); hot.setTextColor(Color.BLACK); history.setTextColor(Color.WHITE); history.setBackgroundResource(R.drawable.cate_right_bt); hot.setBackgroundResource(R.drawable.cate_left_g_bt); break; default: break; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }; }