diff options
Diffstat (limited to 'src/com/android/settings/search')
-rw-r--r-- | src/com/android/settings/search/Index.java | 72 | ||||
-rw-r--r-- | src/com/android/settings/search/Ranking.java | 4 | ||||
-rw-r--r-- | src/com/android/settings/search/SearchIndexableResources.java | 27 |
3 files changed, 48 insertions, 55 deletions
diff --git a/src/com/android/settings/search/Index.java b/src/com/android/settings/search/Index.java index 65d825b..db60dfe 100644 --- a/src/com/android/settings/search/Index.java +++ b/src/com/android/settings/search/Index.java @@ -181,6 +181,16 @@ public class Index { nonIndexableKeys = new HashMap<String, List<String>>(); } + public UpdateData(UpdateData other) { + dataToUpdate = new ArrayList<SearchIndexableData>(other.dataToUpdate); + dataToDelete = new ArrayList<SearchIndexableData>(other.dataToDelete); + nonIndexableKeys = new HashMap<String, List<String>>(other.nonIndexableKeys); + } + + public UpdateData copy() { + return new UpdateData(this); + } + public void clear() { dataToUpdate.clear(); dataToDelete.clear(); @@ -286,7 +296,7 @@ public class Index { } } - public boolean update() { + public void update() { final Intent intent = new Intent(SearchIndexablesContract.PROVIDER_INTERFACE); List<ResolveInfo> list = mContext.getPackageManager().queryIntentContentProviders(intent, 0); @@ -304,7 +314,7 @@ public class Index { addNonIndexablesKeysFromRemoteProvider(packageName, authority); } - return updateInternal(); + updateInternal(); } private boolean addIndexablesFromRemoteProvider(String packageName, String authority) { @@ -443,11 +453,10 @@ public class Index { } } - private boolean updateFromRemoteProvider(String packageName, String authority) { - if (!addIndexablesFromRemoteProvider(packageName, authority)) { - return false; + private void updateFromRemoteProvider(String packageName, String authority) { + if (addIndexablesFromRemoteProvider(packageName, authority)) { + updateInternal(); } - return updateInternal(); } /** @@ -457,9 +466,8 @@ public class Index { * @param rebuild true means that you want to delete the data from the Index first. * @param includeInSearchResults true means that you want the bit "enabled" set so that the * data will be seen included into the search results - * @return true of the Index update has been successful. */ - public boolean updateFromClassNameResource(String className, boolean rebuild, + public void updateFromClassNameResource(String className, boolean rebuild, boolean includeInSearchResults) { if (className == null) { throw new IllegalArgumentException("class name cannot be null!"); @@ -467,7 +475,7 @@ public class Index { final SearchIndexableResource res = SearchIndexableResources.getResourceByName(className); if (res == null ) { Log.e(LOG_TAG, "Cannot find SearchIndexableResources for class name: " + className); - return false; + return; } res.context = mContext; res.enabled = includeInSearchResults; @@ -476,15 +484,14 @@ public class Index { } addIndexableData(res); mDataToProcess.forceUpdate = true; - boolean result = updateInternal(); + updateInternal(); res.enabled = false; - return result; } - public boolean updateFromSearchIndexableData(SearchIndexableData data) { + public void updateFromSearchIndexableData(SearchIndexableData data) { addIndexableData(data); mDataToProcess.forceUpdate = true; - return updateInternal(); + updateInternal(); } private SQLiteDatabase getReadableDatabase() { @@ -510,21 +517,12 @@ public class Index { SearchIndexablesContract.NON_INDEXABLES_KEYS_PATH); } - private boolean updateInternal() { + private void updateInternal() { synchronized (mDataToProcess) { final UpdateIndexTask task = new UpdateIndexTask(); - task.execute(mDataToProcess); - try { - final boolean result = task.get(); - mDataToProcess.clear(); - return result; - } catch (InterruptedException e) { - Log.e(LOG_TAG, "Cannot update index", e); - return false; - } catch (ExecutionException e) { - Log.e(LOG_TAG, "Cannot update index", e); - return false; - } + UpdateData copy = mDataToProcess.copy(); + task.execute(copy); + mDataToProcess.clear(); } } @@ -1027,8 +1025,14 @@ public class Index { return; } + // The DocID should contains more than the title string itself (you may have two settings + // with the same title). So we need to use a combination of the title and the screenTitle. + StringBuilder sb = new StringBuilder(updatedTitle); + sb.append(screenTitle); + int docId = sb.toString().hashCode(); + ContentValues values = new ContentValues(); - values.put(IndexColumns.DOCID, updatedTitle.hashCode()); + values.put(IndexColumns.DOCID, docId); values.put(IndexColumns.LOCALE, locale); values.put(IndexColumns.DATA_RANK, rank); values.put(IndexColumns.DATA_TITLE, updatedTitle); @@ -1143,7 +1147,7 @@ public class Index { /** * A private class for updating the Index database */ - private class UpdateIndexTask extends AsyncTask<UpdateData, Integer, Boolean> { + private class UpdateIndexTask extends AsyncTask<UpdateData, Integer, Void> { @Override protected void onPreExecute() { @@ -1152,15 +1156,13 @@ public class Index { } @Override - protected void onPostExecute(Boolean aBoolean) { - super.onPostExecute(aBoolean); + protected void onPostExecute(Void aVoid) { + super.onPostExecute(aVoid); mIsAvailable.set(true); } @Override - protected Boolean doInBackground(UpdateData... params) { - boolean result = false; - + protected Void doInBackground(UpdateData... params) { final List<SearchIndexableData> dataToUpdate = params[0].dataToUpdate; final List<SearchIndexableData> dataToDelete = params[0].dataToDelete; final Map<String, List<String>> nonIndexableKeys = params[0].nonIndexableKeys; @@ -1180,11 +1182,11 @@ public class Index { forceUpdate); } database.setTransactionSuccessful(); - result = true; } finally { database.endTransaction(); } - return result; + + return null; } private boolean processDataToUpdate(SQLiteDatabase database, String localeStr, diff --git a/src/com/android/settings/search/Ranking.java b/src/com/android/settings/search/Ranking.java index 44717c1..2c76002 100644 --- a/src/com/android/settings/search/Ranking.java +++ b/src/com/android/settings/search/Ranking.java @@ -30,7 +30,6 @@ import com.android.settings.WallpaperTypeSettings; import com.android.settings.WirelessSettings; import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.bluetooth.BluetoothSettings; -import com.android.settings.bluetooth.MessageAccessSettings; import com.android.settings.deviceinfo.Memory; import com.android.settings.fuelgauge.BatterySaverSettings; import com.android.settings.fuelgauge.PowerUsageSummary; @@ -43,6 +42,7 @@ import com.android.settings.notification.ZenModeSettings; import com.android.settings.print.PrintSettingsFragment; import com.android.settings.sim.SimSettings; import com.android.settings.users.UserSettings; +import com.android.settings.voice.VoiceInputSettings; import com.android.settings.wifi.AdvancedWifiSettings; import com.android.settings.wifi.SavedAccessPointsWifiSettings; import com.android.settings.wifi.WifiSettings; @@ -93,7 +93,6 @@ public final class Ranking { // BT sRankMap.put(BluetoothSettings.class.getName(), RANK_BT); - sRankMap.put(MessageAccessSettings.class.getName(), RANK_BT); // SIM Cards sRankMap.put(SimSettings.class.getName(), RANK_SIM); @@ -139,6 +138,7 @@ public final class Ranking { // IMEs sRankMap.put(InputMethodAndLanguageSettings.class.getName(), RANK_IME); + sRankMap.put(VoiceInputSettings.class.getName(), RANK_IME); // Privacy sRankMap.put(PrivacySettings.class.getName(), RANK_PRIVACY); diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java index a3d2b8d..105ce7e 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -18,7 +18,6 @@ package com.android.settings.search; import android.provider.SearchIndexableResource; -import com.android.settings.ChooseLockGeneric; import com.android.settings.DataUsageSummary; import com.android.settings.DateTimeSettings; import com.android.settings.DevelopmentSettings; @@ -33,7 +32,6 @@ import com.android.settings.WallpaperTypeSettings; import com.android.settings.WirelessSettings; import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.bluetooth.BluetoothSettings; -import com.android.settings.bluetooth.MessageAccessSettings; import com.android.settings.deviceinfo.Memory; import com.android.settings.fuelgauge.BatterySaverSettings; import com.android.settings.fuelgauge.PowerUsageSummary; @@ -46,6 +44,7 @@ import com.android.settings.notification.ZenModeSettings; import com.android.settings.print.PrintSettingsFragment; import com.android.settings.sim.SimSettings; import com.android.settings.users.UserSettings; +import com.android.settings.voice.VoiceInputSettings; import com.android.settings.wifi.AdvancedWifiSettings; import com.android.settings.wifi.SavedAccessPointsWifiSettings; import com.android.settings.wifi.WifiSettings; @@ -92,17 +91,10 @@ public final class SearchIndexableResources { sResMap.put(SimSettings.class.getName(), new SearchIndexableResource( Ranking.getRankForClassName(SimSettings.class.getName()), - R.xml.sim_settings, + NO_DATA_RES_ID, SimSettings.class.getName(), R.drawable.ic_sim_sd)); - sResMap.put(MessageAccessSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(MessageAccessSettings.class.getName()), - NO_DATA_RES_ID, - MessageAccessSettings.class.getName(), - R.drawable.ic_settings_bluetooth2)); - sResMap.put(DataUsageSummary.class.getName(), new SearchIndexableResource( Ranking.getRankForClassName(DataUsageSummary.class.getName()), @@ -208,14 +200,6 @@ public final class SearchIndexableResources { SecuritySettings.class.getName(), R.drawable.ic_settings_security)); - sResMap.put(ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName( - ChooseLockGeneric.ChooseLockGenericFragment.class.getName()), - R.xml.security_settings_picker, - ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), - R.drawable.ic_settings_security)); - sResMap.put(ScreenPinningSettings.class.getName(), new SearchIndexableResource( Ranking.getRankForClassName(ScreenPinningSettings.class.getName()), @@ -230,6 +214,13 @@ public final class SearchIndexableResources { InputMethodAndLanguageSettings.class.getName(), R.drawable.ic_settings_language)); + sResMap.put(VoiceInputSettings.class.getName(), + new SearchIndexableResource( + Ranking.getRankForClassName(VoiceInputSettings.class.getName()), + NO_DATA_RES_ID, + VoiceInputSettings.class.getName(), + R.drawable.ic_settings_language)); + sResMap.put(PrivacySettings.class.getName(), new SearchIndexableResource( Ranking.getRankForClassName(PrivacySettings.class.getName()), |