From 14d76a8d2c142b23778a2f7136ae74c9cac61af3 Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Wed, 4 Jun 2014 16:58:31 +0300 Subject: [PATCH] dialogs for android implemented --- ui/dialogs/dialogs.android.ts | 44 +++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/ui/dialogs/dialogs.android.ts b/ui/dialogs/dialogs.android.ts index 8e1b52a35..b004531e4 100644 --- a/ui/dialogs/dialogs.android.ts +++ b/ui/dialogs/dialogs.android.ts @@ -5,6 +5,11 @@ import promises = require("promises"); import dialogs = require("ui/dialogs"); import appmodule = require("application"); +var STRING = "string", + ALERT = "Alert", + OK = "OK", + CANCEL = "Cancel"; + function createAlertDialog(options: dialogs.DialogOptions): android.app.AlertDialog.Builder { var alert = new android.app.AlertDialog.Builder(appmodule.android.currentActivity); alert.setTitle(options.title); @@ -12,19 +17,39 @@ function createAlertDialog(options: dialogs.DialogOptions): android.app.AlertDia return alert; } +function addOkCancelButtonsToAlertDialog(alert: android.app.AlertDialog.Builder, options: dialogs.ConfirmOptions, + okCallback: Function, cancelCallback?: Function): void { + alert.setPositiveButton(options.okButtonName, new android.content.DialogInterface.OnClickListener({ + onClick: function (dialog: android.content.DialogInterface, id: number) { + dialog.cancel(); + okCallback(); + } + })); + + alert.setNegativeButton(options.cancelButtonName, new android.content.DialogInterface.OnClickListener({ + onClick: function (dialog: android.content.DialogInterface, id: number) { + dialog.cancel(); + if (cancelCallback) { + cancelCallback(); + } + } + })); +} + export function alert(arg: any): promises.Promise { var d = promises.defer(); try { - var options = typeof arg === "string" ? { message: arg, title: "Alert", buttonName: "OK" } : arg + var options = typeof arg === STRING ? { message: arg, title: ALERT, buttonName: OK } : arg var alert = createAlertDialog(options); - /* + alert.setPositiveButton(options.buttonName, new android.content.DialogInterface.OnClickListener({ onClick: function (dialog: android.content.DialogInterface, id: number) { dialog.cancel(); + d.resolve(); } })); -*/ + alert.show(); } catch (ex) { @@ -37,10 +62,12 @@ export function alert(arg: any): promises.Promise { export function confirm(arg: any): promises.Promise { var d = promises.defer(); try { - var options = typeof arg === "string" ? { message: arg, title: "Alert", okButtonName: "OK", cancelButtonName: "Cancel" } : arg + var options = typeof arg === STRING ? { message: arg, title: ALERT, okButtonName: OK, cancelButtonName: CANCEL } : arg var alert = createAlertDialog(options); + addOkCancelButtonsToAlertDialog(alert, options, function () { d.resolve(true); }, function () { d.resolve(false); }); + alert.show(); } catch (ex) { @@ -53,10 +80,17 @@ export function confirm(arg: any): promises.Promise { export function prompt(arg: any): promises.Promise { var d = promises.defer(); try { - var options = typeof arg === "string" ? { message: arg, title: "Alert", okButtonName: "OK", cancelButtonName: "Cancel" } : arg + var options = typeof arg === STRING ? { message: arg, title: ALERT, okButtonName: OK, cancelButtonName: CANCEL } : arg var alert = createAlertDialog(options); + var input = new android.widget.EditText(appmodule.android.context); + input.setText(options.defaultText ? options.defaultText : ""); + + alert.setView(input); + + addOkCancelButtonsToAlertDialog(alert, options, function () { d.resolve(input.getText().toString()); }); + alert.show(); } catch (ex) {