1816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/*
2816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Copyright (C) 2015 The Android Open Source Project
3816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
4816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
5816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * you may not use this file except in compliance with the License.
6816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * You may obtain a copy of the License at
7816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
8816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
9816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
10816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Unless required by applicable law or agreed to in writing, software
11816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
12816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * See the License for the specific language governing permissions and
14816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * limitations under the License.
15816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */
16816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
17816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopackage com.android.tv.search;
18816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
19816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.content.res.Resources;
20816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.graphics.Bitmap;
21816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.graphics.drawable.BitmapDrawable;
22816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.os.AsyncTask;
23816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.os.Bundle;
24816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.app.SearchFragment;
25816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.ArrayObjectAdapter;
26816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.HeaderItem;
27816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.ImageCardView;
28816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.ListRow;
29816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.ListRowPresenter;
30816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.ObjectAdapter;
31816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.OnItemViewClickedListener;
32816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.Presenter;
33816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.Row;
34816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.RowPresenter;
35816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.SearchBar;
36816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.text.TextUtils;
37816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.util.Log;
38816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.LayoutInflater;
39816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.View;
40816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.ViewGroup;
41816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
42816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.MainActivity;
43816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.R;
44816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.util.ImageLoader;
457d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalkoimport com.android.tv.util.PermissionUtils;
46816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
47816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport java.util.List;
48816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
49816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopublic class ProgramGuideSearchFragment extends SearchFragment {
50816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private static final String TAG = "ProgramGuideSearch";
51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private static final boolean DEBUG = false;
52816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private static final int SEARCH_RESULT_MAX = 10;
53816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
54816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private final Presenter mPresenter = new Presenter() {
55816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
56816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        public Presenter.ViewHolder onCreateViewHolder(ViewGroup viewGroup) {
57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            if (DEBUG) Log.d(TAG, "onCreateViewHolder");
58816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
59816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            ImageCardView cardView = new ImageCardView(mMainActivity);
60816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            cardView.setFocusable(true);
61816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            cardView.setFocusableInTouchMode(true);
62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            cardView.setMainImageAdjustViewBounds(false);
63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            Resources res = mMainActivity.getResources();
65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            cardView.setMainImageDimensions(
66816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                    res.getDimensionPixelSize(R.dimen.card_image_layout_width),
67816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                    res.getDimensionPixelSize(R.dimen.card_image_layout_height));
68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
69816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            return new Presenter.ViewHolder(cardView);
70816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
71816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
72816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
73816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        public void onBindViewHolder(ViewHolder viewHolder, Object o) {
74ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko            ImageCardView cardView = (ImageCardView) viewHolder.view;
75816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            LocalSearchProvider.SearchResult result = (LocalSearchProvider.SearchResult) o;
76816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            if (DEBUG) Log.d(TAG, "onBindViewHolder result:" + result);
77816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
78816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            cardView.setTitleText(result.title);
79816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            if (!TextUtils.isEmpty(result.imageUri)) {
80ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko                ImageLoader.loadBitmap(mMainActivity, result.imageUri, mMainCardWidth,
81ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko                        mMainCardHeight, createImageLoaderCallback(cardView));
82816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            } else {
83816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                cardView.setMainImage(mMainActivity.getDrawable(R.drawable.ic_launcher));
84816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            }
85816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
86816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
87816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
88816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        public void onUnbindViewHolder(ViewHolder viewHolder) {
89816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            // Do nothing here.
90816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
91816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    };
92816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
93ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko    private static ImageLoader.ImageLoaderCallback<ImageCardView> createImageLoaderCallback(
94ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko            ImageCardView cardView) {
95ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        return new ImageLoader.ImageLoaderCallback<ImageCardView>(cardView) {
96ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko            @Override
97ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko            public void onBitmapLoaded(ImageCardView cardView, Bitmap bitmap) {
98ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko                cardView.setMainImage(
99ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko                        new BitmapDrawable(cardView.getContext().getResources(), bitmap));
100ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko            }
101ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        };
102ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko    }
103ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko
104816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private final SearchResultProvider mSearchResultProvider = new SearchResultProvider() {
105816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
106816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        public ObjectAdapter getResultsAdapter() {
107816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            return mResultAdapter;
108816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
109816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
110816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
111816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        public boolean onQueryTextChange(String query) {
112816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            searchAndRefresh(query);
113816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            return true;
114816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
115816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
116816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
117816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        public boolean onQueryTextSubmit(String query) {
118816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            searchAndRefresh(query);
119816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            return true;
120816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
121816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    };
122816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
123816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private final OnItemViewClickedListener mItemClickedListener = new OnItemViewClickedListener() {
124816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
125816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        public void onItemClicked(Presenter.ViewHolder viewHolder, Object o, RowPresenter
126816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                .ViewHolder viewHolder1, Row row) {
127816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            LocalSearchProvider.SearchResult result = (LocalSearchProvider.SearchResult) o;
128816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            mMainActivity.getFragmentManager().popBackStack();
129816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            mMainActivity.tuneToChannel(
130816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                    mMainActivity.getChannelDataManager().getChannel(result.channelId));
131816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
132816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    };
133816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
134816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private final ArrayObjectAdapter mResultAdapter =
135816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            new ArrayObjectAdapter(new ListRowPresenter());
136816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private MainActivity mMainActivity;
1377d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko    private SearchInterface mSearch;
138816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private int mMainCardWidth;
139816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private int mMainCardHeight;
140816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private SearchTask mSearchTask;
141816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
142816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
143816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void onCreate(Bundle savedInstanceState) {
144816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        super.onCreate(savedInstanceState);
145816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
146816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mMainActivity = (MainActivity) getActivity();
1477d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        if (PermissionUtils.hasAccessAllEpg(mMainActivity)) {
1487d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko            mSearch = new TvProviderSearch(mMainActivity);
1497d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        } else {
1507d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko            mSearch = new DataManagerSearch(mMainActivity);
1517d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko        }
152816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        Resources res = getResources();
153816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mMainCardWidth = res.getDimensionPixelSize(R.dimen.card_image_layout_width);
154816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mMainCardHeight = res.getDimensionPixelSize(R.dimen.card_image_layout_height);
155816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
156816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
157816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
158816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public View onCreateView(
159816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
160816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        View v = super.onCreateView(inflater, container, savedInstanceState);
161816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        v.setBackgroundResource(R.color.program_guide_scrim);
162816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
163816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        setBadgeDrawable(mMainActivity.getDrawable(R.drawable.ic_launcher));
164816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        setSearchResultProvider(mSearchResultProvider);
165816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        setOnItemViewClickedListener(mItemClickedListener);
166816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        return v;
167816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
168816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
169816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
170816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void onResume() {
171816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        super.onResume();
172816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
173816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        SearchBar searchBar = (SearchBar) getView().findViewById(R.id.lb_search_bar);
174816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        searchBar.setSearchQuery("");
175816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mResultAdapter.clear();
176816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
177816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
178816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private void searchAndRefresh(String query) {
179816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        // TODO: Search directly from program data manager for performance.
180816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        // TODO: Search upcoming programs.
181816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        if (mSearchTask != null) {
182816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            mSearchTask.cancel(true);
183816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
184816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mSearchTask = new SearchTask(query);
185816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mSearchTask.execute();
186816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
187816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
188816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private class SearchTask extends
189816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            AsyncTask<Void, Void, List<LocalSearchProvider.SearchResult>> {
190816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        private final String mQuery;
191816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
192816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        public SearchTask(String query) {
193816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            mQuery = query;
194816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
195816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
196816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
197816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        protected List<LocalSearchProvider.SearchResult> doInBackground(Void... params) {
1987d67089aa1e9aa2123c3cd2f386d7019a1544db1Nick Chalko            return mSearch.search(mQuery, SEARCH_RESULT_MAX,
199816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                    TvProviderSearch.ACTION_TYPE_AMBIGUOUS);
200816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
201816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
202816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        @Override
203816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        protected void onPostExecute(List<LocalSearchProvider.SearchResult> results) {
204816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            super.onPostExecute(results);
205816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            mResultAdapter.clear();
206816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
207816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            if (DEBUG) {
208816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                Log.d(TAG, "searchAndRefresh query=" + mQuery
209816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                        + " results=" + ((results == null) ? 0 : results.size()));
210816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            }
211816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
212816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            if (results == null || results.size() == 0) {
213816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                HeaderItem header =
214816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                        new HeaderItem(0, mMainActivity.getString(R.string
215816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                                .search_result_no_result));
216816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                ArrayObjectAdapter resultsAdapter = new ArrayObjectAdapter(mPresenter);
217816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                mResultAdapter.add(new ListRow(header, resultsAdapter));
218816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            } else {
219816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                HeaderItem header =
220816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                        new HeaderItem(0, mMainActivity.getString(R.string
221816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                                .search_result_title));
222816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                ArrayObjectAdapter resultsAdapter = new ArrayObjectAdapter(mPresenter);
223816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                resultsAdapter.addAll(0, results);
224816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                mResultAdapter.add(new ListRow(header, resultsAdapter));
225816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            }
226816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            mSearchTask = null;
227816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        }
228816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
229816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko}
230