Loading src/com/android/settings/display/AutoBrightnessPreferenceController.java +8 −1 Original line number Diff line number Diff line Loading @@ -14,14 +14,17 @@ package com.android.settings.display; import android.content.Context; import android.content.Intent; import android.provider.Settings; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; import android.util.ArrayMap; import com.android.settings.core.PreferenceController; import com.android.settings.search2.DatabaseIndexingUtils; import com.android.settings.search2.InlineSwitchPayload; import com.android.settings.search2.ResultPayload; import com.android.settings.R; import java.util.Map; Loading Loading @@ -71,7 +74,11 @@ public class AutoBrightnessPreferenceController extends PreferenceController imp valueMap.put(SCREEN_BRIGHTNESS_MODE_AUTOMATIC, true); valueMap.put(SCREEN_BRIGHTNESS_MODE_MANUAL, false); final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext, getClass().getName(), KEY_AUTO_BRIGHTNESS, mContext.getString(R.string.display_settings)); return new InlineSwitchPayload(SCREEN_BRIGHTNESS_MODE, ResultPayload.SettingsSource.SYSTEM, valueMap); ResultPayload.SettingsSource.SYSTEM, valueMap, intent); } } src/com/android/settings/search2/CursorToSearchResultConverter.java +4 −46 Original line number Diff line number Diff line Loading @@ -17,21 +17,15 @@ package com.android.settings.search2; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Resources; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.os.BadParcelableException; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.dashboard.SiteMapManager; import java.util.ArrayList; Loading @@ -46,9 +40,6 @@ import java.util.Set; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_CLASS_NAME; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_ICON; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_ID; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_INTENT_ACTION; import static com.android.settings.search2.DatabaseResultLoader .COLUMN_INDEX_INTENT_ACTION_TARGET_CLASS; import static com.android.settings.search2.DatabaseResultLoader .COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_KEY; Loading Loading @@ -132,7 +123,6 @@ class CursorToSearchResultConverter { mKeys.add(docId); final String pkgName = cursor.getString(COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE); final String action = cursor.getString(COLUMN_INDEX_INTENT_ACTION); final String title = cursor.getString(COLUMN_INDEX_TITLE); final String summaryOn = cursor.getString(COLUMN_INDEX_SUMMARY_ON); final String className = cursor.getString(COLUMN_INDEX_CLASS_NAME); Loading @@ -140,16 +130,7 @@ class CursorToSearchResultConverter { final String iconResStr = cursor.getString(COLUMN_INDEX_ICON); final int payloadType = cursor.getInt(COLUMN_INDEX_PAYLOAD_TYPE); final byte[] marshalledPayload = cursor.getBlob(COLUMN_INDEX_PAYLOAD); final ResultPayload payload; if (marshalledPayload != null) { payload = getUnmarshalledPayload(marshalledPayload, payloadType); } else if (payloadType == ResultPayload.PayloadType.INTENT) { payload = getIntentPayload(cursor, action, key, className, pkgName); } else { Log.w(TAG, "Error creating payload - bad marshalling data or mismatched types"); return null; } final ResultPayload payload = getUnmarshalledPayload(marshalledPayload, payloadType); final List<String> breadcrumbs = getBreadcrumbs(sitemapManager, cursor); final int rank = getRank(title, breadcrumbs, baseRank, key); Loading Loading @@ -196,34 +177,12 @@ class CursorToSearchResultConverter { return icon; } private IntentPayload getIntentPayload(Cursor cursor, String action, String key, String className, String pkgName ) { IntentPayload payload; if (TextUtils.isEmpty(action)) { final String screenTitle = cursor.getString(COLUMN_INDEX_SCREEN_TITLE); // Action is null, we will launch it as a sub-setting final Bundle args = new Bundle(); args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key); final Intent intent = Utils.onBuildStartFragmentIntent(mContext, className, args, null, 0, screenTitle, false, MetricsProto.MetricsEvent.DASHBOARD_SEARCH_RESULTS); payload = new IntentPayload(intent); } else { final Intent intent = new Intent(action); final String targetClass = cursor.getString(COLUMN_INDEX_INTENT_ACTION_TARGET_CLASS); if (!TextUtils.isEmpty(pkgName) && !TextUtils.isEmpty(targetClass)) { final ComponentName component = new ComponentName(pkgName, targetClass); intent.setComponent(component); } intent.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key); payload = new IntentPayload(intent); } return payload; } private ResultPayload getUnmarshalledPayload(byte[] unmarshalledPayload, int payloadType) { try { switch (payloadType) { case ResultPayload.PayloadType.INTENT: return ResultPayloadUtils.unmarshall(unmarshalledPayload, ResultPayload.CREATOR); case ResultPayload.PayloadType.INLINE_SWITCH: return ResultPayloadUtils.unmarshall(unmarshalledPayload, InlineSwitchPayload.CREATOR); Loading Loading @@ -269,5 +228,4 @@ class CursorToSearchResultConverter { } return baseRank; } } src/com/android/settings/search2/DatabaseIndexingManager.java +42 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.search2; import android.content.ComponentName; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; Loading @@ -39,6 +40,7 @@ import android.util.AttributeSet; import android.util.Log; import android.util.Xml; import com.android.settings.SettingsActivity; import com.android.settings.core.PreferenceController; import com.android.settings.search.IndexDatabaseHelper; import com.android.settings.search.Indexable; Loading Loading @@ -927,7 +929,7 @@ public class DatabaseIndexingManager { .setNormalizedSummaryOff(normalizedSummaryOff) .setSpaceDelimitedKeywords(spaceDelimitedKeywords); updateOneRow(database, builder.build()); updateOneRow(database, builder.build(mContext)); } private void updateOneRow(SQLiteDatabase database, DatabaseRow row) { Loading Loading @@ -1212,7 +1214,45 @@ public class DatabaseIndexingManager { return this; } public DatabaseRow build() { /** * Adds intent to inline payloads, or creates an Intent Payload as a fallback if the * payload is null. */ private void setIntent(Context context) { if (mPayload != null) { return; } final Intent intent = buildIntent(context); mPayload = new ResultPayload(intent); mPayloadType = ResultPayload.PayloadType.INTENT; } /** * Adds Intent payload to builder. */ private Intent buildIntent(Context context) { final Intent intent; if (TextUtils.isEmpty(mIntentAction)) { // Action is null, we will launch it as a sub-setting intent = DatabaseIndexingUtils.buildSubsettingIntent(context, mClassName, mKey, mScreenTitle); } else { intent = new Intent(mIntentAction); final String targetClass = mIntentTargetClass; if (!TextUtils.isEmpty(mIntentTargetPackage) && !TextUtils.isEmpty(targetClass)) { final ComponentName component = new ComponentName(mIntentTargetPackage, targetClass); intent.setComponent(component); } intent.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, mKey); } return intent; } public DatabaseRow build(Context context) { setIntent(context); return new DatabaseRow(this); } } Loading src/com/android/settings/search2/DatabaseIndexingUtils.java +17 −0 Original line number Diff line number Diff line Loading @@ -19,15 +19,20 @@ package com.android.settings.search2; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.core.PreferenceController; import com.android.settings.search.Indexable; Loading Loading @@ -57,6 +62,18 @@ public class DatabaseIndexingUtils { private static final Pattern REMOVE_DIACRITICALS_PATTERN = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); /** * Builds intent into a subsetting. */ public static Intent buildSubsettingIntent(Context context, String className, String key, String screenTitle) { final Bundle args = new Bundle(); args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key); return Utils.onBuildStartFragmentIntent(context, className, args, null, 0, screenTitle, false, MetricsProto.MetricsEvent.DASHBOARD_SEARCH_RESULTS); } /** * @param className which wil provide the map between from {@link Uri}s to * {@link PreferenceController} Loading src/com/android/settings/search2/InlinePayload.java +5 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings.search2; import android.content.Intent; /** * Abstract Payload for inline settings results. */ Loading @@ -35,7 +37,9 @@ public abstract class InlinePayload extends ResultPayload { */ @SettingsSource public int settingSource; public InlinePayload(String uri, @PayloadType int type, @SettingsSource int source) { public InlinePayload(String uri, @PayloadType int type, @SettingsSource int source, Intent intent) { super(intent); settingsUri = uri; inlineType = type; settingSource = source; Loading Loading
src/com/android/settings/display/AutoBrightnessPreferenceController.java +8 −1 Original line number Diff line number Diff line Loading @@ -14,14 +14,17 @@ package com.android.settings.display; import android.content.Context; import android.content.Intent; import android.provider.Settings; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; import android.util.ArrayMap; import com.android.settings.core.PreferenceController; import com.android.settings.search2.DatabaseIndexingUtils; import com.android.settings.search2.InlineSwitchPayload; import com.android.settings.search2.ResultPayload; import com.android.settings.R; import java.util.Map; Loading Loading @@ -71,7 +74,11 @@ public class AutoBrightnessPreferenceController extends PreferenceController imp valueMap.put(SCREEN_BRIGHTNESS_MODE_AUTOMATIC, true); valueMap.put(SCREEN_BRIGHTNESS_MODE_MANUAL, false); final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext, getClass().getName(), KEY_AUTO_BRIGHTNESS, mContext.getString(R.string.display_settings)); return new InlineSwitchPayload(SCREEN_BRIGHTNESS_MODE, ResultPayload.SettingsSource.SYSTEM, valueMap); ResultPayload.SettingsSource.SYSTEM, valueMap, intent); } }
src/com/android/settings/search2/CursorToSearchResultConverter.java +4 −46 Original line number Diff line number Diff line Loading @@ -17,21 +17,15 @@ package com.android.settings.search2; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Resources; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.os.BadParcelableException; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.dashboard.SiteMapManager; import java.util.ArrayList; Loading @@ -46,9 +40,6 @@ import java.util.Set; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_CLASS_NAME; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_ICON; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_ID; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_INTENT_ACTION; import static com.android.settings.search2.DatabaseResultLoader .COLUMN_INDEX_INTENT_ACTION_TARGET_CLASS; import static com.android.settings.search2.DatabaseResultLoader .COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE; import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_KEY; Loading Loading @@ -132,7 +123,6 @@ class CursorToSearchResultConverter { mKeys.add(docId); final String pkgName = cursor.getString(COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE); final String action = cursor.getString(COLUMN_INDEX_INTENT_ACTION); final String title = cursor.getString(COLUMN_INDEX_TITLE); final String summaryOn = cursor.getString(COLUMN_INDEX_SUMMARY_ON); final String className = cursor.getString(COLUMN_INDEX_CLASS_NAME); Loading @@ -140,16 +130,7 @@ class CursorToSearchResultConverter { final String iconResStr = cursor.getString(COLUMN_INDEX_ICON); final int payloadType = cursor.getInt(COLUMN_INDEX_PAYLOAD_TYPE); final byte[] marshalledPayload = cursor.getBlob(COLUMN_INDEX_PAYLOAD); final ResultPayload payload; if (marshalledPayload != null) { payload = getUnmarshalledPayload(marshalledPayload, payloadType); } else if (payloadType == ResultPayload.PayloadType.INTENT) { payload = getIntentPayload(cursor, action, key, className, pkgName); } else { Log.w(TAG, "Error creating payload - bad marshalling data or mismatched types"); return null; } final ResultPayload payload = getUnmarshalledPayload(marshalledPayload, payloadType); final List<String> breadcrumbs = getBreadcrumbs(sitemapManager, cursor); final int rank = getRank(title, breadcrumbs, baseRank, key); Loading Loading @@ -196,34 +177,12 @@ class CursorToSearchResultConverter { return icon; } private IntentPayload getIntentPayload(Cursor cursor, String action, String key, String className, String pkgName ) { IntentPayload payload; if (TextUtils.isEmpty(action)) { final String screenTitle = cursor.getString(COLUMN_INDEX_SCREEN_TITLE); // Action is null, we will launch it as a sub-setting final Bundle args = new Bundle(); args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key); final Intent intent = Utils.onBuildStartFragmentIntent(mContext, className, args, null, 0, screenTitle, false, MetricsProto.MetricsEvent.DASHBOARD_SEARCH_RESULTS); payload = new IntentPayload(intent); } else { final Intent intent = new Intent(action); final String targetClass = cursor.getString(COLUMN_INDEX_INTENT_ACTION_TARGET_CLASS); if (!TextUtils.isEmpty(pkgName) && !TextUtils.isEmpty(targetClass)) { final ComponentName component = new ComponentName(pkgName, targetClass); intent.setComponent(component); } intent.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key); payload = new IntentPayload(intent); } return payload; } private ResultPayload getUnmarshalledPayload(byte[] unmarshalledPayload, int payloadType) { try { switch (payloadType) { case ResultPayload.PayloadType.INTENT: return ResultPayloadUtils.unmarshall(unmarshalledPayload, ResultPayload.CREATOR); case ResultPayload.PayloadType.INLINE_SWITCH: return ResultPayloadUtils.unmarshall(unmarshalledPayload, InlineSwitchPayload.CREATOR); Loading Loading @@ -269,5 +228,4 @@ class CursorToSearchResultConverter { } return baseRank; } }
src/com/android/settings/search2/DatabaseIndexingManager.java +42 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.search2; import android.content.ComponentName; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; Loading @@ -39,6 +40,7 @@ import android.util.AttributeSet; import android.util.Log; import android.util.Xml; import com.android.settings.SettingsActivity; import com.android.settings.core.PreferenceController; import com.android.settings.search.IndexDatabaseHelper; import com.android.settings.search.Indexable; Loading Loading @@ -927,7 +929,7 @@ public class DatabaseIndexingManager { .setNormalizedSummaryOff(normalizedSummaryOff) .setSpaceDelimitedKeywords(spaceDelimitedKeywords); updateOneRow(database, builder.build()); updateOneRow(database, builder.build(mContext)); } private void updateOneRow(SQLiteDatabase database, DatabaseRow row) { Loading Loading @@ -1212,7 +1214,45 @@ public class DatabaseIndexingManager { return this; } public DatabaseRow build() { /** * Adds intent to inline payloads, or creates an Intent Payload as a fallback if the * payload is null. */ private void setIntent(Context context) { if (mPayload != null) { return; } final Intent intent = buildIntent(context); mPayload = new ResultPayload(intent); mPayloadType = ResultPayload.PayloadType.INTENT; } /** * Adds Intent payload to builder. */ private Intent buildIntent(Context context) { final Intent intent; if (TextUtils.isEmpty(mIntentAction)) { // Action is null, we will launch it as a sub-setting intent = DatabaseIndexingUtils.buildSubsettingIntent(context, mClassName, mKey, mScreenTitle); } else { intent = new Intent(mIntentAction); final String targetClass = mIntentTargetClass; if (!TextUtils.isEmpty(mIntentTargetPackage) && !TextUtils.isEmpty(targetClass)) { final ComponentName component = new ComponentName(mIntentTargetPackage, targetClass); intent.setComponent(component); } intent.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, mKey); } return intent; } public DatabaseRow build(Context context) { setIntent(context); return new DatabaseRow(this); } } Loading
src/com/android/settings/search2/DatabaseIndexingUtils.java +17 −0 Original line number Diff line number Diff line Loading @@ -19,15 +19,20 @@ package com.android.settings.search2; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.core.PreferenceController; import com.android.settings.search.Indexable; Loading Loading @@ -57,6 +62,18 @@ public class DatabaseIndexingUtils { private static final Pattern REMOVE_DIACRITICALS_PATTERN = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); /** * Builds intent into a subsetting. */ public static Intent buildSubsettingIntent(Context context, String className, String key, String screenTitle) { final Bundle args = new Bundle(); args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key); return Utils.onBuildStartFragmentIntent(context, className, args, null, 0, screenTitle, false, MetricsProto.MetricsEvent.DASHBOARD_SEARCH_RESULTS); } /** * @param className which wil provide the map between from {@link Uri}s to * {@link PreferenceController} Loading
src/com/android/settings/search2/InlinePayload.java +5 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings.search2; import android.content.Intent; /** * Abstract Payload for inline settings results. */ Loading @@ -35,7 +37,9 @@ public abstract class InlinePayload extends ResultPayload { */ @SettingsSource public int settingSource; public InlinePayload(String uri, @PayloadType int type, @SettingsSource int source) { public InlinePayload(String uri, @PayloadType int type, @SettingsSource int source, Intent intent) { super(intent); settingsUri = uri; inlineType = type; settingSource = source; Loading