From cf1a0158e18a958a5a07355c497ed8e13860a2f2 Mon Sep 17 00:00:00 2001 From: vakrilov Date: Fri, 13 Mar 2015 16:56:29 +0200 Subject: [PATCH] Imporvements and lint fix --- image-source/image-source-common.ts | 15 +++++++++++++++ image-source/image-source.d.ts | 10 ++++++++-- ui/enums/enums.d.ts | 2 -- ui/enums/enums.ts | 1 - ui/image/image-common.ts | 12 ++++-------- 5 files changed, 27 insertions(+), 13 deletions(-) diff --git a/image-source/image-source-common.ts b/image-source/image-source-common.ts index 2bbff7b3c..06f7f6028 100644 --- a/image-source/image-source-common.ts +++ b/image-source/image-source-common.ts @@ -1,4 +1,5 @@ import http = require("http"); +import types = require("utils/types"); // This is used for definition purposes only, it does not generate JavaScript for it. import definition = require("image-source"); @@ -30,8 +31,22 @@ export function fromUrl(url: string): Promise { } export function fromFileOrResource(path: string): definition.ImageSource { + if (!isFileOrResourcePath(path)) { + throw new Error("Path \"" + "\" is not a valid file or resource."); + } + if (path.indexOf(RESOURCE_PREFIX) === 0) { return fromResource(path.substr(RESOURCE_PREFIX.length)); } return fromFile(path); +} + +export function isFileOrResourcePath(path: string): boolean { + if (!types.isString(path)) { + return false; + } + + return path.indexOf("~/") === 0 || // relative to AppRoot + path.indexOf("/") === 0 || // absolute path + path.indexOf(RESOURCE_PREFIX) === 0; // resource } \ No newline at end of file diff --git a/image-source/image-source.d.ts b/image-source/image-source.d.ts index 9ae5df5f5..9d78e6451 100644 --- a/image-source/image-source.d.ts +++ b/image-source/image-source.d.ts @@ -4,8 +4,8 @@ declare module "image-source" { /** - * Encapsulates the common abstraction behind a platform specific object (typically a Bitmap) that is used as a source for images. - */ + * Encapsulates the common abstraction behind a platform specific object (typically a Bitmap) that is used as a source for images. + */ export class ImageSource { /** * Gets the height of this instance. This is a read-only property. @@ -104,4 +104,10 @@ declare module "image-source" { * @param path The location of the file on the file system. */ export function fromFileOrResource(path: string): ImageSource; + + /** + * Returns true if the specified path points to a resource or local file. + * @param path The path. + */ + export function isFileOrResourcePath(path: string): boolean } \ No newline at end of file diff --git a/ui/enums/enums.d.ts b/ui/enums/enums.d.ts index 32a5b864a..4d736060b 100644 --- a/ui/enums/enums.d.ts +++ b/ui/enums/enums.d.ts @@ -311,8 +311,6 @@ export var allCharacters: string; } - - /** * Defines the recognized image formats. */ diff --git a/ui/enums/enums.ts b/ui/enums/enums.ts index e16a6082e..1e0547bf9 100644 --- a/ui/enums/enums.ts +++ b/ui/enums/enums.ts @@ -86,7 +86,6 @@ export module AutocapitalizationType { export var allCharacters: string = "allCharacters"; } - export module ImageFormat { export var png: string = "png"; export var jpeg: string = "jpeg"; diff --git a/ui/image/image-common.ts b/ui/image/image-common.ts index e14b0fb50..b719f7a09 100644 --- a/ui/image/image-common.ts +++ b/ui/image/image-common.ts @@ -15,10 +15,6 @@ var IMAGE = "Image"; var ISLOADING = "isLoading"; var STRETCH = "stretch"; -function isUrl(value: string): boolean { - return value.indexOf("http://") === 0 || value.indexOf("https://") === 0; -} - function isValidSrc(src: any): boolean { return types.isString(src); } @@ -34,16 +30,16 @@ function onSrcPropertyChanged(data: dependencyObservable.PropertyChangeData) { image._setValue(Image.isLoadingProperty, true); - if (isUrl(value)) { + if (imageSource.isFileOrResourcePath(value)) { + image.imageSource = imageSource.fromFileOrResource(value); + image._setValue(Image.isLoadingProperty, false); + } else { imageSource.fromUrl(value).then((r) => { if (image["_url"] === value) { image.imageSource = r; image._setValue(Image.isLoadingProperty, false); } }); - } else { - image.imageSource = imageSource.fromFileOrResource(value); - image._setValue(Image.isLoadingProperty, false); } } else if (value instanceof imageSource.ImageSource) {