diff --git a/Application/application.ios.ts b/Application/application.ios.ts
index 6a91198d2..fcc1ec841 100644
--- a/Application/application.ios.ts
+++ b/Application/application.ios.ts
@@ -54,10 +54,10 @@ class iOSApplication {
this.window.backgroundColor = UIKit.UIColor.whiteColor();
this.window.makeKeyAndVisible();
- if (appModule.onLaunch) {
- this.window.rootViewController = appModule.onLaunch();
+ if (exports.onLaunch) {
+ this.window.rootViewController = exports.onLaunch();
} else {
- log("Missing TK.UI.Application.current.onLaunch");
+ log("Missing Application.onLaunch");
}
log("applicationDidFinishLaunchingWithOptions finished.");
@@ -66,8 +66,8 @@ class iOSApplication {
applicationDidBecomeActive: function (application) {
log("applicationDidBecomeActive: " + application);
- if (appModule.onResume) {
- appModule.onResume();
+ if (exports.onResume) {
+ exports.onResume();
}
},
@@ -77,8 +77,8 @@ class iOSApplication {
applicationDidEnterBackground: function (application) {
log("applicationDidEnterBackground: " + application);
- if (appModule.onSuspend) {
- appModule.onSuspend();
+ if (exports.onSuspend) {
+ exports.onSuspend();
}
},
@@ -88,15 +88,15 @@ class iOSApplication {
applicationWillTerminate: function (application) {
log("applicationWillTerminate: " + application);
- if (appModule.onExit) {
- appModule.onExit();
+ if (exports.onExit) {
+ exports.onExit();
}
},
applicationDidReceiveMemoryWarning: function (application) {
log("applicationDidReceiveMemoryWarning: " + application);
- if (appModule.onLowMemory) {
- appModule.onLowMemory();
+ if (exports.onLowMemory) {
+ exports.onLowMemory();
}
}
}
diff --git a/Application/application_common.ts b/Application/application_common.ts
index f6833c4d9..a4bd978ca 100644
--- a/Application/application_common.ts
+++ b/Application/application_common.ts
@@ -1,19 +1,14 @@
require("globals");
-export var onLaunch = function (): any {
-}
+export var onLaunch: () => any = undefined;
-export var onSuspend = function (): void {
-}
+export var onSuspend: () => any = undefined;
-export var onResume = function (): void {
-}
+export var onResume: () => any = undefined;
-export var onExit = function (): void {
-}
+export var onExit: () => any = undefined;
-export var onLowMemory = function (): void {
-}
+export var onLowMemory: () => any = undefined;
export var android = undefined;
diff --git a/BCL.csproj b/BCL.csproj
index 372a36940..0c2e8295a 100644
--- a/BCL.csproj
+++ b/BCL.csproj
@@ -174,12 +174,16 @@
timer.d.ts
+
+ user_preferences.d.ts
+
+
+
timer.d.ts
-
diff --git a/UserPreferences/user_preferences.android.ts b/UserPreferences/user_preferences.android.ts
index 97e593d33..9e78bc1b5 100644
--- a/UserPreferences/user_preferences.android.ts
+++ b/UserPreferences/user_preferences.android.ts
@@ -1,97 +1,117 @@
-import utils_module = require("Utils/utils_android");
-import appModule = require("Application/application");
+import appModule = require("Application/application");
+import Common = require("UserPreferences/user_preferences_common");
-export class UserPreferences {
- private sharedPreferences: any;
+var sharedPreferences = appModule.android.context.getSharedPreferences("prefs.db", 0);
- constructor() {
- this.sharedPreferences = appModule.android.context.getSharedPreferences("prefs.db", 0);
+export var hasKey = function (key: string): boolean {
+ Common.checkKey(key);
+ return sharedPreferences.contains(key);
+}
+
+// getters
+export var getBoolean = function (key: string, defaultValue?: boolean): boolean {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return sharedPreferences.getBoolean(key, false);
}
+ return defaultValue;
+}
- public containsKey(key: string): boolean {
- return this.sharedPreferences.contains(key);
+export var getString = function(key: string, defaultValue?: string): string {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return sharedPreferences.getString(key, "");
}
+ return defaultValue;
+}
- public getBoolean(key: string, defaultValue?: boolean): boolean {
- if ("undefined" == typeof defaultValue) {
- defaultValue = false;
- }
- return this.sharedPreferences.getBoolean(key, defaultValue);
+export var getNumber = function(key: string, defaultValue?: number): number {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return sharedPreferences.getFloat(key, float(0.0));
}
+ return defaultValue;
+}
- public getDouble(key: string, defaultValue?: number): number {
- if ("undefined" == typeof defaultValue) {
- defaultValue = 0.0;
- }
- Log('getting double for key ' + key + ' with default ' + defaultValue + ' result: ' + this.sharedPreferences.getFloat(key, defaultValue));
- return this.sharedPreferences.getFloat(key, defaultValue);
- }
+// setters
+export var setBoolean = function(key: string, value: boolean): void {
+ Common.checkKey(key);
+ Common.ensureValidValue(value, "boolean");
+ var editor = sharedPreferences.edit();
+ editor.putBoolean(key, value);
+ editor.commit();
+}
- public getInt(key: string, defaultValue?: number): number {
- if ("undefined" == typeof defaultValue) {
- defaultValue = 0;
- }
- return this.sharedPreferences.getInt(key, defaultValue);
- }
+export var setString = function(key: string, value: string): void {
+ Common.checkKey(key);
+ Common.ensureValidValue(value, "string");
+ var editor = sharedPreferences.edit();
+ editor.putString(key, value);
+ editor.commit();
+}
- public getLong(key: string, defaultValue?: number): number {
- if ("undefined" == typeof defaultValue) {
- defaultValue = 0;
- }
- return this.sharedPreferences.getLong(key, defaultValue);
- }
+export var setNumber = function(key: string, value: number): void {
+ Common.checkKey(key);
+ Common.ensureValidValue(value, "number");
+ var editor = sharedPreferences.edit();
+ editor.putFloat(key, float(value));
+ editor.commit();
+}
- public getString(key: string, defaultValue?: string): string {
- if ("undefined" == typeof defaultValue) {
- defaultValue = null; // is this ok?
- }
- return this.sharedPreferences.getString(key, defaultValue);
- }
+/*
+these are commented out to be used only if requested by users or otherwise needed
- public getStrings(key: string, defaultValue?: string[]): string[] {
- if ("undefined" == typeof defaultValue) {
- defaultValue = [];
- }
- var hashSet = utils_module.Collections.stringArrayToStringSet(defaultValue);
- var res = this.sharedPreferences.getStringSet(key, hashSet);
- return utils_module.Collections.stringSetToStringArray(res);
- }
+import utils_module = require("Utils/utils_android");
- public setBoolean(key: string, value: boolean) {
- var editor = this.sharedPreferences.edit();
- editor.putBoolean(key, value);
- editor.commit();
+export var getStringArray = function (key: string, defaultValue?: string[]): string[]{
+ Common.checkKey(key);
+ if (!hasKey(key)) {
+ return defaultValue;
}
+ if (!defaultValue) {
+ defaultValue = [];
+ }
+ var hashSet = utils_module.Collections.stringArrayToStringSet(defaultValue);
+ var res = sharedPreferences.getStringSet(key, hashSet);
+ return utils_module.Collections.stringSetToStringArray(res);
+}
- public setDouble(key: string, value: number) {
- var editor = this.sharedPreferences.edit();
- Log('setting double for key ' + key + ' with value ' + value);
- editor.putFloat(key, float(value));
- editor.commit();
+export var getInt = function (key: string, defaultValue?: number): number {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return sharedPreferences.getInt(key, 0);
}
+ return defaultValue;
+}
- public setInt(key: string, value: number) {
- var editor = this.sharedPreferences.edit();
- editor.putInt(key, value);
- editor.commit();
+export var getLong = function (key: string, defaultValue?: number): number {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return sharedPreferences.getLong(key, long(0));
}
+ return defaultValue;
+}
- public setLong(key: string, value: number) {
- var editor = this.sharedPreferences.edit();
- editor.putLong(key, long(value));
- editor.commit();
- }
+export var setStringArray = function (key: string, values: string[]): void {
+ Common.checkKey(key);
+ var editor = sharedPreferences.edit();
+ var hashSet = utils_module.Collections.stringArrayToStringSet(values);
+ editor.putStringSet(key, hashSet);
+ editor.commit();
+}
- public setString(key: string, value: string) {
- var editor = this.sharedPreferences.edit();
- editor.putString(key, value);
- editor.commit();
- }
+export var setInt = function (key: string, value: number): void {
+ Common.checkKey(key);
+ var editor = sharedPreferences.edit();
+ editor.putInt(key, value);
+ editor.commit();
+}
- public setStrings(key: string, values: string[]) {
- var editor = this.sharedPreferences.edit();
- var hashSet = utils_module.Collections.stringArrayToStringSet(values);
- editor.putStringSet(key, hashSet);
- editor.commit();
- }
-}
\ No newline at end of file
+export var setLong = function (key: string, value: number): void {
+ Common.checkKey(key);
+ var editor = sharedPreferences.edit();
+ editor.putLong(key, long(value));
+ editor.commit();
+}
+
+*/
\ No newline at end of file
diff --git a/UserPreferences/user_preferences.d.ts b/UserPreferences/user_preferences.d.ts
index 099f4ca80..faa486d71 100644
--- a/UserPreferences/user_preferences.d.ts
+++ b/UserPreferences/user_preferences.d.ts
@@ -12,4 +12,73 @@
setLong(key: string, value: number);
setString(key: string, value: string);
setStrings(key: string, value: string[]);
-}
\ No newline at end of file
+}
+
+/**
+* report does such key exist
+*/
+export declare var hasKey: (key: string) => boolean;
+
+// getters
+
+/**
+* gets value of the key as boolean, user can provide default value in case there is no value for the key
+*/
+export declare var getBoolean: (key: string, defaultValue?: boolean) => boolean;
+
+/**
+* gets value of the key as string, user can provide default value in case there is no value for the key
+*/
+export declare var getString: (key: string, defaultValue?: string) => string;
+
+/**
+* gets value of the key as string array, user can provide default value in case there is no value for the key
+*/
+export declare var getStringArray: (key: string, defaultValue?: string[]) => string[];
+
+/**
+* gets value of the key as number (double), user can provide default value in case there is no value for the key
+*/
+export declare var getNumber: (key: string, defaultValue?: number) => number;
+
+/**
+* gets value of the key as integer, user can provide default value in case there is no value for the key
+*/
+export declare var getInt: (key: string, defaultValue?: number) => number;
+
+/**
+* gets value of the key as long integer (not fully supported by JS), user can provide default value in case there is no value for the key
+*/
+export declare var getLong: (key: string, defaultValue?: number) => number;
+
+// setters
+
+/**
+* sets value for a key as boolean
+*/
+export declare var setBoolean: (key: string, value: boolean) => void;
+
+/**
+* sets value for a key as string
+*/
+export declare var setString: (key: string, value: string) => void;
+
+/**
+* sets value for a key as string array
+*/
+export declare var setStringArray: (key: string, value: string[]) => void;
+
+/**
+* sets value for a key as JS number (double)
+*/
+export declare var setNumber: (key: string, value: number) => void;
+
+/**
+* sets value for a key as integer
+*/
+export declare var setInt: (key: string, value: number) => void;
+
+/**
+* sets value for a key as long integer
+*/
+export declare var setLong: (key: string, value: number) => void;
diff --git a/UserPreferences/user_preferences.ios.ts b/UserPreferences/user_preferences.ios.ts
index 02c40d975..baa16aab6 100644
--- a/UserPreferences/user_preferences.ios.ts
+++ b/UserPreferences/user_preferences.ios.ts
@@ -1,108 +1,106 @@
-import utils_module = require("Utils/utils_ios");
+import Common = require("UserPreferences/user_preferences_common");
-export class UserPreferences {
+var userDefaults = Foundation.NSUserDefaults.standardUserDefaults();
- private userDefaults: any;
+export var hasKey = function (key: string): boolean {
+ Common.checkKey(key);
+ return (null != userDefaults.objectForKey(key)) ? true : false;
+}
- constructor() {
- this.userDefaults = Foundation.NSUserDefaults.standardUserDefaults();
+// getters
+export var getBoolean = function (key: string, defaultValue?: boolean): boolean {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return userDefaults.boolForKey(key);
}
+ return defaultValue;
+}
- public containsKey(key: string): boolean {
- // FIXME: is there a better way to do this check?
- return this.userDefaults.objectForKey(key) ? true : false;
+export var getString = function (key: string, defaultValue?: string): string {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return userDefaults.stringForKey(key);
}
+ return defaultValue;
+}
- public getBoolean(key: string, defaultValue?: boolean): boolean {
- if (this.containsKey(key)) {
- return this.userDefaults.boolForKey(key);
- }
- if ("undefined" == typeof defaultValue) {
- defaultValue = false;
- }
- return defaultValue;
+export var getNumber = function (key: string, defaultValue?: number): number {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return userDefaults.doubleForKey(key);
}
+ return defaultValue;
+}
- public getDouble(key: string, defaultValue?: number): number {
- if (this.containsKey(key)) {
- return this.userDefaults.doubleForKey(key);
- }
- if ("undefined" == typeof defaultValue) {
- defaultValue = 0.0;
- }
- return defaultValue;
- }
+// setters
+export var setBoolean = function (key: string, value: boolean): void {
+ Common.checkKey(key);
+ Common.ensureValidValue(value, "boolean");
+ userDefaults.setBoolForKey(value, key);
+ userDefaults.synchronize();
+}
- public getInt(key: string, defaultValue?: number): number {
- if (this.containsKey(key)) {
- return this.userDefaults.integerForKey(key);
- }
- if ("undefined" == typeof defaultValue) {
- defaultValue = 0;
- }
- return defaultValue;
- }
+export var setString = function (key: string, value: string): void {
+ Common.checkKey(key);
+ Common.ensureValidValue(value, "string");
+ userDefaults.setObjectForKey(value, key);
+ userDefaults.synchronize();
+}
- public getLong(key: string, defaultValue?: number): number {
- if (this.containsKey(key)) {
- return this.userDefaults.integerForKey(key);
- }
- if ("undefined" == typeof defaultValue) {
- defaultValue = 0;
- }
- return defaultValue;
- }
+export var setNumber = function (key: string, value: number): void {
+ Common.checkKey(key);
+ Common.ensureValidValue(value, "number");
+ userDefaults.setDoubleForKey(value, key);
+ userDefaults.synchronize();
+}
- public getString(key: string, defaultValue?: string): string {
- if (this.containsKey(key)) {
- return this.userDefaults.stringForKey(key);
- }
- if ("undefined" == typeof defaultValue) {
- defaultValue = "";
- }
- return defaultValue;
- }
+/*
+these are commented out to be used only if requested by users or otherwise needed
- public getStrings(key: string, defaultValue?: string[]): string[] {
- if (this.containsKey(key)) {
- var nsArray = this.userDefaults.stringArrayForKey(key);
- var jsArray = utils_module.Collections.nsArrayToJSArray(nsArray);
- return jsArray;
- }
- if ("undefined" == typeof defaultValue) {
- defaultValue = [];
- }
- return defaultValue;
- }
+import utils_module = require("Utils/utils_ios");
- public setBoolean(key: string, value: boolean) {
- this.userDefaults.setBoolForKey(value, key);
- this.userDefaults.synchronize();
+export var getStringArray = function (key: string, defaultValue?: string[]): string[] {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ var nsArray = userDefaults.stringArrayForKey(key);
+ var jsArray = utils_module.Collections.nsArrayToJSArray(nsArray);
+ return jsArray;
}
+ return defaultValue;
+}
- public setDouble(key: string, value: number) {
- this.userDefaults.setDoubleForKey(value, key);
- this.userDefaults.synchronize();
+export var getInt = function (key: string, defaultValue?: number): number {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return userDefaults.integerForKey(key);
}
+ return defaultValue;
+}
- public setInt(key: string, value: number) {
- this.userDefaults.setIntegerForKey(value, key);
- this.userDefaults.synchronize();
+export var getLong = function (key: string, defaultValue?: number): number {
+ Common.checkKey(key);
+ if (hasKey(key)) {
+ return Math.ceil(userDefaults.doubleForKey(key));
}
+ return defaultValue;
+}
- public setLong(key: string, value: number) {
- this.userDefaults.setIntegerForKey(value, key);
- this.userDefaults.synchronize();
- }
+export var setStringArray = function (key: string, values: string[]): void {
+ Common.checkKey(key);
+ var nsArray = utils_module.Collections.jsArrayToNSArray(values);
+ userDefaults.setObjectForKey(nsArray, key);
+ userDefaults.synchronize();
+}
- public setString(key: string, value: string) {
- this.userDefaults.setObjectForKey(value, key);
- this.userDefaults.synchronize();
- }
+export var setInt = function (key: string, value: number): void {
+ Common.checkKey(key);
+ userDefaults.setIntegerForKey(value, key);
+ userDefaults.synchronize();
+}
- public setStrings(key: string, values: string[]) {
- var nsArray = utils_module.Collections.jsArrayToNSArray(values);
- this.userDefaults.setObjectForKey(nsArray, key);
- this.userDefaults.synchronize();
- }
-}
\ No newline at end of file
+export var setLong = function (key: string, value: number): void {
+ Common.checkKey(key);
+ userDefaults.setDoubleForKey(Math.ceil(value), key);
+ userDefaults.synchronize();
+}
+*/
\ No newline at end of file
diff --git a/UserPreferences/user_preferences_common.ts b/UserPreferences/user_preferences_common.ts
new file mode 100644
index 000000000..9517dc23b
--- /dev/null
+++ b/UserPreferences/user_preferences_common.ts
@@ -0,0 +1,12 @@
+
+export var checkKey = function(key: string) : void {
+ if ("string" !== typeof key) {
+ throw new Error("key: '" + key + "' must be a string");
+ }
+}
+
+export var ensureValidValue = function (value: any, valueType: string): void {
+ if (valueType !== typeof value) {
+ throw new Error("value: '" + value + "' must be a " + valueType);
+ }
+}