import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
+import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserHandle;
import android.view.MenuItem;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
+import android.provider.SearchIndexableResource;
import android.preference.PreferenceGroup;
-import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
import com.android.internal.logging.MetricsLogger;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Index;
+import com.android.settings.search.Indexable;
+import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.users.UserDialogs;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
*/
public class AccountSettings extends SettingsPreferenceFragment
implements AuthenticatorHelper.OnAccountsUpdateListener,
- OnPreferenceClickListener {
+ OnPreferenceClickListener, Indexable {
public static final String TAG = "AccountSettings";
private static final String KEY_ACCOUNT = "account";
}
}
mProfiles.put(userInfo.id, profileData);
+ Index.getInstance(getActivity()).updateFromClassNameResource(
+ AccountSettings.class.getName(), true, true);
}
private Preference newAddAccountPreference(Context context) {
outState.putParcelable(SAVE_USER_HANDLE, mUserHandle);
}
}
- // TODO Implement a {@link SearchIndexProvider} to allow Indexing and Search of account types
- // See http://b/15403806
+
+ public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.account_settings;
+ return Arrays.asList(sir);
+ }
+
+ @Override
+ public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
+ final List<SearchIndexableRaw> result = new ArrayList<SearchIndexableRaw>();
+ final Resources res = context.getResources();
+ final String screenTitle = res.getString(R.string.account_settings_title);
+
+ final UserManager um = UserManager.get(context);
+ List<UserInfo> profiles = um.getProfiles(UserHandle.myUserId());
+ final int profilesCount = profiles.size();
+ for (int i = 0; i < profilesCount; i++) {
+ UserInfo userInfo = profiles.get(i);
+ if (userInfo.isEnabled()) {
+ if (!um.hasUserRestriction(
+ DISALLOW_MODIFY_ACCOUNTS, userInfo.getUserHandle())) {
+ SearchIndexableRaw data = new SearchIndexableRaw(context);
+ data = new SearchIndexableRaw(context);
+ data.title = res.getString(R.string.add_account_label);
+ data.screenTitle = screenTitle;
+ result.add(data);
+ }
+ if (userInfo.isManagedProfile()) {
+ SearchIndexableRaw data = new SearchIndexableRaw(context);
+ data = new SearchIndexableRaw(context);
+ data.title = res.getString(R.string.remove_managed_profile_label);
+ data.screenTitle = screenTitle;
+ result.add(data);
+ }
+ }
+ }
+ return result;
+ }
+ };
}
import com.android.settings.WifiCallingSettings;
import com.android.settings.WirelessSettings;
import com.android.settings.accessibility.AccessibilitySettings;
+import com.android.settings.accounts.AccountSettings;
import com.android.settings.applications.AdvancedAppSettings;
import com.android.settings.applications.ManageDefaultApps;
import com.android.settings.bluetooth.BluetoothSettings;
public static final int RANK_USERS = 13;
public static final int RANK_LOCATION = 14;
public static final int RANK_SECURITY = 15;
- public static final int RANK_IME = 16;
- public static final int RANK_PRIVACY = 17;
- public static final int RANK_DATE_TIME = 18;
- public static final int RANK_ACCESSIBILITY = 19;
- public static final int RANK_PRINTING = 20;
- public static final int RANK_DEVELOPEMENT = 21;
- public static final int RANK_DEVICE_INFO = 22;
+ public static final int RANK_ACCOUNT = 16;
+ public static final int RANK_IME = 17;
+ public static final int RANK_PRIVACY = 18;
+ public static final int RANK_DATE_TIME = 19;
+ public static final int RANK_ACCESSIBILITY = 20;
+ public static final int RANK_PRINTING = 21;
+ public static final int RANK_DEVELOPEMENT = 22;
+ public static final int RANK_DEVICE_INFO = 23;
public static final int RANK_UNDEFINED = -1;
public static final int RANK_OTHERS = 1024;
sRankMap.put(ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), RANK_SECURITY);
sRankMap.put(ScreenPinningSettings.class.getName(), RANK_SECURITY);
+ // Accounts
+ sRankMap.put(AccountSettings.class.getName(), RANK_ACCOUNT);
+
// IMEs
sRankMap.put(InputMethodAndLanguageSettings.class.getName(), RANK_IME);
import com.android.settings.WifiCallingSettings;
import com.android.settings.WirelessSettings;
import com.android.settings.accessibility.AccessibilitySettings;
+import com.android.settings.accounts.AccountSettings;
import com.android.settings.applications.AdvancedAppSettings;
import com.android.settings.applications.ManageDefaultApps;
import com.android.settings.bluetooth.BluetoothSettings;
ScreenPinningSettings.class.getName(),
R.drawable.ic_settings_security));
+ sResMap.put(AccountSettings.class.getName(),
+ new SearchIndexableResource(
+ Ranking.getRankForClassName(AccountSettings.class.getName()),
+ NO_DATA_RES_ID,
+ AccountSettings.class.getName(),
+ R.drawable.ic_settings_accounts));
+
sResMap.put(InputMethodAndLanguageSettings.class.getName(),
new SearchIndexableResource(
Ranking.getRankForClassName(InputMethodAndLanguageSettings.class.getName()),