blob: 11fcaffb706931f18f1226b543b3948b3ddfb36a [file] [log] [blame]
Fan Zhang98289a82017-05-18 15:11:01 -07001/*
2 * Copyright (C) 2017 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
17package com.android.settings.accounts;
18
Fan Zhang50eb81f2017-08-02 10:47:37 -070019import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_ACCOUNT;
20import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_USER_HANDLE;
21
Fan Zhang98289a82017-05-18 15:11:01 -070022import android.accounts.Account;
23import android.app.Activity;
Fan Zhang98289a82017-05-18 15:11:01 -070024import android.content.Context;
25import android.os.Bundle;
26import android.os.UserHandle;
Fan Zhang98289a82017-05-18 15:11:01 -070027
Fan Zhang23f8d592018-08-28 15:11:40 -070028import androidx.preference.PreferenceFragmentCompat;
29import androidx.preference.PreferenceScreen;
30
Fan Zhang98289a82017-05-18 15:11:01 -070031import com.android.settings.R;
Tony Mantler1d583e12017-06-13 13:09:25 -070032import com.android.settings.core.PreferenceControllerMixin;
Fan Zhang98289a82017-05-18 15:11:01 -070033import com.android.settings.widget.EntityHeaderController;
34import com.android.settingslib.accounts.AuthenticatorHelper;
Tony Mantler1d583e12017-06-13 13:09:25 -070035import com.android.settingslib.core.AbstractPreferenceController;
Fan Zhang841d1d52017-05-22 09:50:38 -070036import com.android.settingslib.core.lifecycle.Lifecycle;
Fan Zhang50eb81f2017-08-02 10:47:37 -070037import com.android.settingslib.core.lifecycle.LifecycleObserver;
38import com.android.settingslib.core.lifecycle.events.OnResume;
tmfangdce94bb2018-11-26 18:41:01 +080039import com.android.settingslib.widget.LayoutPreference;
Fan Zhang98289a82017-05-18 15:11:01 -070040
Tony Mantler1d583e12017-06-13 13:09:25 -070041public class AccountHeaderPreferenceController extends AbstractPreferenceController
Fan Zhang50eb81f2017-08-02 10:47:37 -070042 implements PreferenceControllerMixin, LifecycleObserver, OnResume {
Fan Zhang98289a82017-05-18 15:11:01 -070043
44 private static final String KEY_ACCOUNT_HEADER = "account_header";
45
46 private final Activity mActivity;
tmfang27c84de2018-06-28 11:39:05 +080047 private final PreferenceFragmentCompat mHost;
Fan Zhang98289a82017-05-18 15:11:01 -070048 private final Account mAccount;
49 private final UserHandle mUserHandle;
Fan Zhang50eb81f2017-08-02 10:47:37 -070050
51 private LayoutPreference mHeaderPreference;
Fan Zhang98289a82017-05-18 15:11:01 -070052
Fan Zhang841d1d52017-05-22 09:50:38 -070053 public AccountHeaderPreferenceController(Context context, Lifecycle lifecycle,
tmfang27c84de2018-06-28 11:39:05 +080054 Activity activity, PreferenceFragmentCompat host, Bundle args) {
Fan Zhang98289a82017-05-18 15:11:01 -070055 super(context);
56 mActivity = activity;
57 mHost = host;
58 if (args != null && args.containsKey(KEY_ACCOUNT)) {
59 mAccount = args.getParcelable(KEY_ACCOUNT);
60 } else {
61 mAccount = null;
62 }
63
64 if (args != null && args.containsKey(KEY_USER_HANDLE)) {
65 mUserHandle = args.getParcelable(KEY_USER_HANDLE);
66 } else {
67 mUserHandle = null;
68 }
Fan Zhang50eb81f2017-08-02 10:47:37 -070069 if (lifecycle != null) {
70 lifecycle.addObserver(this);
71 }
Fan Zhang98289a82017-05-18 15:11:01 -070072 }
73
74 @Override
75 public boolean isAvailable() {
76 return mAccount != null && mUserHandle != null;
77 }
78
79 @Override
80 public String getPreferenceKey() {
81 return KEY_ACCOUNT_HEADER;
82 }
83
84 @Override
85 public void displayPreference(PreferenceScreen screen) {
86 super.displayPreference(screen);
Fan Zhang7db118e2019-02-14 12:25:29 -080087 mHeaderPreference = screen.findPreference(KEY_ACCOUNT_HEADER);
Fan Zhang50eb81f2017-08-02 10:47:37 -070088 }
Fan Zhang98289a82017-05-18 15:11:01 -070089
Fan Zhang50eb81f2017-08-02 10:47:37 -070090 @Override
91 public void onResume() {
Fan Zhang98289a82017-05-18 15:11:01 -070092 final AuthenticatorHelper helper = new AuthenticatorHelper(mContext, mUserHandle, null);
93
94 EntityHeaderController
Fan Zhang50eb81f2017-08-02 10:47:37 -070095 .newInstance(mActivity, mHost, mHeaderPreference.findViewById(R.id.entity_header))
Fan Zhang98289a82017-05-18 15:11:01 -070096 .setLabel(mAccount.name)
97 .setIcon(helper.getDrawableForType(mContext, mAccount.type))
98 .done(mActivity, true /* rebindButtons */);
99 }
100}