summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/search
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/search')
-rw-r--r--src/com/android/settings/search/Index.java72
-rw-r--r--src/com/android/settings/search/Ranking.java4
-rw-r--r--src/com/android/settings/search/SearchIndexableResources.java27
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()),