Home | History | Annotate | Download | only in provider
      1 /*
      2  * Copyright (C) 2014 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 android.provider;
     18 
     19 import android.annotation.SystemApi;
     20 import android.content.Context;
     21 
     22 import java.util.Locale;
     23 
     24 /**
     25  * The Indexable data for Search.
     26  *
     27  * This abstract class defines the common parts for all search indexable data.
     28  *
     29  * @hide
     30  */
     31 @SystemApi
     32 public abstract class SearchIndexableData {
     33 
     34     /**
     35      * The context for the data. Will usually allow retrieving some resources.
     36      *
     37      * @see Context
     38      */
     39     public Context context;
     40 
     41     /**
     42      * The locale for the data
     43      */
     44     public Locale locale;
     45 
     46     /**
     47      * Tells if the data will be included into the search results. This is application specific.
     48      */
     49     public boolean enabled;
     50 
     51     /**
     52      * The rank for the data. This is application specific.
     53      */
     54     public int rank;
     55 
     56     /**
     57      * The key for the data. This is application specific. Should be unique per data as the data
     58      * should be able to be retrieved by the key.
     59      * <p/>
     60      * This is required for indexing to work.
     61      */
     62     public String key;
     63 
     64     /**
     65      * The UserID for the data (in a multi user context). This is application specific and -1 is the
     66      * default non initialized value.
     67      */
     68     public int userId = -1;
     69 
     70     /**
     71      * The class name associated with the data. Generally this is a Fragment class name for
     72      * referring where the data is coming from and for launching the associated Fragment for
     73      * displaying the data. This is used only when the data is provided "locally".
     74      *
     75      * If the data is provided "externally", the relevant information come from the
     76      * {@link SearchIndexableData#intentAction} and {@link SearchIndexableData#intentTargetPackage}
     77      * and {@link SearchIndexableData#intentTargetClass}.
     78      *
     79      * @see SearchIndexableData#intentAction
     80      * @see SearchIndexableData#intentTargetPackage
     81      * @see SearchIndexableData#intentTargetClass
     82      */
     83     public String className;
     84 
     85     /**
     86      * The package name for retrieving the icon associated with the data.
     87      *
     88      * @see SearchIndexableData#iconResId
     89      */
     90     public String packageName;
     91 
     92     /**
     93      * The icon resource ID associated with the data.
     94      *
     95      * @see SearchIndexableData#packageName
     96      */
     97     public int iconResId;
     98 
     99     /**
    100      * The Intent action associated with the data. This is used when the
    101      * {@link SearchIndexableData#className} is not relevant.
    102      *
    103      * @see SearchIndexableData#intentTargetPackage
    104      * @see SearchIndexableData#intentTargetClass
    105      */
    106     public String intentAction;
    107 
    108     /**
    109      * The Intent target package associated with the data.
    110      *
    111      * @see SearchIndexableData#intentAction
    112      * @see SearchIndexableData#intentTargetClass
    113      */
    114     public String intentTargetPackage;
    115 
    116     /**
    117      * The Intent target class associated with the data.
    118      *
    119      * @see SearchIndexableData#intentAction
    120      * @see SearchIndexableData#intentTargetPackage
    121      */
    122     public String intentTargetClass;
    123 
    124     /**
    125      * Default constructor.
    126      */
    127     public SearchIndexableData() {
    128         locale = Locale.getDefault();
    129         enabled = true;
    130     }
    131 
    132     /**
    133      * Constructor with a {@link Context}.
    134      *
    135      * @param ctx the Context
    136      */
    137     public SearchIndexableData(Context ctx) {
    138         this();
    139         context = ctx;
    140     }
    141 
    142     @Override
    143     public String toString() {
    144         final StringBuilder sb = new StringBuilder();
    145         sb.append("SearchIndexableData[context: ");
    146         sb.append(context);
    147         sb.append(", ");
    148         sb.append("locale: ");
    149         sb.append(locale);
    150         sb.append(", ");
    151         sb.append("enabled: ");
    152         sb.append(enabled);
    153         sb.append(", ");
    154         sb.append("rank: ");
    155         sb.append(rank);
    156         sb.append(", ");
    157         sb.append("key: ");
    158         sb.append(key);
    159         sb.append(", ");
    160         sb.append("userId: ");
    161         sb.append(userId);
    162         sb.append(", ");
    163         sb.append("className: ");
    164         sb.append(className);
    165         sb.append(", ");
    166         sb.append("packageName: ");
    167         sb.append(packageName);
    168         sb.append(", ");
    169         sb.append("iconResId: ");
    170         sb.append(iconResId);
    171         sb.append(", ");
    172         sb.append("intentAction: ");
    173         sb.append(intentAction);
    174         sb.append(", ");
    175         sb.append("intentTargetPackage: ");
    176         sb.append(intentTargetPackage);
    177         sb.append(", ");
    178         sb.append("intentTargetClass: ");
    179         sb.append(intentTargetClass);
    180         sb.append("]");
    181 
    182         return sb.toString();
    183     }
    184 }
    185