Loading quickstep/AndroidManifest.xml +13 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,19 @@ It is set to true so that the activity can be started from command line --> <activity android:name="com.android.quickstep.RecentsActivity" android:exported="true" /> <!-- Content provider to settings search --> <provider android:name="com.android.quickstep.LauncherSearchIndexablesProvider" android:authorities="com.android.launcher3" android:grantUriPermissions="true" android:multiprocess="true" android:permission="android.permission.READ_SEARCH_INDEXABLES" android:exported="true"> <intent-filter> <action android:name="android.content.action.SEARCH_INDEXABLES_PROVIDER" /> </intent-filter> </provider> </application> </manifest> quickstep/res/xml/indexable_launcher_prefs.xml 0 → 100644 +35 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <SwitchPreference android:key="pref_add_icon_to_home" android:title="@string/auto_add_shortcuts_label" android:summary="@string/auto_add_shortcuts_description" android:defaultValue="true" /> <ListPreference android:key="pref_override_icon_shape" android:title="@string/icon_shape_override_label" android:summary="@string/icon_shape_override_label_location" android:entries="@array/icon_shape_override_paths_names" android:entryValues="@array/icon_shape_override_paths_values" android:defaultValue="" android:persistent="false" /> </PreferenceScreen> quickstep/src/com/android/quickstep/LauncherSearchIndexablesProvider.java 0 → 100644 +96 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.quickstep; import android.annotation.TargetApi; import android.content.Intent; import android.content.pm.LauncherApps; import android.content.pm.ResolveInfo; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.database.Cursor; import android.database.MatrixCursor; import android.os.Build; import android.provider.SearchIndexablesContract.XmlResource; import android.provider.SearchIndexablesProvider; import android.util.Xml; import com.android.launcher3.R; import com.android.launcher3.graphics.IconShapeOverride; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import static android.provider.SearchIndexablesContract.INDEXABLES_RAW_COLUMNS; import static android.provider.SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS; import static android.provider.SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS; @TargetApi(Build.VERSION_CODES.O) public class LauncherSearchIndexablesProvider extends SearchIndexablesProvider { @Override public boolean onCreate() { return true; } @Override public Cursor queryXmlResources(String[] strings) { MatrixCursor cursor = new MatrixCursor(INDEXABLES_XML_RES_COLUMNS); ResolveInfo settingsActivity = getContext().getPackageManager().resolveActivity( new Intent(Intent.ACTION_APPLICATION_PREFERENCES) .setPackage(getContext().getPackageName()), 0); cursor.newRow() .add(XmlResource.COLUMN_XML_RESID, R.xml.indexable_launcher_prefs) .add(XmlResource.COLUMN_INTENT_ACTION, Intent.ACTION_APPLICATION_PREFERENCES) .add(XmlResource.COLUMN_INTENT_TARGET_PACKAGE, getContext().getPackageName()) .add(XmlResource.COLUMN_INTENT_TARGET_CLASS, settingsActivity.activityInfo.name); return cursor; } @Override public Cursor queryRawData(String[] projection) { return new MatrixCursor(INDEXABLES_RAW_COLUMNS); } @Override public Cursor queryNonIndexableKeys(String[] projection) { MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS); if (!getContext().getSystemService(LauncherApps.class).hasShortcutHostPermission()) { // We are not the current launcher. Hide all preferences try (XmlResourceParser parser = getContext().getResources() .getXml(R.xml.indexable_launcher_prefs)) { final int depth = parser.getDepth(); final int[] attrs = new int[] { android.R.attr.key }; int type; while (((type = parser.next()) != XmlPullParser.END_TAG || parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { if (type == XmlPullParser.START_TAG) { TypedArray a = getContext().obtainStyledAttributes( Xml.asAttributeSet(parser), attrs); cursor.addRow(new String[] {a.getString(0)}); a.recycle(); } } } catch (IOException |XmlPullParserException e) { throw new RuntimeException(e); } } else if (!IconShapeOverride.isSupported(getContext())) { cursor.addRow(new String[] {IconShapeOverride.KEY_PREFERENCE}); } return cursor; } } res/layout/launcher_preference.xml 0 → 100644 +27 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <com.android.launcher3.views.HighlightableListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:cacheColorHint="@android:color/transparent" android:clipToPadding="false" android:drawSelectorOnTop="false" android:orientation="vertical" android:scrollbarAlwaysDrawVerticalTrack="true" android:scrollbarStyle="outsideOverlay" /> No newline at end of file res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,10 @@ <!-- Tag id used for view scrim --> <item type="id" name="view_scrim" /> <!-- View IDs to store item highlight information --> <item type="id" name="view_unhighlight_background" /> <item type="id" name="view_highlighted" /> <!-- Popup items --> <integer name="config_popupOpenCloseDuration">150</integer> <integer name="config_popupArrowOpenDuration">80</integer> Loading Loading
quickstep/AndroidManifest.xml +13 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,19 @@ It is set to true so that the activity can be started from command line --> <activity android:name="com.android.quickstep.RecentsActivity" android:exported="true" /> <!-- Content provider to settings search --> <provider android:name="com.android.quickstep.LauncherSearchIndexablesProvider" android:authorities="com.android.launcher3" android:grantUriPermissions="true" android:multiprocess="true" android:permission="android.permission.READ_SEARCH_INDEXABLES" android:exported="true"> <intent-filter> <action android:name="android.content.action.SEARCH_INDEXABLES_PROVIDER" /> </intent-filter> </provider> </application> </manifest>
quickstep/res/xml/indexable_launcher_prefs.xml 0 → 100644 +35 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <SwitchPreference android:key="pref_add_icon_to_home" android:title="@string/auto_add_shortcuts_label" android:summary="@string/auto_add_shortcuts_description" android:defaultValue="true" /> <ListPreference android:key="pref_override_icon_shape" android:title="@string/icon_shape_override_label" android:summary="@string/icon_shape_override_label_location" android:entries="@array/icon_shape_override_paths_names" android:entryValues="@array/icon_shape_override_paths_values" android:defaultValue="" android:persistent="false" /> </PreferenceScreen>
quickstep/src/com/android/quickstep/LauncherSearchIndexablesProvider.java 0 → 100644 +96 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.quickstep; import android.annotation.TargetApi; import android.content.Intent; import android.content.pm.LauncherApps; import android.content.pm.ResolveInfo; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.database.Cursor; import android.database.MatrixCursor; import android.os.Build; import android.provider.SearchIndexablesContract.XmlResource; import android.provider.SearchIndexablesProvider; import android.util.Xml; import com.android.launcher3.R; import com.android.launcher3.graphics.IconShapeOverride; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import static android.provider.SearchIndexablesContract.INDEXABLES_RAW_COLUMNS; import static android.provider.SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS; import static android.provider.SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS; @TargetApi(Build.VERSION_CODES.O) public class LauncherSearchIndexablesProvider extends SearchIndexablesProvider { @Override public boolean onCreate() { return true; } @Override public Cursor queryXmlResources(String[] strings) { MatrixCursor cursor = new MatrixCursor(INDEXABLES_XML_RES_COLUMNS); ResolveInfo settingsActivity = getContext().getPackageManager().resolveActivity( new Intent(Intent.ACTION_APPLICATION_PREFERENCES) .setPackage(getContext().getPackageName()), 0); cursor.newRow() .add(XmlResource.COLUMN_XML_RESID, R.xml.indexable_launcher_prefs) .add(XmlResource.COLUMN_INTENT_ACTION, Intent.ACTION_APPLICATION_PREFERENCES) .add(XmlResource.COLUMN_INTENT_TARGET_PACKAGE, getContext().getPackageName()) .add(XmlResource.COLUMN_INTENT_TARGET_CLASS, settingsActivity.activityInfo.name); return cursor; } @Override public Cursor queryRawData(String[] projection) { return new MatrixCursor(INDEXABLES_RAW_COLUMNS); } @Override public Cursor queryNonIndexableKeys(String[] projection) { MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS); if (!getContext().getSystemService(LauncherApps.class).hasShortcutHostPermission()) { // We are not the current launcher. Hide all preferences try (XmlResourceParser parser = getContext().getResources() .getXml(R.xml.indexable_launcher_prefs)) { final int depth = parser.getDepth(); final int[] attrs = new int[] { android.R.attr.key }; int type; while (((type = parser.next()) != XmlPullParser.END_TAG || parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { if (type == XmlPullParser.START_TAG) { TypedArray a = getContext().obtainStyledAttributes( Xml.asAttributeSet(parser), attrs); cursor.addRow(new String[] {a.getString(0)}); a.recycle(); } } } catch (IOException |XmlPullParserException e) { throw new RuntimeException(e); } } else if (!IconShapeOverride.isSupported(getContext())) { cursor.addRow(new String[] {IconShapeOverride.KEY_PREFERENCE}); } return cursor; } }
res/layout/launcher_preference.xml 0 → 100644 +27 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <com.android.launcher3.views.HighlightableListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:cacheColorHint="@android:color/transparent" android:clipToPadding="false" android:drawSelectorOnTop="false" android:orientation="vertical" android:scrollbarAlwaysDrawVerticalTrack="true" android:scrollbarStyle="outsideOverlay" /> No newline at end of file
res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,10 @@ <!-- Tag id used for view scrim --> <item type="id" name="view_scrim" /> <!-- View IDs to store item highlight information --> <item type="id" name="view_unhighlight_background" /> <item type="id" name="view_highlighted" /> <!-- Popup items --> <integer name="config_popupOpenCloseDuration">150</integer> <integer name="config_popupArrowOpenDuration">80</integer> Loading