package yuku.alkitab.base.ac;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import com.afollestad.materialdialogs.MaterialDialog;
import yuku.alkitab.base.App;
import yuku.alkitab.base.ac.base.BaseActivity;
import yuku.alkitab.debug.R;
/**
* Use this class to show an alert dialog if you don't have an existing activity to
* show the dialog on.
*
* This starts a transparent activity and then shows an alert dialog on top
* of the transparent activity.
*/
public class AlertDialogActivity extends BaseActivity {
/** Inputs */
private static final String EXTRA_TITLE = "title";
private static final String EXTRA_MESSAGE = "message";
private static final String EXTRA_NEGATIVE = "negative";
private static final String EXTRA_POSITIVE = "positive";
private static final String EXTRA_INPUT_TYPE = "input_type";
private static final String EXTRA_INPUT_HINT = "input_hint";
private static final String EXTRA_LAUNCH = "launch";
/** Output */
public static final String EXTRA_INPUT = "input";
public static Intent createOkIntent(final String title, final String message) {
return new Intent(App.context, AlertDialogActivity.class)
.putExtra(EXTRA_TITLE, title)
.putExtra(EXTRA_MESSAGE, message);
}
public static Intent createAskIntent(final String title, final String message, final String negativeButtonText, final String positiveButtonText, final Intent launchWhenPositive) {
return new Intent(App.context, AlertDialogActivity.class)
.putExtra(EXTRA_TITLE, title)
.putExtra(EXTRA_MESSAGE, message)
.putExtra(EXTRA_NEGATIVE, negativeButtonText)
.putExtra(EXTRA_POSITIVE, positiveButtonText)
.putExtra(EXTRA_LAUNCH, launchWhenPositive);
}
public static Intent createInputIntent(final String title, final String message, final String negativeButtonText, final String positiveButtonText, final int inputType, final String inputHint) {
return new Intent(App.context, AlertDialogActivity.class)
.putExtra(EXTRA_TITLE, title)
.putExtra(EXTRA_MESSAGE, message)
.putExtra(EXTRA_NEGATIVE, negativeButtonText)
.putExtra(EXTRA_POSITIVE, positiveButtonText)
.putExtra(EXTRA_INPUT_TYPE, inputType)
.putExtra(EXTRA_INPUT_HINT, inputHint);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final String title = getIntent().getStringExtra(EXTRA_TITLE);
final String message = getIntent().getStringExtra(EXTRA_MESSAGE);
final String negative = getIntent().getStringExtra(EXTRA_NEGATIVE);
final String positive = getIntent().getExtras().getString(EXTRA_POSITIVE, getString(android.R.string.ok));
final int inputType = getIntent().getIntExtra(EXTRA_INPUT_TYPE, 0);
final String inputHint = getIntent().getStringExtra(EXTRA_INPUT_HINT);
final Intent launch = getIntent().getParcelableExtra(EXTRA_LAUNCH);
final MaterialDialog.Builder builder = new MaterialDialog.Builder(this);
if (title != null) {
builder.title(title);
}
if (message != null) {
builder.content(message);
}
if (inputHint != null) {
if (inputType != 0) {
builder.inputType(inputType);
}
builder.input(inputHint, null, false, (dialog, input) -> {
final Intent returnIntent = new Intent();
returnIntent.putExtra(EXTRA_INPUT, input.toString());
setResult(RESULT_OK, returnIntent);
finish();
});
}
builder.positiveText(positive);
builder.onPositive((dialog, which) -> {
if (inputHint == null) {
final Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
if (launch != null) {
try {
startActivity(launch);
} catch (ActivityNotFoundException e) {
new MaterialDialog.Builder(AlertDialogActivity.this)
.content("Actvity was not found for intent: " + launch.toString())
.positiveText(R.string.ok)
.show();
}
}
finish();
}
});
builder.onNegative((dialog, which) -> finish());
if (negative != null) {
builder.negativeText(negative);
}
builder.dismissListener(dialog -> finish());
builder.show();
}
}