rhodes 2.0.0.beta2 → 2.0.0.beta3
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +2 -0
- data/Manifest.txt +27 -148
- data/Rakefile +49 -3
- data/lib/framework/builtinME.rb +6 -0
- data/lib/framework/rho/render.rb +13 -8
- data/lib/framework/rho/rho.rb +97 -43
- data/lib/framework/rho/rhoapplication.rb +8 -3
- data/lib/framework/rho/rhocontroller.rb +1 -1
- data/lib/framework/rhodes-framework.rb +1 -1
- data/lib/framework/rhodes.rb +1 -1
- data/lib/framework/rhoframework.rb +7 -22
- data/lib/framework/rhofsconnector.rb +1 -1
- data/lib/framework/rholang/localization_simplified.rb +2 -2
- data/lib/framework/rhom/rhom.rb +1 -0
- data/lib/framework/rhom/rhom_db_adapter.rb +2 -2
- data/lib/framework/rhom/rhom_model.rb +98 -0
- data/lib/framework/rhom/rhom_object_factory.rb +13 -12
- data/lib/rhodes.rb +1 -1
- data/platform/android/Rhodes/jni/include/{JNIRhodes.h → rhodes/JNIRhodes.h} +3 -54
- data/platform/android/Rhodes/jni/include/{RhoClassFactory.h → rhodes/RhoClassFactory.h} +0 -0
- data/platform/android/Rhodes/jni/include/{SystemInfoImpl.h → rhodes/SystemInfoImpl.h} +0 -0
- data/platform/android/Rhodes/jni/include/{details → rhodes/details}/rhojava.inc +1 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_Logger.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_RhoConf.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_RhoLogConf.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_RhoMenu.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_Rhodes.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_SplashScreen.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_alert_Alert.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_camera_Camera.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_datetime_DateTimePicker.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_geolocation_GeoLocationImpl.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_socket_RhoSocketImpl.h +0 -0
- data/platform/android/Rhodes/jni/include/{jni → rhodes/jni}/com_rhomobile_rhodes_socket_SSLImpl.h +0 -0
- data/platform/android/Rhodes/jni/include/{sslimpl.h → rhodes/sslimpl.h} +0 -0
- data/platform/android/Rhodes/jni/include/rhodes.h +59 -0
- data/platform/android/Rhodes/jni/src/RhoClassFactory.cpp +3 -3
- data/platform/android/Rhodes/jni/src/alert.cpp +2 -2
- data/platform/android/Rhodes/jni/src/callbacks.cpp +4 -3
- data/platform/android/Rhodes/jni/src/camera.cpp +2 -2
- data/platform/android/Rhodes/jni/src/datetimepicker.cpp +2 -2
- data/platform/android/Rhodes/jni/src/geolocation.cpp +2 -2
- data/platform/android/Rhodes/jni/src/logconf.cpp +2 -2
- data/platform/android/Rhodes/jni/src/logger.cpp +2 -2
- data/platform/android/Rhodes/jni/src/mapview.cpp +1 -1
- data/platform/android/Rhodes/jni/src/menu.cpp +2 -2
- data/platform/android/Rhodes/jni/src/nativebar.cpp +1 -1
- data/platform/android/Rhodes/jni/src/navbar.cpp +17 -3
- data/platform/android/Rhodes/jni/src/phonebook.cpp +1 -1
- data/platform/android/Rhodes/jni/src/rhoconf.cpp +2 -2
- data/platform/android/Rhodes/jni/src/rhodes.cpp +3 -3
- data/platform/android/Rhodes/jni/src/ringtones.cpp +1 -1
- data/platform/android/Rhodes/jni/src/socketimpl.cpp +2 -2
- data/platform/android/Rhodes/jni/src/splashscreen.cpp +2 -2
- data/platform/android/Rhodes/jni/src/sslimpl.cpp +3 -3
- data/platform/android/Rhodes/jni/src/syncengine.cpp +2 -2
- data/platform/android/Rhodes/jni/src/webview.cpp +15 -12
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/NativeLibraries.java +11 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/NavBar.java +52 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +8 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/WebView.java +26 -28
- data/platform/android/build/RhodesSRC_build.files +21 -20
- data/platform/android/build/android.rake +69 -24
- data/platform/android/build/androidcommon.rb +17 -12
- data/platform/bb/build/bb.rake +23 -21
- data/platform/bb/rhodes/src/com/rho/BrowserAdapter.java +5 -2
- data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +6 -1
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +9 -1
- data/platform/bb/rhodes/src/com/rho/rubyext/WebView.java +31 -2
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +17 -6
- data/platform/bb/rhodes/src/rhomobile/Utilities.java +6 -0
- data/platform/iphone/Classes/AppManager/AppManager.m +16 -4
- data/platform/iphone/Classes/DateTime.h +5 -6
- data/platform/iphone/Classes/DateTimePicker.m +4 -18
- data/platform/iphone/Classes/DateTimePickerDelegate.h +7 -9
- data/platform/iphone/Classes/DateTimePickerDelegate.m +141 -152
- data/platform/iphone/Classes/Rhodes.h +6 -1
- data/platform/iphone/Classes/Rhodes.m +17 -43
- data/platform/iphone/Classes/SimpleMainView.h +1 -1
- data/platform/iphone/Classes/SimpleMainView.m +54 -4
- data/platform/iphone/Classes/WebView.m +17 -0
- data/platform/iphone/rbuild/iphone.rake +1 -0
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +0 -45
- data/platform/shared/common/PosixThreadImpl.cpp +8 -0
- data/platform/shared/common/PosixThreadImpl.h +1 -0
- data/platform/shared/common/RhoThread.cpp +1 -0
- data/platform/shared/common/RhoThread.h +4 -2
- data/platform/shared/curl/include/curl/curl.h +4 -0
- data/platform/shared/db/DBAdapter.cpp +47 -60
- data/platform/shared/db/DBAdapter.h +6 -2
- data/platform/shared/net/AsyncHttp.cpp +27 -11
- data/platform/shared/net/AsyncHttp.h +3 -1
- data/platform/shared/net/CURLNetRequest.cpp +11 -10
- data/platform/shared/net/CURLNetRequest.h +6 -4
- data/platform/shared/net/HttpServer.cpp +11 -6
- data/platform/shared/ruby/ext/asynchttp/asynchttp.i +2 -2
- data/platform/shared/ruby/ext/asynchttp/asynchttp_wrap.c +22 -11
- data/platform/shared/ruby/ext/rho/rhoruby.c +2 -2
- data/platform/shared/ruby/ext/rho/rhosupport.c +23 -3
- data/platform/shared/ruby/ext/webview/webview.i +4 -0
- data/platform/shared/ruby/ext/webview/webview_wrap.c +39 -0
- data/platform/shared/ruby/re.c +8 -0
- data/platform/shared/ruby/string.c +1 -1
- data/platform/shared/rubyJVM/src/com/rho/IRhoRubyHelper.java +1 -0
- data/platform/shared/rubyJVM/src/com/rho/RhoClassFactory.java +6 -1
- data/platform/shared/rubyJVM/src/com/rho/RhoThread.java +3 -0
- data/platform/shared/rubyJVM/src/com/rho/RhodesApp.java +34 -0
- data/platform/shared/rubyJVM/src/com/rho/db/DBAdapter.java +40 -53
- data/platform/shared/rubyJVM/src/com/rho/net/AsyncHttp.java +32 -15
- data/platform/shared/rubyJVM/src/com/rho/net/NetRequest.java +31 -17
- data/platform/shared/rubyJVM/src/com/rho/net/RhoConnection.java +3 -0
- data/platform/shared/rubyJVM/src/com/rho/sync/JSONArrayIterator.java +17 -0
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncEngine.java +158 -137
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncSource.java +18 -17
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncThread.java +10 -2
- data/platform/shared/rubyJVM/src/com/xruby/GeneratedMethods/RubyFile_Methods.java +6 -0
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/RubyFile.java +18 -3
- data/platform/shared/rubyJVM/src/j2me/io/File.java +37 -9
- data/platform/shared/sqlite/sqlite3.c +14613 -13016
- data/platform/shared/sqlite/sqlite3.h +1461 -1499
- data/platform/shared/sqlite/sqlite3ext.h +0 -2
- data/platform/shared/sync/ClientRegister.cpp +3 -3
- data/platform/shared/sync/ClientRegister.h +2 -1
- data/platform/shared/sync/SyncEngine.cpp +20 -8
- data/platform/shared/sync/SyncSource.cpp +12 -12
- data/platform/shared/sync/SyncSource.h +4 -4
- data/platform/shared/sync/SyncThread.cpp +8 -1
- data/platform/shared/tcmalloc/rhomem.h +3 -0
- data/platform/shared/tcmalloc/tcmalloc_.cpp +11 -0
- data/platform/wm/rhodes/Alert.cpp +148 -101
- data/platform/wm/rhodes/Alert.h +4 -1
- data/platform/wm/rhodes/AppManager.cpp +212 -72
- data/platform/wm/rhodes/AppManager.h +24 -3
- data/platform/wm/rhodes/DateTimePicker.cpp +23 -11
- data/platform/wm/rhodes/DateTimePicker.h +16 -5
- data/platform/wm/rhodes/MainWindow.cpp +22 -7
- data/platform/wm/rhodes/OkCancelModalDialog.h +63 -0
- data/platform/wm/rhodes/Rhodes.cpp +29 -17
- data/platform/wm/rhodes/phonebook/NativeAddressBook.cpp +128 -4
- data/platform/wm/rhodes/phonebook/NativeAddressBook.h +33 -3
- data/platform/wm/rhodes/resource.h +1 -1
- data/platform/wm/rhodes/rho/common/RhoClassFactory.cpp +5 -0
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +136 -102
- data/platform/wm/rhodes/rho/net/NetRequestImpl.h +12 -5
- data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +24 -10
- data/platform/wm/rhodes/rho/rubyext/WebView.cpp +6 -0
- data/platform/wm/rhodes/rhodes.vcproj +4 -0
- data/platform/wm/tools/detool/detool.cpp +17 -4
- data/rakefile.rb +49 -3
- data/res/build-tools/db/syncdb.schema +2 -2
- data/res/build-tools/detool.exe +0 -0
- data/res/generators/rhogen.rb +10 -10
- data/res/generators/templates/application/app/helpers/browser_helper.rb +9 -4
- data/res/generators/templates/application/app/index.bb.erb +5 -5
- data/res/generators/templates/application/build.yml +1 -0
- data/res/generators/templates/application/public/css/android.css +10 -8
- data/res/generators/templates/application/public/css/blackberry.css +40 -31
- data/res/generators/templates/application/public/css/iphone.css +4 -4
- data/res/generators/templates/application/public/css/webkit.css +7 -0
- data/res/generators/templates/application/public/css/windows_mobile.css +31 -27
- data/res/generators/templates/application/rhoconfig.txt +2 -2
- data/res/generators/templates/model/edit.bb.erb +2 -2
- data/res/generators/templates/model/index.bb.erb +6 -4
- data/res/generators/templates/model/model.rb +2 -1
- data/res/generators/templates/model/new.bb.erb +2 -2
- data/res/generators/templates/model/show.bb.erb +2 -2
- data/rhobuild.yml +37 -0
- data/rhodes.gemspec +1 -1
- data/spec/framework_spec/app/Account/account.rb +7 -0
- data/spec/framework_spec/app/Case/case.rb +6 -0
- data/spec/framework_spec/app/Customer/customer.rb +6 -0
- data/spec/framework_spec/app/Product/product.rb +9 -0
- data/spec/framework_spec/app/spec/rhom_object_spec.rb +1 -1
- data/spec/framework_spec/app/spec/syncengine_spec.rb +2 -1
- metadata +45 -151
- data/lib/build/manifest/createAppManifest.rb +0 -18
- data/lib/build/tasks/android.rake +0 -317
- data/lib/build/tasks/blackberry.rake +0 -355
- data/lib/build/tasks/common.rake +0 -62
- data/lib/build/tasks/iphone.rake +0 -108
- data/lib/build/tasks/linux.rake +0 -81
- data/lib/build/tasks/rhodes-build.rb +0 -11
- data/lib/build/tasks/rspec.rake +0 -20
- data/lib/build/tasks/symbian.rake +0 -202
- data/lib/build/tasks/wm.rake +0 -166
- data/lib/framework/ServeME.rb +0 -7
- data/platform/bb/build/MANIFEST.MF +0 -12
- data/platform/iphone/Classes/DateTimePicker.h +0 -17
- data/res/generators/templates/application/public/icons/Read me first - license.txt +0 -14
- data/res/generators/templates/application/public/icons/about.png +0 -0
- data/res/generators/templates/application/public/icons/airplane.png +0 -0
- data/res/generators/templates/application/public/icons/baby.png +0 -0
- data/res/generators/templates/application/public/icons/badge.png +0 -0
- data/res/generators/templates/application/public/icons/bandaid.png +0 -0
- data/res/generators/templates/application/public/icons/bar-chart.png +0 -0
- data/res/generators/templates/application/public/icons/battery.png +0 -0
- data/res/generators/templates/application/public/icons/beaker.png +0 -0
- data/res/generators/templates/application/public/icons/beaker2.png +0 -0
- data/res/generators/templates/application/public/icons/beermug.png +0 -0
- data/res/generators/templates/application/public/icons/bird.png +0 -0
- data/res/generators/templates/application/public/icons/book.png +0 -0
- data/res/generators/templates/application/public/icons/bookmark.png +0 -0
- data/res/generators/templates/application/public/icons/brightness.png +0 -0
- data/res/generators/templates/application/public/icons/bug.png +0 -0
- data/res/generators/templates/application/public/icons/cabinet.png +0 -0
- data/res/generators/templates/application/public/icons/calendar.png +0 -0
- data/res/generators/templates/application/public/icons/camera.png +0 -0
- data/res/generators/templates/application/public/icons/changeName.rb +0 -22
- data/res/generators/templates/application/public/icons/chat2.png +0 -0
- data/res/generators/templates/application/public/icons/chicken.png +0 -0
- data/res/generators/templates/application/public/icons/clock.png +0 -0
- data/res/generators/templates/application/public/icons/cloud.png +0 -0
- data/res/generators/templates/application/public/icons/coffee.png +0 -0
- data/res/generators/templates/application/public/icons/compass.png +0 -0
- data/res/generators/templates/application/public/icons/contrast.png +0 -0
- data/res/generators/templates/application/public/icons/dashboard.png +0 -0
- data/res/generators/templates/application/public/icons/display.png +0 -0
- data/res/generators/templates/application/public/icons/dogpaw.png +0 -0
- data/res/generators/templates/application/public/icons/download.png +0 -0
- data/res/generators/templates/application/public/icons/dumbbell.png +0 -0
- data/res/generators/templates/application/public/icons/ekg.png +0 -0
- data/res/generators/templates/application/public/icons/envelope.png +0 -0
- data/res/generators/templates/application/public/icons/equalizer.png +0 -0
- data/res/generators/templates/application/public/icons/eye.png +0 -0
- data/res/generators/templates/application/public/icons/film-roll.png +0 -0
- data/res/generators/templates/application/public/icons/flag.png +0 -0
- data/res/generators/templates/application/public/icons/fork-and-knife.png +0 -0
- data/res/generators/templates/application/public/icons/fuel.png +0 -0
- data/res/generators/templates/application/public/icons/gameplan.png +0 -0
- data/res/generators/templates/application/public/icons/gear.png +0 -0
- data/res/generators/templates/application/public/icons/gear2.png +0 -0
- data/res/generators/templates/application/public/icons/gift.png +0 -0
- data/res/generators/templates/application/public/icons/heart.png +0 -0
- data/res/generators/templates/application/public/icons/house.png +0 -0
- data/res/generators/templates/application/public/icons/inbox.png +0 -0
- data/res/generators/templates/application/public/icons/index-cards.png +0 -0
- data/res/generators/templates/application/public/icons/iphone.png +0 -0
- data/res/generators/templates/application/public/icons/ipod.png +0 -0
- data/res/generators/templates/application/public/icons/key.png +0 -0
- data/res/generators/templates/application/public/icons/lifebuoy.png +0 -0
- data/res/generators/templates/application/public/icons/lightbulb.png +0 -0
- data/res/generators/templates/application/public/icons/line-chart.png +0 -0
- data/res/generators/templates/application/public/icons/location.png +0 -0
- data/res/generators/templates/application/public/icons/lock.png +0 -0
- data/res/generators/templates/application/public/icons/loopback.png +0 -0
- data/res/generators/templates/application/public/icons/magnifying-glass.png +0 -0
- data/res/generators/templates/application/public/icons/map-marker.png +0 -0
- data/res/generators/templates/application/public/icons/map.png +0 -0
- data/res/generators/templates/application/public/icons/medical-bag.png +0 -0
- data/res/generators/templates/application/public/icons/medical.png +0 -0
- data/res/generators/templates/application/public/icons/microphone.png +0 -0
- data/res/generators/templates/application/public/icons/movie1.png +0 -0
- data/res/generators/templates/application/public/icons/movie2.png +0 -0
- data/res/generators/templates/application/public/icons/network.png +0 -0
- data/res/generators/templates/application/public/icons/note.png +0 -0
- data/res/generators/templates/application/public/icons/outlet.png +0 -0
- data/res/generators/templates/application/public/icons/palette.png +0 -0
- data/res/generators/templates/application/public/icons/paperclip.png +0 -0
- data/res/generators/templates/application/public/icons/phone.png +0 -0
- data/res/generators/templates/application/public/icons/photos.png +0 -0
- data/res/generators/templates/application/public/icons/piano.png +0 -0
- data/res/generators/templates/application/public/icons/picture-frame.png +0 -0
- data/res/generators/templates/application/public/icons/pill.png +0 -0
- data/res/generators/templates/application/public/icons/pin.png +0 -0
- data/res/generators/templates/application/public/icons/pinetree.png +0 -0
- data/res/generators/templates/application/public/icons/planet.png +0 -0
- data/res/generators/templates/application/public/icons/puzzle.png +0 -0
- data/res/generators/templates/application/public/icons/radar.png +0 -0
- data/res/generators/templates/application/public/icons/redo.png +0 -0
- data/res/generators/templates/application/public/icons/refresh.png +0 -0
- data/res/generators/templates/application/public/icons/runner.png +0 -0
- data/res/generators/templates/application/public/icons/shoebox.png +0 -0
- data/res/generators/templates/application/public/icons/shopping-bag.png +0 -0
- data/res/generators/templates/application/public/icons/shopping-cart.png +0 -0
- data/res/generators/templates/application/public/icons/shuffle.png +0 -0
- data/res/generators/templates/application/public/icons/signpost.png +0 -0
- data/res/generators/templates/application/public/icons/skull-n-crossbones.png +0 -0
- data/res/generators/templates/application/public/icons/skull.png +0 -0
- data/res/generators/templates/application/public/icons/sliders.png +0 -0
- data/res/generators/templates/application/public/icons/spraycan.png +0 -0
- data/res/generators/templates/application/public/icons/squiggle.png +0 -0
- data/res/generators/templates/application/public/icons/star.png +0 -0
- data/res/generators/templates/application/public/icons/stopwatch.png +0 -0
- data/res/generators/templates/application/public/icons/suitcase.png +0 -0
- data/res/generators/templates/application/public/icons/tag.png +0 -0
- data/res/generators/templates/application/public/icons/tags.png +0 -0
- data/res/generators/templates/application/public/icons/target.png +0 -0
- data/res/generators/templates/application/public/icons/testtube.png +0 -0
- data/res/generators/templates/application/public/icons/thermometer.png +0 -0
- data/res/generators/templates/application/public/icons/toolbox.png +0 -0
- data/res/generators/templates/application/public/icons/trophy.png +0 -0
- data/res/generators/templates/application/public/icons/tshirt.png +0 -0
- data/res/generators/templates/application/public/icons/tv.png +0 -0
- data/res/generators/templates/application/public/icons/umbrella.png +0 -0
- data/res/generators/templates/application/public/icons/walk.png +0 -0
- data/res/generators/templates/application/public/icons/weather.png +0 -0
- data/res/generators/templates/application/public/icons/widescreen.png +0 -0
- data/res/generators/templates/application/public/icons/wineglass.png +0 -0
- data/res/generators/templates/application/public/icons/zap.png +0 -0
- data/res/generators/templates/application/public/js/jquery-1.2.6.min.js +0 -32
- data/res/generators/templates/model/config.rb +0 -3
- data/res/generators/templates/spec/app/spec/webview_spec.rb +0 -5
- data/spec/framework_spec/app/Account/config.rb +0 -59
- data/spec/framework_spec/app/Case/config.rb +0 -3
- data/spec/framework_spec/app/Customer/config.rb +0 -3
- data/spec/framework_spec/app/Product/config.rb +0 -17
@@ -179,6 +179,7 @@ namespace "config" do
|
|
179
179
|
$rho_android_r = File.join $androidpath, "Rhodes", "src", "com", "rhomobile", "rhodes", "AndroidR.java"
|
180
180
|
$app_android_r = File.join $tmpdir, "AndroidR.java"
|
181
181
|
$app_rjava_dir = File.join $tmpdir
|
182
|
+
$app_native_libs_java = File.join $tmpdir, "NativeLibraries.java"
|
182
183
|
|
183
184
|
if RUBY_PLATFORM =~ /(win|w)32$/
|
184
185
|
$emulator = #"cmd /c " +
|
@@ -406,16 +407,17 @@ namespace "build" do
|
|
406
407
|
File.open(File.join(assets, "name"), "w") { |f| f.write($appname) }
|
407
408
|
end
|
408
409
|
|
409
|
-
task :extensions =>
|
410
|
+
task :extensions => :genconfig do
|
410
411
|
|
411
412
|
ENV['RHO_PLATFORM'] = 'android'
|
412
413
|
ENV["ANDROID_NDK"] = $androidndkpath
|
413
414
|
ENV["ANDROID_API_LEVEL"] = ANDROID_API_LEVEL.to_s
|
414
415
|
ENV["TARGET_TEMP_DIR"] = $extensionsdir
|
415
|
-
ENV["
|
416
|
+
ENV["RHO_ROOT"] = $startdir
|
416
417
|
ENV["BUILD_DIR"] ||= $startdir + "/platform/android/build"
|
418
|
+
ENV["RHO_INC"] = $appincdir
|
417
419
|
|
418
|
-
mkdir_p $
|
420
|
+
mkdir_p $extensionsdir unless File.directory? $extensionsdir
|
419
421
|
|
420
422
|
$app_config["extensions"].each do |ext|
|
421
423
|
$app_config["extpaths"].each do |p|
|
@@ -488,7 +490,7 @@ namespace "build" do
|
|
488
490
|
cc_compile f, objdir, args or exit 1
|
489
491
|
end
|
490
492
|
|
491
|
-
cc_ar libname, Dir.glob(objdir + "/**/*.o")
|
493
|
+
cc_ar libname, Dir.glob(objdir + "/**/*.o") or exit 1
|
492
494
|
end
|
493
495
|
|
494
496
|
task :libjson => "config:android" do
|
@@ -699,9 +701,28 @@ namespace "build" do
|
|
699
701
|
puts "No need to regenerate rhocaps.inc"
|
700
702
|
$stdout.flush
|
701
703
|
end
|
702
|
-
|
704
|
+
end
|
705
|
+
|
706
|
+
task :gen_java_ext => "config:android" do
|
707
|
+
File.open($app_native_libs_java, "w") do |f|
|
708
|
+
f.puts "package com.rhomobile.rhodes;"
|
709
|
+
f.puts "public class NativeLibraries {"
|
710
|
+
f.puts " public static void load() {"
|
711
|
+
f.puts " // Load native .so libraries"
|
712
|
+
Dir.glob($extensionsdir + "/lib*.so").each do |lib|
|
713
|
+
libname = File.basename(lib).gsub(/^lib/, '').gsub(/\.so$/, '')
|
714
|
+
f.puts " System.loadLibrary(\"#{libname}\");"
|
715
|
+
end
|
716
|
+
f.puts " // Load native implementation of rhodes"
|
717
|
+
f.puts " System.loadLibrary(\"rhodes\");"
|
718
|
+
f.puts " }"
|
719
|
+
f.puts "};"
|
720
|
+
end
|
721
|
+
end
|
722
|
+
|
723
|
+
task :gensources => [:genconfig, :gen_java_ext]
|
703
724
|
|
704
|
-
task :librhodes => [:libs, :
|
725
|
+
task :librhodes => [:libs, :gensources] do
|
705
726
|
srcdir = File.join $androidpath, "Rhodes", "jni", "src"
|
706
727
|
objdir = File.join $bindir, "libs", $confdir, "librhodes"
|
707
728
|
libname = File.join $bindir, "libs", $confdir, "librhodes.so"
|
@@ -731,24 +752,30 @@ namespace "build" do
|
|
731
752
|
args << "-L#{$rhobindir}/#{$confdir}"
|
732
753
|
args << "-L#{$bindir}/libs/#{$confdir}"
|
733
754
|
args << "-L#{$extensionsdir}"
|
734
|
-
args << "-lrhomain"
|
735
|
-
args << "-lruby"
|
736
|
-
args << "-lrhosync"
|
737
|
-
args << "-lrhodb"
|
738
|
-
args << "-lrholog"
|
739
|
-
args << "-lrhocommon"
|
740
|
-
args << "-ljson"
|
741
|
-
args << "-lstlport" if USE_STLPORT
|
742
|
-
args << "-lcurl"
|
743
|
-
args << "-lrhocommon" # Need to specify twice because libcurl depends on librhocommon and vice versa
|
744
|
-
args << "-lsqlite"
|
745
|
-
args << "-llog"
|
746
|
-
args << "-ldl"
|
747
|
-
args << "-lz"
|
748
755
|
|
756
|
+
rlibs = []
|
757
|
+
rlibs << "rhomain"
|
758
|
+
rlibs << "ruby"
|
759
|
+
rlibs << "rhosync"
|
760
|
+
rlibs << "rhodb"
|
761
|
+
rlibs << "rholog"
|
762
|
+
rlibs << "rhocommon"
|
763
|
+
rlibs << "json"
|
764
|
+
rlibs << "stlport" if USE_STLPORT
|
765
|
+
rlibs << "curl"
|
766
|
+
rlibs << "sqlite"
|
767
|
+
rlibs << "log"
|
768
|
+
rlibs << "dl"
|
769
|
+
rlibs << "z"
|
770
|
+
|
771
|
+
rlibs.map! { |x| "-l#{x}" }
|
772
|
+
|
773
|
+
args += rlibs
|
774
|
+
|
775
|
+
extlibs = Dir.glob($extensionsdir + "/lib*.a") + Dir.glob($extensionsdir + "/lib*.so")
|
749
776
|
stub = []
|
750
|
-
|
751
|
-
lparam = "-l" + File.basename(f).gsub(/^lib/,"").gsub(/\.a$/,"")
|
777
|
+
extlibs.reverse.each do |f|
|
778
|
+
lparam = "-l" + File.basename(f).gsub(/^lib/,"").gsub(/\.(a|so)$/,"")
|
752
779
|
args << lparam
|
753
780
|
# Workaround for GNU ld: this way we have specified one lib multiple times
|
754
781
|
# command line so ld's dependency mechanism will find required functions
|
@@ -759,6 +786,8 @@ namespace "build" do
|
|
759
786
|
stub << lparam
|
760
787
|
end
|
761
788
|
|
789
|
+
args += rlibs
|
790
|
+
|
762
791
|
mkdir_p File.dirname(libname) unless File.directory? File.dirname(libname)
|
763
792
|
cc_link libname, Dir.glob(objdir + "/**/*.o"), args, deps or exit 1
|
764
793
|
|
@@ -808,6 +837,14 @@ namespace "build" do
|
|
808
837
|
end
|
809
838
|
end
|
810
839
|
lines << $app_android_r
|
840
|
+
lines << $app_native_libs_java
|
841
|
+
if File.exists? File.join($extensionsdir, "ext_build.files")
|
842
|
+
File.open(File.join($extensionsdir, "ext_build.files")) do |f|
|
843
|
+
while line = f.gets
|
844
|
+
lines << line
|
845
|
+
end
|
846
|
+
end
|
847
|
+
end
|
811
848
|
File.open(newsrclist, "w") { |f| f.write lines.join("\n") }
|
812
849
|
srclist = newsrclist
|
813
850
|
|
@@ -901,8 +938,16 @@ namespace "package" do
|
|
901
938
|
rm_rf File.join($tmpdir, "lib")
|
902
939
|
mkdir_p File.join($tmpdir, "lib/armeabi")
|
903
940
|
cp_r File.join($bindir, "libs", $confdir, "librhodes.so"), File.join($tmpdir, "lib/armeabi")
|
904
|
-
|
905
|
-
|
941
|
+
# Add extensions .so libraries
|
942
|
+
Dir.glob($extensionsdir + "/lib*.so").each do |lib|
|
943
|
+
cp_r lib, File.join($tmpdir, "lib/armeabi")
|
944
|
+
end
|
945
|
+
args = ["add", resourcepkg]
|
946
|
+
# Strip them all to decrease size
|
947
|
+
Dir.glob($tmpdir + "/lib/armeabi/lib*.so").each do |lib|
|
948
|
+
cc_run($stripbin, [lib])
|
949
|
+
args << "lib/armeabi/#{File.basename(lib)}"
|
950
|
+
end
|
906
951
|
puts Jake.run($aapt, args, $tmpdir)
|
907
952
|
err = $?
|
908
953
|
rm_rf $tmpdir + "/lib"
|
@@ -16,15 +16,20 @@ else
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def setup_ndk(ndkpath,apilevel)
|
19
|
-
$ndkgccver = "
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
$
|
19
|
+
$ndkgccver = "unknown"
|
20
|
+
["4.4.0", "4.2.1"].each do |ver|
|
21
|
+
tools = File.join(ndkpath, "build/prebuilt", $ndkhost, "arm-eabi-#{ver}")
|
22
|
+
next unless File.directory? tools
|
23
|
+
$ndkgccver = ver
|
24
|
+
$ndktools = tools
|
25
|
+
break
|
26
|
+
end
|
27
|
+
$ndksysroot = File.join(ndkpath, "build/platforms/android-#{apilevel}/arch-arm")
|
28
|
+
|
29
|
+
['gcc', 'g++', 'ar', 'strip', 'objdump'].each do |tool|
|
30
|
+
name = tool.gsub('+', 'p')
|
31
|
+
eval "$#{name}bin = $ndktools + '/bin/arm-eabi-#{tool}' + $exe_ext"
|
32
|
+
end
|
28
33
|
end
|
29
34
|
|
30
35
|
def cc_def_args
|
@@ -163,13 +168,13 @@ def cc_link(outname, objects, additional = nil, deps = nil)
|
|
163
168
|
args << outname
|
164
169
|
args += objects
|
165
170
|
args += additional if additional.is_a? Array and not additional.empty?
|
171
|
+
args << "-L#{$ndksysroot}/usr/lib"
|
172
|
+
args << "-Wl,-rpath-link=#{$ndksysroot}/usr/lib"
|
166
173
|
args << "#{$ndksysroot}/usr/lib/libstdc++.so"
|
167
174
|
args << "#{$ndksysroot}/usr/lib/libsupc++.so" unless USE_STLPORT
|
175
|
+
args << "#{$ndktools}/lib/gcc/arm-eabi/#{$ndkgccver}/libgcc.a"
|
168
176
|
args << "#{$ndksysroot}/usr/lib/libc.so"
|
169
177
|
args << "#{$ndksysroot}/usr/lib/libm.so"
|
170
|
-
args << "-L#{$ndksysroot}/usr/lib"
|
171
|
-
args << "-Wl,-rpath-link=#{$ndksysroot}/usr/lib"
|
172
|
-
args << "#{$ndktools}/lib/gcc/arm-eabi/#{$ndkgccver}/interwork/libgcc.a"
|
173
178
|
cc_run($gccbin, args)
|
174
179
|
end
|
175
180
|
|
data/platform/bb/build/bb.rake
CHANGED
@@ -128,7 +128,7 @@ namespace "config" do
|
|
128
128
|
$preverified = $app_path + "/preverified"
|
129
129
|
$targetdir = $bindir + "/target/" + $bbver
|
130
130
|
$rubyVMdir = $app_path + "/RubyVM"
|
131
|
-
$excludelib = ['**/rational.rb','**/
|
131
|
+
$excludelib = ['**/rational.rb','**/dateOrig.rb']
|
132
132
|
$excludeextlib = ['rexml/parsers/baseparser.rb', 'rexml/set.rb']
|
133
133
|
$compileERB = $app_path + "/build/compileERB.rb"
|
134
134
|
$tmpdir = $bindir +"/tmp"
|
@@ -225,6 +225,26 @@ namespace "build" do
|
|
225
225
|
cp $app_path+"/rhoconfig.txt", sdcardpath if File.exists? sdcardpath
|
226
226
|
end
|
227
227
|
|
228
|
+
def create_jarmanifest
|
229
|
+
mf = File.join($builddir, "MANIFEST.MF")
|
230
|
+
puts "mf: #{mf}"
|
231
|
+
f = File.new(mf, "w")
|
232
|
+
|
233
|
+
f.write "Manifest-Version: 1.0\n"
|
234
|
+
f.write "MIDlet-Vendor: <unknown>\n"
|
235
|
+
f.write "MIDlet-Version: 1.40\n"
|
236
|
+
f.write "MicroEdition-Configuration: CLDC-1.1\n"
|
237
|
+
f.write "MIDlet-1: ,resources/icon.png,\n"
|
238
|
+
f.write "Created-By: 1.6.0_02 (Sun Microsystems Inc.)\n"
|
239
|
+
f.write "MIDlet-Jar-URL: rhodes.jar\n"
|
240
|
+
f.write "MIDlet-Name: rhodes\n"
|
241
|
+
f.write "MicroEdition-Profile: MIDP-2.0\n"
|
242
|
+
f.write "MIDlet-Jar-Size: 0\n"
|
243
|
+
f.write "RIM-MIDlet-Flags-1: 1\n" if $service_enabled
|
244
|
+
f.close
|
245
|
+
|
246
|
+
end
|
247
|
+
|
228
248
|
task :gensources => "config:bb" do
|
229
249
|
caps = $app_config["capabilities"]
|
230
250
|
caps = [] if caps.nil?
|
@@ -233,26 +253,8 @@ namespace "build" do
|
|
233
253
|
has_push = caps.index("push") != nil
|
234
254
|
|
235
255
|
$service_enabled = has_push
|
236
|
-
|
237
|
-
|
238
|
-
$stdout.flush
|
239
|
-
mf = File.join($builddir, "MANIFEST.MF")
|
240
|
-
tmpmf = File.join($builddir, "MANIFEST.MF.new")
|
241
|
-
File.open(tmpmf, "w") do |nf|
|
242
|
-
File.open(mf, "r") do |f|
|
243
|
-
while line = f.gets
|
244
|
-
if line =~ /^\s*RIM-MIDlet-Flags-1\s*:/
|
245
|
-
nf.puts "RIM-MIDlet-Flags-1: 1" if has_push
|
246
|
-
else
|
247
|
-
nf.puts line
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
251
|
-
end
|
252
|
-
rm mf
|
253
|
-
cp tmpmf, mf
|
254
|
-
rm tmpmf
|
255
|
-
|
256
|
+
create_jarmanifest()
|
257
|
+
|
256
258
|
puts "Modify Capabilities.java"
|
257
259
|
$stdout.flush
|
258
260
|
capabilities = File.join($builddir, "..", "..", "..", "platform", "shared", "rubyJVM", "src", "com", "rho", "Capabilities.java")
|
@@ -197,13 +197,16 @@ public class BrowserAdapter implements RenderingApplication, IBrowserAdapter
|
|
197
197
|
|
198
198
|
synchronized (Application.getEventLock())
|
199
199
|
{
|
200
|
-
|
200
|
+
m_oMainScreen.deleteAll();
|
201
|
+
m_oMainScreen.add(field);
|
202
|
+
|
203
|
+
/*if ( m_oMainScreen.getFieldCount() > 0 )
|
201
204
|
{
|
202
205
|
Field old = m_oMainScreen.getField(0);
|
203
206
|
m_oMainScreen.add(field);
|
204
207
|
m_oMainScreen.delete(old);
|
205
208
|
}else
|
206
|
-
m_oMainScreen.add(field)
|
209
|
+
m_oMainScreen.add(field);*/
|
207
210
|
/*
|
208
211
|
_mainScreen.doPaint();
|
209
212
|
if ( e == null )
|
@@ -66,7 +66,7 @@ public class RhoRubyHelper implements IRhoRubyHelper {
|
|
66
66
|
RubyProgram p = (RubyProgram) o;
|
67
67
|
|
68
68
|
return p;*/
|
69
|
-
return new xruby.
|
69
|
+
return new xruby.rhoframework.main();
|
70
70
|
}
|
71
71
|
|
72
72
|
public String getPlatform() {
|
@@ -184,6 +184,11 @@ public class RhoRubyHelper implements IRhoRubyHelper {
|
|
184
184
|
return new Jsr75RAFileImpl();
|
185
185
|
}
|
186
186
|
|
187
|
+
public IRAFile createFSRAFile()
|
188
|
+
{
|
189
|
+
return new Jsr75RAFileImpl();
|
190
|
+
}
|
191
|
+
|
187
192
|
public String getGeoLocationText()
|
188
193
|
{
|
189
194
|
return GeoLocation.getGeoLocationText();
|
@@ -126,7 +126,9 @@ public class System {
|
|
126
126
|
if ( strPropName.equalsIgnoreCase("has_network") )
|
127
127
|
return ObjectFactory.createBoolean(hasNetwork());
|
128
128
|
if ( strPropName.equalsIgnoreCase("locale") )
|
129
|
-
return ObjectFactory.createString(getLocale());
|
129
|
+
return ObjectFactory.createString(getLocale());
|
130
|
+
if ( strPropName.equalsIgnoreCase("country") )
|
131
|
+
return ObjectFactory.createString(getCountry());
|
130
132
|
if ( strPropName.equalsIgnoreCase("screen_width") )
|
131
133
|
return ObjectFactory.createInteger(getScreenWidth());
|
132
134
|
if ( strPropName.equalsIgnoreCase("screen_height") )
|
@@ -159,6 +161,12 @@ public class System {
|
|
159
161
|
return lang;
|
160
162
|
}
|
161
163
|
|
164
|
+
private static String getCountry() {
|
165
|
+
Locale loc = Locale.getDefault();
|
166
|
+
String country = loc != null ? loc.getCountry() : "US";
|
167
|
+
return country;
|
168
|
+
}
|
169
|
+
|
162
170
|
public static boolean hasCamera()
|
163
171
|
{
|
164
172
|
return DeviceInfo.hasCamera();
|
@@ -2,6 +2,7 @@ package com.rho.rubyext;
|
|
2
2
|
|
3
3
|
import com.rho.RhoEmptyLogger;
|
4
4
|
import com.rho.RhoLogger;
|
5
|
+
import com.rho.RhodesApp;
|
5
6
|
import com.xruby.runtime.builtin.*;
|
6
7
|
import com.xruby.runtime.lang.*;
|
7
8
|
import rhomobile.RhodesApplication;
|
@@ -43,17 +44,31 @@ public class WebView
|
|
43
44
|
}
|
44
45
|
}
|
45
46
|
});
|
46
|
-
klass.getSingletonClass().defineMethod("current_location", new
|
47
|
+
klass.getSingletonClass().defineMethod("current_location", new RubyNoOrOneArgMethod() {
|
47
48
|
protected RubyValue run(RubyValue receiver, RubyBlock block)
|
48
49
|
{
|
49
50
|
try {
|
50
|
-
String url =
|
51
|
+
String url = RhodesApp.getInstance().getCurrentUrl(0);
|
52
|
+
//RhodesApplication.getInstance().getCurrentPageUrl();
|
51
53
|
return ObjectFactory.createString(url);
|
52
54
|
} catch(Exception e) {
|
53
55
|
LOG.ERROR("current_location failed.", e);
|
54
56
|
throw (e instanceof RubyException ? (RubyException)e : new RubyException(e.getMessage()));
|
55
57
|
}
|
56
58
|
}
|
59
|
+
protected RubyValue run(RubyValue receiver, RubyValue arg, RubyBlock block)
|
60
|
+
{
|
61
|
+
try {
|
62
|
+
int nIndex = arg.toInt();
|
63
|
+
String url = RhodesApp.getInstance().getCurrentUrl(nIndex);
|
64
|
+
//RhodesApplication.getInstance().getCurrentPageUrl();
|
65
|
+
return ObjectFactory.createString(url);
|
66
|
+
} catch(Exception e) {
|
67
|
+
LOG.ERROR("current_location failed.", e);
|
68
|
+
throw (e instanceof RubyException ? (RubyException)e : new RubyException(e.getMessage()));
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
57
72
|
});
|
58
73
|
klass.getSingletonClass().defineMethod("set_menu_items", new RubyOneArgMethod() {
|
59
74
|
protected RubyValue run(RubyValue receiver, RubyValue arg0, RubyBlock block)
|
@@ -95,6 +110,20 @@ public class WebView
|
|
95
110
|
return ObjectFactory.createInteger(0);
|
96
111
|
}
|
97
112
|
});
|
113
|
+
klass.getSingletonClass().defineMethod("set_cookie", new RubyTwoArgMethod() {
|
114
|
+
protected RubyValue run(RubyValue receiver, RubyValue arg1, RubyValue arg2, RubyBlock block) {
|
115
|
+
try {
|
116
|
+
String url = arg1.toString();
|
117
|
+
String cookie = arg2.toString();
|
118
|
+
RhodesApplication.getInstance().setCookie(url, cookie);
|
119
|
+
return RubyConstant.QNIL;
|
120
|
+
}
|
121
|
+
catch (Exception e) {
|
122
|
+
LOG.ERROR("set_cookie failed.", e);
|
123
|
+
throw (e instanceof RubyException ? (RubyException)e : new RubyException(e.getMessage()));
|
124
|
+
}
|
125
|
+
}
|
126
|
+
});
|
98
127
|
}
|
99
128
|
|
100
129
|
}
|
@@ -62,6 +62,7 @@ final public class RhodesApplication extends UiApplication implements SystemList
|
|
62
62
|
public static final String LABEL_LOG = "Log";
|
63
63
|
public static final String LABEL_SEPARATOR = "separator";
|
64
64
|
public static final String LABEL_CLOSE = "Close";
|
65
|
+
public static final String LABEL_EXIT = "Exit";
|
65
66
|
public static final String LABEL_NONE = "none";
|
66
67
|
|
67
68
|
private static final RhoLogger LOG = RhoLogger.RHO_STRIP_LOG ? new RhoEmptyLogger() :
|
@@ -780,7 +781,8 @@ final public class RhodesApplication extends UiApplication implements SystemList
|
|
780
781
|
} else if (label.equalsIgnoreCase(RhodesApplication.LABEL_SEPARATOR) ||
|
781
782
|
(value != null && value.equalsIgnoreCase(RhodesApplication.LABEL_SEPARATOR))) {
|
782
783
|
menuItems.addElement(separatorItem);
|
783
|
-
} else if (value.equalsIgnoreCase(RhodesApplication.LABEL_CLOSE)
|
784
|
+
} else if (value.equalsIgnoreCase(RhodesApplication.LABEL_CLOSE) ||
|
785
|
+
value.equalsIgnoreCase(RhodesApplication.LABEL_EXIT)) {
|
784
786
|
setDefaultItemToMenuItems(label, closeItem);
|
785
787
|
} else if (label.equalsIgnoreCase(RhodesApplication.LABEL_NONE)) {
|
786
788
|
menuItems = null;
|
@@ -990,6 +992,19 @@ final public class RhodesApplication extends UiApplication implements SystemList
|
|
990
992
|
} );
|
991
993
|
}
|
992
994
|
|
995
|
+
private Hashtable cookies = new Hashtable();
|
996
|
+
|
997
|
+
public String getCookie(String url) {
|
998
|
+
Object c = cookies.get(url);
|
999
|
+
if (c instanceof String)
|
1000
|
+
return (String)c;
|
1001
|
+
return null;
|
1002
|
+
}
|
1003
|
+
|
1004
|
+
public void setCookie(String url, String cookie) {
|
1005
|
+
cookies.put(url, cookie);
|
1006
|
+
}
|
1007
|
+
|
993
1008
|
private void createBrowserControl()
|
994
1009
|
{
|
995
1010
|
//touch;5
|
@@ -1086,11 +1101,7 @@ final public class RhodesApplication extends UiApplication implements SystemList
|
|
1086
1101
|
}
|
1087
1102
|
|
1088
1103
|
public void refreshCurrentPage(){
|
1089
|
-
navigateUrl(
|
1090
|
-
}
|
1091
|
-
|
1092
|
-
public String getCurrentPageUrl(){
|
1093
|
-
return (String)_history.lastElement();
|
1104
|
+
navigateUrl((String)_history.lastElement());
|
1094
1105
|
}
|
1095
1106
|
|
1096
1107
|
void navigateHome(){
|
@@ -58,6 +58,12 @@ public class Utilities {
|
|
58
58
|
&& !StringUtilities.startsWithIgnoreCase(url, "https:")) {
|
59
59
|
sendReferrer = false;
|
60
60
|
}
|
61
|
+
|
62
|
+
// Set cookie
|
63
|
+
String cookie = RhodesApplication.getInstance().getCookie(url);
|
64
|
+
if (cookie != null) {
|
65
|
+
conn.setRequestProperty("Cookie", cookie);
|
66
|
+
}
|
61
67
|
|
62
68
|
int size = requestHeaders.size();
|
63
69
|
for (int i = 0; i < size;) {
|
@@ -213,6 +213,12 @@ int rho_sysimpl_get_property(char* szPropName, VALUE* resValue)
|
|
213
213
|
{*resValue = rho_ruby_create_string("APPLE"); return 1;}
|
214
214
|
else if (strcasecmp("locale", szPropName) == 0)
|
215
215
|
{*resValue = rho_sys_get_locale(); return 1; }
|
216
|
+
else if (strcasecmp("country", szPropName) == 0) {
|
217
|
+
NSLocale *locale = [NSLocale currentLocale];
|
218
|
+
NSString *cl = [locale objectForKey:NSLocaleCountryCode];
|
219
|
+
*resValue = rho_ruby_create_string([cl UTF8String]);
|
220
|
+
return 1;
|
221
|
+
}
|
216
222
|
else if (strcasecmp("screen_width", szPropName) == 0)
|
217
223
|
{*resValue = rho_ruby_create_integer(rho_sys_get_screen_width()); return 1; }
|
218
224
|
else if (strcasecmp("screen_height", szPropName) == 0)
|
@@ -235,10 +241,16 @@ int rho_sysimpl_get_property(char* szPropName, VALUE* resValue)
|
|
235
241
|
|
236
242
|
return 1;
|
237
243
|
}
|
238
|
-
else if (strcasecmp("device_name", szPropName) == 0)
|
239
|
-
|
240
|
-
|
241
|
-
|
244
|
+
else if (strcasecmp("device_name", szPropName) == 0) {
|
245
|
+
NSString *model = [[UIDevice currentDevice] model];
|
246
|
+
*resValue = rho_ruby_create_string([model UTF8String]);
|
247
|
+
return 1;
|
248
|
+
}
|
249
|
+
else if (strcasecmp("os_version", szPropName) == 0) {
|
250
|
+
NSString *version = [[UIDevice currentDevice] systemVersion];
|
251
|
+
*resValue = rho_ruby_create_string([version UTF8String]);
|
252
|
+
return 1;
|
253
|
+
}
|
242
254
|
/*
|
243
255
|
// Removed because it's possibly dangerous: Apple could reject application
|
244
256
|
// used such approach from its AppStore
|
@@ -10,13 +10,12 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
@interface DateTime : NSObject {
|
13
|
-
|
14
13
|
@private
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
NSString* url;
|
15
|
+
NSString* title;
|
16
|
+
long initialTime;
|
17
|
+
int format;
|
18
|
+
NSString* data;
|
20
19
|
}
|
21
20
|
|
22
21
|
@property (nonatomic, retain) NSString* url;
|
@@ -6,30 +6,16 @@
|
|
6
6
|
// Copyright 2010 __MyCompanyName__. All rights reserved.
|
7
7
|
//
|
8
8
|
|
9
|
-
#import "DateTimePicker.h"
|
10
9
|
#import "DateTime.h"
|
11
10
|
#import "Rhodes.h"
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
+ (void)chooseDateTime:(NSString*)url title:(NSString*)title initialTime:(long)initial_time
|
16
|
-
format:(int)format data:(NSString*)data {
|
12
|
+
void choose_datetime(char* callback, char* title, long initial_time, int format, char* data) {
|
17
13
|
DateTime* dateTime = [[DateTime alloc] init];
|
18
|
-
dateTime.url =
|
19
|
-
dateTime.title = title;
|
14
|
+
dateTime.url = [NSString stringWithUTF8String:callback];
|
15
|
+
dateTime.title = [NSString stringWithUTF8String:title];
|
20
16
|
dateTime.initialTime = initial_time;
|
21
17
|
dateTime.format = format;
|
22
|
-
dateTime.data = data;
|
18
|
+
dateTime.data = [NSString stringWithUTF8String:data];
|
23
19
|
[[Rhodes sharedInstance] performSelectorOnMainThread:@selector(chooseDateTime:) withObject:dateTime waitUntilDone:YES];
|
24
20
|
[dateTime release];
|
25
|
-
}
|
26
|
-
|
27
|
-
@end
|
28
|
-
|
29
|
-
void choose_datetime(char* callback, char* title, long initial_time, int format, char* data) {
|
30
|
-
[DateTimePicker chooseDateTime:[NSString stringWithUTF8String:callback]
|
31
|
-
title:[NSString stringWithUTF8String:title]
|
32
|
-
initialTime:initial_time
|
33
|
-
format:format
|
34
|
-
data:[NSString stringWithUTF8String:data]];
|
35
21
|
}
|
@@ -14,23 +14,21 @@
|
|
14
14
|
@interface DateTimePickerDelegate : RhoDelegate <UIPickerViewDelegate>
|
15
15
|
{
|
16
16
|
@private
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
NSDateFormatter *dateFormatter;
|
17
|
+
UIDatePicker *pickerView;
|
18
|
+
UIView *parentView;
|
19
|
+
UIToolbar *toolbar;
|
20
|
+
UILabel *barLabel;
|
21
|
+
DateTime *dateTime;
|
23
22
|
}
|
24
23
|
|
25
24
|
@property (nonatomic, retain) DateTime *dateTime;
|
26
25
|
@property (nonatomic, retain) UIDatePicker *pickerView;
|
27
|
-
@property (nonatomic, retain)
|
26
|
+
@property (nonatomic, retain) UIView *parentView;
|
28
27
|
@property (nonatomic, retain) UIToolbar *toolbar;
|
29
28
|
@property (nonatomic, retain) UILabel *barLabel;
|
30
|
-
@property (nonatomic, retain) NSDateFormatter *dateFormatter;
|
31
29
|
|
32
30
|
- (IBAction)dateAction:(id)sender;
|
33
31
|
- (IBAction)cancelAction:(id)sender;
|
34
|
-
- (void)createPicker:(
|
32
|
+
- (void)createPicker:(UIView*)parent;
|
35
33
|
|
36
34
|
@end
|