SearchIndexableData.java revision 71b3975c8a9c11a88d18b2851066049dda4000c2
1b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio/*
2b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * Copyright (C) 2014 The Android Open Source Project
3b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio *
4b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License");
5b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * you may not use this file except in compliance with the License.
6b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * You may obtain a copy of the License at
7b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio *
8b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio *      http://www.apache.org/licenses/LICENSE-2.0
9b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio *
10b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * Unless required by applicable law or agreed to in writing, software
11b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS,
12b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * See the License for the specific language governing permissions and
14b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * limitations under the License.
15b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio */
16b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
17b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Megliopackage android.provider;
18b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
19b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglioimport android.content.Context;
20b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
21b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglioimport java.util.Locale;
22b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
23b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio/**
2416f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio * The Indexable data for Search.
2516f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio *
2616f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio * This abstract class defines the common parts for all search indexable data.
27b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio *
28b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio * @hide
29b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio */
30b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Megliopublic abstract class SearchIndexableData {
31b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
32b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
3316f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio     * The context for the data. Will usually allow retrieving some resources.
34b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
35b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see Context
36b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
37b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public Context context;
38b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
39b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
40b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * The locale for the data
41b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
42b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public Locale locale;
43b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
44b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
4516f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio     * Tells if the data will be included into the search results. This is application specific.
4616f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio     */
4716f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio    public boolean enabled;
4816f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio
4916f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio    /**
50b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * The rank for the data. This is application specific.
51b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
52b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public int rank;
53b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
54b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
55738691d610c918691b386f332548bbd6abc783f9Fabrice Di Meglio     * The key for the data. This is application specific. Should be unique per data as the data
56738691d610c918691b386f332548bbd6abc783f9Fabrice Di Meglio     * should be able to be retrieved by the key.
57738691d610c918691b386f332548bbd6abc783f9Fabrice Di Meglio     */
58738691d610c918691b386f332548bbd6abc783f9Fabrice Di Meglio    public String key;
59738691d610c918691b386f332548bbd6abc783f9Fabrice Di Meglio
60738691d610c918691b386f332548bbd6abc783f9Fabrice Di Meglio    /**
61b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * The class name associated with the data. Generally this is a Fragment class name for
62b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * referring where the data is coming from and for launching the associated Fragment for
63b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * displaying the data. This is used only when the data is provided "locally".
64b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
65b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * If the data is provided "externally", the relevant information come from the
66b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * {@link SearchIndexableData#intentAction} and {@link SearchIndexableData#intentTargetPackage}
67b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * and {@link SearchIndexableData#intentTargetClass}.
68b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
69b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentAction
70b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentTargetPackage
71b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentTargetClass
72b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
73b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public String className;
74b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
75b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
76b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * The package name for retrieving the icon associated with the data.
77b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
78b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#iconResId
79b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
80b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public String packageName;
81b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
82b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
83b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * The icon resource ID associated with the data.
84b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
85b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#packageName
86b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
87b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public int iconResId;
88b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
89b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
90b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * The Intent action associated with the data. This is used when the
91b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * {@link SearchIndexableData#className} is not relevant.
92b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
93b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentTargetPackage
94b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentTargetClass
95b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
96b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public String intentAction;
97b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
98b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
99b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * The Intent target package associated with the data.
100b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
101b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentAction
102b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentTargetClass
103b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
104b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public String intentTargetPackage;
105b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
106b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
107b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * The Intent target class associated with the data.
108b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
109b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentAction
110b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @see SearchIndexableData#intentTargetPackage
111b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
112b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public String intentTargetClass;
113b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
114b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
115b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * Default constructor.
116b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
117b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public SearchIndexableData() {
11816f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio        enabled = true;
119b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    }
120b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio
121b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    /**
122b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * Constructor with a {@link Context}.
123b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     *
124b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     * @param ctx the Context
125b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio     */
126b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    public SearchIndexableData(Context ctx) {
127b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio        context = ctx;
128b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio        locale = Locale.getDefault();
12916f81e75423a9ffa602ad45a679d9e0283f4e499Fabrice Di Meglio        enabled = true;
130b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio    }
13171b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio
13271b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio    @Override
13371b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio    public String toString() {
13471b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        final StringBuilder sb = new StringBuilder();
13571b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("SearchIndexableData[context: ");
13671b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(context);
13771b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
13871b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("locale: ");
13971b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(locale);
14071b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
14171b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("enabled: ");
14271b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(enabled);
14371b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
14471b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("rank: ");
14571b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(rank);
14671b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
14771b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("key: ");
14871b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(key);
14971b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
15071b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("className: ");
15171b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(className);
15271b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
15371b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("packageName: ");
15471b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(packageName);
15571b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
15671b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("iconResId: ");
15771b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(iconResId);
15871b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
15971b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("intentAction: ");
16071b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(intentAction);
16171b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
16271b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("intentTargetPackage: ");
16371b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(intentTargetPackage);
16471b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(", ");
16571b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("intentTargetClass: ");
16671b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append(intentTargetClass);
16771b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        sb.append("]");
16871b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio
16971b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio        return sb.toString();
17071b3975c8a9c11a88d18b2851066049dda4000c2Fabrice Di Meglio    }
171b49995d4d997bf086c2f3214ca410b2a30861b13Fabrice Di Meglio}
172