Skip to content

Commit edc74ab

Browse files
author
Jim Miller
committed
Implement fallback clock in keyguard
This clock is shown if widgets are ever disabled by DPM and the default clock package is not enabled. Fixes bug 7469367 Change-Id: I8cf140c0fc00dd56265e3a332aff2fe3b41e3ec0
1 parent c717d11 commit edc74ab

File tree

6 files changed

+105
-455
lines changed

6 files changed

+105
-455
lines changed

core/res/res/layout-land/keyguard_status_area.xml

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -53,43 +53,4 @@
5353
android:drawablePadding="4dip"
5454
/>
5555

56-
<TextView
57-
android:id="@+id/owner_info"
58-
android:layout_width="wrap_content"
59-
android:layout_height="wrap_content"
60-
android:layout_gravity="end"
61-
android:layout_marginTop="4dp"
62-
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
63-
android:singleLine="true"
64-
android:ellipsize="marquee"
65-
android:textAppearance="?android:attr/textAppearance"
66-
android:textSize="@dimen/kg_status_line_font_size"
67-
/>
68-
69-
<TextView
70-
android:id="@+id/status1"
71-
android:layout_width="wrap_content"
72-
android:layout_height="wrap_content"
73-
android:layout_gravity="end"
74-
android:layout_marginTop="4dp"
75-
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
76-
android:singleLine="true"
77-
android:ellipsize="marquee"
78-
android:textAppearance="?android:attr/textAppearance"
79-
android:textSize="@dimen/kg_status_line_font_size"
80-
/>
81-
82-
<TextView
83-
android:id="@+id/status_security_message"
84-
android:layout_width="wrap_content"
85-
android:layout_height="wrap_content"
86-
android:layout_gravity="center"
87-
android:gravity="right"
88-
android:layout_marginTop="12dp"
89-
android:singleLine="false"
90-
android:maxLines="3"
91-
android:ellipsize="marquee"
92-
android:textAppearance="?android:attr/textAppearance"
93-
android:textSize="16dp"
94-
/>
9556
</LinearLayout>

core/res/res/layout-port/keyguard_status_area.xml

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -56,43 +56,4 @@
5656
/>
5757
</LinearLayout>
5858

59-
<TextView
60-
android:id="@+id/owner_info"
61-
android:layout_width="wrap_content"
62-
android:layout_height="wrap_content"
63-
android:layout_gravity="right"
64-
android:layout_marginTop="4dp"
65-
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
66-
android:singleLine="true"
67-
android:ellipsize="marquee"
68-
android:textAppearance="?android:attr/textAppearance"
69-
android:textSize="@dimen/kg_status_line_font_size"
70-
/>
71-
72-
<TextView
73-
android:id="@+id/status1"
74-
android:layout_width="wrap_content"
75-
android:layout_height="wrap_content"
76-
android:layout_gravity="right"
77-
android:layout_marginTop="4dp"
78-
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
79-
android:singleLine="true"
80-
android:ellipsize="marquee"
81-
android:textAppearance="?android:attr/textAppearance"
82-
android:textSize="@dimen/kg_status_line_font_size"
83-
/>
84-
85-
<TextView
86-
android:id="@+id/status_security_message"
87-
android:layout_width="wrap_content"
88-
android:layout_height="wrap_content"
89-
android:layout_gravity="right"
90-
android:layout_marginTop="4dp"
91-
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
92-
android:singleLine="true"
93-
android:ellipsize="marquee"
94-
android:textAppearance="?android:attr/textAppearance"
95-
android:textSize="@dimen/kg_status_line_font_size"
96-
/>
97-
9859
</LinearLayout>

core/res/res/layout-sw600dp-port/keyguard_status_area.xml

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -53,29 +53,4 @@
5353
android:drawablePadding="4dip"
5454
/>
5555

56-
<TextView
57-
android:id="@+id/owner_info"
58-
android:layout_width="wrap_content"
59-
android:layout_height="wrap_content"
60-
android:layout_gravity="end"
61-
android:layout_marginTop="4dp"
62-
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
63-
android:singleLine="true"
64-
android:ellipsize="marquee"
65-
android:textAppearance="?android:attr/textAppearance"
66-
android:textSize="@dimen/kg_status_line_font_size"
67-
/>
68-
69-
<TextView
70-
android:id="@+id/status1"
71-
android:layout_width="wrap_content"
72-
android:layout_height="wrap_content"
73-
android:layout_gravity="end"
74-
android:layout_marginTop="4dp"
75-
android:layout_marginEnd="@dimen/kg_status_line_font_right_margin"
76-
android:singleLine="true"
77-
android:ellipsize="marquee"
78-
android:textAppearance="?android:attr/textAppearance"
79-
android:textSize="@dimen/kg_status_line_font_size"
80-
/>
8156
</LinearLayout>

core/res/res/values/symbols.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1343,7 +1343,6 @@
13431343
<java-symbol type="id" name="clock_text" />
13441344
<java-symbol type="id" name="clock_view" />
13451345
<java-symbol type="id" name="keyguard_multi_user_selector" />
1346-
<java-symbol type="id" name="status_security_message" />
13471346
<java-symbol type="id" name="sliding_layout" />
13481347
<java-symbol type="id" name="keyguard_add_widget" />
13491348
<java-symbol type="id" name="keyguard_add_widget_view" />

policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusView.java

Lines changed: 105 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,52 @@
1717
package com.android.internal.policy.impl.keyguard;
1818

