diff --git a/.gitignore b/.gitignore index 8f0e09c80..52a4a912d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,7 @@ proguard/ captures/ # Built application files -/*/build/ +build/ ## File-based project format: *.ipr diff --git a/README.md b/README.md index de48a694a..407de1135 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,25 @@ # Android-Widgets -Contains the source code of the `org.nativescript.widgets` library used by the NativeScript cross-platform modules implementation for Android. +Contains the source code of the `tns-core-modules-widgets` library. +This library contains native code (Java and Objective-C) used by the NativeScript core modules `tns-core-modules`. ## How to Build +On Mac in the root folder run: ``` -gradle packFramework +./build.sh ``` +This will run Android and iOS build and pack `dist/tns-core-modules-widgets-*.tgz`. + +## How to Build Android +In the `android` folder run: +``` +gradle build +``` +This will output `android/build/widgets-release.aar`. + +## How to Build iOS +On Mac in the `ios` folder under mac run: +``` +./build.sh +``` +This will output `ios/build/TNSWidgets.framework`. -This generates widgets-debug.aar and widgets-release.aar files located in the widgets/build/outputs/aar folder. -And generates tgz files in dist folder. diff --git a/app/.gitignore b/android/app/.gitignore similarity index 100% rename from app/.gitignore rename to android/app/.gitignore diff --git a/app/build.gradle b/android/app/build.gradle similarity index 100% rename from app/build.gradle rename to android/app/build.gradle diff --git a/app/proguard-rules.pro b/android/app/proguard-rules.pro similarity index 100% rename from app/proguard-rules.pro rename to android/app/proguard-rules.pro diff --git a/app/src/androidTest/java/org/nativescript/android_widgets_app/ApplicationTest.java b/android/app/src/androidTest/java/org/nativescript/android_widgets_app/ApplicationTest.java similarity index 100% rename from app/src/androidTest/java/org/nativescript/android_widgets_app/ApplicationTest.java rename to android/app/src/androidTest/java/org/nativescript/android_widgets_app/ApplicationTest.java diff --git a/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml similarity index 100% rename from app/src/main/AndroidManifest.xml rename to android/app/src/main/AndroidManifest.xml diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-hdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-mdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml similarity index 100% rename from app/src/main/res/values/colors.xml rename to android/app/src/main/res/values/colors.xml diff --git a/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml similarity index 100% rename from app/src/main/res/values/strings.xml rename to android/app/src/main/res/values/strings.xml diff --git a/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml similarity index 100% rename from app/src/main/res/values/styles.xml rename to android/app/src/main/res/values/styles.xml diff --git a/app/src/test/java/org/nativescript/android_widgets_app/ExampleUnitTest.java b/android/app/src/test/java/org/nativescript/android_widgets_app/ExampleUnitTest.java similarity index 100% rename from app/src/test/java/org/nativescript/android_widgets_app/ExampleUnitTest.java rename to android/app/src/test/java/org/nativescript/android_widgets_app/ExampleUnitTest.java diff --git a/build.gradle b/android/build.gradle similarity index 100% rename from build.gradle rename to android/build.gradle diff --git a/gradle.properties b/android/gradle.properties similarity index 100% rename from gradle.properties rename to android/gradle.properties diff --git a/gradlew b/android/gradlew similarity index 100% rename from gradlew rename to android/gradlew diff --git a/widgets/gradlew.bat b/android/gradlew.bat similarity index 100% rename from widgets/gradlew.bat rename to android/gradlew.bat diff --git a/settings.gradle b/android/settings.gradle similarity index 100% rename from settings.gradle rename to android/settings.gradle diff --git a/widgets/.gitignore b/android/widgets/.gitignore similarity index 100% rename from widgets/.gitignore rename to android/widgets/.gitignore diff --git a/android/widgets/build.gradle b/android/widgets/build.gradle new file mode 100644 index 000000000..5467d5fd9 --- /dev/null +++ b/android/widgets/build.gradle @@ -0,0 +1,73 @@ +import groovy.json.JsonSlurper //used to parse package.json +import groovy.json.JsonBuilder +import groovy.json.JsonOutput + +def isWinOs = System.properties['os.name'].toLowerCase().contains('windows') + +apply plugin: 'com.android.library' + +def computeCompuleSdkVersion () { + if(project.hasProperty("compileSdk")) { + return compileSdk + } + else { + return 23 + } +} + +def computeBuildToolsVersion() { + if(project.hasProperty("buildToolsVersion")) { + return buildToolsVersion + } + else { + return "22.0.1" + } +} + +def computeTargetSdkVersion() { + if(project.hasProperty("targetSdk")) { + return targetSdk + } + else { + return 23 + } +} + +android { + compileSdkVersion computeCompuleSdkVersion() + buildToolsVersion computeBuildToolsVersion() + + defaultConfig { + minSdkVersion 17 + targetSdkVersion computeTargetSdkVersion() + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + testCompile 'junit:junit:4.12' + compile 'com.android.support:support-v4:+' +} + +task cleanBuildDir (type: Delete) { + delete "../build/" +} + +task copyAar << { + copy { + from "build/outputs/aar/widgets-release.aar" + into "../build/" + } +} + +assembleRelease.dependsOn(cleanBuildDir) +copyAar.dependsOn(assembleRelease) +build.dependsOn(copyAar) diff --git a/widgets/gradlew b/android/widgets/gradlew similarity index 100% rename from widgets/gradlew rename to android/widgets/gradlew diff --git a/gradlew.bat b/android/widgets/gradlew.bat similarity index 96% rename from gradlew.bat rename to android/widgets/gradlew.bat index aec99730b..8a0b282aa 100644 --- a/gradlew.bat +++ b/android/widgets/gradlew.bat @@ -1,90 +1,90 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/widgets/proguard-rules.pro b/android/widgets/proguard-rules.pro similarity index 100% rename from widgets/proguard-rules.pro rename to android/widgets/proguard-rules.pro diff --git a/widgets/src/androidTest/java/org/nativescript/widgets/ApplicationTest.java b/android/widgets/src/androidTest/java/org/nativescript/widgets/ApplicationTest.java similarity index 100% rename from widgets/src/androidTest/java/org/nativescript/widgets/ApplicationTest.java rename to android/widgets/src/androidTest/java/org/nativescript/widgets/ApplicationTest.java diff --git a/widgets/src/main/AndroidManifest.xml b/android/widgets/src/main/AndroidManifest.xml similarity index 100% rename from widgets/src/main/AndroidManifest.xml rename to android/widgets/src/main/AndroidManifest.xml diff --git a/widgets/src/main/java/org/nativescript/widgets/AbsoluteLayout.java b/android/widgets/src/main/java/org/nativescript/widgets/AbsoluteLayout.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/AbsoluteLayout.java rename to android/widgets/src/main/java/org/nativescript/widgets/AbsoluteLayout.java diff --git a/widgets/src/main/java/org/nativescript/widgets/CommonLayoutParams.java b/android/widgets/src/main/java/org/nativescript/widgets/CommonLayoutParams.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/CommonLayoutParams.java rename to android/widgets/src/main/java/org/nativescript/widgets/CommonLayoutParams.java diff --git a/widgets/src/main/java/org/nativescript/widgets/ContentLayout.java b/android/widgets/src/main/java/org/nativescript/widgets/ContentLayout.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/ContentLayout.java rename to android/widgets/src/main/java/org/nativescript/widgets/ContentLayout.java diff --git a/widgets/src/main/java/org/nativescript/widgets/Dock.java b/android/widgets/src/main/java/org/nativescript/widgets/Dock.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/Dock.java rename to android/widgets/src/main/java/org/nativescript/widgets/Dock.java diff --git a/widgets/src/main/java/org/nativescript/widgets/DockLayout.java b/android/widgets/src/main/java/org/nativescript/widgets/DockLayout.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/DockLayout.java rename to android/widgets/src/main/java/org/nativescript/widgets/DockLayout.java diff --git a/widgets/src/main/java/org/nativescript/widgets/GridLayout.java b/android/widgets/src/main/java/org/nativescript/widgets/GridLayout.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/GridLayout.java rename to android/widgets/src/main/java/org/nativescript/widgets/GridLayout.java diff --git a/widgets/src/main/java/org/nativescript/widgets/GridUnitType.java b/android/widgets/src/main/java/org/nativescript/widgets/GridUnitType.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/GridUnitType.java rename to android/widgets/src/main/java/org/nativescript/widgets/GridUnitType.java diff --git a/widgets/src/main/java/org/nativescript/widgets/HorizontalScrollView.java b/android/widgets/src/main/java/org/nativescript/widgets/HorizontalScrollView.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/HorizontalScrollView.java rename to android/widgets/src/main/java/org/nativescript/widgets/HorizontalScrollView.java diff --git a/widgets/src/main/java/org/nativescript/widgets/ImageView.java b/android/widgets/src/main/java/org/nativescript/widgets/ImageView.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/ImageView.java rename to android/widgets/src/main/java/org/nativescript/widgets/ImageView.java diff --git a/widgets/src/main/java/org/nativescript/widgets/ItemSpec.java b/android/widgets/src/main/java/org/nativescript/widgets/ItemSpec.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/ItemSpec.java rename to android/widgets/src/main/java/org/nativescript/widgets/ItemSpec.java diff --git a/widgets/src/main/java/org/nativescript/widgets/LayoutBase.java b/android/widgets/src/main/java/org/nativescript/widgets/LayoutBase.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/LayoutBase.java rename to android/widgets/src/main/java/org/nativescript/widgets/LayoutBase.java diff --git a/widgets/src/main/java/org/nativescript/widgets/Orientation.java b/android/widgets/src/main/java/org/nativescript/widgets/Orientation.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/Orientation.java rename to android/widgets/src/main/java/org/nativescript/widgets/Orientation.java diff --git a/widgets/src/main/java/org/nativescript/widgets/OriginPoint.java b/android/widgets/src/main/java/org/nativescript/widgets/OriginPoint.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/OriginPoint.java rename to android/widgets/src/main/java/org/nativescript/widgets/OriginPoint.java diff --git a/widgets/src/main/java/org/nativescript/widgets/StackLayout.java b/android/widgets/src/main/java/org/nativescript/widgets/StackLayout.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/StackLayout.java rename to android/widgets/src/main/java/org/nativescript/widgets/StackLayout.java diff --git a/widgets/src/main/java/org/nativescript/widgets/TabItemSpec.java b/android/widgets/src/main/java/org/nativescript/widgets/TabItemSpec.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/TabItemSpec.java rename to android/widgets/src/main/java/org/nativescript/widgets/TabItemSpec.java diff --git a/widgets/src/main/java/org/nativescript/widgets/TabLayout.java b/android/widgets/src/main/java/org/nativescript/widgets/TabLayout.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/TabLayout.java rename to android/widgets/src/main/java/org/nativescript/widgets/TabLayout.java diff --git a/widgets/src/main/java/org/nativescript/widgets/TabStrip.java b/android/widgets/src/main/java/org/nativescript/widgets/TabStrip.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/TabStrip.java rename to android/widgets/src/main/java/org/nativescript/widgets/TabStrip.java diff --git a/widgets/src/main/java/org/nativescript/widgets/VerticalScrollView.java b/android/widgets/src/main/java/org/nativescript/widgets/VerticalScrollView.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/VerticalScrollView.java rename to android/widgets/src/main/java/org/nativescript/widgets/VerticalScrollView.java diff --git a/widgets/src/main/java/org/nativescript/widgets/WrapLayout.java b/android/widgets/src/main/java/org/nativescript/widgets/WrapLayout.java similarity index 100% rename from widgets/src/main/java/org/nativescript/widgets/WrapLayout.java rename to android/widgets/src/main/java/org/nativescript/widgets/WrapLayout.java diff --git a/widgets/src/main/res/.gitkeep b/android/widgets/src/main/res/.gitkeep similarity index 100% rename from widgets/src/main/res/.gitkeep rename to android/widgets/src/main/res/.gitkeep diff --git a/widgets/src/test/java/org/nativescript/widgets/ExampleUnitTest.java b/android/widgets/src/test/java/org/nativescript/widgets/ExampleUnitTest.java similarity index 100% rename from widgets/src/test/java/org/nativescript/widgets/ExampleUnitTest.java rename to android/widgets/src/test/java/org/nativescript/widgets/ExampleUnitTest.java diff --git a/build.sh b/build.sh new file mode 100755 index 000000000..c33cccc86 --- /dev/null +++ b/build.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +rm -rf dist +mkdir dist +mkdir dist/package +mkdir dist/package/platforms + +echo "Build android" +mkdir dist/package/platforms/android +cd android +gradle build +cd .. +cp android/build/widgets-release.aar dist/package/platforms/android/widgets-release.aar + +echo "Build ios" +mkdir dist/package/platforms/ios +cd ios +./build.sh +cd .. +cp -r ios/TNSWidgets/build/TNSWidgets.framework dist/package/platforms/ios/TNSWidgets.framework + +echo "Copy NPM artefacts" +cp LICENSE dist/package/LICENSE +cp LICENSE.md dist/package/LICENSE.md +cp README.md dist/package/README.md +cp package.json dist/package/package.json + +# npm pack +echo "NPM pack" +cd dist/package +PACKAGE="$(npm pack)" +cd ../.. +mv dist/package/$PACKAGE dist/$PACKAGE +echo "Output: dist/$PACKAGE" + diff --git a/ios/TNSWidgets/TNSWidgets.xcodeproj/project.pbxproj b/ios/TNSWidgets/TNSWidgets.xcodeproj/project.pbxproj new file mode 100644 index 000000000..80fb9c3cc --- /dev/null +++ b/ios/TNSWidgets/TNSWidgets.xcodeproj/project.pbxproj @@ -0,0 +1,397 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + F98F5CB31CD0EFEA00978308 /* TNSWidgets.h in Headers */ = {isa = PBXBuildFile; fileRef = F98F5CB21CD0EFEA00978308 /* TNSWidgets.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F98F5CBA1CD0EFEA00978308 /* TNSWidgets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F98F5CAF1CD0EFEA00978308 /* TNSWidgets.framework */; }; + F98F5CBF1CD0EFEA00978308 /* TNSWidgetsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F98F5CBE1CD0EFEA00978308 /* TNSWidgetsTests.m */; }; + F98F5CCB1CD0F09E00978308 /* UIImage+TNSBlocks.h in Headers */ = {isa = PBXBuildFile; fileRef = F98F5CC91CD0F09E00978308 /* UIImage+TNSBlocks.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F98F5CCC1CD0F09E00978308 /* UIImage+TNSBlocks.m in Sources */ = {isa = PBXBuildFile; fileRef = F98F5CCA1CD0F09E00978308 /* UIImage+TNSBlocks.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + F98F5CBB1CD0EFEA00978308 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F98F5CA61CD0EFEA00978308 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F98F5CAE1CD0EFEA00978308; + remoteInfo = TNSWidgets; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + F98F5CAF1CD0EFEA00978308 /* TNSWidgets.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TNSWidgets.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F98F5CB21CD0EFEA00978308 /* TNSWidgets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TNSWidgets.h; sourceTree = ""; }; + F98F5CB41CD0EFEA00978308 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F98F5CB91CD0EFEA00978308 /* TNSWidgetsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TNSWidgetsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F98F5CBE1CD0EFEA00978308 /* TNSWidgetsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TNSWidgetsTests.m; sourceTree = ""; }; + F98F5CC01CD0EFEA00978308 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F98F5CC91CD0F09E00978308 /* UIImage+TNSBlocks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+TNSBlocks.h"; sourceTree = ""; }; + F98F5CCA1CD0F09E00978308 /* UIImage+TNSBlocks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+TNSBlocks.m"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F98F5CAB1CD0EFEA00978308 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F98F5CB61CD0EFEA00978308 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F98F5CBA1CD0EFEA00978308 /* TNSWidgets.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + F98F5CA51CD0EFEA00978308 = { + isa = PBXGroup; + children = ( + F98F5CB11CD0EFEA00978308 /* TNSWidgets */, + F98F5CBD1CD0EFEA00978308 /* TNSWidgetsTests */, + F98F5CB01CD0EFEA00978308 /* Products */, + ); + sourceTree = ""; + }; + F98F5CB01CD0EFEA00978308 /* Products */ = { + isa = PBXGroup; + children = ( + F98F5CAF1CD0EFEA00978308 /* TNSWidgets.framework */, + F98F5CB91CD0EFEA00978308 /* TNSWidgetsTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + F98F5CB11CD0EFEA00978308 /* TNSWidgets */ = { + isa = PBXGroup; + children = ( + F98F5CB21CD0EFEA00978308 /* TNSWidgets.h */, + F98F5CC91CD0F09E00978308 /* UIImage+TNSBlocks.h */, + F98F5CCA1CD0F09E00978308 /* UIImage+TNSBlocks.m */, + F98F5CB41CD0EFEA00978308 /* Info.plist */, + ); + path = TNSWidgets; + sourceTree = ""; + }; + F98F5CBD1CD0EFEA00978308 /* TNSWidgetsTests */ = { + isa = PBXGroup; + children = ( + F98F5CBE1CD0EFEA00978308 /* TNSWidgetsTests.m */, + F98F5CC01CD0EFEA00978308 /* Info.plist */, + ); + path = TNSWidgetsTests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + F98F5CAC1CD0EFEA00978308 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F98F5CB31CD0EFEA00978308 /* TNSWidgets.h in Headers */, + F98F5CCB1CD0F09E00978308 /* UIImage+TNSBlocks.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + F98F5CAE1CD0EFEA00978308 /* TNSWidgets */ = { + isa = PBXNativeTarget; + buildConfigurationList = F98F5CC31CD0EFEA00978308 /* Build configuration list for PBXNativeTarget "TNSWidgets" */; + buildPhases = ( + F98F5CAA1CD0EFEA00978308 /* Sources */, + F98F5CAB1CD0EFEA00978308 /* Frameworks */, + F98F5CAC1CD0EFEA00978308 /* Headers */, + F98F5CAD1CD0EFEA00978308 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TNSWidgets; + productName = TNSWidgets; + productReference = F98F5CAF1CD0EFEA00978308 /* TNSWidgets.framework */; + productType = "com.apple.product-type.framework"; + }; + F98F5CB81CD0EFEA00978308 /* TNSWidgetsTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = F98F5CC61CD0EFEA00978308 /* Build configuration list for PBXNativeTarget "TNSWidgetsTests" */; + buildPhases = ( + F98F5CB51CD0EFEA00978308 /* Sources */, + F98F5CB61CD0EFEA00978308 /* Frameworks */, + F98F5CB71CD0EFEA00978308 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + F98F5CBC1CD0EFEA00978308 /* PBXTargetDependency */, + ); + name = TNSWidgetsTests; + productName = TNSWidgetsTests; + productReference = F98F5CB91CD0EFEA00978308 /* TNSWidgetsTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F98F5CA61CD0EFEA00978308 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0720; + ORGANIZATIONNAME = "Telerik A D"; + TargetAttributes = { + F98F5CAE1CD0EFEA00978308 = { + CreatedOnToolsVersion = 7.2; + }; + F98F5CB81CD0EFEA00978308 = { + CreatedOnToolsVersion = 7.2; + }; + }; + }; + buildConfigurationList = F98F5CA91CD0EFEA00978308 /* Build configuration list for PBXProject "TNSWidgets" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = F98F5CA51CD0EFEA00978308; + productRefGroup = F98F5CB01CD0EFEA00978308 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + F98F5CAE1CD0EFEA00978308 /* TNSWidgets */, + F98F5CB81CD0EFEA00978308 /* TNSWidgetsTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + F98F5CAD1CD0EFEA00978308 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F98F5CB71CD0EFEA00978308 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F98F5CAA1CD0EFEA00978308 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F98F5CCC1CD0F09E00978308 /* UIImage+TNSBlocks.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F98F5CB51CD0EFEA00978308 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F98F5CBF1CD0EFEA00978308 /* TNSWidgetsTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + F98F5CBC1CD0EFEA00978308 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F98F5CAE1CD0EFEA00978308 /* TNSWidgets */; + targetProxy = F98F5CBB1CD0EFEA00978308 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + F98F5CC11CD0EFEA00978308 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + F98F5CC21CD0EFEA00978308 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + F98F5CC41CD0EFEA00978308 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = TNSWidgets/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.nativescript.TNSWidgets; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + F98F5CC51CD0EFEA00978308 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = TNSWidgets/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.nativescript.TNSWidgets; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + F98F5CC71CD0EFEA00978308 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = TNSWidgetsTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.nativescript.TNSWidgetsTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + F98F5CC81CD0EFEA00978308 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = TNSWidgetsTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.nativescript.TNSWidgetsTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F98F5CA91CD0EFEA00978308 /* Build configuration list for PBXProject "TNSWidgets" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F98F5CC11CD0EFEA00978308 /* Debug */, + F98F5CC21CD0EFEA00978308 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F98F5CC31CD0EFEA00978308 /* Build configuration list for PBXNativeTarget "TNSWidgets" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F98F5CC41CD0EFEA00978308 /* Debug */, + F98F5CC51CD0EFEA00978308 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + F98F5CC61CD0EFEA00978308 /* Build configuration list for PBXNativeTarget "TNSWidgetsTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F98F5CC71CD0EFEA00978308 /* Debug */, + F98F5CC81CD0EFEA00978308 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = F98F5CA61CD0EFEA00978308 /* Project object */; +} diff --git a/ios/TNSWidgets/TNSWidgets.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/TNSWidgets/TNSWidgets.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..25711d4cd --- /dev/null +++ b/ios/TNSWidgets/TNSWidgets.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/TNSWidgets/TNSWidgets.xcodeproj/project.xcworkspace/xcuserdata/cankov.xcuserdatad/UserInterfaceState.xcuserstate b/ios/TNSWidgets/TNSWidgets.xcodeproj/project.xcworkspace/xcuserdata/cankov.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 000000000..593d92eeb Binary files /dev/null and b/ios/TNSWidgets/TNSWidgets.xcodeproj/project.xcworkspace/xcuserdata/cankov.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/ios/TNSWidgets/TNSWidgets.xcodeproj/xcuserdata/cankov.xcuserdatad/xcschemes/TNSWidgets.xcscheme b/ios/TNSWidgets/TNSWidgets.xcodeproj/xcuserdata/cankov.xcuserdatad/xcschemes/TNSWidgets.xcscheme new file mode 100644 index 000000000..a29b34c4d --- /dev/null +++ b/ios/TNSWidgets/TNSWidgets.xcodeproj/xcuserdata/cankov.xcuserdatad/xcschemes/TNSWidgets.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/TNSWidgets/TNSWidgets.xcodeproj/xcuserdata/cankov.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/TNSWidgets/TNSWidgets.xcodeproj/xcuserdata/cankov.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..b5df7e73c --- /dev/null +++ b/ios/TNSWidgets/TNSWidgets.xcodeproj/xcuserdata/cankov.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + TNSWidgets.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + F98F5CAE1CD0EFEA00978308 + + primary + + + F98F5CB81CD0EFEA00978308 + + primary + + + + + diff --git a/ios/TNSWidgets/TNSWidgets/Info.plist b/ios/TNSWidgets/TNSWidgets/Info.plist new file mode 100644 index 000000000..d3de8eefb --- /dev/null +++ b/ios/TNSWidgets/TNSWidgets/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/ios/TNSWidgets/TNSWidgets/TNSWidgets.h b/ios/TNSWidgets/TNSWidgets/TNSWidgets.h new file mode 100644 index 000000000..29b88ffb7 --- /dev/null +++ b/ios/TNSWidgets/TNSWidgets/TNSWidgets.h @@ -0,0 +1,20 @@ +// +// TNSWidgets.h +// TNSWidgets +// +// Created by Panayot Cankov on 4/27/16. +// Copyright © 2016 Telerik A D. All rights reserved. +// + +#import + +//! Project version number for TNSWidgets. +FOUNDATION_EXPORT double TNSWidgetsVersionNumber; + +//! Project version string for TNSWidgets. +FOUNDATION_EXPORT const unsigned char TNSWidgetsVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "UIImage+TNSBlocks.h" + diff --git a/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.h b/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.h new file mode 100644 index 000000000..c242ee3b5 --- /dev/null +++ b/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.h @@ -0,0 +1,15 @@ +// +// UIImage+UIImage_Async.h +// TKImageAsync +// +// Created by Panayot Cankov on 4/18/16. +// Copyright © 2016 Telerik A D. All rights reserved. +// + + + +@interface UIImage (TNSBlocks) + ++ (void) tns_imageNamed: (NSString*) name completion: (void (^) (UIImage*))callback; + +@end diff --git a/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m b/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m new file mode 100644 index 000000000..adcaf4f14 --- /dev/null +++ b/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m @@ -0,0 +1,37 @@ +// +// UIImage+UIImage_Async.m +// TKImageAsync +// +// Created by Panayot Cankov on 4/18/16. +// Copyright © 2016 Telerik A D. All rights reserved. +// +#import +#import "UIImage+TNSBlocks.h" + +@implementation UIImage (TNSBlocks) + +static dispatch_queue_t image_queue; ++ (void) initialize { + image_queue = dispatch_queue_create("org.nativescript.TNSWidgets.image", NULL); +} + +- (void) tns_decompressImage { + CGImageRef cgImg = [self CGImage]; + // TODO: Do performance tests if actual drawing is necessary + + // UIGraphicsBeginImageContext(CGSizeMake(1, 1)); + // [self drawAtPoint:CGPointZero]; + // UIGraphicsEndImageContext(); +} + ++ (void) tns_imageNamed: (NSString*) name completion: (void (^) (UIImage*))callback { + dispatch_async(image_queue, ^(void){ + UIImage* image = [UIImage imageNamed: name]; + [image tns_decompressImage]; + dispatch_async(dispatch_get_main_queue(), ^(void) { + callback(image); + }); + }); +} + +@end diff --git a/ios/TNSWidgets/TNSWidgetsTests/Info.plist b/ios/TNSWidgets/TNSWidgetsTests/Info.plist new file mode 100644 index 000000000..ba72822e8 --- /dev/null +++ b/ios/TNSWidgets/TNSWidgetsTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/ios/TNSWidgets/TNSWidgetsTests/TNSWidgetsTests.m b/ios/TNSWidgets/TNSWidgetsTests/TNSWidgetsTests.m new file mode 100644 index 000000000..2e70d8efc --- /dev/null +++ b/ios/TNSWidgets/TNSWidgetsTests/TNSWidgetsTests.m @@ -0,0 +1,39 @@ +// +// TNSWidgetsTests.m +// TNSWidgetsTests +// +// Created by Panayot Cankov on 4/27/16. +// Copyright © 2016 Telerik A D. All rights reserved. +// + +#import + +@interface TNSWidgetsTests : XCTestCase + +@end + +@implementation TNSWidgetsTests + +- (void)setUp { + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testExample { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git a/ios/build.sh b/ios/build.sh new file mode 100755 index 000000000..2e0b61a3b --- /dev/null +++ b/ios/build.sh @@ -0,0 +1,16 @@ +echo "Build for iphonesimulator" +xcodebuild -project TNSWidgets/TNSWidgets.xcodeproj -sdk iphonesimulator -target TNSWidgets -configuration Release clean build CONFIGURATION_BUILD_DIR=build/Release-iphonesimulator + +echo "Build for iphoneos" +xcodebuild -project TNSWidgets/TNSWidgets.xcodeproj -sdk iphoneos -target TNSWidgets -configuration Release clean build CONFIGURATION_BUILD_DIR=build/Release-iphoneos + +echo "Build fat framework at TNSWidgets/build/TNSWidgets.framework" +rm -rf TNSWidgets/build/TNSWidgets.framework +mkdir TNSWidgets/build/TNSWidgets.framework + +cp -r TNSWidgets/build/Release-iphoneos/TNSWidgets.framework/Headers TNSWidgets/build/TNSWidgets.framework/Headers +cp -r TNSWidgets/build/Release-iphoneos/TNSWidgets.framework/Modules TNSWidgets/build/TNSWidgets.framework/Modules +cp -r TNSWidgets/build/Release-iphoneos/TNSWidgets.framework/Info.plist TNSWidgets/build/TNSWidgets.framework/Info.plist + +lipo -create TNSWidgets/build/Release-iphoneos/TNSWidgets.framework/TNSWidgets TNSWidgets/build/Release-iphonesimulator/TNSWidgets.framework/TNSWidgets -o TNSWidgets/build/TNSWidgets.framework/TNSWidgets +file TNSWidgets/build/TNSWidgets.framework/TNSWidgets \ No newline at end of file diff --git a/widgets/build.gradle b/widgets/build.gradle deleted file mode 100644 index 0d0f2c5f1..000000000 --- a/widgets/build.gradle +++ /dev/null @@ -1,110 +0,0 @@ -import groovy.json.JsonSlurper //used to parse package.json -import groovy.json.JsonBuilder -import groovy.json.JsonOutput - -def isWinOs = System.properties['os.name'].toLowerCase().contains('windows') - -apply plugin: 'com.android.library' - -def computeCompuleSdkVersion () { - if(project.hasProperty("compileSdk")) { - return compileSdk - } - else { - return 23 - } -} - -def computeBuildToolsVersion() { - if(project.hasProperty("buildToolsVersion")) { - return buildToolsVersion - } - else { - return "22.0.1" - } -} - -def computeTargetSdkVersion() { - if(project.hasProperty("targetSdk")) { - return targetSdk - } - else { - return 23 - } -} - -android { - compileSdkVersion computeCompuleSdkVersion() - buildToolsVersion computeBuildToolsVersion() - - defaultConfig { - minSdkVersion 17 - targetSdkVersion computeTargetSdkVersion() - versionCode 1 - versionName "1.0" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - testCompile 'junit:junit:4.12' - compile 'com.android.support:support-v4:+' -} - -task cleanDistDir (type: Delete) { - delete "../dist/" -} - -task fixVersion << { - if(project.hasProperty("PACKAGE_VERSION")) { - def inputFile = new File("../package.json") - def json = new JsonSlurper().parseText(inputFile.text) - json.version = json.version + "-" + PACKAGE_VERSION - def jb = new JsonBuilder(json); - inputFile.text = JsonOutput.prettyPrint(jb.toString()) - } -} - -task copyAar << { - copy { - from "../package.json" - into "../dist" - } - copy { - from "build/outputs/aar/widgets-release.aar" - into "../dist/platforms/android/" - } -} - -task revertPackageJson (type: Exec) { - if(isWinOs) { - commandLine "cmd", "/c", "git", "checkout", "--", "../package.json" - } - else { - commandLine "git", "checkout", "--", "../package.json" - } -} - -task packFramework (type: Exec) { - workingDir "../dist" - - if(isWinOs) { - commandLine "cmd", "/c", "npm", "pack" - } - else { - commandLine "npm", "pack" - } -} - - -assembleRelease.dependsOn(cleanDistDir) -fixVersion.dependsOn(assembleRelease) -copyAar.dependsOn(fixVersion) -revertPackageJson.dependsOn(copyAar) -packFramework.dependsOn(revertPackageJson)