mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-29 07:52:45 +00:00
106 lines
3.2 KiB
Java
106 lines
3.2 KiB
Java
package com.limelight.utils;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import android.app.Activity;
|
|
import android.app.AlertDialog;
|
|
import android.content.DialogInterface;
|
|
import android.widget.Button;
|
|
|
|
import com.limelight.R;
|
|
|
|
public class Dialog implements Runnable {
|
|
private final String title;
|
|
private final String message;
|
|
private final Activity activity;
|
|
private final boolean endAfterDismiss;
|
|
|
|
private AlertDialog alert;
|
|
|
|
private static final ArrayList<Dialog> rundownDialogs = new ArrayList<>();
|
|
|
|
private Dialog(Activity activity, String title, String message, boolean endAfterDismiss)
|
|
{
|
|
this.activity = activity;
|
|
this.title = title;
|
|
this.message = message;
|
|
this.endAfterDismiss = endAfterDismiss;
|
|
}
|
|
|
|
public static void closeDialogs()
|
|
{
|
|
synchronized (rundownDialogs) {
|
|
for (Dialog d : rundownDialogs) {
|
|
if (d.alert.isShowing()) {
|
|
d.alert.dismiss();
|
|
}
|
|
}
|
|
|
|
rundownDialogs.clear();
|
|
}
|
|
}
|
|
|
|
public static void displayDialog(Activity activity, String title, String message, boolean endAfterDismiss)
|
|
{
|
|
activity.runOnUiThread(new Dialog(activity, title, message, endAfterDismiss));
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
// If we're dying, don't bother creating a dialog
|
|
if (activity.isFinishing())
|
|
return;
|
|
|
|
alert = new AlertDialog.Builder(activity).create();
|
|
|
|
alert.setTitle(title);
|
|
alert.setMessage(message);
|
|
alert.setCancelable(false);
|
|
alert.setCanceledOnTouchOutside(false);
|
|
|
|
alert.setButton(AlertDialog.BUTTON_POSITIVE, activity.getResources().getText(android.R.string.ok), new DialogInterface.OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
synchronized (rundownDialogs) {
|
|
rundownDialogs.remove(Dialog.this);
|
|
alert.dismiss();
|
|
}
|
|
|
|
if (endAfterDismiss) {
|
|
activity.finish();
|
|
}
|
|
}
|
|
});
|
|
alert.setButton(AlertDialog.BUTTON_NEUTRAL, activity.getResources().getText(R.string.help), new DialogInterface.OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
synchronized (rundownDialogs) {
|
|
rundownDialogs.remove(Dialog.this);
|
|
alert.dismiss();
|
|
}
|
|
|
|
if (endAfterDismiss) {
|
|
activity.finish();
|
|
}
|
|
|
|
HelpLauncher.launchTroubleshooting(activity);
|
|
}
|
|
});
|
|
alert.setOnShowListener(new DialogInterface.OnShowListener(){
|
|
|
|
@Override
|
|
public void onShow(DialogInterface dialog) {
|
|
// Set focus to the OK button by default
|
|
Button button = alert.getButton(AlertDialog.BUTTON_POSITIVE);
|
|
button.setFocusable(true);
|
|
button.setFocusableInTouchMode(true);
|
|
button.requestFocus();
|
|
}
|
|
});
|
|
|
|
synchronized (rundownDialogs) {
|
|
rundownDialogs.add(this);
|
|
alert.show();
|
|
}
|
|
}
|
|
|
|
}
|