package tv.emby.embyatv.search; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.support.v17.leanback.app.BackgroundManager; import android.support.v17.leanback.app.SearchFragment; import android.support.v17.leanback.widget.ArrayObjectAdapter; import android.support.v17.leanback.widget.ListRow; import android.support.v17.leanback.widget.ListRowPresenter; import android.support.v17.leanback.widget.ObjectAdapter; import android.support.v17.leanback.widget.OnItemViewClickedListener; import android.support.v17.leanback.widget.Presenter; import android.support.v17.leanback.widget.Row; import android.support.v17.leanback.widget.RowPresenter; import android.util.DisplayMetrics; import com.squareup.picasso.Target; import java.util.Timer; import tv.emby.embyatv.itemhandling.BaseRowItem; import tv.emby.embyatv.itemhandling.ItemLauncher; import tv.emby.embyatv.imagehandling.PicassoBackgroundManagerTarget; import tv.emby.embyatv.R; import tv.emby.embyatv.TvApp; import tv.emby.embyatv.itemhandling.ItemRowAdapter; import tv.emby.embyatv.util.Utils; /** * Created by Eric on 1/26/2015. */ public class MySearchFragment extends SearchFragment implements SearchFragment.SearchResultProvider { private static final int SEARCH_DELAY_MS = 1500; private final Handler mHandler = new Handler(); private ArrayObjectAdapter mRowsAdapter; private SearchRunnable mDelayedLoad; private Drawable mDefaultBackground; private Target mBackgroundTarget; private DisplayMetrics mMetrics; private Timer mBackgroundTimer; private String mBackgroundUrl; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter()); setSearchResultProvider(this); setOnItemViewClickedListener(new OnItemViewClickedListener() { @Override public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) { if (!(item instanceof BaseRowItem)) return; ItemLauncher.launch((BaseRowItem) item, (ItemRowAdapter) ((ListRow)row).getAdapter(),((BaseRowItem) item).getIndex(), getActivity()); } }); mDelayedLoad = new SearchRunnable(getActivity(), mRowsAdapter, getActivity().getIntent().getBooleanExtra("MusicOnly",false)); prepareBackgroundManager(); } @Override public ObjectAdapter getResultsAdapter() { return mRowsAdapter; } private boolean textEdited = false; @Override public boolean onQueryTextChange(String newQuery) { textEdited = true; if (!Utils.IsEmpty(newQuery)) { mHandler.removeCallbacks(mDelayedLoad); mDelayedLoad.setQueryString(newQuery); mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS); } else { mRowsAdapter.clear(); } return true; } @Override public boolean onQueryTextSubmit(String query) { if (!textEdited) { if (!Utils.IsEmpty(query)) { mHandler.removeCallbacks(mDelayedLoad); mDelayedLoad.setQueryString(query); mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS); } else { mRowsAdapter.clear(); } } return true; } private void prepareBackgroundManager() { BackgroundManager backgroundManager = BackgroundManager.getInstance(getActivity()); backgroundManager.attach(getActivity().getWindow()); mBackgroundTarget = new PicassoBackgroundManagerTarget(backgroundManager); mDefaultBackground = getResources().getDrawable(R.drawable.moviebg); mMetrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(mMetrics); } }