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 mHost 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 */ 14 15package com.android.systemui.qs.tileimpl; 16 17import android.content.Context; 18import android.util.Log; 19 20import com.android.systemui.plugins.qs.*; 21import com.android.systemui.plugins.qs.QSTileView; 22import com.android.systemui.qs.external.CustomTile; 23import com.android.systemui.qs.tiles.AirplaneModeTile; 24import com.android.systemui.qs.tiles.BatterySaverTile; 25import com.android.systemui.qs.tiles.BluetoothTile; 26import com.android.systemui.qs.tiles.CastTile; 27import com.android.systemui.qs.tiles.CellularTile; 28import com.android.systemui.qs.tiles.ColorInversionTile; 29import com.android.systemui.qs.tiles.DataSaverTile; 30import com.android.systemui.qs.tiles.DndTile; 31import com.android.systemui.qs.tiles.FlashlightTile; 32import com.android.systemui.qs.tiles.HotspotTile; 33import com.android.systemui.qs.tiles.IntentTile; 34import com.android.systemui.qs.tiles.LocationTile; 35import com.android.systemui.qs.tiles.NfcTile; 36import com.android.systemui.qs.tiles.NightDisplayTile; 37import com.android.systemui.qs.tiles.RotationLockTile; 38import com.android.systemui.qs.tiles.UserTile; 39import com.android.systemui.qs.tiles.WifiTile; 40import com.android.systemui.qs.tiles.WorkModeTile; 41import com.android.systemui.qs.QSTileHost; 42 43public class QSFactoryImpl implements QSFactory { 44 45 private static final String TAG = "QSFactory"; 46 private final QSTileHost mHost; 47 48 public QSFactoryImpl(QSTileHost host) { 49 mHost = host; 50 } 51 52 public QSTile createTile(String tileSpec) { 53 if (tileSpec.equals("wifi")) return new WifiTile(mHost); 54 else if (tileSpec.equals("bt")) return new BluetoothTile(mHost); 55 else if (tileSpec.equals("cell")) return new CellularTile(mHost); 56 else if (tileSpec.equals("dnd")) return new DndTile(mHost); 57 else if (tileSpec.equals("inversion")) return new ColorInversionTile(mHost); 58 else if (tileSpec.equals("airplane")) return new AirplaneModeTile(mHost); 59 else if (tileSpec.equals("work")) return new WorkModeTile(mHost); 60 else if (tileSpec.equals("rotation")) return new RotationLockTile(mHost); 61 else if (tileSpec.equals("flashlight")) return new FlashlightTile(mHost); 62 else if (tileSpec.equals("location")) return new LocationTile(mHost); 63 else if (tileSpec.equals("cast")) return new CastTile(mHost); 64 else if (tileSpec.equals("hotspot")) return new HotspotTile(mHost); 65 else if (tileSpec.equals("user")) return new UserTile(mHost); 66 else if (tileSpec.equals("battery")) return new BatterySaverTile(mHost); 67 else if (tileSpec.equals("saver")) return new DataSaverTile(mHost); 68 else if (tileSpec.equals("night")) return new NightDisplayTile(mHost); 69 else if (tileSpec.equals("nfc")) return new NfcTile(mHost); 70 // Intent tiles. 71 else if (tileSpec.startsWith(IntentTile.PREFIX)) return IntentTile.create(mHost, tileSpec); 72 else if (tileSpec.startsWith(CustomTile.PREFIX)) return CustomTile.create(mHost, tileSpec); 73 else { 74 Log.w(TAG, "Bad tile spec: " + tileSpec); 75 return null; 76 } 77 } 78 79 @Override 80 public QSTileView createTileView(QSTile tile, boolean collapsedView) { 81 Context context = mHost.getContext(); 82 QSIconView icon = tile.createTileView(context); 83 if (collapsedView) { 84 return new QSTileBaseView(context, icon, collapsedView); 85 } else { 86 return new com.android.systemui.qs.tileimpl.QSTileView(context, icon); 87 } 88 } 89} 90