blob: 7b50b46ae53f9076100c64e2bddcfdcd12545094 [file] [log] [blame]
Doris Lingd7aae182016-10-21 11:33:54 -07001/*
2 * Copyright (C) 2016 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 */
16package com.android.settings.accounts;
17
Tony Mantler1d583e12017-06-13 13:09:25 -070018import static android.provider.Settings.EXTRA_AUTHORITIES;
19
Stanley Wang3b028102019-12-18 18:29:56 +080020import android.accounts.Account;
21import android.accounts.AccountManager;
Fan Zhang31b21002019-01-16 13:49:47 -080022import android.app.settings.SettingsEnums;
Doris Lingd7aae182016-10-21 11:33:54 -070023import android.content.Context;
Stanley Wang3b028102019-12-18 18:29:56 +080024import android.content.pm.UserInfo;
25import android.os.UserHandle;
26import android.os.UserManager;
Fan Zhang6e886352016-12-05 14:42:49 -080027
Doris Lingd7aae182016-10-21 11:33:54 -070028import com.android.settings.R;
Fan Zhang3f343352018-06-04 14:27:14 -070029import com.android.settings.SettingsPreferenceFragment;
Doris Lingd7aae182016-10-21 11:33:54 -070030import com.android.settings.dashboard.DashboardFragment;
Raff Tsai65866292019-10-05 09:32:19 +080031import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
Fan Zhang6e886352016-12-05 14:42:49 -080032import com.android.settings.search.BaseSearchIndexProvider;
Fan Zhangad47e1a2018-03-07 15:42:53 -080033import com.android.settings.users.AutoSyncDataPreferenceController;
34import com.android.settings.users.AutoSyncPersonalDataPreferenceController;
35import com.android.settings.users.AutoSyncWorkDataPreferenceController;
Tony Mantler1d583e12017-06-13 13:09:25 -070036import com.android.settingslib.core.AbstractPreferenceController;
Tony Mantler0fcd6cb2018-03-26 15:17:25 -070037import com.android.settingslib.search.SearchIndexable;
Stanley Wang8015cba2019-11-27 10:39:59 +080038import com.android.settingslib.search.SearchIndexableRaw;
Fan Zhang6e886352016-12-05 14:42:49 -080039
Doris Lingc7e2ed82016-10-27 13:09:16 -070040import java.util.ArrayList;
Doris Lingd7aae182016-10-21 11:33:54 -070041import java.util.List;
42
Tony Mantler0fcd6cb2018-03-26 15:17:25 -070043@SearchIndexable
Fan Zhang881d5792018-01-26 10:15:56 -080044public class AccountDashboardFragment extends DashboardFragment {
Doris Lingd7aae182016-10-21 11:33:54 -070045
Fan Zhang881d5792018-01-26 10:15:56 -080046 private static final String TAG = "AccountDashboardFrag";
47
Doris Lingd7aae182016-10-21 11:33:54 -070048
49 @Override
50 public int getMetricsCategory() {
Fan Zhang31b21002019-01-16 13:49:47 -080051 return SettingsEnums.ACCOUNT;
Doris Lingd7aae182016-10-21 11:33:54 -070052 }
53
54 @Override
Doris Lingd7aae182016-10-21 11:33:54 -070055 protected String getLogTag() {
56 return TAG;
57 }
58
59 @Override
60 protected int getPreferenceScreenResId() {
Raff Tsai966fa012019-09-25 11:19:06 +080061 return R.xml.accounts_dashboard_settings;
Doris Lingd7aae182016-10-21 11:33:54 -070062 }
63
64 @Override
Fan Zhange0b0e9f2017-11-29 14:55:59 -080065 public int getHelpResource() {
Fan Zhang179645e2017-06-05 13:13:42 -070066 return R.string.help_url_user_and_account_dashboard;
67 }
68
69 @Override
Fan Zhangf7843ad2018-02-22 13:51:41 -080070 protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
Fan Zhang881d5792018-01-26 10:15:56 -080071 final String[] authorities = getIntent().getStringArrayExtra(EXTRA_AUTHORITIES);
Fan Zhang3f343352018-06-04 14:27:14 -070072 return buildPreferenceControllers(context, this /* parent */, authorities);
73 }
74
75 private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
76 SettingsPreferenceFragment parent, String[] authorities) {
77 final List<AbstractPreferenceController> controllers = new ArrayList<>();
78
Doris Lingbfac31b2016-11-10 15:12:52 -080079 final AccountPreferenceController accountPrefController =
Raff Tsai65866292019-10-05 09:32:19 +080080 new AccountPreferenceController(context, parent, authorities,
Raff Tsai1e5d8142019-12-12 11:45:41 +080081 ProfileSelectFragment.ProfileType.ALL);
Fan Zhang3f343352018-06-04 14:27:14 -070082 if (parent != null) {
tmfang27c84de2018-06-28 11:39:05 +080083 parent.getSettingsLifecycle().addObserver(accountPrefController);
Fan Zhang3f343352018-06-04 14:27:14 -070084 }
Doris Lingbfac31b2016-11-10 15:12:52 -080085 controllers.add(accountPrefController);
Fan Zhang3f343352018-06-04 14:27:14 -070086 controllers.add(new AutoSyncDataPreferenceController(context, parent));
87 controllers.add(new AutoSyncPersonalDataPreferenceController(context, parent));
88 controllers.add(new AutoSyncWorkDataPreferenceController(context, parent));
Doris Lingc7e2ed82016-10-27 13:09:16 -070089 return controllers;
Doris Lingd7aae182016-10-21 11:33:54 -070090 }
91
Raff Tsaiac3e0d02019-09-19 17:06:45 +080092 public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
93 new BaseSearchIndexProvider(R.xml.accounts_dashboard_settings) {
Fan Zhang3f343352018-06-04 14:27:14 -070094
95 @Override
96 public List<AbstractPreferenceController> createPreferenceControllers(
97 Context context) {
98 return buildPreferenceControllers(
99 context, null /* parent */, null /* authorities*/);
100 }
Stanley Wang8015cba2019-11-27 10:39:59 +0800101
102 @Override
103 public List<SearchIndexableRaw> getDynamicRawDataToIndex(Context context,
104 boolean enabled) {
Stanley Wang3b028102019-12-18 18:29:56 +0800105 final List<SearchIndexableRaw> indexRaws = new ArrayList<>();
106 final UserManager userManager = (UserManager) context.getSystemService(
107 Context.USER_SERVICE);
108 final List<UserInfo> profiles = userManager.getProfiles(UserHandle.myUserId());
109 for (final UserInfo userInfo : profiles) {
110 if (userInfo.isManagedProfile()) {
111 return indexRaws;
112 }
113 }
114
115 final AccountManager accountManager = AccountManager.get(context);
116 final Account[] accounts = accountManager.getAccounts();
117 for (Account account : accounts) {
118 final SearchIndexableRaw raw = new SearchIndexableRaw(context);
119 raw.key = AccountTypePreference.buildKey(account);
120 raw.title = account.name;
121 indexRaws.add(raw);
122 }
123
124 return indexRaws;
Stanley Wang8015cba2019-11-27 10:39:59 +0800125 }
Fan Zhang6e886352016-12-05 14:42:49 -0800126 };
Stanley Wang8015cba2019-11-27 10:39:59 +0800127}