package com.khmelenko.lab.varis.activity;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.View;
import com.khmelenko.lab.varis.R;
import com.khmelenko.lab.varis.TravisApp;
import com.khmelenko.lab.varis.fragment.ReposFragment;
import com.khmelenko.lab.varis.mvp.MvpActivity;
import com.khmelenko.lab.varis.network.response.Repo;
import com.khmelenko.lab.varis.presenter.SearchResultsPresenter;
import com.khmelenko.lab.varis.view.SearchResultsView;
import java.util.List;
import javax.inject.Inject;
import butterknife.ButterKnife;
/**
* Provides activity with search results
*
* @author Dmytro Khmelenko
*/
public final class SearchResultsActivity extends MvpActivity<SearchResultsPresenter> implements
SearchResultsView,
ReposFragment.ReposFragmentListener {
@Inject
SearchResultsPresenter mPresenter;
private ReposFragment mFragment;
private String mSearchQuery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_results);
TravisApp.instance().activityInjector().inject(this);
ButterKnife.bind(this);
mFragment = (ReposFragment) getFragmentManager().findFragmentById(R.id.search_fragment_repos);
initToolbar();
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}
@Override
protected SearchResultsPresenter getPresenter() {
return mPresenter;
}
@Override
protected void attachPresenter() {
getPresenter().attach(this);
}
/**
* Handles received intent
*
* @param intent Intent
*/
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
mSearchQuery = query;
showProgress();
getPresenter().startRepoSearch(query);
}
}
/**
* Initializes toolbar
*/
private void initToolbar() {
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
}
@Override
public void onRepositorySelected(Repo repo) {
Intent intent = new Intent(SearchResultsActivity.this, RepoDetailsActivity.class);
intent.putExtra(RepoDetailsActivity.REPO_SLUG_KEY, repo.getSlug());
startActivity(intent);
}
@Override
public void onRefreshData() {
getPresenter().startRepoSearch(mSearchQuery);
}
@Override
public void showProgress() {
mFragment.setLoadingProgress(true);
}
@Override
public void hideProgress() {
mFragment.setLoadingProgress(false);
}
@Override
public void setSearchResults(List<Repo> repos) {
mFragment.setRepos(repos);
}
@Override
public void showLoadingError(String message) {
mFragment.handleLoadingFailed(message);
}
}