mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 19:26:42 +08:00
Apply getter check to determine if API is exposed as property or as method for iOS backward compatibility
This commit is contained in:
@ -15,6 +15,9 @@ import timer = require("timer");
|
||||
import trace = require("trace");
|
||||
import types = require("utils/types");
|
||||
import platform = require("platform");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
var sdkVersion = parseInt(platform.device.sdkVersion);
|
||||
|
||||
trace.enable();
|
||||
@ -377,7 +380,8 @@ export var waitUntilReady = function (isReady: () => boolean, timeoutSec?: numbe
|
||||
var waitTime = 20 / 1000;
|
||||
var totalWaitTime = 0;
|
||||
while (true) {
|
||||
NSRunLoop.currentRunLoop().runUntilDate(<any>NSDate.dateWithTimeIntervalSinceNow(waitTime));
|
||||
utils.ios.getter(NSRunLoop, NSRunLoop.currentRunLoop).runUntilDate(<any>NSDate.dateWithTimeIntervalSinceNow(waitTime));
|
||||
|
||||
if (isReady()) {
|
||||
break;
|
||||
}
|
||||
|
@ -3,6 +3,9 @@ import app = require("application");
|
||||
import TKUnit = require("./TKUnit");
|
||||
import commonTests = require("./application-tests-common");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
import getter = utils.ios.getter;
|
||||
|
||||
global.moduleMerge(commonTests, exports);
|
||||
|
||||
// >> application-ios-observer
|
||||
@ -10,7 +13,7 @@ global.moduleMerge(commonTests, exports);
|
||||
if (app.ios) {
|
||||
var observer = app.ios.addNotificationObserver(UIDeviceBatteryLevelDidChangeNotification,
|
||||
function onReceiveCallback(notification: NSNotification) {
|
||||
var percent = UIDevice.currentDevice().batteryLevel * 100;
|
||||
var percent = getter(UIDevice, UIDevice.currentDevice).batteryLevel * 100;
|
||||
var message = "Battery: " + percent + "%";
|
||||
////console.log(message);
|
||||
});
|
||||
|
@ -4,6 +4,8 @@ import buttons = require("ui/button");
|
||||
import app = require("application");
|
||||
import platform = require("platform");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
function printDeviceInfoAndroid() {
|
||||
console.log("android.os.Build.DEVICE = " + android.os.Build.DEVICE); //android.os.Build.DEVICE = hammerhead
|
||||
console.log("android.os.Build.VERSION.SDK = " + android.os.Build.VERSION.SDK); //android.os.Build.VERSION.SDK = 19
|
||||
@ -27,7 +29,7 @@ function printDeviceInfoAndroid() {
|
||||
}
|
||||
|
||||
function printDeviceInfoIOS() {
|
||||
var device = UIDevice.currentDevice();
|
||||
var device = utils.ios.getter(UIDevice, UIDevice.currentDevice);
|
||||
console.log("device.name = " + device.name); //device.name = iPhone Simulator
|
||||
console.log("device.systemName = " + device.systemName); //device.systemName = iPhone OS
|
||||
console.log("device.systemVersion = " + device.systemVersion); //device.systemVersion = 8.1
|
||||
@ -35,7 +37,7 @@ function printDeviceInfoIOS() {
|
||||
console.log("device.localizedModel = " + device.localizedModel); //device.localizedModel = iPhone Simulator
|
||||
console.log("device.userInterfaceIdiom = " + device.userInterfaceIdiom); //device.userInterfaceIdiom = 0
|
||||
console.log("device.batteryLevel = " + device.batteryLevel); //device.batteryLevel = -1
|
||||
var screen = UIScreen.mainScreen();
|
||||
var screen = utils.ios.getter(UIScreen, UIScreen.mainScreen);
|
||||
console.log("screen = " + screen);
|
||||
console.log("screen.nativeBounds = " + screen.nativeBounds.size.width + ", " + screen.nativeBounds.size.height); //screen.nativeBounds = 640, 1136
|
||||
console.log("screen.scale = " + screen.scale); //screen.scale = 2
|
||||
|
@ -112,7 +112,9 @@ var testsWithLongDelay = {
|
||||
testLoadExistingUrl: 10000 * 5,
|
||||
testLoadLocalFile: 10000 * 5,
|
||||
testLoadInvalidUrl: 10000,
|
||||
testLoadUpperCaseSrc: 10000 * 5
|
||||
testLoadUpperCaseSrc: 10000 * 5,
|
||||
test_SettingImageSrc: 30 * 1000,
|
||||
test_ChainingAnimations: 30 * 1000
|
||||
}
|
||||
|
||||
var startTime;
|
||||
|
@ -1,15 +1,17 @@
|
||||
import datePickerModule = require("ui/date-picker");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
export function getNativeYear(datePicker: datePickerModule.DatePicker): number {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).year;
|
||||
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).year;
|
||||
}
|
||||
|
||||
export function getNativeMonth(datePicker: datePickerModule.DatePicker): number {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).month;
|
||||
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).month;
|
||||
}
|
||||
|
||||
export function getNativeDay(datePicker: datePickerModule.DatePicker): number {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).day;
|
||||
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).day;
|
||||
}
|
||||
|
||||
export function getNativeMaxDate(datePicker: datePickerModule.DatePicker): Date {
|
||||
@ -21,31 +23,31 @@ export function getNativeMinDate(datePicker: datePickerModule.DatePicker): Date
|
||||
}
|
||||
|
||||
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
|
||||
comps.year = value;
|
||||
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
datePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
|
||||
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
|
||||
}
|
||||
|
||||
export function setNativeMonth(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
|
||||
comps.month = value;
|
||||
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
datePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
|
||||
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
|
||||
}
|
||||
|
||||
export function setNativeDay(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
|
||||
comps.day = value;
|
||||
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
datePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
|
||||
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
|
||||
}
|
||||
|
||||
export function setNativeDate(datePicker: datePickerModule.DatePicker, year: number, month: number, day: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
|
||||
comps.year = year;
|
||||
comps.month = month;
|
||||
comps.day = day;
|
||||
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
datePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
|
||||
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
|
||||
}
|
||||
}
|
||||
|
@ -1,32 +1,34 @@
|
||||
import timePickerModule = require("ui/time-picker");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
export function getNativeHour(timePicker: timePickerModule.TimePicker): number {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date).hour;
|
||||
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date).hour;
|
||||
}
|
||||
|
||||
export function getNativeMinute(timePicker: timePickerModule.TimePicker): number {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date).minute;
|
||||
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date).minute;
|
||||
}
|
||||
|
||||
export function setNativeHour(timePicker: timePickerModule.TimePicker, value: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
|
||||
comps.hour = value;
|
||||
timePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
timePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
|
||||
(<any>timePicker)._changeHandler.valueChanged(timePicker.ios);
|
||||
}
|
||||
|
||||
export function setNativeMinute(timePicker: timePickerModule.TimePicker, value: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
|
||||
comps.minute = value;
|
||||
timePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
timePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
|
||||
(<any>timePicker)._changeHandler.valueChanged(timePicker.ios);
|
||||
}
|
||||
|
||||
export function setNativeTime(timePicker: timePickerModule.TimePicker, hour: number, minute: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
|
||||
comps.hour = hour;
|
||||
comps.minute = minute;
|
||||
timePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
timePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
|
||||
(<any>timePicker)._changeHandler.valueChanged(timePicker.ios);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ export function checkNativeBackgroundColor(v: view.View): boolean {
|
||||
if (v.ios instanceof UILabel) {
|
||||
var cgColor1 = (<UILabel>v.ios).layer.backgroundColor;
|
||||
var cgColor2 = (<UIColor>v.backgroundColor.ios).CGColor;
|
||||
return v.backgroundColor && CGColorEqualToColor(cgColor1, cgColor2);
|
||||
return v.backgroundColor && !!CGColorEqualToColor(cgColor1, cgColor2);
|
||||
}
|
||||
|
||||
return v.backgroundColor && (<UIView>v.ios).backgroundColor.isEqual(v.backgroundColor.ios);
|
||||
|
@ -1,13 +1,15 @@
|
||||
import Common = require("./application-settings-common");
|
||||
|
||||
var userDefaults = NSUserDefaults.standardUserDefaults();
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
var userDefaults = utils.ios.getter(NSUserDefaults, NSUserDefaults.standardUserDefaults);
|
||||
|
||||
export var hasKey = function (key: string): boolean {
|
||||
Common.checkKey(key);
|
||||
return userDefaults.objectForKey(key) !== null;
|
||||
}
|
||||
|
||||
// getters
|
||||
// utils.ios.getters
|
||||
export var getBoolean = function (key: string, defaultValue?: boolean): boolean {
|
||||
Common.checkKey(key);
|
||||
if (hasKey(key)) {
|
||||
@ -61,5 +63,5 @@ export var remove = function (key: string): void {
|
||||
}
|
||||
|
||||
export var clear = function (): void {
|
||||
userDefaults.removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier);
|
||||
userDefaults.removePersistentDomainForName(utils.ios.getter(NSBundle, NSBundle.mainBundle).bundleIdentifier);
|
||||
}
|
||||
|
@ -5,6 +5,8 @@ import * as uiUtils from "ui/utils";
|
||||
import * as typesModule from "utils/types";
|
||||
import * as enumsModule from "ui/enums";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
var typedExports: typeof definition = exports;
|
||||
|
||||
@ -32,7 +34,7 @@ class Window extends UIWindow {
|
||||
}
|
||||
|
||||
public layoutSubviews(): void {
|
||||
uiUtils.ios._layoutRootView(this._content, UIScreen.mainScreen().bounds);
|
||||
uiUtils.ios._layoutRootView(this._content, utils.ios.getter(UIScreen, UIScreen.mainScreen).bounds);
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,7 +63,7 @@ class IOSApplication implements definition.iOSApplication {
|
||||
public rootController: any;
|
||||
|
||||
private _delegate: typeof UIApplicationDelegate;
|
||||
private _currentOrientation = UIDevice.currentDevice().orientation;
|
||||
private _currentOrientation = utils.ios.getter(UIDevice, UIDevice.currentDevice).orientation;
|
||||
private _window: Window;
|
||||
private _observers: Array<NotificationObserver>;
|
||||
|
||||
@ -76,7 +78,7 @@ class IOSApplication implements definition.iOSApplication {
|
||||
}
|
||||
|
||||
get nativeApp(): UIApplication {
|
||||
return UIApplication.sharedApplication();
|
||||
return utils.ios.getter(UIApplication, UIApplication.sharedApplication);
|
||||
}
|
||||
|
||||
get delegate(): typeof UIApplicationDelegate {
|
||||
@ -90,7 +92,7 @@ class IOSApplication implements definition.iOSApplication {
|
||||
|
||||
public addNotificationObserver(notificationName: string, onReceiveCallback: (notification: NSNotification) => void): NotificationObserver {
|
||||
var observer = NotificationObserver.new().initWithCallback(onReceiveCallback);
|
||||
NSNotificationCenter.defaultCenter().addObserverSelectorNameObject(observer, "onReceive", notificationName, null);
|
||||
utils.ios.getter(NSNotificationCenter, NSNotificationCenter.defaultCenter).addObserverSelectorNameObject(observer, "onReceive", notificationName, null);
|
||||
this._observers.push(observer);
|
||||
return observer;
|
||||
}
|
||||
@ -99,13 +101,13 @@ class IOSApplication implements definition.iOSApplication {
|
||||
var index = this._observers.indexOf(observer);
|
||||
if (index >= 0) {
|
||||
this._observers.splice(index, 1);
|
||||
NSNotificationCenter.defaultCenter().removeObserverNameObject(observer, notificationName, null);
|
||||
utils.ios.getter(NSNotificationCenter, NSNotificationCenter.defaultCenter).removeObserverNameObject(observer, notificationName, null);
|
||||
}
|
||||
}
|
||||
|
||||
private didFinishLaunchingWithOptions(notification: NSNotification) {
|
||||
this._window = <Window>Window.alloc().initWithFrame(UIScreen.mainScreen().bounds);
|
||||
this._window.backgroundColor = UIColor.whiteColor();
|
||||
this._window = <Window>Window.alloc().initWithFrame(utils.ios.getter(UIScreen, UIScreen.mainScreen).bounds);
|
||||
this._window.backgroundColor = utils.ios.getter(UIColor, UIColor.whiteColor);
|
||||
|
||||
if (typedExports.onLaunch) {
|
||||
typedExports.onLaunch(undefined);
|
||||
@ -165,7 +167,7 @@ class IOSApplication implements definition.iOSApplication {
|
||||
typedExports.onResume();
|
||||
}
|
||||
|
||||
typedExports.notify({ eventName: typedExports.resumeEvent, object: this, ios: UIApplication.sharedApplication() });
|
||||
typedExports.notify({ eventName: typedExports.resumeEvent, object: this, ios: utils.ios.getter(UIApplication, UIApplication.sharedApplication) });
|
||||
}
|
||||
|
||||
private didEnterBackground(notification: NSNotification) {
|
||||
@ -173,7 +175,7 @@ class IOSApplication implements definition.iOSApplication {
|
||||
typedExports.onSuspend();
|
||||
}
|
||||
|
||||
typedExports.notify({ eventName: typedExports.suspendEvent, object: this, ios: UIApplication.sharedApplication() });
|
||||
typedExports.notify({ eventName: typedExports.suspendEvent, object: this, ios: utils.ios.getter(UIApplication, UIApplication.sharedApplication) });
|
||||
}
|
||||
|
||||
private willTerminate(notification: NSNotification) {
|
||||
@ -181,7 +183,7 @@ class IOSApplication implements definition.iOSApplication {
|
||||
typedExports.onExit();
|
||||
}
|
||||
|
||||
typedExports.notify({ eventName: typedExports.exitEvent, object: this, ios: UIApplication.sharedApplication() });
|
||||
typedExports.notify({ eventName: typedExports.exitEvent, object: this, ios: utils.ios.getter(UIApplication, UIApplication.sharedApplication) });
|
||||
}
|
||||
|
||||
private didReceiveMemoryWarning(notification: NSNotification) {
|
||||
@ -189,11 +191,11 @@ class IOSApplication implements definition.iOSApplication {
|
||||
typedExports.onLowMemory();
|
||||
}
|
||||
|
||||
typedExports.notify({ eventName: typedExports.lowMemoryEvent, object: this, android: undefined, ios: UIApplication.sharedApplication() });
|
||||
typedExports.notify({ eventName: typedExports.lowMemoryEvent, object: this, android: undefined, ios: utils.ios.getter(UIApplication, UIApplication.sharedApplication) });
|
||||
}
|
||||
|
||||
private orientationDidChange(notification: NSNotification) {
|
||||
var orientation = UIDevice.currentDevice().orientation;
|
||||
var orientation = utils.ios.getter(UIDevice, UIDevice.currentDevice).orientation;
|
||||
|
||||
if (this._currentOrientation !== orientation) {
|
||||
this._currentOrientation = orientation;
|
||||
|
@ -3,6 +3,8 @@ var inspectorCommands: typeof inspectorCommandTypes = require("./InspectorBacken
|
||||
|
||||
import * as debuggerDomains from "./debugger";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
declare var __inspectorTimestamp;
|
||||
|
||||
const frameId = "NativeScriptMainFrameIdentifier";
|
||||
@ -212,9 +214,9 @@ export class NetworkDomainDebugger implements inspectorCommandTypes.NetworkDomai
|
||||
* Loads a resource in the context of a frame on the inspected page without cross origin checks.
|
||||
*/
|
||||
loadResource(params: inspectorCommandTypes.NetworkDomain.LoadResourceMethodArguments): { content: string, mimeType: string, status: number } {
|
||||
let appPath = NSBundle.mainBundle().bundlePath;
|
||||
let appPath = utils.ios.getter(NSBundle, NSBundle.mainBundle).bundlePath;
|
||||
let pathUrl = params.url.replace("file://", appPath);
|
||||
let fileManager = NSFileManager.defaultManager();
|
||||
let fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
let data = fileManager.fileExistsAtPath(pathUrl) ? fileManager.contentsAtPath(pathUrl) : undefined;
|
||||
let content = data ? NSString.alloc().initWithDataEncoding(data, NSUTF8StringEncoding) : "";
|
||||
|
||||
|
@ -1,12 +1,14 @@
|
||||
import textModule = require("text");
|
||||
import * as utilsModule from "utils/utils";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
// TODO: Implement all the APIs receiving callback using async blocks
|
||||
// TODO: Check whether we need try/catch blocks for the iOS implementation
|
||||
export class FileSystemAccess {
|
||||
|
||||
public getLastModified(path: string): Date {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
var attributes = fileManager.attributesOfItemAtPathError(path);
|
||||
|
||||
if (attributes) {
|
||||
@ -18,7 +20,7 @@ export class FileSystemAccess {
|
||||
|
||||
public getParent(path: string, onError?: (error: any) => any): { path: string; name: string } {
|
||||
try {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
var nsString = NSString.stringWithString(path);
|
||||
|
||||
var parentPath = nsString.stringByDeletingLastPathComponent;
|
||||
@ -40,7 +42,7 @@ export class FileSystemAccess {
|
||||
|
||||
public getFile(path: string, onError?: (error: any) => any): { path: string; name: string; extension: string } {
|
||||
try {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
var exists = fileManager.fileExistsAtPath(path);
|
||||
|
||||
if (!exists) {
|
||||
@ -73,7 +75,7 @@ export class FileSystemAccess {
|
||||
|
||||
public getFolder(path: string, onError?: (error: any) => any): { path: string; name: string } {
|
||||
try {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
var exists = this.folderExists(path);
|
||||
|
||||
if (!exists) {
|
||||
@ -150,7 +152,7 @@ export class FileSystemAccess {
|
||||
}
|
||||
|
||||
private exists(path: string): { exists: boolean, isDirectory: boolean } {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
var isDirectory = new interop.Reference(interop.types.bool, false);
|
||||
var exists = fileManager.fileExistsAtPathIsDirectory(path, isDirectory);
|
||||
|
||||
@ -176,7 +178,7 @@ export class FileSystemAccess {
|
||||
}
|
||||
|
||||
public emptyFolder(path: string, onError?: (error: any) => any) {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
var entities = this.getEntities(path, onError);
|
||||
|
||||
if (!entities) {
|
||||
@ -199,7 +201,7 @@ export class FileSystemAccess {
|
||||
}
|
||||
|
||||
public rename(path: string, newPath: string, onError?: (error: any) => any) {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
|
||||
try {
|
||||
fileManager.moveItemAtPathToPathError(path, newPath);
|
||||
@ -212,7 +214,7 @@ export class FileSystemAccess {
|
||||
}
|
||||
|
||||
public getLogicalRootPath(): string {
|
||||
let mainBundlePath = NSBundle.mainBundle().bundlePath;
|
||||
let mainBundlePath = utils.ios.getter(NSBundle, NSBundle.mainBundle).bundlePath;
|
||||
let resolvedPath = NSString.stringWithString(mainBundlePath).stringByResolvingSymlinksInPath;
|
||||
return resolvedPath;
|
||||
}
|
||||
@ -298,7 +300,7 @@ export class FileSystemAccess {
|
||||
}
|
||||
|
||||
private getKnownPath(folderType: number): string {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
var paths = fileManager.URLsForDirectoryInDomains(folderType, NSSearchPathDomainMask.UserDomainMask);
|
||||
|
||||
var url = paths.objectAtIndex(0);
|
||||
@ -326,7 +328,7 @@ export class FileSystemAccess {
|
||||
}
|
||||
|
||||
private deleteEntity(path: string, onError?: (error: any) => any) {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
try {
|
||||
fileManager.removeItemAtPathError(path);
|
||||
}
|
||||
@ -339,7 +341,7 @@ export class FileSystemAccess {
|
||||
|
||||
private enumEntities(path: string, callback: (entity: { path: string; name: string; extension: string }) => boolean, onError?: (error) => any) {
|
||||
try {
|
||||
var fileManager = NSFileManager.defaultManager();
|
||||
var fileManager = utils.ios.getter(NSFileManager, NSFileManager.defaultManager);
|
||||
try {
|
||||
var files = fileManager.contentsOfDirectoryAtPathError(path);
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
import definition = require("fps-meter/fps-native");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
class FrameHandlerImpl extends NSObject {
|
||||
|
||||
private _owner: WeakRef<FPSCallback>;
|
||||
@ -35,10 +37,10 @@ export class FPSCallback implements definition.FPSCallback {
|
||||
|
||||
this.displayLink = CADisplayLink.displayLinkWithTargetSelector(this.impl, "handleFrame");
|
||||
this.displayLink.paused = true;
|
||||
this.displayLink.addToRunLoopForMode(NSRunLoop.currentRunLoop(), NSDefaultRunLoopMode);
|
||||
this.displayLink.addToRunLoopForMode(utils.ios.getter(NSRunLoop, NSRunLoop.currentRunLoop), NSDefaultRunLoopMode);
|
||||
// UIScrollView (including in UIITableView) will run a loop in UITrackingRunLoopMode during scrolling.
|
||||
// If we do not add the CADisplayLink in this mode, it would appear paused during scrolling.
|
||||
this.displayLink.addToRunLoopForMode(NSRunLoop.currentRunLoop(), UITrackingRunLoopMode);
|
||||
this.displayLink.addToRunLoopForMode(utils.ios.getter(NSRunLoop, NSRunLoop.currentRunLoop), UITrackingRunLoopMode);
|
||||
}
|
||||
|
||||
public start() {
|
||||
|
@ -6,25 +6,20 @@ import http = require("http");
|
||||
|
||||
import * as types from "utils/types";
|
||||
import * as imageSourceModule from "image-source";
|
||||
import * as utilsModule from "utils/utils";
|
||||
import * as fsModule from "file-system";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
import getter = utils.ios.getter;
|
||||
|
||||
import domainDebugger = require("./../debugger/debugger");
|
||||
|
||||
var GET = "GET";
|
||||
var USER_AGENT_HEADER = "User-Agent";
|
||||
var USER_AGENT = "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25";
|
||||
var sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration();
|
||||
var queue = NSOperationQueue.mainQueue();
|
||||
var sessionConfig = getter(NSURLSessionConfiguration, NSURLSessionConfiguration.defaultSessionConfiguration);
|
||||
var queue = getter(NSOperationQueue, NSOperationQueue.mainQueue);
|
||||
var session = NSURLSession.sessionWithConfigurationDelegateDelegateQueue(sessionConfig, null, queue);
|
||||
|
||||
var utils: typeof utilsModule;
|
||||
function ensureUtils() {
|
||||
if (!utils) {
|
||||
utils = require("utils/utils");
|
||||
}
|
||||
}
|
||||
|
||||
var imageSource: typeof imageSourceModule;
|
||||
function ensureImageSource() {
|
||||
if (!imageSource) {
|
||||
@ -93,7 +88,6 @@ export function request(options: http.HttpRequestOptions): Promise<http.HttpResp
|
||||
raw: data,
|
||||
toString: () => { return NSDataToString(data); },
|
||||
toJSON: () => {
|
||||
ensureUtils();
|
||||
return utils.parseJSON(NSDataToString(data));
|
||||
},
|
||||
toImage: () => {
|
||||
|
@ -1,11 +1,13 @@
|
||||
/* tslint:disable:class-name */
|
||||
import definition = require("platform");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
export module platformNames {
|
||||
export var android = "Android";
|
||||
export var ios = "iOS";
|
||||
}
|
||||
|
||||
|
||||
class Device implements definition.Device {
|
||||
private _model: string;
|
||||
private _osVersion: string;
|
||||
@ -24,7 +26,7 @@ class Device implements definition.Device {
|
||||
|
||||
get osVersion(): string {
|
||||
if (!this._osVersion) {
|
||||
this._osVersion = UIDevice.currentDevice().systemVersion;
|
||||
this._osVersion = utils.ios.getter(UIDevice, UIDevice.currentDevice).systemVersion;
|
||||
}
|
||||
|
||||
return this._osVersion;
|
||||
@ -32,7 +34,7 @@ class Device implements definition.Device {
|
||||
|
||||
get model(): string {
|
||||
if (!this._model) {
|
||||
this._model = UIDevice.currentDevice().model;
|
||||
this._model = utils.ios.getter(UIDevice, UIDevice.currentDevice).model;
|
||||
}
|
||||
|
||||
return this._model;
|
||||
@ -40,7 +42,7 @@ class Device implements definition.Device {
|
||||
|
||||
get sdkVersion(): string {
|
||||
if (!this._sdkVersion) {
|
||||
this._sdkVersion = UIDevice.currentDevice().systemVersion;
|
||||
this._sdkVersion = utils.ios.getter(UIDevice, UIDevice.currentDevice).systemVersion;
|
||||
}
|
||||
|
||||
return this._sdkVersion;
|
||||
@ -50,7 +52,7 @@ class Device implements definition.Device {
|
||||
if (!this._deviceType) {
|
||||
var enums = require("ui/enums");
|
||||
|
||||
if (UIDevice.currentDevice().userInterfaceIdiom === UIUserInterfaceIdiom.Phone) {
|
||||
if (utils.ios.getter(UIDevice, UIDevice.currentDevice).userInterfaceIdiom === UIUserInterfaceIdiom.Phone) {
|
||||
this._deviceType = enums.DeviceType.Phone;
|
||||
}
|
||||
else {
|
||||
@ -62,7 +64,7 @@ class Device implements definition.Device {
|
||||
}
|
||||
|
||||
get uuid(): string {
|
||||
var userDefaults = NSUserDefaults.standardUserDefaults();
|
||||
var userDefaults = utils.ios.getter(NSUserDefaults, NSUserDefaults.standardUserDefaults);
|
||||
var uuid_key = "TNSUUID";
|
||||
var app_uuid = userDefaults.stringForKey(uuid_key);
|
||||
|
||||
@ -78,7 +80,7 @@ class Device implements definition.Device {
|
||||
|
||||
get language(): string {
|
||||
if (!this._language) {
|
||||
var languages = NSLocale.preferredLanguages();
|
||||
var languages = utils.ios.getter(NSLocale, NSLocale.preferredLanguages);
|
||||
this._language = languages[0];
|
||||
}
|
||||
|
||||
@ -87,7 +89,7 @@ class Device implements definition.Device {
|
||||
|
||||
get region(): string {
|
||||
if(!this._region) {
|
||||
this._region = NSLocale.currentLocale().objectForKey(NSLocaleCountryCode);
|
||||
this._region = utils.ios.getter(NSLocale, NSLocale.currentLocale).objectForKey(NSLocaleCountryCode);
|
||||
}
|
||||
|
||||
return this._region;
|
||||
@ -98,7 +100,7 @@ class MainScreen implements definition.ScreenMetrics {
|
||||
private _screen: UIScreen;
|
||||
private get screen(): UIScreen {
|
||||
if (!this._screen) {
|
||||
this._screen = UIScreen.mainScreen();
|
||||
this._screen = utils.ios.getter(UIScreen, UIScreen.mainScreen);
|
||||
}
|
||||
|
||||
return this._screen;
|
||||
|
@ -2,6 +2,8 @@ import spanCommon = require("./span-common");
|
||||
import enums = require("ui/enums");
|
||||
import formattedString = require("text/formatted-string");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
global.moduleMerge(spanCommon, exports);
|
||||
|
||||
export class Span extends spanCommon.Span {
|
||||
@ -16,7 +18,7 @@ export class Span extends spanCommon.Span {
|
||||
if (realFontAttributes || realFontFamily || realFontSize) {
|
||||
var font;
|
||||
if (!realFontSize) {
|
||||
realFontSize = UIFont.systemFontSize();
|
||||
realFontSize = utils.ios.getter(UIFont, UIFont.systemFontSize);
|
||||
}
|
||||
if (realFontFamily) {
|
||||
font = UIFont.fontWithNameSize(realFontFamily, realFontSize);
|
||||
|
@ -6,6 +6,8 @@ import enums = require("ui/enums");
|
||||
import style = require("ui/styling/style");
|
||||
import dependencyObservable = require("ui/core/dependency-observable");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
|
||||
let _transform = "_transform";
|
||||
@ -239,7 +241,7 @@ export class Animation extends common.Animation implements definition.Animation
|
||||
};
|
||||
originalValue = nativeView.layer.backgroundColor;
|
||||
if (nativeView instanceof UILabel) {
|
||||
nativeView.setValueForKey(UIColor.clearColor(), "backgroundColor");
|
||||
nativeView.setValueForKey(utils.ios.getter(UIColor, UIColor.clearColor), "backgroundColor");
|
||||
}
|
||||
value = value.CGColor;
|
||||
break;
|
||||
|
@ -4,11 +4,13 @@ import proxy = require("ui/core/proxy");
|
||||
import style = require("ui/styling/style");
|
||||
import view = require("ui/core/view");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
function onYearPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.ios) {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, picker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, picker.ios.date);
|
||||
comps.year = data.newValue;
|
||||
picker.date = new Date(comps.year, comps.month - 1, comps.day);
|
||||
}
|
||||
@ -20,7 +22,7 @@ function onMonthPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.ios) {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, picker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, picker.ios.date);
|
||||
comps.month = data.newValue;
|
||||
picker.date = new Date(comps.year, comps.month - 1, comps.day);
|
||||
}
|
||||
@ -32,7 +34,7 @@ function onDayPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.ios) {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, picker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, picker.ios.date);
|
||||
comps.day = data.newValue;
|
||||
picker.date = new Date(comps.year, comps.month - 1, comps.day);
|
||||
}
|
||||
@ -65,12 +67,12 @@ function onDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.ios) {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, picker.ios.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, picker.ios.date);
|
||||
let newDate = data.newValue;
|
||||
comps.year = newDate.getFullYear();
|
||||
comps.month = newDate.getMonth() + 1;
|
||||
comps.day = newDate.getDate();
|
||||
picker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
picker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -108,7 +110,7 @@ class UIDatePickerChangeHandlerImpl extends NSObject {
|
||||
}
|
||||
|
||||
public valueChanged(sender: UIDatePicker) {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, sender.date);
|
||||
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, sender.date);
|
||||
|
||||
let owner = this._owner.get();
|
||||
if (!owner) {
|
||||
|
@ -4,7 +4,9 @@
|
||||
import dialogs = require("ui/dialogs");
|
||||
import dialogsCommon = require("./dialogs-common");
|
||||
import types = require("utils/types");
|
||||
import utils = require("utils/utils");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
import getter = utils.ios.getter;
|
||||
|
||||
global.moduleMerge(dialogsCommon, exports);
|
||||
|
||||
@ -476,7 +478,7 @@ export function action(arg: any): Promise<string> {
|
||||
});
|
||||
|
||||
actionSheet.delegate = delegate;
|
||||
actionSheet.showInView(UIApplication.sharedApplication().keyWindow);
|
||||
actionSheet.showInView(getter(UIApplication, UIApplication.sharedApplication).keyWindow);
|
||||
} else {
|
||||
var alertController = UIAlertController.alertControllerWithTitleMessagePreferredStyle(options.title, options.message, UIAlertControllerStyle.ActionSheet);
|
||||
|
||||
|
@ -1,8 +1,10 @@
|
||||
import common = require("./image-cache-common");
|
||||
import utils = require("utils/utils");
|
||||
import trace = require("trace");
|
||||
import * as httpRequestModule from "http/http-request";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
import getter = utils.ios.getter;
|
||||
|
||||
var httpRequest: typeof httpRequestModule;
|
||||
function ensureHttpRequest() {
|
||||
if (!httpRequest) {
|
||||
@ -32,7 +34,7 @@ class MemmoryWarningHandler extends NSObject {
|
||||
public initWithCache(cache: NSCache<any, any>): MemmoryWarningHandler {
|
||||
this._cache = cache;
|
||||
|
||||
NSNotificationCenter.defaultCenter().addObserverSelectorNameObject(this, "clearCache", "UIApplicationDidReceiveMemoryWarningNotification", null);
|
||||
getter(NSNotificationCenter, NSNotificationCenter.defaultCenter).addObserverSelectorNameObject(this, "clearCache", "UIApplicationDidReceiveMemoryWarningNotification", null);
|
||||
if (trace.enabled) {
|
||||
trace.write("[MemmoryWarningHandler] Added low memory observer.", trace.categories.Debug);
|
||||
}
|
||||
@ -41,7 +43,7 @@ class MemmoryWarningHandler extends NSObject {
|
||||
}
|
||||
|
||||
public dealloc(): void {
|
||||
NSNotificationCenter.defaultCenter().removeObserverNameObject(this, "UIApplicationDidReceiveMemoryWarningNotification", null);
|
||||
getter(NSNotificationCenter, NSNotificationCenter.defaultCenter).removeObserverNameObject(this, "UIApplicationDidReceiveMemoryWarningNotification", null);
|
||||
if (trace.enabled) {
|
||||
trace.write("[MemmoryWarningHandler] Removed low memory observer.", trace.categories.Debug);
|
||||
}
|
||||
|
@ -2,10 +2,12 @@
|
||||
import {View} from "ui/core/view";
|
||||
import trace = require("trace");
|
||||
import uiUtils = require("ui/utils");
|
||||
import utils = require("utils/utils");
|
||||
import {device} from "platform";
|
||||
import {DeviceType} from "ui/enums";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
import getter = utils.ios.getter;
|
||||
|
||||
global.moduleMerge(pageCommon, exports);
|
||||
const ENTRY = "_entry";
|
||||
const DELEGATE = "_delegate";
|
||||
@ -79,7 +81,7 @@ class UIViewControllerImpl extends UIViewController {
|
||||
if (owner._modalParent) {
|
||||
let isTablet = device.deviceType === DeviceType.Tablet;
|
||||
let isFullScreen = !owner._UIModalPresentationFormSheet || !isTablet;
|
||||
let frame = isFullScreen ? UIScreen.mainScreen().bounds : this.view.frame;
|
||||
let frame = isFullScreen ? getter(UIScreen, UIScreen.mainScreen).bounds : this.view.frame;
|
||||
let size = frame.size;
|
||||
let width = size.width;
|
||||
let height = size.height;
|
||||
@ -99,7 +101,7 @@ class UIViewControllerImpl extends UIViewController {
|
||||
|
||||
let bottom = height;
|
||||
let statusBarHeight = uiUtils.ios.getStatusBarHeight();
|
||||
let statusBarVisible = !UIApplication.sharedApplication().statusBarHidden;
|
||||
let statusBarVisible = !getter(UIApplication, UIApplication.sharedApplication).statusBarHidden;
|
||||
let backgroundSpanUnderStatusBar = owner.backgroundSpanUnderStatusBar;
|
||||
if (statusBarVisible && !backgroundSpanUnderStatusBar) {
|
||||
height -= statusBarHeight;
|
||||
@ -396,7 +398,7 @@ export class Page extends pageCommon.Page {
|
||||
super._raiseShowingModallyEvent();
|
||||
|
||||
parent.ios.presentViewControllerAnimatedCompletion(this._ios, utils.ios.MajorVersion >= 7, null);
|
||||
let transitionCoordinator = parent.ios.transitionCoordinator();
|
||||
let transitionCoordinator = getter(parent.ios, parent.ios.transitionCoordinator);
|
||||
if (transitionCoordinator) {
|
||||
UIViewControllerTransitionCoordinator.prototype.animateAlongsideTransitionCompletion.call(transitionCoordinator, null, () => this._raiseShownModallyEvent());
|
||||
}
|
||||
|
@ -8,6 +8,8 @@ import style = require("ui/styling/style");
|
||||
import font = require("ui/styling/font");
|
||||
import view = require("ui/core/view");
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
|
||||
var color: typeof colorModule;
|
||||
@ -175,7 +177,7 @@ export class SegmentedBarStyler implements style.Styler {
|
||||
else {
|
||||
attrs = NSMutableDictionary.new();
|
||||
}
|
||||
let newFont = (<font.Font>newValue).getUIFont(UIFont.systemFontOfSize(UIFont.labelFontSize()));
|
||||
let newFont = (<font.Font>newValue).getUIFont(UIFont.systemFontOfSize(utils.ios.getter(UIFont, UIFont.labelFontSize)));
|
||||
attrs.setValueForKey(newFont, NSFontAttributeName);
|
||||
bar.setTitleTextAttributesForState(attrs, UIControlState.Normal);
|
||||
}
|
||||
@ -202,7 +204,7 @@ export class SegmentedBarStyler implements style.Styler {
|
||||
currentFont = currentAttrs.objectForKey(NSFontAttributeName);
|
||||
}
|
||||
if (!currentFont) {
|
||||
currentFont = UIFont.systemFontOfSize(UIFont.labelFontSize());
|
||||
currentFont = UIFont.systemFontOfSize(utils.ios.getter(UIFont, UIFont.labelFontSize));
|
||||
}
|
||||
return currentFont;
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ import viewModule = require("ui/core/view");
|
||||
import common = require("./background-common");
|
||||
import * as styleModule from "./style";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
|
||||
var style: typeof styleModule;
|
||||
@ -193,7 +195,7 @@ function drawClipPath(view: viewModule.View) {
|
||||
borderLayer.path = path;
|
||||
borderLayer.lineWidth = view.borderWidth * 2;
|
||||
borderLayer.strokeColor = view.borderColor.ios.CGColor;
|
||||
borderLayer.fillColor = UIColor.clearColor().CGColor;
|
||||
borderLayer.fillColor = utils.ios.getter(UIColor, UIColor.clearColor).CGColor;
|
||||
|
||||
borderLayer.frame = nativeView.bounds;
|
||||
|
||||
|
@ -3,6 +3,8 @@ import common = require("./font-common");
|
||||
import fs = require("file-system");
|
||||
import * as traceModule from "trace";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
export class Font extends common.Font {
|
||||
public static default = new Font(undefined, undefined, enums.FontStyle.normal, enums.FontWeight.normal);
|
||||
|
||||
@ -45,7 +47,7 @@ export function ensureSystemFontSets() {
|
||||
return;
|
||||
}
|
||||
|
||||
var nsFontFamilies = UIFont.familyNames();
|
||||
var nsFontFamilies = utils.ios.getter(UIFont, UIFont.familyNames);
|
||||
for (var i = 0; i < nsFontFamilies.count; i++) {
|
||||
var family = nsFontFamilies.objectAtIndex(i);
|
||||
systemFontFamilies.add(family);
|
||||
@ -98,7 +100,7 @@ function createUIFont(font: Font, defaultFont: UIFont) {
|
||||
}
|
||||
|
||||
if (!descriptor) {
|
||||
descriptor = defaultFont.fontDescriptor().fontDescriptorWithSymbolicTraits(symbolicTraits);
|
||||
descriptor = utils.ios.getter(defaultFont, defaultFont.fontDescriptor).fontDescriptorWithSymbolicTraits(symbolicTraits);
|
||||
}
|
||||
|
||||
return UIFont.fontWithDescriptorSize(descriptor, size);
|
||||
@ -115,19 +117,19 @@ function tryResolveWithSystemFont(font: Font, size: number, symbolicTraits: numb
|
||||
else {
|
||||
systemFont = UIFont.systemFontOfSize(size);
|
||||
}
|
||||
result = systemFont.fontDescriptor().fontDescriptorWithSymbolicTraits(symbolicTraits);
|
||||
result = utils.ios.getter(systemFont, systemFont.fontDescriptor).fontDescriptorWithSymbolicTraits(symbolicTraits);
|
||||
break;
|
||||
|
||||
case common.genericFontFamilies.monospace:
|
||||
if ((<any>UIFont).monospacedDigitSystemFontOfSizeWeight) {// This method is available on iOS 9.0 and later.
|
||||
systemFont = (<any>UIFont).monospacedDigitSystemFontOfSizeWeight(size, getiOSFontWeight(font.fontWeight));
|
||||
result = systemFont.fontDescriptor().fontDescriptorWithSymbolicTraits(symbolicTraits);
|
||||
result = utils.ios.getter(systemFont, systemFont.fontDescriptor).fontDescriptorWithSymbolicTraits(symbolicTraits);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (systemFont) {
|
||||
var result = systemFont.fontDescriptor().fontDescriptorWithSymbolicTraits(symbolicTraits);
|
||||
var result = utils.ios.getter(systemFont, systemFont.fontDescriptor).fontDescriptorWithSymbolicTraits(symbolicTraits);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -291,7 +293,7 @@ export module ios {
|
||||
if (!fs.File.exists(filePath)) {
|
||||
filePath = fs.path.join(fs.knownFolders.currentApp().path, fontFile);
|
||||
}
|
||||
var fontData = NSFileManager.defaultManager().contentsAtPath(filePath);
|
||||
var fontData = utils.ios.getter(NSFileManager, NSFileManager.defaultManager).contentsAtPath(filePath);
|
||||
if (!fontData) {
|
||||
throw new Error("Could not load font from: " + fontFile);
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
import definition = require("ui/tab-view");
|
||||
import dependencyObservable = require("ui/core/dependency-observable");
|
||||
import trace = require("trace");
|
||||
import utils = require("utils/utils");
|
||||
import view = require("ui/core/view");
|
||||
import types = require("utils/types");
|
||||
import proxy = require("ui/core/proxy");
|
||||
@ -11,6 +10,9 @@ import * as imageSourceModule from "image-source";
|
||||
import style = require("ui/styling/style");
|
||||
import { Page } from "ui/page";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
import getter = utils.ios.getter;
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
|
||||
var imageSource: typeof imageSourceModule;
|
||||
@ -487,7 +489,7 @@ export class TabViewStyler implements style.Styler {
|
||||
}
|
||||
|
||||
if (!currentFont) {
|
||||
currentFont = UIFont.systemFontOfSize(UIFont.labelFontSize());
|
||||
currentFont = UIFont.systemFontOfSize(getter(UIFont, UIFont.labelFontSize));
|
||||
}
|
||||
|
||||
return currentFont;
|
||||
|
@ -6,6 +6,8 @@ import {View} from "ui/core/view";
|
||||
import * as style from "ui/styling/style";
|
||||
import {isNullOrUndefined} from "utils/types";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
|
||||
class UITextViewDelegateImpl extends NSObject implements UITextViewDelegate {
|
||||
@ -119,7 +121,7 @@ export class TextView extends common.TextView {
|
||||
}
|
||||
|
||||
public _showHint(hint: string) {
|
||||
this.ios.textColor = this.ios.textColor ? this.ios.textColor.colorWithAlphaComponent(0.22) : UIColor.blackColor().colorWithAlphaComponent(0.22);
|
||||
this.ios.textColor = this.ios.textColor ? this.ios.textColor.colorWithAlphaComponent(0.22) : utils.ios.getter(UIColor, UIColor.blackColor).colorWithAlphaComponent(0.22);
|
||||
this.ios.text = isNullOrUndefined(hint) ? "" : hint + "";
|
||||
(<any>this.ios).isShowingHint = true;
|
||||
}
|
||||
|
@ -2,15 +2,17 @@
|
||||
import style = require("ui/styling/style");
|
||||
import {View} from "ui/core/view";
|
||||
|
||||
import * as utils from "utils/utils";
|
||||
|
||||
function getDate(hour: number, minute: number): Date {
|
||||
var comps = NSDateComponents.alloc().init();
|
||||
comps.hour = hour;
|
||||
comps.minute = minute;
|
||||
return NSCalendar.currentCalendar().dateFromComponents(<any>comps);
|
||||
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(<any>comps);
|
||||
}
|
||||
|
||||
function getComponents(date: Date | NSDate): NSDateComponents {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, <any>date);
|
||||
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, <any>date);
|
||||
}
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
|
@ -1,5 +1,6 @@
|
||||
import {View} from "ui/core/view";
|
||||
import * as utils from "utils/utils";
|
||||
import getter = utils.ios.getter;
|
||||
|
||||
export module ios {
|
||||
export function getActualHeight(view: UIView): number {
|
||||
@ -11,7 +12,7 @@ export module ios {
|
||||
}
|
||||
|
||||
export function getStatusBarHeight(): number {
|
||||
var app = UIApplication.sharedApplication();
|
||||
var app = getter(UIApplication, UIApplication.sharedApplication);
|
||||
if (!app || app.statusBarHidden) {
|
||||
return 0;
|
||||
}
|
||||
|
7
tns-core-modules/utils/utils.d.ts
vendored
7
tns-core-modules/utils/utils.d.ts
vendored
@ -154,6 +154,13 @@
|
||||
* Module with ios specific utilities.
|
||||
*/
|
||||
module ios {
|
||||
/**
|
||||
* Checks if the property is a function and if it is, calls it on this.
|
||||
* Designed to support backward compatibility for methods that became properties.
|
||||
* Will not work on delegates since it checks if the propertyValue is a function, and delegates are marshalled as functions.
|
||||
* Example: getter(NSRunLoop, NSRunLoop.currentRunLoop).runUntilDate(NSDate.dateWithTimeIntervalSinceNow(waitTime));
|
||||
*/
|
||||
export function getter<T>(_this: any, propertyValue: T | {(): T}): T;
|
||||
export function getTransformedText(view, source: string, transform: string): string;
|
||||
export function setWhiteSpace(view, value: string, parentView?: any);
|
||||
export function setTextAlignment(view, value: string);
|
||||
|
@ -56,6 +56,14 @@ export module ios {
|
||||
}
|
||||
}
|
||||
|
||||
export function getter<T>(_this: any, property: T | {(): T}): T {
|
||||
if (typeof property === "function") {
|
||||
return (<{(): T}>property).call(_this);
|
||||
} else {
|
||||
return <T>property;
|
||||
}
|
||||
}
|
||||
|
||||
export function getTransformedText(view, source: string, transform: string): string {
|
||||
let result = source;
|
||||
|
||||
@ -131,13 +139,13 @@ export module ios {
|
||||
}
|
||||
|
||||
export function isLandscape(): boolean {
|
||||
var device = UIDevice.currentDevice();
|
||||
var statusBarOrientation = UIApplication.sharedApplication().statusBarOrientation;
|
||||
var device = getter(UIDevice, UIDevice.currentDevice);
|
||||
var statusBarOrientation = getter(UIApplication, UIApplication.sharedApplication).statusBarOrientation;
|
||||
var isStatusBarOrientationLandscape = isOrientationLandscape(statusBarOrientation);
|
||||
return isOrientationLandscape(device.orientation) || isStatusBarOrientationLandscape;
|
||||
}
|
||||
|
||||
export var MajorVersion = NSString.stringWithString(UIDevice.currentDevice().systemVersion).intValue;
|
||||
export var MajorVersion = NSString.stringWithString(getter(UIDevice, UIDevice.currentDevice).systemVersion).intValue;
|
||||
|
||||
export function openFile(filePath: string): boolean {
|
||||
try {
|
||||
@ -163,8 +171,8 @@ export function GC() {
|
||||
export function openUrl(location: string): boolean {
|
||||
try {
|
||||
var url = NSURL.URLWithString(location.trim());
|
||||
if (UIApplication.sharedApplication().canOpenURL(url)) {
|
||||
return UIApplication.sharedApplication().openURL(url);
|
||||
if (ios.getter(UIApplication, UIApplication.sharedApplication).canOpenURL(url)) {
|
||||
return ios.getter(UIApplication, UIApplication.sharedApplication).openURL(url);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
|
Reference in New Issue
Block a user