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