Handle bad icon resources.

Change-Id: I87c5fe68ad8016596068ba7889f3b6d36da3386b
This commit is contained in:
Joe Onorato
2010-05-24 18:36:53 -04:00
parent 20da8f8ac9
commit 871bdb9867
2 changed files with 40 additions and 16 deletions

View File

@@ -32,6 +32,7 @@ public class StatusBarIconView extends AnimatedImageView {
private StatusBarIcon mIcon;
@ViewDebug.ExportedProperty private String mSlot;
@ViewDebug.ExportedProperty private boolean mError;
public StatusBarIconView(Context context, String slot) {
super(context);
@@ -52,24 +53,37 @@ public class StatusBarIconView extends AnimatedImageView {
}
public void set(StatusBarIcon icon) {
final boolean iconEquals = mIcon != null
&& streq(mIcon.iconPackage, icon.iconPackage)
&& mIcon.iconId == icon.iconId;
final boolean levelEquals = iconEquals
&& mIcon.iconLevel == icon.iconLevel;
final boolean visibilityEquals = mIcon != null
&& mIcon.visible == icon.visible;
if (!iconEquals) {
setImageDrawable(getIcon(icon));
// TODO: What if getIcon returns null?
error: {
final boolean iconEquals = !mError
&& mIcon != null
&& streq(mIcon.iconPackage, icon.iconPackage)
&& mIcon.iconId == icon.iconId;
final boolean levelEquals = !mError
&& iconEquals
&& mIcon.iconLevel == icon.iconLevel;
final boolean visibilityEquals = !mError
&& mIcon != null
&& mIcon.visible == icon.visible;
mError = false;
if (!iconEquals) {
Drawable drawable = getIcon(icon);
if (drawable == null) {
mError = true;
break error;
}
setImageDrawable(drawable);
}
if (!levelEquals) {
setImageLevel(icon.iconLevel);
}
if (!visibilityEquals) {
setVisibility(icon.visible ? VISIBLE : GONE);
}
mIcon = icon.clone();
}
if (!levelEquals) {
setImageLevel(icon.iconLevel);
if (mError) {
setVisibility(GONE);
}
if (!visibilityEquals) {
setVisibility(icon.visible ? VISIBLE : GONE);
}
mIcon = icon.clone();
}
/**

View File

@@ -122,6 +122,16 @@ public class NotificationTestList extends TestActivity
}
},
new Test("Bad Icon") {
public void run() {
mNM.notify(1, new Notification(NotificationTestList.this,
R.layout.chrono_notification, /* not a drawable! */
null, System.currentTimeMillis()-(1000*60*60*24),
"(453) 123-2328",
"", null));
}
},
new Test("Bad resource #2") {
public void run()
{