1/* 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 */ 16 17package com.android.systemui; 18 19import android.content.Context; 20import android.util.ArrayMap; 21import android.util.Log; 22import android.view.View; 23import android.view.ViewGroup; 24 25import com.android.internal.widget.LockPatternUtils; 26import com.android.keyguard.ViewMediatorCallback; 27import com.android.systemui.Dependency.DependencyProvider; 28import com.android.systemui.keyguard.DismissCallbackRegistry; 29import com.android.systemui.statusbar.KeyguardIndicationController; 30import com.android.systemui.statusbar.ScrimView; 31import com.android.systemui.statusbar.phone.KeyguardBouncer; 32import com.android.systemui.statusbar.phone.LightBarController; 33import com.android.systemui.statusbar.phone.LockIcon; 34import com.android.systemui.statusbar.phone.LockscreenWallpaper; 35import com.android.systemui.statusbar.phone.NotificationIconAreaController; 36import com.android.systemui.statusbar.phone.StatusBar; 37import com.android.systemui.qs.QSTileHost; 38import com.android.systemui.statusbar.phone.ScrimController; 39import com.android.systemui.statusbar.phone.StatusBarIconController; 40import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; 41import com.android.systemui.volume.VolumeDialogControllerImpl; 42 43/** 44 * Class factory to provide customizable SystemUI components. 45 */ 46public class SystemUIFactory { 47 private static final String TAG = "SystemUIFactory"; 48 49 static SystemUIFactory mFactory; 50 51 public static SystemUIFactory getInstance() { 52 return mFactory; 53 } 54 55 public static void createFromConfig(Context context) { 56 final String clsName = context.getString(R.string.config_systemUIFactoryComponent); 57 if (clsName == null || clsName.length() == 0) { 58 throw new RuntimeException("No SystemUIFactory component configured"); 59 } 60 61 try { 62 Class<?> cls = null; 63 cls = context.getClassLoader().loadClass(clsName); 64 mFactory = (SystemUIFactory) cls.newInstance(); 65 } catch (Throwable t) { 66 Log.w(TAG, "Error creating SystemUIFactory component: " + clsName, t); 67 throw new RuntimeException(t); 68 } 69 } 70 71 public SystemUIFactory() {} 72 73 public StatusBarKeyguardViewManager createStatusBarKeyguardViewManager(Context context, 74 ViewMediatorCallback viewMediatorCallback, LockPatternUtils lockPatternUtils) { 75 return new StatusBarKeyguardViewManager(context, viewMediatorCallback, lockPatternUtils); 76 } 77 78 public KeyguardBouncer createKeyguardBouncer(Context context, ViewMediatorCallback callback, 79 LockPatternUtils lockPatternUtils, 80 ViewGroup container, DismissCallbackRegistry dismissCallbackRegistry) { 81 return new KeyguardBouncer(context, callback, lockPatternUtils, container, 82 dismissCallbackRegistry); 83 } 84 85 public ScrimController createScrimController(LightBarController lightBarController, 86 ScrimView scrimBehind, ScrimView scrimInFront, View headsUpScrim, 87 LockscreenWallpaper lockscreenWallpaper) { 88 return new ScrimController(lightBarController, scrimBehind, scrimInFront, headsUpScrim); 89 } 90 91 public NotificationIconAreaController createNotificationIconAreaController(Context context, 92 StatusBar statusBar) { 93 return new NotificationIconAreaController(context, statusBar); 94 } 95 96 public KeyguardIndicationController createKeyguardIndicationController(Context context, 97 ViewGroup indicationArea, LockIcon lockIcon) { 98 return new KeyguardIndicationController(context, indicationArea, lockIcon); 99 } 100 101 public QSTileHost createQSTileHost(Context context, StatusBar statusBar, 102 StatusBarIconController iconController) { 103 return new QSTileHost(context, statusBar, iconController); 104 } 105 106 public <T> T createInstance(Class<T> classType) { 107 return null; 108 } 109 110 public void injectDependencies(ArrayMap<Object, DependencyProvider> providers, 111 Context context) { } 112} 113