package com.fastaccess.ui.modules.search.repos.files;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatSpinner;
import android.text.Editable;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import com.fastaccess.R;
import com.fastaccess.helper.AnimHelper;
import com.fastaccess.helper.BundleConstant;
import com.fastaccess.ui.base.BaseActivity;
import com.fastaccess.ui.modules.search.code.SearchCodeFragment;
import com.fastaccess.ui.widgets.FontEditText;
import com.fastaccess.ui.widgets.ForegroundImageView;
import butterknife.BindView;
import butterknife.OnClick;
import butterknife.OnEditorAction;
import butterknife.OnItemSelected;
import butterknife.OnTextChanged;
import butterknife.OnTouch;
public class SearchFileActivity extends BaseActivity<SearchFileMvp.View, SearchFilePresenter> implements SearchFileMvp.View {
@BindView(R.id.searchEditText) FontEditText searchEditText;
@BindView(R.id.clear) ForegroundImageView clear;
@BindView(R.id.searchOptions) AppCompatSpinner searchOptions;
private boolean onSpinnerTouched;
private SearchCodeFragment searchCodeFragment;
public static Intent createIntent(@NonNull Context context, @NonNull String login, @NonNull String repoId) {
Intent intent = new Intent(context, SearchFileActivity.class);
intent.putExtra(BundleConstant.ID, repoId);
intent.putExtra(BundleConstant.EXTRA, login);
return intent;
}
@OnTouch(R.id.searchOptions) boolean onTouch() {
onSpinnerTouched = true;
return false;
}
@OnItemSelected(R.id.searchOptions) void onOptionSelected(int position) {
if (onSpinnerTouched) {
onSearch();
}
}
@Override protected int layout() {
return R.layout.activity_search_file;
}
@Override protected boolean isTransparent() {
return false;
}
@Override protected boolean canBack() {
return true;
}
@Override protected boolean isSecured() {
return false;
}
@NonNull @Override public SearchFilePresenter providePresenter() {
return new SearchFilePresenter();
}
@OnTextChanged(value = R.id.searchEditText, callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
void onTextChange(Editable s) {
String text = s.toString();
if (text.length() == 0) {
AnimHelper.animateVisibility(clear, false);
} else {
AnimHelper.animateVisibility(clear, true);
}
}
@OnEditorAction(R.id.searchEditText) boolean onEditor(int actionId, KeyEvent keyEvent) {
if (keyEvent != null && keyEvent.getAction() == KeyEvent.KEYCODE_SEARCH) {
onSearch();
} else if (actionId == EditorInfo.IME_ACTION_SEARCH) {
onSearch();
}
return false;
}
private void onSearch() {
getPresenter().onSearchClicked(searchEditText, searchOptions.getSelectedItemPosition() == 0);
}
@OnClick(value = {R.id.clear}) void onClear(View view) {
if (view.getId() == R.id.clear) {
searchEditText.setText("");
}
}
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPresenter().onActivityCreated(getIntent().getExtras());
searchCodeFragment = ((SearchCodeFragment) getSupportFragmentManager().findFragmentById(R.id.filesFragment));
}
@Override public void onValidSearchQuery(@NonNull String query) {
searchCodeFragment.onSetSearchQuery(query, false);
}
}