mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-16 11:47:29 +00:00
103 lines
3.5 KiB
Kotlin
Executable File
103 lines
3.5 KiB
Kotlin
Executable File
package awaisomereport;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.Paint;
|
|
import android.graphics.Rect;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.os.Bundle;
|
|
import android.text.Spannable;
|
|
import android.text.SpannableString;
|
|
import android.text.style.ImageSpan;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
|
|
import java.lang.ref.WeakReference;
|
|
|
|
import awais.instagrabber.R;
|
|
|
|
public final class ErrorReporterActivity extends Activity implements View.OnClickListener {
|
|
private View btnReport;
|
|
|
|
@Override
|
|
protected void onCreate(@Nullable final Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_crash_error);
|
|
|
|
setFinishOnTouchOutside(false);
|
|
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
|
|
|
final SpannableString crashTitle = new SpannableString(" " + getString(R.string.crash_title));
|
|
crashTitle.setSpan(new CenteredImageSpan(this, android.R.drawable.stat_notify_error),
|
|
0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
|
setTitle(crashTitle);
|
|
|
|
btnReport = findViewById(R.id.btnReport);
|
|
btnReport.setOnClickListener(this);
|
|
findViewById(R.id.btnCancel).setOnClickListener(this);
|
|
}
|
|
|
|
@Override
|
|
public void onClick(@NonNull final View v) {
|
|
if (v == btnReport) {
|
|
CrashReporterHelper.startCrashEmailIntent(this);
|
|
}
|
|
finish();
|
|
System.exit(10);
|
|
}
|
|
|
|
public static class CenteredImageSpan extends ImageSpan {
|
|
private WeakReference<Drawable> drawable;
|
|
|
|
public CenteredImageSpan(final Context context, final int drawableRes) {
|
|
super(context, drawableRes);
|
|
}
|
|
|
|
@Override
|
|
public int getSize(@NonNull final Paint paint, final CharSequence text, final int start, final int end, @Nullable final Paint.FontMetricsInt fm) {
|
|
final Drawable drawable = getCachedDrawable();
|
|
final Rect rect = drawable.getBounds();
|
|
|
|
if (fm != null) {
|
|
final Paint.FontMetricsInt pfm = paint.getFontMetricsInt();
|
|
fm.ascent = pfm.ascent;
|
|
fm.descent = pfm.descent;
|
|
fm.top = pfm.top;
|
|
fm.bottom = pfm.bottom;
|
|
}
|
|
|
|
return rect.right;
|
|
}
|
|
|
|
@Override
|
|
public void draw(@NonNull final Canvas canvas, final CharSequence text, final int start, final int end, final float x, final int top,
|
|
final int y, final int bottom, @NonNull final Paint paint) {
|
|
final Drawable drawable = getCachedDrawable();
|
|
canvas.save();
|
|
|
|
final int drawableHeight = drawable.getIntrinsicHeight();
|
|
final Paint.FontMetricsInt fontMetricsInt = paint.getFontMetricsInt();
|
|
int transY = bottom - drawable.getBounds().bottom + (drawableHeight - fontMetricsInt.descent + fontMetricsInt.ascent) / 2;
|
|
|
|
canvas.translate(x, transY);
|
|
drawable.draw(canvas);
|
|
canvas.restore();
|
|
}
|
|
|
|
private Drawable getCachedDrawable() {
|
|
Drawable d = null;
|
|
if (drawable != null) d = drawable.get();
|
|
if (d == null) {
|
|
d = getDrawable();
|
|
drawable = new WeakReference<>(d);
|
|
}
|
|
return d;
|
|
}
|
|
}
|
|
}
|
|
|