package hu.dpal.phonegap.plugins;
import java.util.Stack;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.ProgressDialog;
import android.content.DialogInterface;
public class SpinnerDialog extends CordovaPlugin {
public Stack<ProgressDialog> spinnerDialogStack = new Stack<ProgressDialog>();
public SpinnerDialog() {
}
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException {
if (action.equals("show")) {
final String title = args.getString(0) == "null" ? null : args
.getString(0);
final String message = args.getString(1) == "null" ? null : args
.getString(1);
final CordovaInterface cordova = this.cordova;
Runnable runnable = new Runnable() {
public void run() {
SpinnerDialog.this.spinnerDialogStack.push(ProgressDialog
.show(cordova.getActivity(), title, message, true, true,
new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
while (!SpinnerDialog.this.spinnerDialogStack.empty()) {
SpinnerDialog.this.spinnerDialogStack.pop().dismiss();
}
}
}));
}
};
this.cordova.getActivity().runOnUiThread(runnable);
} else if (action.equals("hide")) {
Runnable runnable = new Runnable() {
public void run() {
if (!SpinnerDialog.this.spinnerDialogStack.empty()) {
SpinnerDialog.this.spinnerDialogStack.pop().dismiss();
}
}
};
this.cordova.getActivity().runOnUiThread(runnable);
}
callbackContext.success();
return true;
}
}