package de.theknut.xposedgelsettings.hooks.notificationbadges;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.util.TypedValue;
import android.view.Gravity;
import android.widget.TextView;
import net.margaritov.preference.colorpicker.ColorPickerPreference;
import de.theknut.xposedgelsettings.hooks.Common;
import de.theknut.xposedgelsettings.hooks.PreferencesHelper;
public class Badge {
private int count;
private TextView badgeCount;
public Badge(int count) {
this.count = count;
}
public Drawable textToDrawable() {
setupTextView();
Bitmap badgeBitmap = Bitmap.createBitmap(badgeCount.getMeasuredWidth(), badgeCount.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(badgeBitmap);
badgeCount.layout(0, 0, badgeCount.getMeasuredWidth(), badgeCount.getMeasuredHeight());
badgeCount.draw(c);
return new BitmapDrawable(Common.LAUNCHER_CONTEXT.getResources(), badgeBitmap);
}
protected TextView setupTextView() {
NotificationBadgesHelper.initMeasures();
badgeCount = new TextView(Common.LAUNCHER_CONTEXT);
badgeCount.setTextColor(Color.parseColor(ColorPickerPreference.convertToARGB(PreferencesHelper.notificationBadgeTextColor)));
badgeCount.setTextSize(TypedValue.COMPLEX_UNIT_DIP, PreferencesHelper.notificationBadgeTextSize);
badgeCount.setGravity(Gravity.CENTER);
badgeCount.setIncludeFontPadding(false);
int padding = NotificationBadgesHelper.leftRightPadding;
if (count > 9 && PreferencesHelper.notificationBadgeKeepSize) {
float textWidth = badgeCount.getPaint().measureText("88");
padding = Math.round(NotificationBadgesHelper.leftRightPadding - (textWidth / 4));
}
badgeCount.setPadding(
padding,
NotificationBadgesHelper.topBottomPadding,
padding,
NotificationBadgesHelper.topBottomPadding
);
GradientDrawable gdDefault = new GradientDrawable();
gdDefault.setColor(Color.parseColor(ColorPickerPreference.convertToARGB(PreferencesHelper.notificationBadgeBackgroundColor)));
gdDefault.setCornerRadius(PreferencesHelper.notificationBadgeCornerRadius);
if (NotificationBadgesHelper.frameSize != 0) {
gdDefault.setStroke(NotificationBadgesHelper.frameSize, Color.parseColor(ColorPickerPreference.convertToARGB(PreferencesHelper.notificationBadgeFrameColor)));
}
gdDefault.setShape(GradientDrawable.RECTANGLE);
badgeCount.setBackground(gdDefault);
badgeCount.setDrawingCacheEnabled(true);
badgeCount.setText("" + count);
badgeCount.measure(NotificationBadgesHelper.measuredWidth, NotificationBadgesHelper.measuredHeigth);
return badgeCount;
}
public Drawable getDrawable() {
return textToDrawable();
}
}