ListSuggestionCursor.java revision fde948e69f59589cf0d217ea414af7947de600bb
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 19fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringertimport android.database.DataSetObservable; 20fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringertimport android.database.DataSetObserver; 213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport java.util.ArrayList; 233e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/** 253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * A SuggestionCursor that is backed by a list of SuggestionPosition objects. 263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * This cursor does not own the SuggestionCursors that the SuggestionPosition 273e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * objects refer to. 283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * 293e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */ 303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpublic class ListSuggestionCursor extends AbstractSuggestionCursor { 313e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 32fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert private final DataSetObservable mDataSetObservable = new DataSetObservable(); 33fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert 343e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert private final ArrayList<SuggestionPosition> mSuggestions; 353e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 363e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert private int mPos; 373e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 383e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public ListSuggestionCursor(String userQuery) { 393e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert super(userQuery); 403e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert mSuggestions = new ArrayList<SuggestionPosition>(); 413e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert mPos = 0; 423e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 433e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 443e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert /** 453e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Adds a suggestion from another suggestion cursor. 463e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * 473e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * @param suggestionPos 483e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * @return {@code true} if the suggestion was added. 493e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */ 503e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public boolean add(SuggestionPosition suggestionPos) { 513e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert mSuggestions.add(suggestionPos); 523e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return true; 533e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 553e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public void close() { 563e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert mSuggestions.clear(); 573e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 583e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 593e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public int getPosition() { 603e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return mPos; 613e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 623e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 633e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public void moveTo(int pos) { 643e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert mPos = pos; 653e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 663e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 6794e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney public void removeRow() { 6894e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney mSuggestions.remove(mPos); 6994e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney } 7094e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney 7194e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney public void replaceRow(SuggestionPosition suggestionPos) { 7294e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney mSuggestions.set(mPos, suggestionPos); 7394e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney } 7494e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney 753e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public int getCount() { 763e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return mSuggestions.size(); 773e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 783e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 79fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert protected SuggestionCursor current() { 80fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return mSuggestions.get(mPos).current(); 813e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 823e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 83fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert /** 84fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * Register an observer that is called when changes happen to this data set. 85fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * 86fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * @param observer gets notified when the data set changes. 87fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert */ 88fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public void registerDataSetObserver(DataSetObserver observer) { 89fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert mDataSetObservable.registerObserver(observer); 90ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert } 91ca78085bb2127559e6f55276a307bfa857018ecaBjorn Bringert 92fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert /** 93fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * Unregister an observer that has previously been registered with 94fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * {@link #registerDataSetObserver(DataSetObserver)} 95fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * 96fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * @param observer the observer to unregister. 97fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert */ 98fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public void unregisterDataSetObserver(DataSetObserver observer) { 99fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert mDataSetObservable.unregisterObserver(observer); 1003e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1013e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 102fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert protected void notifyDataSetChanged() { 103fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert mDataSetObservable.notifyChanged(); 1043e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1053e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 106fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public String getShortcutId() { 107fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return current().getShortcutId(); 1083e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1093e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 1103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public String getSuggestionDisplayQuery() { 1113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return current().getSuggestionDisplayQuery(); 1123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 1143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public String getSuggestionFormat() { 1153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return current().getSuggestionFormat(); 1163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 1183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public String getSuggestionIcon1() { 1193e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return current().getSuggestionIcon1(); 1203e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 1223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public String getSuggestionIcon2() { 1233e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return current().getSuggestionIcon2(); 1243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 126fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public String getSuggestionIntentAction() { 127fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return current().getSuggestionIntentAction(); 12894e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney } 12994e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney 130fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public String getSuggestionIntentDataString() { 131fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return current().getSuggestionIntentDataString(); 1323e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1333e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 13494e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney public String getSuggestionIntentExtraData() { 13594e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney return current().getSuggestionIntentExtraData(); 13694e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney } 13794e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney 138fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public String getSuggestionKey() { 139fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return current().getSuggestionKey(); 140fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert } 141fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert 142fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public String getSuggestionLogType() { 143fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return current().getSuggestionLogType(); 144fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert } 145fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert 146fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public String getSuggestionQuery() { 147fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return current().getSuggestionQuery(); 148fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert } 149fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert 150fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public Source getSuggestionSource() { 151fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return current().getSuggestionSource(); 1521e938ea2f5edefab446b9562b316bc5dc72adebbBryan Mawhinney } 1531e938ea2f5edefab446b9562b316bc5dc72adebbBryan Mawhinney 1543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public String getSuggestionText1() { 1553e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return current().getSuggestionText1(); 1563e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1573e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 1583e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert public String getSuggestionText2() { 1593e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert return current().getSuggestionText2(); 1603e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert } 1613e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert 162fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert public boolean isSpinnerWhileRefreshing() { 163fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert return current().isSpinnerWhileRefreshing(); 164782dd228e78e9294692d639597f96c26283968bbBjorn Bringert } 1653e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert} 166