Skip to content

Commit 4096288

Browse files
Jim MillerAndroid (Google) Code Review
authored andcommitted
Merge "Implement fallback clock in keyguard" into jb-mr1-lockscreen-dev
2 parents fd8c388 + edc74ab commit 4096288

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)