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
17package com.android.settings.search;
18
19import android.provider.SearchIndexableResource;
20import com.android.settings.DateTimeSettings;
21import com.android.settings.DevelopmentSettings;
22import com.android.settings.DeviceInfoSettings;
23import com.android.settings.DisplaySettings;
24import com.android.settings.LegalSettings;
25import com.android.settings.PrivacySettings;
26import com.android.settings.R;
27import com.android.settings.ScreenPinningSettings;
28import com.android.settings.SecuritySettings;
29import com.android.settings.WallpaperTypeSettings;
30import com.android.settings.WirelessSettings;
31import com.android.settings.accessibility.AccessibilitySettings;
32import com.android.settings.accounts.AccountSettings;
33import com.android.settings.applications.AdvancedAppSettings;
34import com.android.settings.applications.SpecialAccessSettings;
35import com.android.settings.bluetooth.BluetoothSettings;
36import com.android.settings.datausage.DataUsageMeteredSettings;
37import com.android.settings.datausage.DataUsageSummary;
38import com.android.settings.deviceinfo.StorageSettings;
39import com.android.settings.display.ScreenZoomSettings;
40import com.android.settings.fuelgauge.BatterySaverSettings;
41import com.android.settings.fuelgauge.PowerUsageSummary;
42import com.android.settings.gestures.GestureSettings;
43import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
44import com.android.settings.location.LocationSettings;
45import com.android.settings.location.ScanningSettings;
46import com.android.settings.notification.ConfigureNotificationSettings;
47import com.android.settings.notification.OtherSoundSettings;
48import com.android.settings.notification.SoundSettings;
49import com.android.settings.notification.ZenModePrioritySettings;
50import com.android.settings.notification.ZenModeSettings;
51import com.android.settings.notification.ZenModeVisualInterruptionSettings;
52import com.android.settings.print.PrintSettingsFragment;
53import com.android.settings.sim.SimSettings;
54import com.android.settings.users.UserSettings;
55import com.android.settings.wifi.AdvancedWifiSettings;
56import com.android.settings.wifi.SavedAccessPointsWifiSettings;
57import com.android.settings.wifi.WifiSettings;
58
59import java.util.Collection;
60import java.util.HashMap;
61
62public final class SearchIndexableResources {
63
64    public static int NO_DATA_RES_ID = 0;
65
66    private static HashMap<String, SearchIndexableResource> sResMap =
67            new HashMap<String, SearchIndexableResource>();
68
69    static {
70        sResMap.put(WifiSettings.class.getName(),
71                new SearchIndexableResource(
72                        Ranking.getRankForClassName(WifiSettings.class.getName()),
73                        NO_DATA_RES_ID,
74                        WifiSettings.class.getName(),
75                        R.drawable.ic_settings_wireless));
76
77        sResMap.put(AdvancedWifiSettings.class.getName(),
78                new SearchIndexableResource(
79                        Ranking.getRankForClassName(AdvancedWifiSettings.class.getName()),
80                        R.xml.wifi_advanced_settings,
81                        AdvancedWifiSettings.class.getName(),
82                        R.drawable.ic_settings_wireless));
83
84        sResMap.put(SavedAccessPointsWifiSettings.class.getName(),
85                new SearchIndexableResource(
86                        Ranking.getRankForClassName(SavedAccessPointsWifiSettings.class.getName()),
87                        R.xml.wifi_display_saved_access_points,
88                        SavedAccessPointsWifiSettings.class.getName(),
89                        R.drawable.ic_settings_wireless));
90
91        sResMap.put(BluetoothSettings.class.getName(),
92                new SearchIndexableResource(
93                        Ranking.getRankForClassName(BluetoothSettings.class.getName()),
94                        NO_DATA_RES_ID,
95                        BluetoothSettings.class.getName(),
96                        R.drawable.ic_settings_bluetooth));
97
98        sResMap.put(SimSettings.class.getName(),
99                new SearchIndexableResource(
100                        Ranking.getRankForClassName(SimSettings.class.getName()),
101                        NO_DATA_RES_ID,
102                        SimSettings.class.getName(),
103                        R.drawable.ic_sim_sd));
104
105        sResMap.put(DataUsageSummary.class.getName(),
106                new SearchIndexableResource(
107                        Ranking.getRankForClassName(DataUsageSummary.class.getName()),
108                        NO_DATA_RES_ID,
109                        DataUsageSummary.class.getName(),
110                        R.drawable.ic_settings_data_usage));
111
112        sResMap.put(DataUsageMeteredSettings.class.getName(),
113                new SearchIndexableResource(
114                        Ranking.getRankForClassName(DataUsageMeteredSettings.class.getName()),
115                        NO_DATA_RES_ID,
116                        DataUsageMeteredSettings.class.getName(),
117                        R.drawable.ic_settings_data_usage));
118
119        sResMap.put(WirelessSettings.class.getName(),
120                new SearchIndexableResource(
121                        Ranking.getRankForClassName(WirelessSettings.class.getName()),
122                        NO_DATA_RES_ID,
123                        WirelessSettings.class.getName(),
124                        R.drawable.ic_settings_more));
125
126        sResMap.put(ScreenZoomSettings.class.getName(),
127                new SearchIndexableResource(
128                        Ranking.getRankForClassName(ScreenZoomSettings.class.getName()),
129                        NO_DATA_RES_ID,
130                        ScreenZoomSettings.class.getName(),
131                        R.drawable.ic_settings_display));
132
133        sResMap.put(DisplaySettings.class.getName(),
134                new SearchIndexableResource(
135                        Ranking.getRankForClassName(DisplaySettings.class.getName()),
136                        NO_DATA_RES_ID,
137                        DisplaySettings.class.getName(),
138                        R.drawable.ic_settings_display));
139
140        sResMap.put(WallpaperTypeSettings.class.getName(),
141                new SearchIndexableResource(
142                        Ranking.getRankForClassName(WallpaperTypeSettings.class.getName()),
143                        NO_DATA_RES_ID,
144                        WallpaperTypeSettings.class.getName(),
145                        R.drawable.ic_settings_display));
146
147        sResMap.put(ConfigureNotificationSettings.class.getName(),
148                new SearchIndexableResource(
149                        Ranking.getRankForClassName(ConfigureNotificationSettings.class.getName()),
150                        R.xml.configure_notification_settings,
151                        ConfigureNotificationSettings.class.getName(),
152                        R.drawable.ic_settings_notifications));
153
154        sResMap.put(SoundSettings.class.getName(),
155                new SearchIndexableResource(
156                        Ranking.getRankForClassName(SoundSettings.class.getName()),
157                        NO_DATA_RES_ID,
158                        SoundSettings.class.getName(),
159                        R.drawable.ic_settings_sound));
160
161        sResMap.put(OtherSoundSettings.class.getName(),
162                new SearchIndexableResource(
163                        Ranking.getRankForClassName(OtherSoundSettings.class.getName()),
164                        NO_DATA_RES_ID,
165                        OtherSoundSettings.class.getName(),
166                        R.drawable.ic_settings_sound));
167
168        sResMap.put(ZenModeSettings.class.getName(),
169                new SearchIndexableResource(
170                        Ranking.getRankForClassName(ZenModeSettings.class.getName()),
171                        R.xml.zen_mode_settings,
172                        ZenModeSettings.class.getName(),
173                        R.drawable.ic_settings_notifications));
174
175        sResMap.put(ZenModePrioritySettings.class.getName(),
176                new SearchIndexableResource(
177                        Ranking.getRankForClassName(ZenModePrioritySettings.class.getName()),
178                        R.xml.zen_mode_priority_settings,
179                        ZenModePrioritySettings.class.getName(),
180                        R.drawable.ic_settings_notifications));
181
182        sResMap.put(StorageSettings.class.getName(),
183                new SearchIndexableResource(
184                        Ranking.getRankForClassName(StorageSettings.class.getName()),
185                        NO_DATA_RES_ID,
186                        StorageSettings.class.getName(),
187                        R.drawable.ic_settings_storage));
188
189        sResMap.put(PowerUsageSummary.class.getName(),
190                new SearchIndexableResource(
191                        Ranking.getRankForClassName(PowerUsageSummary.class.getName()),
192                        R.xml.power_usage_summary,
193                        PowerUsageSummary.class.getName(),
194                        R.drawable.ic_settings_battery));
195
196        sResMap.put(BatterySaverSettings.class.getName(),
197                new SearchIndexableResource(
198                        Ranking.getRankForClassName(BatterySaverSettings.class.getName()),
199                        R.xml.battery_saver_settings,
200                        BatterySaverSettings.class.getName(),
201                        R.drawable.ic_settings_battery));
202
203        sResMap.put(AdvancedAppSettings.class.getName(),
204                new SearchIndexableResource(
205                        Ranking.getRankForClassName(AdvancedAppSettings.class.getName()),
206                        NO_DATA_RES_ID,
207                        AdvancedAppSettings.class.getName(),
208                        R.drawable.ic_settings_applications));
209
210        sResMap.put(SpecialAccessSettings.class.getName(),
211                new SearchIndexableResource(
212                        Ranking.getRankForClassName(SpecialAccessSettings.class.getName()),
213                        R.xml.special_access,
214                        SpecialAccessSettings.class.getName(),
215                        R.drawable.ic_settings_applications));
216
217        sResMap.put(UserSettings.class.getName(),
218                new SearchIndexableResource(
219                        Ranking.getRankForClassName(UserSettings.class.getName()),
220                        NO_DATA_RES_ID,
221                        UserSettings.class.getName(),
222                        R.drawable.ic_settings_multiuser));
223
224        sResMap.put(GestureSettings.class.getName(),
225                new SearchIndexableResource(
226                        Ranking.getRankForClassName(GestureSettings.class.getName()),
227                        NO_DATA_RES_ID,
228                        GestureSettings.class.getName(),
229                        R.drawable.ic_settings_gestures));
230
231        sResMap.put(LocationSettings.class.getName(),
232                new SearchIndexableResource(
233                        Ranking.getRankForClassName(LocationSettings.class.getName()),
234                        R.xml.location_settings,
235                        LocationSettings.class.getName(),
236                        R.drawable.ic_settings_location));
237
238        sResMap.put(ScanningSettings.class.getName(),
239                new SearchIndexableResource(
240                        Ranking.getRankForClassName(ScanningSettings.class.getName()),
241                        R.xml.location_scanning,
242                        ScanningSettings.class.getName(),
243                        R.drawable.ic_settings_location));
244
245        sResMap.put(SecuritySettings.class.getName(),
246                new SearchIndexableResource(
247                        Ranking.getRankForClassName(SecuritySettings.class.getName()),
248                        NO_DATA_RES_ID,
249                        SecuritySettings.class.getName(),
250                        R.drawable.ic_settings_security));
251
252        sResMap.put(ScreenPinningSettings.class.getName(),
253                new SearchIndexableResource(
254                        Ranking.getRankForClassName(ScreenPinningSettings.class.getName()),
255                        NO_DATA_RES_ID,
256                        ScreenPinningSettings.class.getName(),
257                        R.drawable.ic_settings_security));
258
259        sResMap.put(AccountSettings.class.getName(),
260                new SearchIndexableResource(
261                        Ranking.getRankForClassName(AccountSettings.class.getName()),
262                        NO_DATA_RES_ID,
263                        AccountSettings.class.getName(),
264                        R.drawable.ic_settings_accounts));
265
266        sResMap.put(InputMethodAndLanguageSettings.class.getName(),
267                new SearchIndexableResource(
268                        Ranking.getRankForClassName(InputMethodAndLanguageSettings.class.getName()),
269                        NO_DATA_RES_ID,
270                        InputMethodAndLanguageSettings.class.getName(),
271                        R.drawable.ic_settings_language));
272
273        sResMap.put(PrivacySettings.class.getName(),
274                new SearchIndexableResource(
275                        Ranking.getRankForClassName(PrivacySettings.class.getName()),
276                        NO_DATA_RES_ID,
277                        PrivacySettings.class.getName(),
278                        R.drawable.ic_settings_backup));
279
280        sResMap.put(DateTimeSettings.class.getName(),
281                new SearchIndexableResource(
282                        Ranking.getRankForClassName(DateTimeSettings.class.getName()),
283                        NO_DATA_RES_ID,
284                        DateTimeSettings.class.getName(),
285                        R.drawable.ic_settings_date_time));
286
287        sResMap.put(AccessibilitySettings.class.getName(),
288                new SearchIndexableResource(
289                        Ranking.getRankForClassName(AccessibilitySettings.class.getName()),
290                        NO_DATA_RES_ID,
291                        AccessibilitySettings.class.getName(),
292                        R.drawable.ic_settings_accessibility));
293
294        sResMap.put(PrintSettingsFragment.class.getName(),
295                new SearchIndexableResource(
296                        Ranking.getRankForClassName(PrintSettingsFragment.class.getName()),
297                        NO_DATA_RES_ID,
298                        PrintSettingsFragment.class.getName(),
299                        R.drawable.ic_settings_print));
300
301        sResMap.put(DevelopmentSettings.class.getName(),
302                new SearchIndexableResource(
303                        Ranking.getRankForClassName(DevelopmentSettings.class.getName()),
304                        NO_DATA_RES_ID,
305                        DevelopmentSettings.class.getName(),
306                        R.drawable.ic_settings_development));
307
308        sResMap.put(DeviceInfoSettings.class.getName(),
309                new SearchIndexableResource(
310                        Ranking.getRankForClassName(DeviceInfoSettings.class.getName()),
311                        NO_DATA_RES_ID,
312                        DeviceInfoSettings.class.getName(),
313                        R.drawable.ic_settings_about));
314
315        sResMap.put(LegalSettings.class.getName(),
316                new SearchIndexableResource(
317                        Ranking.getRankForClassName(LegalSettings.class.getName()),
318                        NO_DATA_RES_ID,
319                        LegalSettings.class.getName(),
320                        R.drawable.ic_settings_about));
321
322        sResMap.put(ZenModeVisualInterruptionSettings.class.getName(),
323                new SearchIndexableResource(
324                        Ranking.getRankForClassName(
325                                ZenModeVisualInterruptionSettings.class.getName()),
326                        R.xml.zen_mode_visual_interruptions_settings,
327                        ZenModeVisualInterruptionSettings.class.getName(),
328                        R.drawable.ic_settings_notifications));
329    }
330
331    private SearchIndexableResources() {
332    }
333
334    public static int size() {
335        return sResMap.size();
336    }
337
338    public static SearchIndexableResource getResourceByName(String className) {
339        return sResMap.get(className);
340    }
341
342    public static Collection<SearchIndexableResource> values() {
343        return sResMap.values();
344    }
345}
346