package com.prasanna.android.stacknetwork.fragment; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.view.Menu; import com.prasanna.android.stacknetwork.R; import com.prasanna.android.stacknetwork.model.SearchCriteria; import com.prasanna.android.stacknetwork.service.QuestionsIntentService; import com.prasanna.android.stacknetwork.utils.AppUtils; import com.prasanna.android.stacknetwork.utils.StringConstants; public class SearchQuestionListFragment extends QuestionListFragment { private Intent intent; private SearchCriteria searchCriteria; private Menu menu; private boolean saved = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public void onPrepareOptionsMenu(Menu menu) { this.menu = menu; if (saved || !AppUtils.savedSearchesMaxed(getActivity())) menu.findItem(R.id.menu_save).setVisible(true); } @Override protected void startIntentService() { if (isAdded()) { prepareIntent(); showProgressBar(); startService(intent); } } @Override public void onHiddenChanged(boolean hidden) { if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) getActivity().getActionBar().setDisplayHomeAsUpEnabled(!hidden); } public boolean hasResults() { return itemListAdapter != null && itemListAdapter.getCount() > 0; } public void search(SearchCriteria searchCriteria, boolean saved) { if (searchCriteria != null) { this.saved = saved; if (menu != null) { if (saved) menu.findItem(R.id.menu_save).setVisible(true); else { if (AppUtils.savedSearchesMaxed(getActivity())) menu.findItem(R.id.menu_save).setVisible(false); else menu.findItem(R.id.menu_save).setVisible(true); } } itemListAdapter.clear(); itemListAdapter.notifyDataSetChanged(); this.searchCriteria = searchCriteria; startIntentService(); } } private void prepareIntent() { if (intent == null) { intent = getIntentForService(QuestionsIntentService.class, null); if (intent != null) { intent.putExtra(StringConstants.ACTION, QuestionsIntentService.SEARCH_ADVANCED); intent.putExtra(StringConstants.RESULT_RECEIVER, resultReceiver); intent.putExtra(StringConstants.SEARCH_CRITERIA, searchCriteria); } } else intent.putExtra(StringConstants.SEARCH_CRITERIA, searchCriteria); } @Override protected void loadNextPage() { if (searchCriteria != null) searchCriteria = searchCriteria.nextPage(); startIntentService(); } }