/*
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright (c) 2014 Digi International Inc., All Rights Reserved.
*/
package com.digi.android.wva.fragments;
import android.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
/**
* A {@link DialogFragment} used to display error messages related to the
* connection with a WVA device.
*/
public class ConnectionErrorDialog extends DialogFragment {
private String title, message;
/**
* Interface for activities to implement,
* so they can handle clicking "Ok" in this dialog and
* (in most cases) call finish() on themselves (as a response to the
* error).
*
* @see <a href="http://stackoverflow.com/q/7557265">StackOverflow inspiration</a>
*
* @author mwadsten
*
*/
public interface ErrorDialogListener {
/**
* Called when the "Okay" button is pressed on the error dialog.
*/
void onOkay();
}
public static ConnectionErrorDialog newInstance(String title, String message) {
// See Android developer documentation, DialogFragment
ConnectionErrorDialog f = new ConnectionErrorDialog();
Bundle args = new Bundle();
args.putString("title", title);
args.putString("message", message);
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
title = args.getString("title");
message = args.getString("message");
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (!(activity instanceof ErrorDialogListener)) {
throw new ClassCastException(activity.toString() + " must implement ErrorDialogListener!");
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
this.setCancelable(false);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(this.message)
.setTitle(this.title)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((ErrorDialogListener)getActivity()).onOkay();
}
});
return builder.create();
}
}