diff --git a/BCL.csproj b/BCL.csproj
index b9210b2c8..d6d1f20fd 100644
--- a/BCL.csproj
+++ b/BCL.csproj
@@ -249,6 +249,7 @@
dialogs.d.ts
+
@@ -362,15 +363,11 @@
-
-
-
-
-
-
+
+
+
-
-
+
diff --git a/ui/dialogs/dialogs-common.ts b/ui/dialogs/dialogs-common.ts
new file mode 100644
index 000000000..f6131fea5
--- /dev/null
+++ b/ui/dialogs/dialogs-common.ts
@@ -0,0 +1,21 @@
+export var STRING = "string",
+ PROMPT = "Prompt",
+ CONFIRM = "Confirm",
+ ALERT = "Alert",
+ OK = "OK",
+ CANCEL = "Cancel";
+
+/**
+* Defines the input type for prompt dialog.
+*/
+export enum InputType {
+ /**
+ * Plain text input type.
+ */
+ PlainText,
+
+ /**
+ * Password input type.
+ */
+ Password,
+}
\ No newline at end of file
diff --git a/ui/dialogs/dialogs.android.ts b/ui/dialogs/dialogs.android.ts
index 55f41f24e..616320662 100644
--- a/ui/dialogs/dialogs.android.ts
+++ b/ui/dialogs/dialogs.android.ts
@@ -3,15 +3,13 @@
*/
import promises = require("promises");
import dialogs = require("ui/dialogs");
+import dialogs_common = require("ui/dialogs/dialogs-common");
import appmodule = require("application");
import view = require("ui/core/view");
-var STRING = "string",
- PROMPT = "Prompt",
- CONFIRM = "Confirm",
- ALERT = "Alert",
- OK = "OK",
- CANCEL = "Cancel";
+// merge the exports of the request file with the exports of this file
+declare var exports;
+require("utils/module-merge").merge(dialogs_common, exports);
function createAlertDialog(message: string, options: dialogs.DialogOptions): android.app.AlertDialog.Builder {
var alert = new android.app.AlertDialog.Builder(appmodule.android.foregroundActivity);
@@ -55,12 +53,12 @@ function addButtonsToAlertDialog(alert: android.app.AlertDialog.Builder, options
}
}
-export function alert(message: string, options = { title: ALERT, okButtonText: OK }): promises.Promise {
+export function alert(message: string, options = { title: dialogs_common.ALERT, okButtonText: dialogs_common.OK }): promises.Promise {
var d = promises.defer();
try {
var alert = createAlertDialog(message, options);
- alert.setPositiveButton(options.okButtonText, new android.content.DialogInterface.OnClickListener({
+ alert.setPositiveButton(options.okButtonText, new android.content.DialogInterface.OnClickListener({
onClick: function (dialog: android.content.DialogInterface, id: number) {
dialog.cancel();
d.resolve();
@@ -76,7 +74,7 @@ export function alert(message: string, options = { title: ALERT, okButtonText: O
return d.promise();
}
-export function confirm(message: string, options = { title: CONFIRM, okButtonText: OK, cancelButtonText: CANCEL }): promises.Promise {
+export function confirm(message: string, options = { title: dialogs_common.CONFIRM, okButtonText: dialogs_common.OK, cancelButtonText: dialogs_common.CANCEL }): promises.Promise {
var d = promises.defer();
try {
var alert = createAlertDialog(message, options);
@@ -92,12 +90,18 @@ export function confirm(message: string, options = { title: CONFIRM, okButtonTex
return d.promise();
}
-export function prompt(message: string, defaultText?: string, options = { title: PROMPT, okButtonText: OK, cancelButtonText: CANCEL }): promises.Promise {
+export function prompt(message: string, defaultText?: string,
+ options = { title: dialogs_common.PROMPT, okButtonText: dialogs_common.OK, cancelButtonText: dialogs_common.CANCEL, inputType: dialogs_common.InputType.PlainText }): promises.Promise {
var d = promises.defer();
try {
var alert = createAlertDialog(message, options);
var input = new android.widget.EditText(appmodule.android.context);
+
+ if (options.inputType == dialogs_common.InputType.Password) {
+ input.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD);
+ }
+
input.setText(defaultText ? defaultText : "");
alert.setView(input);
diff --git a/ui/dialogs/dialogs.d.ts b/ui/dialogs/dialogs.d.ts
index b03e86088..9e4ddd3d8 100644
--- a/ui/dialogs/dialogs.d.ts
+++ b/ui/dialogs/dialogs.d.ts
@@ -1,6 +1,9 @@
declare module "ui/dialogs" {
import promises = require("promises");
import view = require("ui/core/view");
+ import dialogs_common = require("ui/dialogs/dialogs-common");
+
+ export var InputType: dialogs_common.InputType;
/**
* The alert() method displays an alert box with a specified message.
@@ -21,7 +24,7 @@
* @param message The text to display in the dialog box.
* @param options The options for the dialog box. Optional.
*/
- function prompt(message: string, defaultText?: string, options?: DialogButtonsOptions): promises.Promise;
+ function prompt(message: string, defaultText?: string, options?: PromptOptions): promises.Promise;
/**
* Provides options for the dialog.
@@ -44,7 +47,7 @@
}
/**
- * Provides options for the confirm.
+ * Provides options for the confirm dialog.
*/
interface DialogButtonsOptions extends AlertOptions {
/**
@@ -58,6 +61,16 @@
neutralButtonText?: string;
}
+ /**
+ * Provides options for the prompt dialog.
+ */
+ interface PromptOptions extends DialogButtonsOptions {
+ /**
+ * Gets or sets the prompt input type (plain text or password).
+ */
+ inputType?: dialogs_common.InputType;
+ }
+
/**
* Provides result data from the prompt dialog.
*/
diff --git a/ui/dialogs/dialogs.ios.ts b/ui/dialogs/dialogs.ios.ts
index eb5881a98..f5656d85f 100644
--- a/ui/dialogs/dialogs.ios.ts
+++ b/ui/dialogs/dialogs.ios.ts
@@ -3,15 +3,13 @@
*/
import promises = require("promises");
import dialogs = require("ui/dialogs");
+import dialogs_common = require("ui/dialogs/dialogs-common");
import view = require("ui/core/view");
-var UIALERTVIEWDELEGATE = "UIAlertViewDelegate",
- STRING = "string",
- PROMPT = "Prompt",
- CONFIRM = "Confirm",
- ALERT = "Alert",
- OK = "OK",
- CANCEL = "Cancel";
+// merge the exports of the request file with the exports of this file
+declare var exports;
+require("utils/module-merge").merge(dialogs_common, exports);
+
function createUIAlertView(message: string, options: dialogs.DialogOptions): UIKit.UIAlertView {
var alert = new UIKit.UIAlertView();
@@ -49,7 +47,7 @@ function addButtonsToAlertDialog(alert: UIKit.UIAlertView, options: dialogs.Dial
}
}
-export function alert(message: string, options = { title: ALERT, okButtonText: OK }): promises.Promise {
+export function alert(message: string, options = { title: dialogs_common.ALERT, okButtonText: dialogs_common.OK }): promises.Promise {
var d = promises.defer();
try {
var alert = createUIAlertView(message, options);
@@ -75,7 +73,7 @@ export function alert(message: string, options = { title: ALERT, okButtonText: O
return d.promise();
}
-export function confirm(message: string, options = { title: CONFIRM, okButtonText: OK, cancelButtonText: CANCEL }): promises.Promise {
+export function confirm(message: string, options = { title: dialogs_common.CONFIRM, okButtonText: dialogs_common.OK, cancelButtonText: dialogs_common.CANCEL }): promises.Promise {
var d = promises.defer();
try {
var alert = createUIAlertView(message, options);
@@ -100,11 +98,17 @@ export function confirm(message: string, options = { title: CONFIRM, okButtonTe
return d.promise();
}
-export function prompt(message: string, defaultText?: string, options = { title: PROMPT, okButtonText: OK, cancelButtonText: CANCEL, defaultText: "" }): promises.Promise {
+export function prompt(message: string, defaultText?: string,
+ options = { title: dialogs_common.PROMPT, okButtonText: dialogs_common.OK, cancelButtonText: dialogs_common.CANCEL, inputType: dialogs_common.InputType.PlainText }): promises.Promise {
var d = promises.defer();
try {
var alert = createUIAlertView(message, options);
- alert.alertViewStyle = UIKit.UIAlertViewStyle.UIAlertViewStylePlainTextInput;
+
+ if (options.inputType === dialogs_common.InputType.Password) {
+ alert.alertViewStyle = UIKit.UIAlertViewStyle.UIAlertViewStyleSecureTextInput;
+ } else {
+ alert.alertViewStyle = UIKit.UIAlertViewStyle.UIAlertViewStylePlainTextInput;
+ }
addButtonsToAlertDialog(alert, options);