InputType.Password enabled for prompt dialog

This commit is contained in:
Vladimir Enchev
2014-06-09 17:13:00 +03:00
parent 37afd97cb0
commit f577816d1e
5 changed files with 70 additions and 31 deletions

View File

@ -249,6 +249,7 @@
<DependentUpon>dialogs.d.ts</DependentUpon> <DependentUpon>dialogs.d.ts</DependentUpon>
</TypeScriptCompile> </TypeScriptCompile>
<TypeScriptCompile Include="ui\dialogs\index.ts" /> <TypeScriptCompile Include="ui\dialogs\index.ts" />
<TypeScriptCompile Include="ui\dialogs\dialogs-common.ts" />
<Content Include="_references.ts" /> <Content Include="_references.ts" />
<Content Include="image-source\Readme.md" /> <Content Include="image-source\Readme.md" />
<Content Include="http\Readme.md" /> <Content Include="http\Readme.md" />
@ -362,15 +363,11 @@
<UsingTask TaskName="BuildTasks.CopyForPlatformBuildTask" AssemblyFile="../../Build/lib/BuildTasks.dll" /> <UsingTask TaskName="BuildTasks.CopyForPlatformBuildTask" AssemblyFile="../../Build/lib/BuildTasks.dll" />
<Target Name="AfterBuild"> <Target Name="AfterBuild">
<CopyForPlatformBuildTask TargetPlatform="$(TargetOS)" IncludeTests="$(CopyTests)" Platforms="iOS;Android" InputFiles="@(GeneratedJavascript)" DestinationFolder="$(OutputPath)\$(Configuration)\" JSConfigFile="$(JSConfig)" AppMainJSFile="$(JSMainFile)" ProjectDir="$(ProjectDir)" /> <CopyForPlatformBuildTask TargetPlatform="$(TargetOS)" IncludeTests="$(CopyTests)" Platforms="iOS;Android" InputFiles="@(GeneratedJavascript)" DestinationFolder="$(OutputPath)\$(Configuration)\" JSConfigFile="$(JSConfig)" AppMainJSFile="$(JSMainFile)" ProjectDir="$(ProjectDir)" />
<Exec Condition=" '$(Configuration)' == 'Documentation' " Command="rd /q /s &quot;../../Documentation/Docs/&quot;" />
<Exec Condition=" '$(Configuration)' == 'Documentation' " Command='rd /q /s "../../Documentation/Docs/"' /> <Exec Condition=" '$(Configuration)' == 'Documentation' " Command="md &quot;../../Documentation/Docs/&quot;" />
<Exec Condition=" '$(Configuration)' == 'Documentation' " Command='md "../../Documentation/Docs/"' /> <Exec Condition=" '$(Configuration)' == 'Documentation' " Command="node ../../Documentation/Src/SnippetsExtractor/app.js -noclean -source bin\Documentation\Tests -destination ../../Documentation/Docs/" />
<Exec Condition=" '$(Configuration)' == 'Documentation' " Command='node ../../Documentation/Src/SnippetsExtractor/app.js -noclean -source bin\Documentation\Tests -destination ../../Documentation/Docs/' />
<Exec Condition=" '$(Configuration)' == 'Documentation' " Command="node ../../Documentation/Src/TypeScriptAPIExtractor/app.js @(TypeScriptCompile) $(IntermediateOutputPath)\api.xml" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="false" LogStandardErrorAsError="true" /> <Exec Condition=" '$(Configuration)' == 'Documentation' " Command="node ../../Documentation/Src/TypeScriptAPIExtractor/app.js @(TypeScriptCompile) $(IntermediateOutputPath)\api.xml" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="false" LogStandardErrorAsError="true" />
<Exec Condition=" '$(Configuration)' == 'Documentation' " Command='"../../Documentation/Src/XMLAPIPrinting/bin/Release/XMLAPIPrinting.exe" $(IntermediateOutputPath)\api.xml "../../Documentation/Docs/"' /> <Exec Condition=" '$(Configuration)' == 'Documentation' " Command="&quot;../../Documentation/Src/XMLAPIPrinting/bin/Release/XMLAPIPrinting.exe&quot; $(IntermediateOutputPath)\api.xml &quot;../../Documentation/Docs/&quot;" />
</Target> </Target>
<PropertyGroup> <PropertyGroup>
<PostBuildEvent> <PostBuildEvent>

View File

@ -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,
}

View File

