Home | History | Annotate | Download | only in quicksearchbox
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.quicksearchbox;
     18 
     19 import android.content.ComponentName;
     20 import android.content.Intent;
     21 import android.graphics.drawable.Drawable;
     22 import android.net.Uri;
     23 import android.os.Bundle;
     24 
     25 import com.android.quicksearchbox.util.Now;
     26 import com.android.quicksearchbox.util.NowOrLater;
     27 
     28 /**
     29  * Mock implementation of {@link Source}.
     30  *
     31  */
     32 public class MockSource implements Source {
     33 
     34     public static final MockSource SOURCE_1 = new MockSource("SOURCE_1");
     35 
     36     public static final MockSource SOURCE_2 = new MockSource("SOURCE_2");
     37 
     38     public static final MockSource SOURCE_3 = new MockSource("SOURCE_3");
     39 
     40     public static final MockSource WEB_SOURCE = new MockSource("WEB") {
     41         @Override
     42         public SuggestionData createSuggestion(String query) {
     43             return new SuggestionData(this)
     44                     .setText1(query)
     45                     .setIntentAction(Intent.ACTION_WEB_SEARCH)
     46                     .setSuggestionQuery(query);
     47         }
     48 
     49     };
     50 
     51     private final String mName;
     52 
     53     public MockSource(String name) {
     54         this(name, 0);
     55     }
     56 
     57     public MockSource(String name, int versionCode) {
     58         mName = name;
     59     }
     60 
     61     public ComponentName getIntentComponent() {
     62         // Not an activity, but no code should treat it as one.
     63         return new ComponentName("com.android.quicksearchbox",
     64                 getClass().getName() + "." + mName);
     65     }
     66 
     67     public String getSuggestUri() {
     68         return null;
     69     }
     70 
     71     public String getName() {
     72         return getIntentComponent().flattenToShortString();
     73     }
     74 
     75     public String getDefaultIntentAction() {
     76         return Intent.ACTION_SEARCH;
     77     }
     78 
     79     public String getDefaultIntentData() {
     80         return null;
     81     }
     82 
     83     @Override
     84     public NowOrLater<Drawable> getIcon(String drawableId) {
     85         return new Now<Drawable>(null);
     86     }
     87 
     88     public Uri getIconUri(String drawableId) {
     89         return null;
     90     }
     91 
     92     public String getLabel() {
     93         return "MockSource " + mName;
     94     }
     95 
     96     public int getQueryThreshold() {
     97         return 0;
     98     }
     99 
    100     public CharSequence getHint() {
    101         return null;
    102     }
    103 
    104     public String getSettingsDescription() {
    105         return "Suggestions from MockSource " + mName;
    106     }
    107 
    108     public Drawable getSourceIcon() {
    109         return null;
    110     }
    111 
    112     public Uri getSourceIconUri() {
    113         return null;
    114     }
    115 
    116     public boolean canRead() {
    117         return true;
    118     }
    119 
    120     public SourceResult getSuggestions(String query, int queryLimit) {
    121         if (query.length() == 0) {
    122             return null;
    123         }
    124         ListSuggestionCursor cursor = new ListSuggestionCursor(query);
    125         cursor.add(createSuggestion(query + "_1"));
    126         cursor.add(createSuggestion(query + "_2"));
    127         return new Result(query, cursor);
    128     }
    129 
    130     public SuggestionData createSuggestion(String query) {
    131         Uri data = new Uri.Builder().scheme("content").authority(mName).path(query).build();
    132         return new SuggestionData(this)
    133                 .setText1(query)
    134                 .setIntentAction(Intent.ACTION_VIEW)
    135                 .setIntentData(data.toString());
    136     }
    137 
    138     @Override
    139     public boolean equals(Object o) {
    140         if (o != null && o.getClass().equals(this.getClass())) {
    141             MockSource s = (MockSource) o;
    142             return s.mName.equals(mName);
    143         }
    144         return false;
    145     }
    146 
    147     @Override
    148     public int hashCode() {
    149         return mName.hashCode();
    150     }
    151 
    152     @Override
    153     public String toString() {
    154         return getName();
    155     }
    156 
    157     private class Result extends SuggestionCursorWrapper implements SourceResult {
    158 
    159         public Result(String userQuery, SuggestionCursor cursor) {
    160             super(userQuery, cursor);
    161         }
    162 
    163         public Source getSource() {
    164             return MockSource.this;
    165         }
    166 
    167     }
    168 
    169     public boolean queryAfterZeroResults() {
    170         return false;
    171     }
    172 
    173     public Intent createSearchIntent(String query, Bundle appData) {
    174         return null;
    175     }
    176 
    177     public Intent createVoiceSearchIntent(Bundle appData) {
    178         return null;
    179     }
    180 
    181     public boolean voiceSearchEnabled() {
    182         return false;
    183     }
    184 
    185     public boolean includeInAll() {
    186         return true;
    187     }
    188 
    189     public Source getRoot() {
    190         return this;
    191     }
    192 
    193 }
    194