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