1e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi/* 2e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * Copyright (C) 2014 The Android Open Source Project 3e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * 4e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License"); 5e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * you may not use this file except in compliance with the License. 6e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * You may obtain a copy of the License at 7e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * 8e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * http://www.apache.org/licenses/LICENSE-2.0 9e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * 10e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * Unless required by applicable law or agreed to in writing, software 11e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS, 12e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * See the License for the specific language governing permissions and 14e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * limitations under the License 15e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi */ 16e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 17e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggipackage com.android.systemui.statusbar.phone; 18e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 19e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggiimport android.content.Context; 202fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggiimport android.text.TextUtils; 21e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggiimport android.util.AttributeSet; 222fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggiimport android.view.View; 23e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggiimport android.widget.TextView; 24e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 25e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi/** 26e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * A view to show hints on Keyguard ("Swipe up to unlock", "Tap again to open"). 27e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi */ 28e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggipublic class KeyguardIndicationTextView extends TextView { 29e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 30e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi public KeyguardIndicationTextView(Context context) { 31e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi super(context); 32e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi } 33e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 34e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi public KeyguardIndicationTextView(Context context, AttributeSet attrs) { 35e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi super(context, attrs); 36e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi } 37e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 38e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi public KeyguardIndicationTextView(Context context, AttributeSet attrs, int defStyleAttr) { 39e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi super(context, attrs, defStyleAttr); 40e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi } 41e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 42e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi public KeyguardIndicationTextView(Context context, AttributeSet attrs, int defStyleAttr, 43e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi int defStyleRes) { 44e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi super(context, attrs, defStyleAttr, defStyleRes); 45e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi } 46e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 47e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi /** 48e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * Changes the text with an animation and makes sure a single indication is shown long enough. 49e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * 50e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * @param text The text to show. 51e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi */ 52e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi public void switchIndication(CharSequence text) { 53e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 54e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi // TODO: Animation, make sure that we will show one indication long enough. 552fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi if (TextUtils.isEmpty(text)) { 562fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi setVisibility(View.INVISIBLE); 572fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi } else { 582fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi setVisibility(View.VISIBLE); 592fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi setText(text); 602fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi } 61e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi } 62e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi 63e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi /** 64e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi * See {@link #switchIndication}. 65e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi */ 66e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi public void switchIndication(int textResId) { 67e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi switchIndication(getResources().getText(textResId)); 68e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi } 69e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi} 70