|
|
/*
|
|
|
* Copyright © 2013 – 2016 Ricki Hirner (bitfire web engineering).
|
|
|
* All rights reserved. This program and the accompanying materials
|
|
|
* are made available under the terms of the GNU Public License v3.0
|
|
|
* which accompanies this distribution, and is available at
|
|
|
* http://www.gnu.org/licenses/gpl.html
|
|
|
*/
|
|
|
|
|
|
package at.bitfire.davdroid.ui;
|
|
|
|
|
|
import android.accounts.Account;
|
|
|
import android.app.Dialog;
|
|
|
import android.content.DialogInterface;
|
|
|
import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
import android.support.annotation.NonNull;
|
|
|
import android.support.v4.app.DialogFragment;
|
|
|
import android.support.v7.app.AlertDialog;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
import at.bitfire.davdroid.R;
|
|
|
import at.bitfire.davdroid.journalmanager.Exceptions.HttpException;
|
|
|
|
|
|
public class ExceptionInfoFragment extends DialogFragment {
|
|
|
protected static final String
|
|
|
ARG_ACCOUNT = "account",
|
|
|
ARG_EXCEPTION = "exception";
|
|
|
|
|
|
public static ExceptionInfoFragment newInstance(@NonNull Exception exception, Account account) {
|
|
|
ExceptionInfoFragment frag = new ExceptionInfoFragment();
|
|
|
Bundle args = new Bundle(1);
|
|
|
args.putSerializable(ARG_EXCEPTION, exception);
|
|
|
args.putParcelable(ARG_ACCOUNT, account);
|
|
|
frag.setArguments(args);
|
|
|
return frag;
|
|
|
}
|
|
|
|
|
|
@NonNull
|
|
|
@Override
|
|
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
|
|
Bundle args = getArguments();
|
|
|
final Exception exception = (Exception)args.getSerializable(ARG_EXCEPTION);
|
|
|
final Account account = args.getParcelable(ARG_ACCOUNT);
|
|
|
|
|
|
int title = R.string.exception;
|
|
|
if (exception instanceof HttpException)
|
|
|
title = R.string.exception_httpexception;
|
|
|
else if (exception instanceof IOException)
|
|
|
title = R.string.exception_ioexception;
|
|
|
|
|
|
Dialog dialog = new AlertDialog.Builder(getContext())
|
|
|
.setIcon(R.drawable.ic_error_dark)
|
|
|
.setTitle(title)
|
|
|
.setMessage(exception.getClass().getCanonicalName() + "\n" + exception.getLocalizedMessage())
|
|
|
.setNegativeButton(R.string.exception_show_details, new DialogInterface.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
Intent intent = new Intent(getContext(), DebugInfoActivity.class);
|
|
|
intent.putExtra(DebugInfoActivity.KEY_THROWABLE, exception);
|
|
|
if (account != null)
|
|
|
intent.putExtra(DebugInfoActivity.KEY_ACCOUNT, account);
|
|
|
startActivity(intent);
|
|
|
}
|
|
|
})
|
|
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
}
|
|
|
})
|
|
|
.create();
|
|
|
setCancelable(false);
|
|
|
return dialog;
|
|
|
}
|
|
|
}
|