1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.settingslib.spa.search 17 18 /** 19 * Intent action used to identify SpaSearchProvider instances. This is used in the {@code 20 * <intent-filter>} of a {@code <provider>}. 21 */ 22 const val PROVIDER_INTERFACE = "android.content.action.SPA_SEARCH_PROVIDER" 23 24 /** ContentProvider path for search static data */ 25 const val SEARCH_STATIC_DATA = "search_static_data" 26 27 /** ContentProvider path for search dynamic data */ 28 const val SEARCH_DYNAMIC_DATA = "search_dynamic_data" 29 30 /** ContentProvider path for search immutable status */ 31 const val SEARCH_IMMUTABLE_STATUS = "search_immutable_status" 32 33 /** ContentProvider path for search mutable status */ 34 const val SEARCH_MUTABLE_STATUS = "search_mutable_status" 35 36 /** ContentProvider path for search static row */ 37 const val SEARCH_STATIC_ROW = "search_static_row" 38 39 /** ContentProvider path for search dynamic row */ 40 const val SEARCH_DYNAMIC_ROW = "search_dynamic_row" 41 42 43 /** Enum to define all column names in provider. */ 44 enum class ColumnEnum(val id: String) { 45 ENTRY_ID("entryId"), 46 ENTRY_LABEL("entryLabel"), 47 SEARCH_TITLE("searchTitle"), 48 SEARCH_KEYWORD("searchKw"), 49 SEARCH_PATH("searchPath"), 50 INTENT_TARGET_PACKAGE("intentTargetPackage"), 51 INTENT_TARGET_CLASS("intentTargetClass"), 52 INTENT_EXTRAS("intentExtras"), 53 ENTRY_DISABLED("entryDisabled"), 54 } 55 56 /** Enum to define all queries supported in the provider. */ 57 @SuppressWarnings("Immutable") 58 enum class QueryEnum( 59 val queryPath: String, 60 val columnNames: List<ColumnEnum> 61 ) { 62 SEARCH_STATIC_DATA_QUERY( 63 SEARCH_STATIC_DATA, 64 listOf( 65 ColumnEnum.ENTRY_ID, 66 ColumnEnum.ENTRY_LABEL, 67 ColumnEnum.SEARCH_TITLE, 68 ColumnEnum.SEARCH_KEYWORD, 69 ColumnEnum.SEARCH_PATH, 70 ColumnEnum.INTENT_TARGET_PACKAGE, 71 ColumnEnum.INTENT_TARGET_CLASS, 72 ColumnEnum.INTENT_EXTRAS, 73 ) 74 ), 75 SEARCH_DYNAMIC_DATA_QUERY( 76 SEARCH_DYNAMIC_DATA, 77 listOf( 78 ColumnEnum.ENTRY_ID, 79 ColumnEnum.ENTRY_LABEL, 80 ColumnEnum.SEARCH_TITLE, 81 ColumnEnum.SEARCH_KEYWORD, 82 ColumnEnum.SEARCH_PATH, 83 ColumnEnum.INTENT_TARGET_PACKAGE, 84 ColumnEnum.INTENT_TARGET_CLASS, 85 ColumnEnum.INTENT_EXTRAS, 86 ) 87 ), 88 SEARCH_IMMUTABLE_STATUS_DATA_QUERY( 89 SEARCH_IMMUTABLE_STATUS, 90 listOf( 91 ColumnEnum.ENTRY_ID, 92 ColumnEnum.ENTRY_LABEL, 93 ColumnEnum.ENTRY_DISABLED, 94 ) 95 ), 96 SEARCH_MUTABLE_STATUS_DATA_QUERY( 97 SEARCH_MUTABLE_STATUS, 98 listOf( 99 ColumnEnum.ENTRY_ID, 100 ColumnEnum.ENTRY_LABEL, 101 ColumnEnum.ENTRY_DISABLED, 102 ) 103 ), 104 SEARCH_STATIC_ROW_QUERY( 105 SEARCH_STATIC_ROW, 106 listOf( 107 ColumnEnum.ENTRY_ID, 108 ColumnEnum.ENTRY_LABEL, 109 ColumnEnum.SEARCH_TITLE, 110 ColumnEnum.SEARCH_KEYWORD, 111 ColumnEnum.SEARCH_PATH, 112 ColumnEnum.INTENT_TARGET_PACKAGE, 113 ColumnEnum.INTENT_TARGET_CLASS, 114 ColumnEnum.INTENT_EXTRAS, 115 ColumnEnum.ENTRY_DISABLED, 116 ) 117 ), 118 SEARCH_DYNAMIC_ROW_QUERY( 119 SEARCH_DYNAMIC_ROW, 120 listOf( 121 ColumnEnum.ENTRY_ID, 122 ColumnEnum.ENTRY_LABEL, 123 ColumnEnum.SEARCH_TITLE, 124 ColumnEnum.SEARCH_KEYWORD, 125 ColumnEnum.SEARCH_PATH, 126 ColumnEnum.INTENT_TARGET_PACKAGE, 127 ColumnEnum.INTENT_TARGET_CLASS, 128 ColumnEnum.INTENT_EXTRAS, 129 ColumnEnum.ENTRY_DISABLED, 130 ) 131 ), 132 } 133