1919
import android.content.Context;
20+
import android.content.res.Resources;
21+
import android.graphics.Typeface;
22+
import android.text.TextUtils;
23+
import android.text.format.DateFormat;
2024
import android.util.AttributeSet;
25+
import android.util.Slog;
26+
import android.view.View;
2127
import android.widget.GridLayout;
28+
import android.widget.TextView;
2229

30+
import com.android.internal.R;
2331
import com.android.internal.widget.LockPatternUtils;
2432

33+
import java.util.Date;
34+
2535
public class KeyguardStatusView extends GridLayout {
26-
@SuppressWarnings("unused")
27-
private KeyguardStatusViewManager mStatusViewManager;
36+
private static final boolean DEBUG = KeyguardViewMediator.DEBUG;
37+
private static final String TAG = "KeyguardStatusView";
38+
39+
public static final int LOCK_ICON = 0; // R.drawable.ic_lock_idle_lock;
40+
public static final int ALARM_ICON = com.android.internal.R.drawable.ic_lock_idle_alarm;
41+
public static final int CHARGING_ICON = 0; //R.drawable.ic_lock_idle_charging;
42+
public static final int BATTERY_LOW_ICON = 0; //R.drawable.ic_lock_idle_low_battery;
43+
44+
private CharSequence mDateFormatString;
45+
private LockPatternUtils mLockPatternUtils;
46+
47+
private TextView mDateView;
48+
private TextView mAlarmStatusView;
49+
private ClockView mClockView;
50+
51+
private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
52+
53+
@Override
54+
public void onTimeChanged() {
55+
refresh();
56+
}
57+
58+
@Override
59+
void onKeyguardVisibilityChanged(boolean showing) {
60+
if (showing) {
61+
if (DEBUG) Slog.v(TAG, "refresh statusview showing:" + showing);
62+
refresh();
63+
}
64+
};
65+
};
2866

2967
public KeyguardStatusView(Context context) {
3068
this(context, null, 0);
@@ -38,19 +76,76 @@ public KeyguardStatusView(Context context, AttributeSet attrs, int defStyle) {
3876
super(context, attrs, defStyle);
3977
}
4078

41-
public int getAppWidgetId() {
42-
return LockPatternUtils.ID_DEFAULT_STATUS_WIDGET;
43-
}
44-
4579
@Override
4680
protected void onFinishInflate() {
4781
super.onFinishInflate();
82+
Resources res = getContext().getResources();
83+
mDateFormatString =
84+
res.getText(com.android.internal.R.string.abbrev_wday_month_day_no_year);
85+
mDateView = (TextView) findViewById(R.id.date);
86+
mAlarmStatusView = (TextView) findViewById(R.id.alarm_status);
87+
mClockView = (ClockView) findViewById(R.id.clock_view);
88+
mLockPatternUtils = new LockPatternUtils(getContext());
89+
90+
// Use custom font in mDateView
91+
mDateView.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);
92+
93+
// Required to get Marquee to work.
94+
final View marqueeViews[] = { mDateView, mAlarmStatusView };
95+
for (int i = 0; i < marqueeViews.length; i++) {
96+
View v = marqueeViews[i];
97+
if (v == null) {
98+
throw new RuntimeException("Can't find widget at index " + i);
99+
}
100+
v.setSelected(true);
101+
}
102+
refresh();
103+
}
48104

49-
// StatusView manages all of the widgets in this view.
50-
mStatusViewManager = new KeyguardStatusViewManager(this);
105+
protected void refresh() {
106+
mClockView.updateTime();
107+
refreshDate();
108+
refreshAlarmStatus(); // might as well
109+
}
110+
111+
void refreshAlarmStatus() {
112+
// Update Alarm status
113+
String nextAlarm = mLockPatternUtils.getNextAlarm();
114+
if (!TextUtils.isEmpty(nextAlarm)) {
115+
maybeSetUpperCaseText(mAlarmStatusView, nextAlarm);
116+
mAlarmStatusView.setCompoundDrawablesWithIntrinsicBounds(ALARM_ICON, 0, 0, 0);
117+
mAlarmStatusView.setVisibility(View.VISIBLE);
118+
} else {
119+
mAlarmStatusView.setVisibility(View.GONE);
120+
}
121+
}
122+
123+
void refreshDate() {
124+
maybeSetUpperCaseText(mDateView, DateFormat.format(mDateFormatString, new Date()));
125+
}
126+
127+
@Override
128+
protected void onAttachedToWindow() {
129+
super.onAttachedToWindow();
130+
KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mInfoCallback);
131+
}
132+
133+
@Override
134+
protected void onDetachedFromWindow() {
135+
super.onDetachedFromWindow();
136+
KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mInfoCallback);
137+
}
138+
139+
public int getAppWidgetId() {
140+
return LockPatternUtils.ID_DEFAULT_STATUS_WIDGET;
51141
}
52142

53-
KeyguardStatusViewManager getManager() {
54-
return mStatusViewManager;
143+
private void maybeSetUpperCaseText(TextView textView, CharSequence text) {
144+
if (KeyguardViewManager.USE_UPPER_CASE
145+
&& textView.getId() != R.id.owner_info) { // currently only required for date view
146+
textView.setText(text != null ? text.toString().toUpperCase() : null);
147+
} else {
148+
textView.setText(text);
149+
}
55150
}
56151
}

0 commit comments

Comments
 (0)