CarQSFooter.java revision 715bdbcd424af1adc3f27b613951bb97970825bd
1/* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 * except in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the 10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11 * KIND, either express or implied. See the License for the specific language governing 12 * permissions and limitations under the License. 13 */ 14package com.android.systemui.qs.car; 15 16import android.content.Context; 17import android.content.Intent; 18import android.graphics.drawable.Drawable; 19import android.support.annotation.Nullable; 20import android.util.AttributeSet; 21import android.util.Log; 22import android.view.View; 23import android.widget.ImageView; 24import android.widget.RelativeLayout; 25import android.widget.TextView; 26 27import com.android.systemui.Dependency; 28import com.android.systemui.R; 29import com.android.systemui.plugins.ActivityStarter; 30import com.android.systemui.qs.QSFooter; 31import com.android.systemui.qs.QSPanel; 32import com.android.systemui.statusbar.car.UserGridView; 33import com.android.systemui.statusbar.phone.MultiUserSwitch; 34import com.android.systemui.statusbar.policy.DeviceProvisionedController; 35import com.android.systemui.statusbar.policy.UserInfoController; 36 37/** 38 * The footer view that displays below the status bar in the auto use-case. This view shows the 39 * user switcher and access to settings. 40 */ 41public class CarQSFooter extends RelativeLayout implements QSFooter, 42 UserInfoController.OnUserInfoChangedListener { 43 private static final String TAG = "CarQSFooter"; 44 45 private UserInfoController mUserInfoController; 46 47 private MultiUserSwitch mMultiUserSwitch; 48 private TextView mUserName; 49 private ImageView mMultiUserAvatar; 50 private CarQSFragment.UserSwitchCallback mUserSwitchCallback; 51 52 public CarQSFooter(Context context, AttributeSet attrs) { 53 super(context, attrs); 54 } 55 56 @Override 57 protected void onFinishInflate() { 58 super.onFinishInflate(); 59 mMultiUserSwitch = findViewById(R.id.multi_user_switch); 60 mMultiUserAvatar = mMultiUserSwitch.findViewById(R.id.multi_user_avatar); 61 mUserName = findViewById(R.id.user_name); 62 63 mUserInfoController = Dependency.get(UserInfoController.class); 64 65 mMultiUserSwitch.setOnClickListener(v -> { 66 if (mUserSwitchCallback == null) { 67 Log.e(TAG, "CarQSFooter not properly set up; cannot display user switcher."); 68 return; 69 } 70 71 if (!mUserSwitchCallback.isShowing()) { 72 mUserSwitchCallback.show(); 73 } else { 74 mUserSwitchCallback.hide(); 75 } 76 }); 77 78 findViewById(R.id.settings_button).setOnClickListener(v -> { 79 ActivityStarter activityStarter = Dependency.get(ActivityStarter.class); 80 81 if (!Dependency.get(DeviceProvisionedController.class).isCurrentUserSetup()) { 82 // If user isn't setup just unlock the device and dump them back at SUW. 83 activityStarter.postQSRunnableDismissingKeyguard(() -> { }); 84 return; 85 } 86 87 activityStarter.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS), 88 true /* dismissShade */); 89 }); 90 } 91 92 @Override 93 public void onUserInfoChanged(String name, Drawable picture, String userAccount) { 94 mMultiUserAvatar.setImageDrawable(picture); 95 mUserName.setText(name); 96 } 97 98 @Override 99 public void setQSPanel(@Nullable QSPanel panel) { 100 if (panel != null) { 101 mMultiUserSwitch.setQsPanel(panel); 102 } 103 } 104 105 public void setUserSwitchCallback(CarQSFragment.UserSwitchCallback callback) { 106 mUserSwitchCallback = callback; 107 } 108 109 @Override 110 public void setListening(boolean listening) { 111 if (listening) { 112 mUserInfoController.addCallback(this); 113 } else { 114 mUserInfoController.removeCallback(this); 115 } 116 } 117 118 @Nullable 119 @Override 120 public View getExpandView() { 121 // No view that should expand/collapse the quick settings. 122 return null; 123 } 124 125 @Override 126 public void setExpanded(boolean expanded) { 127 // Do nothing because the quick settings cannot be expanded. 128 } 129 130 @Override 131 public void setExpansion(float expansion) { 132 // Do nothing because the quick settings cannot be expanded. 133 } 134 135 @Override 136 public void setKeyguardShowing(boolean keyguardShowing) { 137 // Do nothing because the footer will not be shown when the keyguard is up. 138 } 139} 140