From 5f1a79ad5a79465a879d8177ccbd883eb6c965bd Mon Sep 17 00:00:00 2001 From: Panayot Cankov Date: Wed, 27 Apr 2016 17:38:19 +0300 Subject: [PATCH] Add iOS framework --- .gitignore | 2 +- README.md | 23 +- {app => android/app}/.gitignore | 0 {app => android/app}/build.gradle | 0 {app => android/app}/proguard-rules.pro | 0 .../android_widgets_app/ApplicationTest.java | 0 .../app}/src/main/AndroidManifest.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../app}/src/main/res/values/colors.xml | 0 .../app}/src/main/res/values/strings.xml | 0 .../app}/src/main/res/values/styles.xml | 0 .../android_widgets_app/ExampleUnitTest.java | 0 build.gradle => android/build.gradle | 0 .../gradle.properties | 0 gradlew => android/gradlew | 0 {widgets => android}/gradlew.bat | 0 settings.gradle => android/settings.gradle | 0 {widgets => android/widgets}/.gitignore | 0 android/widgets/build.gradle | 73 ++++ {widgets => android/widgets}/gradlew | 0 gradlew.bat => android/widgets/gradlew.bat | 180 ++++---- .../widgets}/proguard-rules.pro | 0 .../nativescript/widgets/ApplicationTest.java | 0 .../widgets}/src/main/AndroidManifest.xml | 0 .../nativescript/widgets/AbsoluteLayout.java | 0 .../widgets/CommonLayoutParams.java | 0 .../nativescript/widgets/ContentLayout.java | 0 .../java/org/nativescript/widgets/Dock.java | 0 .../org/nativescript/widgets/DockLayout.java | 0 .../org/nativescript/widgets/GridLayout.java | 0 .../nativescript/widgets/GridUnitType.java | 0 .../widgets/HorizontalScrollView.java | 0 .../org/nativescript/widgets/ImageView.java | 0 .../org/nativescript/widgets/ItemSpec.java | 0 .../org/nativescript/widgets/LayoutBase.java | 0 .../org/nativescript/widgets/Orientation.java | 0 .../org/nativescript/widgets/OriginPoint.java | 0 .../org/nativescript/widgets/StackLayout.java | 0 .../org/nativescript/widgets/TabItemSpec.java | 0 .../org/nativescript/widgets/TabLayout.java | 0 .../org/nativescript/widgets/TabStrip.java | 0 .../widgets/VerticalScrollView.java | 0 .../org/nativescript/widgets/WrapLayout.java | 0 .../widgets}/src/main/res/.gitkeep | 0 .../nativescript/widgets/ExampleUnitTest.java | 0 build.sh | 35 ++ .../TNSWidgets.xcodeproj/project.pbxproj | 397 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 13922 bytes .../xcschemes/TNSWidgets.xcscheme | 99 +++++ .../xcschemes/xcschememanagement.plist | 27 ++ ios/TNSWidgets/TNSWidgets/Info.plist | 26 ++ ios/TNSWidgets/TNSWidgets/TNSWidgets.h | 20 + ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.h | 15 + ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m | 37 ++ ios/TNSWidgets/TNSWidgetsTests/Info.plist | 24 ++ .../TNSWidgetsTests/TNSWidgetsTests.m | 39 ++ ios/build.sh | 16 + widgets/build.gradle | 110 ----- 63 files changed, 925 insertions(+), 205 deletions(-) rename {app => android/app}/.gitignore (100%) rename {app => android/app}/build.gradle (100%) rename {app => android/app}/proguard-rules.pro (100%) rename {app => android/app}/src/androidTest/java/org/nativescript/android_widgets_app/ApplicationTest.java (100%) rename {app => android/app}/src/main/AndroidManifest.xml (100%) rename {app => android/app}/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {app => android/app}/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {app => android/app}/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {app => android/app}/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {app => android/app}/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {app => android/app}/src/main/res/values/colors.xml (100%) rename {app => android/app}/src/main/res/values/strings.xml (100%) rename {app => android/app}/src/main/res/values/styles.xml (100%) rename {app => android/app}/src/test/java/org/nativescript/android_widgets_app/ExampleUnitTest.java (100%) rename build.gradle => android/build.gradle (100%) rename gradle.properties => android/gradle.properties (100%) rename gradlew => android/gradlew (100%) rename {widgets => android}/gradlew.bat (100%) rename settings.gradle => android/settings.gradle (100%) rename {widgets => android/widgets}/.gitignore (100%) create mode 100644 android/widgets/build.gradle rename {widgets => android/widgets}/gradlew (100%) rename gradlew.bat => android/widgets/gradlew.bat (96%) rename {widgets => android/widgets}/proguard-rules.pro (100%) rename {widgets => android/widgets}/src/androidTest/java/org/nativescript/widgets/ApplicationTest.java (100%) rename {widgets => android/widgets}/src/main/AndroidManifest.xml (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/AbsoluteLayout.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/CommonLayoutParams.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/ContentLayout.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/Dock.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/DockLayout.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/GridLayout.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/GridUnitType.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/HorizontalScrollView.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/ImageView.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/ItemSpec.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/LayoutBase.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/Orientation.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/OriginPoint.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/StackLayout.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/TabItemSpec.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/TabLayout.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/TabStrip.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/VerticalScrollView.java (100%) rename {widgets => android/widgets}/src/main/java/org/nativescript/widgets/WrapLayout.java (100%) rename {widgets => android/widgets}/src/main/res/.gitkeep (100%) rename {widgets => android/widgets}/src/test/java/org/nativescript/widgets/ExampleUnitTest.java (100%) create mode 100755 build.sh create mode 100644 ios/TNSWidgets/TNSWidgets.xcodeproj/project.pbxproj create mode 100644 ios/TNSWidgets/TNSWidgets.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/TNSWidgets/TNSWidgets.xcodeproj/project.xcworkspace/xcuserdata/cankov.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/TNSWidgets/TNSWidgets.xcodeproj/xcuserdata/cankov.xcuserdatad/xcschemes/TNSWidgets.xcscheme create mode 100644 ios/TNSWidgets/TNSWidgets.xcodeproj/xcuserdata/cankov.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 ios/TNSWidgets/TNSWidgets/Info.plist create mode 100644 ios/TNSWidgets/TNSWidgets/TNSWidgets.h create mode 100644 ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.h create mode 100644 ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m create mode 100644 ios/TNSWidgets/TNSWidgetsTests/Info.plist create mode 100644 ios/TNSWidgets/TNSWidgetsTests/TNSWidgetsTests.m create mode 100755 ios/build.sh delete mode 100644 widgets/build.gradle 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 0000000000000000000000000000000000000000..593d92eebc8dfadfde0a5fc40b7909118a989731 GIT binary patch literal 13922 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 literal 0 HcmV?d00001 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)