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