FlashlightTile.java revision b83777ba5c12295224cd566bba59a44b8860e449
1b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos/*
2b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * Copyright (C) 2014 The Android Open Source Project
3b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos *
4b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * Licensed under the Apache License, Version 2.0 (the "License");
5b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * you may not use this file except in compliance with the License.
6b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * You may obtain a copy of the License at
7b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos *
8b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos *      http://www.apache.org/licenses/LICENSE-2.0
9b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos *
10b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * Unless required by applicable law or agreed to in writing, software
11b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * distributed under the License is distributed on an "AS IS" BASIS,
12b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * See the License for the specific language governing permissions and
14b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos * limitations under the License
15b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos */
16b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
17b83777ba5c12295224cd566bba59a44b8860e449Adrian Roospackage com.android.systemui.qs.tiles;
18b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
19b83777ba5c12295224cd566bba59a44b8860e449Adrian Roosimport com.android.systemui.R;
20b83777ba5c12295224cd566bba59a44b8860e449Adrian Roosimport com.android.systemui.qs.QSTile;
21b83777ba5c12295224cd566bba59a44b8860e449Adrian Roosimport com.android.systemui.qs.SecureSetting;
22b83777ba5c12295224cd566bba59a44b8860e449Adrian Roosimport com.android.systemui.statusbar.policy.FlashlightController;
23b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
24b83777ba5c12295224cd566bba59a44b8860e449Adrian Roosimport android.os.Handler;
25b83777ba5c12295224cd566bba59a44b8860e449Adrian Roosimport android.os.Looper;
26b83777ba5c12295224cd566bba59a44b8860e449Adrian Roosimport android.provider.Settings.Secure;
27b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
28b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos/** Quick settings tile: Control flashlight **/
29b83777ba5c12295224cd566bba59a44b8860e449Adrian Roospublic class FlashlightTile extends QSTile<QSTile.BooleanState> implements
30b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        FlashlightController.FlashlightListener {
31b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
32b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    private final FlashlightController mFlashlightController;
33b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
34b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    public FlashlightTile(Host host) {
35b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        super(host);
36b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        mFlashlightController = host.getFlashlightController();
37b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        mFlashlightController.addListener(this);
38b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    }
39b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
40b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    @Override
41b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    protected BooleanState newTileState() {
42b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        return new BooleanState();
43b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    }
44b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
45b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    @Override
46b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    public void setListening(boolean listening) {
47b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    }
48b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
49b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    @Override
50b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    protected void handleUserSwitch(int newUserId) {
51b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    }
52b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
53b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    @Override
54b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    protected void handleClick() {
55b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        boolean newState = !mState.value;
56b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        mFlashlightController.setFlashlight(newState);
57b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        refreshState(newState);
58b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    }
59b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
60b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    @Override
61b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    protected void handleUpdateState(BooleanState state, Object arg) {
62b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        if (arg instanceof Boolean) {
63b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos            state.value = (Boolean) arg;
64b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        }
65b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        state.visible = mFlashlightController.isAvailable();
66b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        state.label = mHost.getContext().getString(R.string.quick_settings_flashlight_label);
67b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        state.iconId = state.value
68b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos                ? R.drawable.ic_qs_flashlight_on : R.drawable.ic_qs_flashlight_off;
69b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    }
70b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
71b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    @Override
72b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    public void onFlashlightOff() {
73b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        refreshState(false);
74b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    }
75b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos
76b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    @Override
77b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    public void onFlashlightError() {
78b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos        refreshState(false);
79b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos    }
80b83777ba5c12295224cd566bba59a44b8860e449Adrian Roos}
81