package com.alorma.github.ui.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.MenuItemCompat; import android.support.v7.widget.SearchView; import android.view.Menu; import android.view.MenuItem; import com.alorma.github.R; import com.alorma.github.sdk.bean.info.RepoInfo; import com.alorma.github.ui.activity.base.BackActivity; import com.alorma.github.ui.fragment.issues.IssuesListFragment; public class SearchIssuesActivity extends BackActivity implements SearchView.OnQueryTextListener, SearchView.OnCloseListener, IssuesListFragment.SearchClientRequest { private static String REPO_INFO = "REPO_INFO"; private SearchView searchView; private RepoInfo repoInfo; private String query; private IssuesListFragment issuesListFragment; public static Intent launchIntent(Context context, RepoInfo repoInfo) { Intent intent = new Intent(context, SearchIssuesActivity.class); intent.putExtra(REPO_INFO, repoInfo); return intent; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_issues_search); setTitle(""); if (getIntent().getExtras() != null) { repoInfo = getIntent().getExtras().getParcelable(REPO_INFO); issuesListFragment = IssuesListFragment.newInstance(repoInfo, true); //issuesListFragment.setSearchClientRequest(this); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content, issuesListFragment); ft.commit(); } } public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); if (getToolbar() != null) { getToolbar().inflateMenu(R.menu.search_issues_menu); MenuItem searchItem = menu.findItem(R.id.action_search); MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { return false; } @Override public boolean onMenuItemActionCollapse(MenuItem item) { clearSearch(); return false; } }); searchView = (SearchView) MenuItemCompat.getActionView(searchItem); searchView.setIconifiedByDefault(false); searchView.setSubmitButtonEnabled(true); searchView.setOnQueryTextListener(this); searchView.setOnCloseListener(this); } return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem searchItem = menu.findItem(R.id.action_search); MenuItemCompat.expandActionView(searchItem); if (searchView != null) { searchView.requestFocus(); } return super.onPrepareOptionsMenu(menu); } private void clearSearch() { } @Override public boolean onQueryTextSubmit(String s) { search(s); return false; } @Override public boolean onQueryTextChange(String s) { return false; } @Override public boolean onClose() { clearSearch(); return false; } private void search(String query) { if (query == null) { query = ""; } query += "+repo:" + repoInfo.owner + "/" + repoInfo.name; issuesListFragment.setRefreshing(); issuesListFragment.clear(); this.query = query; issuesListFragment.executeSearch(); } @Override public String request() { return this.query; } }