@ -3,15 +3,13 @@
*/ */
import promises = require("promises"); import promises = require("promises");
import dialogs = require("ui/dialogs"); import dialogs = require("ui/dialogs");
import dialogs_common = require("ui/dialogs/dialogs-common");
import appmodule = require("application"); import appmodule = require("application");
import view = require("ui/core/view"); import view = require("ui/core/view");
var STRING = "string", // merge the exports of the request file with the exports of this file
PROMPT = "Prompt", declare var exports;
CONFIRM = "Confirm", require("utils/module-merge").merge(dialogs_common, exports);
ALERT = "Alert",
OK = "OK",
CANCEL = "Cancel";
function createAlertDialog(message: string, options: dialogs.DialogOptions): android.app.AlertDialog.Builder { function createAlertDialog(message: string, options: dialogs.DialogOptions): android.app.AlertDialog.Builder {
var alert = new android.app.AlertDialog.Builder(appmodule.android.foregroundActivity); 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<void> { export function alert(message: string, options = { title: dialogs_common.ALERT, okButtonText: dialogs_common.OK }): promises.Promise<void> {
var d = promises.defer<void>(); var d = promises.defer<void>();
try { try {
var alert = createAlertDialog(message, options); 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) { onClick: function (dialog: android.content.DialogInterface, id: number) {
dialog.cancel(); dialog.cancel();
d.resolve(); d.resolve();
@ -76,7 +74,7 @@ export function alert(message: string, options = { title: ALERT, okButtonText: O
return d.promise(); return d.promise();
} }
export function confirm(message: string, options = { title: CONFIRM, okButtonText: OK, cancelButtonText: CANCEL }): promises.Promise<boolean> { export function confirm(message: string, options = { title: dialogs_common.CONFIRM, okButtonText: dialogs_common.OK, cancelButtonText: dialogs_common.CANCEL }): promises.Promise<boolean> {
var d = promises.defer<boolean>(); var d = promises.defer<boolean>();
try { try {
var alert = createAlertDialog(message, options); var alert = createAlertDialog(message, options);
@ -92,12 +90,18 @@ export function confirm(message: string, options = { title: CONFIRM, okButtonTex
return d.promise(); return d.promise();
} }
export function prompt(message: string, defaultText?: string, options = { title: PROMPT, okButtonText: OK, cancelButtonText: CANCEL }): promises.Promise<dialogs.PromptResult> { 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<dialogs.PromptResult> {
var d = promises.defer<dialogs.PromptResult>(); var d = promises.defer<dialogs.PromptResult>();
try { try {
var alert = createAlertDialog(message, options); var alert = createAlertDialog(message, options);
var input = new android.widget.EditText(appmodule.android.context); 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 : ""); input.setText(defaultText ? defaultText : "");
alert.setView(input); alert.setView(input);

View File

@ -1,6 +1,9 @@
declare module "ui/dialogs" { declare module "ui/dialogs" {
import promises = require("promises"); import promises = require("promises");
import view = require("ui/core/view"); 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. * 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 message The text to display in the dialog box.
* @param options The options for the dialog box. Optional. * @param options The options for the dialog box. Optional.
*/ */
function prompt(message: string, defaultText?: string, options?: DialogButtonsOptions): promises.Promise<string>; function prompt(message: string, defaultText?: string, options?: PromptOptions): promises.Promise<string>;
/** /**
* Provides options for the dialog. * Provides options for the dialog.
@ -44,7 +47,7 @@
} }
/** /**
* Provides options for the confirm. * Provides options for the confirm dialog.
*/ */
interface DialogButtonsOptions extends AlertOptions { interface DialogButtonsOptions extends AlertOptions {
/** /**
@ -58,6 +61,16 @@
neutralButtonText?: string; 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. * Provides result data from the prompt dialog.
*/ */

View File

@ -3,15 +3,13 @@
*/ */
import promises = require("promises"); import promises = require("promises");
import dialogs = require("ui/dialogs"); import dialogs = require("ui/dialogs");
import dialogs_common = require("ui/dialogs/dialogs-common");
import view = require("ui/core/view"); import view = require("ui/core/view");
var UIALERTVIEWDELEGATE = "UIAlertViewDelegate", // merge the exports of the request file with the exports of this file
STRING = "string", declare var exports;
PROMPT = "Prompt", require("utils/module-merge").merge(dialogs_common, exports);
CONFIRM = "Confirm",
ALERT = "Alert",
OK = "OK",
CANCEL = "Cancel";
function createUIAlertView(message: string, options: dialogs.DialogOptions): UIKit.UIAlertView { function createUIAlertView(message: string, options: dialogs.DialogOptions): UIKit.UIAlertView {
var alert = new 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<void> { export function alert(message: string, options = { title: dialogs_common.ALERT, okButtonText: dialogs_common.OK }): promises.Promise<void> {
var d = promises.defer<void>(); var d = promises.defer<void>();
try { try {
var alert = createUIAlertView(message, options); var alert = createUIAlertView(message, options);
@ -75,7 +73,7 @@ export function alert(message: string, options = { title: ALERT, okButtonText: O
return d.promise(); return d.promise();
} }
export function confirm(message: string, options = { title: CONFIRM, okButtonText: OK, cancelButtonText: CANCEL }): promises.Promise<boolean> { export function confirm(message: string, options = { title: dialogs_common.CONFIRM, okButtonText: dialogs_common.OK, cancelButtonText: dialogs_common.CANCEL }): promises.Promise<boolean> {
var d = promises.defer<boolean>(); var d = promises.defer<boolean>();
try { try {
var alert = createUIAlertView(message, options); var alert = createUIAlertView(message, options);
@ -100,11 +98,17 @@ export function confirm(message: string, options = { title: CONFIRM, okButtonTe
return d.promise(); return d.promise();
} }
export function prompt(message: string, defaultText?: string, options = { title: PROMPT, okButtonText: OK, cancelButtonText: CANCEL, defaultText: "" }): promises.Promise<dialogs.PromptResult> { 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<dialogs.PromptResult> {
var d = promises.defer<dialogs.PromptResult>(); var d = promises.defer<dialogs.PromptResult>();
try { try {
var alert = createUIAlertView(message, options); 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); addButtonsToAlertDialog(alert, options);