KeyguardStatusView.java revision b0da1e70ad8284f3ede2ffe650504152c7a49442
1/* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.keyguard; 18 19import android.content.Context; 20import android.content.res.Resources; 21import android.graphics.Typeface; 22import android.text.TextUtils; 23import android.util.AttributeSet; 24import android.util.Slog; 25import android.view.View; 26import android.widget.GridLayout; 27import android.widget.TextView; 28 29import com.android.internal.widget.LockPatternUtils; 30 31import java.text.SimpleDateFormat; 32import java.util.Date; 33import java.util.Locale; 34 35import libcore.icu.ICU; 36 37public class KeyguardStatusView extends GridLayout { 38 private static final boolean DEBUG = KeyguardViewMediator.DEBUG; 39 private static final String TAG = "KeyguardStatusView"; 40 41 private LockPatternUtils mLockPatternUtils; 42 43 private TextView mAlarmStatusView; 44 45 private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() { 46 47 @Override 48 public void onTimeChanged() { 49 refresh(); 50 } 51 52 @Override 53 void onKeyguardVisibilityChanged(boolean showing) { 54 if (showing) { 55 if (DEBUG) Slog.v(TAG, "refresh statusview showing:" + showing); 56 refresh(); 57 } 58 }; 59 }; 60 61 public KeyguardStatusView(Context context) { 62 this(context, null, 0); 63 } 64 65 public KeyguardStatusView(Context context, AttributeSet attrs) { 66 this(context, attrs, 0); 67 } 68 69 public KeyguardStatusView(Context context, AttributeSet attrs, int defStyle) { 70 super(context, attrs, defStyle); 71 } 72 73 @Override 74 protected void onFinishInflate() { 75 super.onFinishInflate(); 76 77 mAlarmStatusView = (TextView) findViewById(R.id.alarm_status); 78 mLockPatternUtils = new LockPatternUtils(getContext()); 79 80 // Required to get Marquee to work. 81 final View marqueeViews[] = { mAlarmStatusView }; 82 for (int i = 0; i < marqueeViews.length; i++) { 83 View v = marqueeViews[i]; 84 if (v == null) { 85 throw new RuntimeException("Can't find widget at index " + i); 86 } 87 v.setSelected(true); 88 } 89 refresh(); 90 } 91 92 protected void refresh() { 93 refreshAlarmStatus(); // might as well 94 } 95 96 void refreshAlarmStatus() { 97 // Update Alarm status 98 String nextAlarm = mLockPatternUtils.getNextAlarm(); 99 if (!TextUtils.isEmpty(nextAlarm)) { 100 mAlarmStatusView.setText(nextAlarm); 101 mAlarmStatusView.setVisibility(View.VISIBLE); 102 } else { 103 mAlarmStatusView.setVisibility(View.GONE); 104 } 105 } 106 107 @Override 108 protected void onAttachedToWindow() { 109 super.onAttachedToWindow(); 110 KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mInfoCallback); 111 } 112 113 @Override 114 protected void onDetachedFromWindow() { 115 super.onDetachedFromWindow(); 116 KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mInfoCallback); 117 } 118 119 public int getAppWidgetId() { 120 return LockPatternUtils.ID_DEFAULT_STATUS_WIDGET; 121 } 122 123} 124