package com.openfeint.internal.notifications;
import java.util.HashMap;
import java.util.Map;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.openfeint.api.R;
import com.openfeint.internal.OpenFeintInternal;
import com.openfeint.internal.request.BitmapRequest;
public class TwoLineNotification extends NotificationBase {
protected TwoLineNotification(String text, String extra, String imageName, Category cat, Type type, Map<String,Object> userData) {
super(text, imageName, cat, type, userData);
}
@Override
protected boolean createView() {
LayoutInflater inflater = (LayoutInflater)OpenFeintInternal.getInstance().getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
displayView = inflater.inflate(R.layout.of_two_line_notification, null);
((TextView)displayView.findViewById(R.id.of_text1)).setText(getText());
((TextView)displayView.findViewById(R.id.of_text2)).setText((String) getUserData().get("extra"));
final ImageView icon = (ImageView)displayView.findViewById(R.id.of_icon);
if(null != imageName) {
Drawable image = getResourceDrawable(imageName);
if(null == image) {
//try to load from Feint server
BitmapRequest req = new BitmapRequest() {
@Override public String path() { return imageName; }
@Override public void onSuccess(Bitmap responseBody) {
icon.setImageDrawable(new BitmapDrawable(responseBody));
showToast();
}
@Override public void onFailure(String exceptionMessage) {
OpenFeintInternal.log("NotificationImage", "Failed to load image "+ imageName + ":" + exceptionMessage);
icon.setVisibility(View.INVISIBLE);
showToast();
}
};
req.launch();
return false;
} else {
icon.setImageDrawable(image);
}
} else {
icon.setVisibility(View.INVISIBLE);
}
return true;
//look for the image...
}
@Override
protected void drawView(Canvas canvas) {
displayView.draw(canvas);
}
public static void show(String text, String extra, Category c, Type t) {
show(text, extra, null, c, t);
}
public static void show(String text, String extra, String imageName, Category c, Type t) {
Map<String, Object> userData = new HashMap<String, Object>();
userData.put("extra", extra);
TwoLineNotification notification = new TwoLineNotification(text, extra, imageName, c, t, userData);
notification.checkDelegateAndView();
}
}