1702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk/* 2702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * Copyright (C) 2017 The Android Open Source Project 3702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * 4702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * Licensed under the Apache License, Version 2.0 (the "License"); you may not use mHost file 5702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * except in compliance with the License. You may obtain a copy of the License at 6702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * 7702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * http://www.apache.org/licenses/LICENSE-2.0 8702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * 9702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * Unless required by applicable law or agreed to in writing, software distributed under the 10702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * KIND, either express or implied. See the License for the specific language governing 12702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk * permissions and limitations under the License. 13702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk */ 14702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk 15702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkpackage com.android.systemui.qs.tileimpl; 16702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk 17702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport android.content.Context; 18702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport android.util.Log; 19702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk 20702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.plugins.qs.*; 21702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.plugins.qs.QSTileView; 22702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.external.CustomTile; 23702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.AirplaneModeTile; 24702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.BatterySaverTile; 25702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.BluetoothTile; 26702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.CastTile; 27702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.CellularTile; 28702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.ColorInversionTile; 29702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.DataSaverTile; 30702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.DndTile; 31702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.FlashlightTile; 32702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.HotspotTile; 33702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.IntentTile; 34702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.LocationTile; 35702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.NfcTile; 36702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.NightDisplayTile; 37702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.RotationLockTile; 38702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.UserTile; 39702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.WifiTile; 40702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkimport com.android.systemui.qs.tiles.WorkModeTile; 41e5b770e47d44a40d412c7d42010b2cf67920d9e3Jason Monkimport com.android.systemui.qs.QSTileHost; 42702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk 43702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monkpublic class QSFactoryImpl implements QSFactory { 44702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk 45702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk private static final String TAG = "QSFactory"; 46702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk private final QSTileHost mHost; 47702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk 48702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk public QSFactoryImpl(QSTileHost host) { 49702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk mHost = host; 50702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk } 51702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk 52702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk public QSTile createTile(String tileSpec) { 53702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk if (tileSpec.equals("wifi")) return new WifiTile(mHost); 54702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("bt")) return new BluetoothTile(mHost); 55702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("cell")) return new CellularTile(mHost); 56702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("dnd")) return new DndTile(mHost); 57702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("inversion")) return new ColorInversionTile(mHost); 58702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("airplane")) return new AirplaneModeTile(mHost); 59702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("work")) return new WorkModeTile(mHost); 60702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("rotation")) return new RotationLockTile(mHost); 61702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("flashlight")) return new FlashlightTile(mHost); 62702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("location")) return new LocationTile(mHost); 63702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("cast")) return new CastTile(mHost); 64702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("hotspot")) return new HotspotTile(mHost); 65702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("user")) return new UserTile(mHost); 66702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("battery")) return new BatterySaverTile(mHost); 67702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("saver")) return new DataSaverTile(mHost); 68702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("night")) return new NightDisplayTile(mHost); 69702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.equals("nfc")) return new NfcTile(mHost); 70702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk // Intent tiles. 71702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.startsWith(IntentTile.PREFIX)) return IntentTile.create(mHost, tileSpec); 72702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else if (tileSpec.startsWith(CustomTile.PREFIX)) return CustomTile.create(mHost, tileSpec); 73702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk else { 74702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk Log.w(TAG, "Bad tile spec: " + tileSpec); 75702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk return null; 76702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk } 77702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk } 78702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk 79702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk @Override 80702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk public QSTileView createTileView(QSTile tile, boolean collapsedView) { 81702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk Context context = mHost.getContext(); 82702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk QSIconView icon = tile.createTileView(context); 83702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk if (collapsedView) { 84702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk return new QSTileBaseView(context, icon, collapsedView); 85702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk } else { 86702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk return new com.android.systemui.qs.tileimpl.QSTileView(context, icon); 87702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk } 88702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk } 89702e2ebf9fbfb715c1d9b716683c9e4d182b575eJason Monk} 90