ListSuggestionCursor.java revision 94e8a2be78530170f50e7895a558bf8011bbf8e8
13e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/*
23e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Copyright (C) 2009 The Android Open Source Project
33e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
43e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
53e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * you may not use this file except in compliance with the License.
63e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * You may obtain a copy of the License at
73e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
83e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
93e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * See the License for the specific language governing permissions and
143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * limitations under the License.
153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpackage com.android.quicksearchbox;
183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
193e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.content.ComponentName;
203e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.content.Context;
213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.content.Intent;
223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.graphics.Rect;
233e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.graphics.drawable.Drawable;
243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.net.Uri;
253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.os.Bundle;
263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
273e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport java.util.ArrayList;
283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
293e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/**
303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * A SuggestionCursor that is backed by a list of SuggestionPosition objects.
313e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * This cursor does not own the SuggestionCursors that the SuggestionPosition
323e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * objects refer to.
333e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
343e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
353e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpublic class ListSuggestionCursor extends AbstractSuggestionCursor {
363e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
373e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    private final ArrayList<SuggestionPosition> mSuggestions;
383e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
393e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    private int mPos;
403e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
413e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public ListSuggestionCursor(String userQuery) {
423e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        super(userQuery);
433e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        mSuggestions = new ArrayList<SuggestionPosition>();
443e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        mPos = 0;
453e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
463e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
473e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
483e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Adds a suggestion from another suggestion cursor.
493e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     *
503e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @param suggestionPos
513e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @return {@code true} if the suggestion was added.
523e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
533e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public boolean add(SuggestionPosition suggestionPos) {
543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        mSuggestions.add(suggestionPos);
553e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return true;
563e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
573e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
583e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public void close() {
593e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        mSuggestions.clear();
6094e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney        super.close();
613e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
623e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
633e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public boolean isFailed() {
643e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return false;
653e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
663e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
673e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public int getPosition() {
683e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mPos;
693e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
703e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
713e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public void moveTo(int pos) {
723e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        mPos = pos;
733e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
743e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
7594e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    public void removeRow() {
7694e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney        mSuggestions.remove(mPos);
7794e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    }
7894e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney
7994e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    public void replaceRow(SuggestionPosition suggestionPos) {
8094e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney        mSuggestions.set(mPos, suggestionPos);
8194e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    }
8294e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney
833e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public int getCount() {
843e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mSuggestions.size();
853e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
863e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
873e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    private SuggestionCursor current() {
883e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mSuggestions.get(mPos).getSuggestion();
893e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
903e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
913e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public Drawable getIcon(String iconId) {
923e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getIcon(iconId);
933e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
943e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
953e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public Uri getIconUri(String iconId) {
963e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getIconUri(iconId);
973e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
983e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
993e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public Intent getSecondarySuggestionIntent(Context context, Bundle appSearchData, Rect target) {
1003e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSecondarySuggestionIntent(context, appSearchData, target);
1013e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1023e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1033e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getShortcutId() {
1043e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getShortcutId();
1053e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1063e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1073e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public ComponentName getSourceComponentName() {
1083e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSourceComponentName();
1093e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public Drawable getSourceIcon() {
1123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSourceIcon();
1133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public Uri getSourceIconUri() {
1163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSourceIconUri();
1173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1193e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public CharSequence getSourceLabel() {
1203e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSourceLabel();
1213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1233e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getSuggestionDisplayQuery() {
1243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSuggestionDisplayQuery();
1253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1273e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getSuggestionFormat() {
1283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSuggestionFormat();
1293e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1313e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getSuggestionIcon1() {
1323e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSuggestionIcon1();
1333e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1343e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1353e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getSuggestionIcon2() {
1363e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSuggestionIcon2();
1373e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1383e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
13994e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    public boolean isSpinnerWhileRefreshing() {
14094e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney        return current().isSpinnerWhileRefreshing();
14194e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    }
14294e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney
1433e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public Intent getSuggestionIntent(Context context, Bundle appSearchData, int actionKey,
1443e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert            String actionMsg) {
1453e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSuggestionIntent(context, appSearchData, actionKey, actionMsg);
1463e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1473e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
14894e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    public String getSuggestionIntentExtraData() {
14994e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney        return current().getSuggestionIntentExtraData();
15094e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    }
15194e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney
1523e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getSuggestionText1() {
1533e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSuggestionText1();
1543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1553e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1563e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getSuggestionText2() {
1573e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSuggestionText2();
1583e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1593e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1603e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public boolean hasSecondaryIntent() {
1613e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().hasSecondaryIntent();
1623e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1633e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1643e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getSuggestionKey() {
1653e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return current().getSuggestionKey();
1663e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
167782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
168782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    public String getActionKeyMsg(int keyCode) {
169782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        return current().getActionKeyMsg(keyCode);
170782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
171782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
1723e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert}
173