From 6fbc28026a636e643c623750788fc68ff8c1e5ce Mon Sep 17 00:00:00 2001 From: Roman Birg Date: Wed, 10 Aug 2016 16:38:13 -0700 Subject: [PATCH] sanders: LineageActions: add Settings search indexing Allows Settings to search for options provided by this package. Signed-off-by: Roman Birg Signed-off-by: jhenrique09 --- LineageActions/AndroidManifest.xml | 12 +++ .../res/xml/doze_panel_indexable.xml | 27 +++++ .../res/xml/fp_gesture_panel_indexable.xml | 27 +++++ .../screen_off_gesture_panel_indexable.xml | 27 +++++ ...ineageActionsSearchIndexablesProvider.java | 99 +++++++++++++++++++ 5 files changed, 192 insertions(+) create mode 100644 LineageActions/res/xml/doze_panel_indexable.xml create mode 100644 LineageActions/res/xml/fp_gesture_panel_indexable.xml create mode 100644 LineageActions/res/xml/screen_off_gesture_panel_indexable.xml create mode 100644 LineageActions/src/org/lineageos/settings/device/LineageActionsSearchIndexablesProvider.java diff --git a/LineageActions/AndroidManifest.xml b/LineageActions/AndroidManifest.xml index 8117601..b8b4799 100644 --- a/LineageActions/AndroidManifest.xml +++ b/LineageActions/AndroidManifest.xml @@ -24,6 +24,18 @@ android:icon="@drawable/ic_gesture" android:persistent="true"> + + + + + + diff --git a/LineageActions/res/xml/doze_panel_indexable.xml b/LineageActions/res/xml/doze_panel_indexable.xml new file mode 100644 index 0000000..c3972a3 --- /dev/null +++ b/LineageActions/res/xml/doze_panel_indexable.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/LineageActions/res/xml/fp_gesture_panel_indexable.xml b/LineageActions/res/xml/fp_gesture_panel_indexable.xml new file mode 100644 index 0000000..0316c75 --- /dev/null +++ b/LineageActions/res/xml/fp_gesture_panel_indexable.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/LineageActions/res/xml/screen_off_gesture_panel_indexable.xml b/LineageActions/res/xml/screen_off_gesture_panel_indexable.xml new file mode 100644 index 0000000..24eef56 --- /dev/null +++ b/LineageActions/res/xml/screen_off_gesture_panel_indexable.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/LineageActions/src/org/lineageos/settings/device/LineageActionsSearchIndexablesProvider.java b/LineageActions/src/org/lineageos/settings/device/LineageActionsSearchIndexablesProvider.java new file mode 100644 index 0000000..0dee65c --- /dev/null +++ b/LineageActions/src/org/lineageos/settings/device/LineageActionsSearchIndexablesProvider.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2015 The CyanogenMod Project + * Copyright (c) 2017 The LineageOS 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 org.lineageos.settings.device; + +import android.database.Cursor; +import android.database.MatrixCursor; +import android.provider.SearchIndexableResource; +import android.provider.SearchIndexablesProvider; + +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_CLASS_NAME; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_ICON_RESID; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_ACTION; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RANK; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RESID; +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; + +public class LineageActionsSearchIndexablesProvider extends SearchIndexablesProvider { + private static final String TAG = "LineageActionsSearchIndexablesProvider"; + + @Override + public boolean onCreate() { + return true; + } + + @Override + public Cursor queryXmlResources(String[] projection) { + MatrixCursor cursor = new MatrixCursor(INDEXABLES_XML_RES_COLUMNS); + + cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.actions_panel, + GestureSettingsActivity.class.getName(), + R.drawable.ic_settings_gestures))); + + cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.fp_gesture_panel, + FPGestureSettingsActivity.class.getName(), + R.drawable.ic_settings_fingerprint))); + cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.fp_gesture_panel_indexable, + FPGestureSettingsActivity.class.getName(), + R.drawable.ic_settings_fingerprint))); + + cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.screen_off_gesture_panel, + ScreenOffGestureSettingsActivity.class.getName(), + R.drawable.ic_settings_screen_off_gestures))); + cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.screen_off_gesture_panel_indexable, + ScreenOffGestureSettingsActivity.class.getName(), + R.drawable.ic_settings_screen_off_gestures))); + + cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.doze_panel, + DozeSettingsActivity.class.getName(), + R.drawable.ic_settings_doze))); + cursor.addRow(generateResourceRef(new SearchIndexableResource(1, R.xml.doze_panel_indexable, + DozeSettingsActivity.class.getName(), + R.drawable.ic_settings_doze))); + + return cursor; + } + + private static Object[] generateResourceRef(SearchIndexableResource sir) { + Object[] ref = new Object[7]; + ref[COLUMN_INDEX_XML_RES_RANK] = sir.rank; + ref[COLUMN_INDEX_XML_RES_RESID] = sir.xmlResId; + ref[COLUMN_INDEX_XML_RES_CLASS_NAME] = null; + ref[COLUMN_INDEX_XML_RES_ICON_RESID] = sir.iconResId; + ref[COLUMN_INDEX_XML_RES_INTENT_ACTION] = "com.android.settings.action.EXTRA_SETTINGS"; + ref[COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE] = "org.lineageos.settings.device"; + ref[COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS] = sir.className; + return ref; + } + + @Override + public Cursor queryRawData(String[] projection) { + MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS); + return cursor; + } + + @Override + public Cursor queryNonIndexableKeys(String[] projection) { + MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS); + return cursor; + } +}