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