package com.kickstarter.ui.toolbars; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.View; import android.widget.EditText; import com.jakewharton.rxbinding.widget.RxTextView; import com.kickstarter.R; import com.kickstarter.ui.activities.SearchActivity; import com.kickstarter.ui.views.IconButton; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; import rx.Observable; import rx.android.schedulers.AndroidSchedulers; public final class SearchToolbar extends KSToolbar { public @Bind(R.id.clear_button) IconButton clearButton; public @Bind(R.id.search_edit_text) EditText searchEditText; public SearchToolbar(final @NonNull Context context) { super(context); } public SearchToolbar(final @NonNull Context context, final @Nullable AttributeSet attrs) { super(context, attrs); } public SearchToolbar(final @NonNull Context context, final @Nullable AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onFinishInflate() { super.onFinishInflate(); if (isInEditMode()) { return; } ButterKnife.bind(this); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); final Observable<CharSequence> text = RxTextView.textChanges(searchEditText); final Observable<Boolean> clearable = text.map(t -> t.length() > 0); addSubscription(clearable .observeOn(AndroidSchedulers.mainThread()) .subscribe(c -> clearButton.setVisibility(c ? View.VISIBLE : View.INVISIBLE))); addSubscription(text .observeOn(AndroidSchedulers.mainThread()) .subscribe(t -> ((SearchActivity) getContext()).viewModel().inputs.search(t.toString()))); } @OnClick(R.id.clear_button) public void clearButtonClick() { searchEditText.setText(null); } }