rhodes 2.1.0 → 2.2.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +7 -0
- data/README.textile +4 -5
- data/Rakefile +8 -1
- data/lib/build/jake.rb +22 -16
- data/lib/extensions/rhoxml/rexml/cdata.rb +67 -0
- data/lib/extensions/rhoxml/rexml/document.rb +2 -116
- data/lib/extensions/rhoxml/rexml/element.rb +1 -1
- data/lib/extensions/rhoxml/rexml/text.rb +117 -0
- data/lib/framework/rho/render.rb +19 -11
- data/lib/framework/rho/rho.rb +17 -10
- data/lib/framework/rho/rhobluetooth.rb +103 -0
- data/lib/framework/rho/rhocontroller.rb +2 -0
- data/lib/framework/rho/rhoevent.rb +43 -0
- data/lib/framework/rho/rhoevent_bb.rb +80 -0
- data/lib/framework/rho/rhoevent_c.rb +47 -0
- data/lib/framework/rhodes.rb +2 -2
- data/lib/framework/rhom/rhom_db_adapter.rb +2 -1
- data/lib/framework/rhom/rhom_model.rb +9 -3
- data/lib/framework/rhom/rhom_object_factory.rb +46 -22
- data/lib/framework/rhom/rhom_source.rb +12 -10
- data/lib/framework/version.rb +2 -2
- data/lib/rhodes.rb +2 -2
- data/platform/android/Rhodes/AndroidManifest.xml +23 -2
- data/platform/android/Rhodes/gen/com/rhomobile/rhodes/R.java +54 -38
- data/platform/android/Rhodes/jni/include/rhodes.h +3 -0
- data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +2 -2
- data/platform/android/Rhodes/jni/include/rhodes/details/rhojava.inc +4 -0
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +16 -0
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_bluetooth_RhoBluetoothManager.h +21 -0
- data/platform/android/Rhodes/jni/src/bluetooth.cpp +169 -0
- data/platform/android/Rhodes/jni/src/callbacks.cpp +10 -0
- data/platform/android/Rhodes/jni/src/event.cpp +429 -0
- data/platform/android/Rhodes/jni/src/fileapi.cpp +51 -1
- data/platform/android/Rhodes/jni/src/rhodes.cpp +16 -0
- data/platform/android/Rhodes/jni/src/sslimpl.cpp +3 -0
- data/platform/android/Rhodes/res/layout/bt_device_list.xml +42 -0
- data/platform/android/Rhodes/res/layout/bt_device_name.xml +7 -0
- data/platform/android/Rhodes/res/values/strings.xml +8 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +14 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +2 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Push.java +7 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +58 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java +53 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +8 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +144 -3
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/IRhoBluetoothManager.java +66 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothDeviceListActivity.java +201 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManager.java +139 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java +401 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerOld.java +136 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothSession.java +457 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/UUIDHelper.java +71 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +12 -7
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java +19 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +261 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +4 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +2 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/MailUriHandler.java +10 -2
- data/platform/android/build/RhodesSRC_build.files +33 -22
- data/platform/android/build/android.rake +198 -27
- data/platform/android/build/librhodes_build.files +3 -1
- data/platform/android/build/libruby_build.files +4 -1
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBResult.java +2 -2
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBRowResult.java +1 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +7 -4
- data/platform/bb/Hsqldb/src/org/hsqldb/Like.java +3 -3
- data/platform/bb/Hsqldb/src/org/hsqldb/Table.java +3 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Tokenizer.java +1 -1
- data/platform/bb/RubyVM/RubyVM.jdp +1 -0
- data/platform/bb/RubyVM/src/com/rho/RhoConf.java +108 -1
- data/platform/bb/RubyVM/src/com/rho/RhoLogConf.java +7 -1
- data/platform/bb/RubyVM/src/com/rho/RhoRuby.java +7 -4
- data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +7 -1
- data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +1 -1
- data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +21 -23
- data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +19 -10
- data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +8 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +3 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +14 -17
- data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyFile.java +7 -5
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RhoSupport.java +2 -0
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyRuntime.java +10 -1
- data/platform/bb/RubyVM/src/j2me/io/File.java +7 -6
- data/platform/bb/build/RubyVM_build.files +412 -412
- data/platform/bb/build/bb.rake +42 -18
- data/platform/bb/build/hsqldb_build.files +151 -151
- data/platform/bb/build/rhodes_build.files +44 -40
- data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +2 -0
- data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +237 -0
- data/platform/bb/rhodes/platform/common/com/rho/RhodesApplicationPlatform.java +14 -0
- data/platform/bb/rhodes/rhodes.jdp +6 -1
- data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +7 -1
- data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +14 -0
- data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +62 -76
- data/platform/bb/rhodes/src/com/rho/rubyext/RhoCalendar.java +660 -0
- data/platform/bb/rhodes/src/{rhomobile → com/rho/rubyext}/RhoPhonebook.java +95 -38
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +22 -1
- data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +26 -6
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +21 -7
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothManager.java +528 -0
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothPort.java +281 -0
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothScreen.java +119 -0
- data/platform/bb/rhodes/src/rhomobile/camera/CameraFilesListener.java +2 -2
- data/platform/iphone/Classes/AppManager/AppManager.m +70 -7
- data/platform/iphone/Classes/Bluetooth/Bluetooth.h +72 -0
- data/platform/iphone/Classes/Bluetooth/Bluetooth.m +414 -0
- data/platform/iphone/Classes/Event/Event.h +12 -0
- data/platform/iphone/Classes/Event/Event.m +300 -0
- data/platform/iphone/Classes/LogOptionsController.h +2 -1
- data/platform/iphone/Classes/LogOptionsController.m +1 -1
- data/platform/iphone/Classes/LogViewController.h +2 -1
- data/platform/iphone/Classes/MapView/MapViewController.h +2 -1
- data/platform/iphone/Classes/RhoViewController.h +16 -0
- data/platform/iphone/Classes/RhoViewController.m +20 -0
- data/platform/iphone/Classes/Rhodes.h +12 -0
- data/platform/iphone/Classes/Rhodes.m +34 -6
- data/platform/iphone/Classes/Signature/SignatureViewController.h +2 -2
- data/platform/iphone/Classes/Signature/SignatureViewController.m +0 -10
- data/platform/iphone/Classes/SimpleMainView.h +2 -2
- data/platform/iphone/Classes/SimpleMainView.m +5 -14
- data/platform/iphone/Classes/SplashViewController.h +2 -2
- data/platform/iphone/Classes/TabbedMainView.h +2 -2
- data/platform/iphone/Classes/TabbedMainView.m +5 -10
- data/platform/iphone/Info.plist +5 -5
- data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +39 -0
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +47 -4
- data/platform/osx/Rhodes Debugger/NoodleLineNumberView.m +3 -2
- data/platform/shared/common/AutoPointer.h +3 -0
- data/platform/shared/common/RhoConf.cpp +2 -1
- data/platform/shared/common/RhoThread.h +1 -1
- data/platform/shared/common/RhoTime.h +3 -3
- data/platform/shared/common/RhodesApp.cpp +75 -23
- data/platform/shared/common/RhodesApp.h +4 -0
- data/platform/shared/common/RhodesAppBase.h +2 -0
- data/platform/shared/common/ThreadQueue.cpp +23 -18
- data/platform/shared/common/ThreadQueue.h +2 -0
- data/platform/shared/db/res/db/syncdb.schema +39 -39
- data/platform/shared/logging/RhoLogConf.cpp +58 -3
- data/platform/shared/logging/RhoLogConf.h +3 -1
- data/platform/shared/net/CURLNetRequest.cpp +17 -6
- data/platform/shared/net/HttpServer.cpp +125 -25
- data/platform/shared/net/HttpServer.h +4 -3
- data/platform/shared/ruby/ext/bluetooth/bluetooth.i +56 -0
- data/platform/shared/ruby/ext/bluetooth/bluetooth_wrap.c +2563 -0
- data/platform/shared/ruby/ext/calendar/calendar.i +28 -0
- data/platform/shared/ruby/ext/calendar/calendar_wrap.c +2251 -0
- data/platform/shared/ruby/ext/calendar/event.h +41 -0
- data/platform/shared/ruby/ext/calendar/event.i +28 -0
- data/platform/shared/ruby/ext/calendar/event_wrap.c +2151 -0
- data/platform/shared/ruby/ext/rho/rhoruby.c +103 -3
- data/platform/shared/ruby/ext/rho/rhoruby.h +16 -2
- data/platform/shared/ruby/ext/rhoconf/rhoconf.i +12 -0
- data/platform/shared/ruby/ext/rhoconf/rhoconf_wrap.c +101 -0
- data/platform/shared/ruby/ext/system/system.i +14 -0
- data/platform/shared/ruby/ext/system/system_wrap.c +2568 -2208
- data/platform/shared/ruby/main.c +8 -0
- data/platform/shared/rubyext/GeoLocation.cpp +6 -3
- data/platform/shared/rubyext/System.cpp +14 -0
- data/platform/shared/sync/SyncEngine.cpp +9 -1
- data/platform/shared/sync/SyncNotify.cpp +16 -8
- data/platform/shared/sync/SyncNotify.h +1 -0
- data/platform/shared/sync/SyncThread.cpp +7 -12
- data/platform/shared/sync/SyncThread.h +5 -3
- data/platform/wm/build/wm.rake +7 -1
- data/platform/wm/rhodes/Alert.cpp +1 -1
- data/platform/wm/rhodes/MainWindow.cpp +28 -0
- data/platform/wm/rhodes/MainWindow.h +9 -0
- data/platform/wm/rhodes/OutlookApp.cpp +72 -0
- data/platform/wm/rhodes/OutlookApp.h +22 -0
- data/platform/wm/rhodes/Rhodes.cpp +8 -0
- data/platform/wm/rhodes/Rhodes.rc +31 -0
- data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +1274 -0
- data/platform/wm/rhodes/bluetooth/Bluetooth.h +321 -0
- data/platform/wm/rhodes/phonebook/NativeAddressBook.cpp +37 -70
- data/platform/wm/rhodes/phonebook/NativeAddressBook.h +0 -4
- data/platform/wm/rhodes/resource.h +8 -1
- data/platform/wm/rhodes/rho/net/NetRequest.cpp +4 -0
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +6 -4
- data/platform/wm/rhodes/rho/rubyext/calendar.cpp +487 -0
- data/platform/wm/rhodes/rhodes.vcproj +28 -11
- data/platform/wm/rhodes/stdafx.h +1 -0
- data/platform/wm/rubylib/rubylib.vcproj +32 -0
- data/rakefile.rb +8 -1
- data/res/generators/templates/application/Rakefile +1 -1
- data/res/generators/templates/application/app/layout.erb +4 -1
- data/res/generators/templates/application/build.yml +0 -1
- data/res/generators/templates/application/public/css/iphone.css +2 -2
- data/res/generators/templates/application/public/jqtouch/jqtouch-iphone.css +9 -0
- data/res/generators/templates/application/public/jqtouch/jqtouch.css +1 -5
- data/res/generators/templates/application/public/jqtouch/jqtouch.js +3 -2
- data/rhodes.gemspec +1 -1
- data/spec/perfomance_spec/app/Benchmark/benchmark.rb +4 -0
- data/spec/perfomance_spec/app/Benchmark/bulk_results.erb +13 -0
- data/spec/perfomance_spec/app/Benchmark/controller.rb +178 -0
- data/spec/perfomance_spec/app/Benchmark/create_results.erb +13 -0
- data/spec/perfomance_spec/app/Benchmark/customers.erb +35 -0
- data/spec/perfomance_spec/app/Benchmark/index.erb +9 -0
- data/spec/perfomance_spec/app/Benchmark/products.erb +25 -0
- data/spec/perfomance_spec/app/Benchmark/search_results.erb +13 -0
- data/spec/perfomance_spec/app/Customer/customer.rb +6 -0
- data/spec/perfomance_spec/app/Perftest/index.erb +5 -0
- data/spec/perfomance_spec/app/Product/index.erb +25 -0
- data/spec/perfomance_spec/app/Product/product.rb +6 -0
- data/spec/perfomance_spec/app/helpers/application_helper.rb +126 -0
- data/spec/perfomance_spec/app/helpers/browser_helper.rb +18 -0
- data/spec/perfomance_spec/rhoconfig.txt +1 -1
- data/spec/phone_spec/app/Account_s/account_s.rb +5 -2
- data/spec/phone_spec/app/Case/case.rb +1 -0
- data/spec/phone_spec/app/Case_s/case_s.rb +2 -0
- data/spec/phone_spec/app/Data/perftest.json +35 -0
- data/spec/phone_spec/app/Data/testCDATA.xml +11 -0
- data/spec/phone_spec/app/Product/product.rb +1 -1
- data/spec/phone_spec/app/{Spec → spec}/asynchttp_spec.rb +66 -17
- data/spec/phone_spec/app/{Spec → spec}/barcode_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/blobsync_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/bsearch_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/bulksync_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/contacts_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/crypt_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/date_spec.rb +0 -0
- data/spec/phone_spec/app/spec/events_spec.rb +199 -0
- data/spec/phone_spec/app/{Spec → spec}/fixtures/client_info.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/fixtures/object_values.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/json_spec.rb +11 -2
- data/spec/phone_spec/app/{Spec → spec}/mapview_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/nativebar_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/navbar_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/pagination/fixtures/object_values.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/rho_controller_spec.rb +5 -0
- data/spec/phone_spec/app/{Spec → spec}/rho_spec.rb +48 -0
- data/spec/phone_spec/app/{Spec → spec}/rhofile_spec.rb +9 -6
- data/spec/phone_spec/app/{Spec → spec}/rhom_object_spec.rb +188 -9
- data/spec/phone_spec/app/{Spec → spec}/syncengine_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/xml_spec.rb +15 -0
- data/spec/phone_spec/app/{Spec → spec}/xruby_spec.rb +0 -0
- data/spec/phone_spec/app/spec_runner.rb +4 -1
- data/spec/phone_spec/build.yml +2 -1
- metadata +95 -31
- data/platform/bb/rhodes/platform/5.0/com/rho/RhoMainScreen.java +0 -36
- data/platform/bb/rhodes/platform/6.0/com/rho/BrowserAdapter5.java +0 -155
- data/platform/bb/rhodes/platform/6.0/com/rho/RhoMainScreen.java +0 -36
data/lib/framework/rho/render.rb
CHANGED
@@ -22,10 +22,10 @@ module Rho
|
|
22
22
|
@layout.nil? ? 'layout' : @layout
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.renderfile(filename)
|
25
|
+
def self.renderfile(filename, req = {}, res = {})
|
26
26
|
res = ""
|
27
27
|
if File.extname(filename) == '.iseq'
|
28
|
-
res =
|
28
|
+
res = (RhoController.new).inst_render_index(filename, req, res)
|
29
29
|
else
|
30
30
|
res = IO.read(filename)
|
31
31
|
end
|
@@ -34,21 +34,29 @@ module Rho
|
|
34
34
|
res
|
35
35
|
end
|
36
36
|
|
37
|
-
def inst_render_index(filename)
|
37
|
+
def inst_render_index(filename, req, res)
|
38
38
|
rho_info 'inst_render_index'
|
39
|
-
@request, @response =
|
40
|
-
@params =
|
39
|
+
@request, @response = req, res
|
40
|
+
@params = RhoSupport::query_params req
|
41
|
+
|
42
|
+
#@request, @response = {}
|
43
|
+
#@params = {}
|
41
44
|
require 'rho/rhoviewhelpers'
|
42
|
-
|
45
|
+
|
43
46
|
@content = eval_compiled_file(filename, getBinding() )
|
44
|
-
|
47
|
+
if !xhr?
|
48
|
+
rho_info 'index layout'
|
49
|
+
layout = File.dirname(filename) + "/layout_erb.iseq"
|
50
|
+
@content = eval_compiled_file(layout, getBinding() ) if Rho::file_exist?(layout)
|
51
|
+
else
|
52
|
+
if @request["headers"]["Transition-Enabled"] == "true"
|
53
|
+
@content = "<div>#{@content}</div>"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
45
57
|
@content
|
46
58
|
end
|
47
59
|
|
48
|
-
def self.render_index(filename)
|
49
|
-
(RhoController.new).inst_render_index(filename)
|
50
|
-
end
|
51
|
-
|
52
60
|
def getBinding
|
53
61
|
binding
|
54
62
|
end
|
data/lib/framework/rho/rho.rb
CHANGED
@@ -235,7 +235,10 @@ module Rho
|
|
235
235
|
@db_partitions[partition] = nil unless @db_partitions[partition]
|
236
236
|
|
237
237
|
if source['belongs_to']
|
238
|
-
source['belongs_to'].each do |
|
238
|
+
source['belongs_to'].each do |hash_pair|
|
239
|
+
attrib = hash_pair.keys[0]
|
240
|
+
src_name = hash_pair.values[0]
|
241
|
+
|
239
242
|
associationsSrc = find_src_byname(uniq_sources, src_name)
|
240
243
|
if !associationsSrc
|
241
244
|
puts ( "Error: belongs_to '#{source['name']}' : source name '#{src_name}' does not exist." )
|
@@ -330,7 +333,7 @@ module Rho
|
|
330
333
|
#TODO: support column type
|
331
334
|
end
|
332
335
|
|
333
|
-
strCols += "
|
336
|
+
strCols += ",\"object\" varchar(255) PRIMARY KEY"
|
334
337
|
strCreate = "CREATE TABLE #{source['name']} ( #{strCols} )"
|
335
338
|
end
|
336
339
|
|
@@ -469,26 +472,26 @@ module Rho
|
|
469
472
|
end
|
470
473
|
end
|
471
474
|
|
472
|
-
def serve_index(index_name)
|
475
|
+
def serve_index(index_name, req)
|
473
476
|
# TODO: Removed hardcoded appname
|
474
477
|
get_app(APPNAME).set_menu
|
475
478
|
begin
|
476
479
|
puts 'inside RHO.serve_index: ' + index_name
|
477
480
|
res = init_response
|
478
|
-
res['request-body'] = RhoController::renderfile(index_name)
|
481
|
+
res['request-body'] = RhoController::renderfile(index_name, req, res)
|
479
482
|
return send_response(res)
|
480
483
|
rescue Exception => e
|
481
484
|
return send_error(e)
|
482
485
|
end
|
483
486
|
end
|
484
487
|
|
485
|
-
def serve_index_hash(index_name)
|
488
|
+
def serve_index_hash(index_name, req)
|
486
489
|
# TODO: Removed hardcoded appname
|
487
490
|
get_app(APPNAME).set_menu
|
488
491
|
begin
|
489
492
|
puts 'inside RHO.serve_index: ' + index_name
|
490
493
|
res = init_response
|
491
|
-
res['request-body'] = RhoController::renderfile(index_name)
|
494
|
+
res['request-body'] = RhoController::renderfile(index_name, req, res)
|
492
495
|
return send_response_hash(res)
|
493
496
|
rescue Exception => e
|
494
497
|
return send_error(e, 500, true)
|
@@ -591,9 +594,7 @@ module Rho
|
|
591
594
|
puts 'show error: ' + @@current_exception.inspect
|
592
595
|
body = RhoController::renderfile(err_page)
|
593
596
|
|
594
|
-
|
595
|
-
return send_response_hash(init_response(200,"OK",body))
|
596
|
-
end
|
597
|
+
return send_response_hash(init_response(200,"OK",body)) if hash
|
597
598
|
|
598
599
|
return send_response(init_response(200,"OK",body))
|
599
600
|
end
|
@@ -665,6 +666,10 @@ module Rho
|
|
665
666
|
def send_log
|
666
667
|
RhoConf.send_log
|
667
668
|
end
|
669
|
+
|
670
|
+
def read_log(limit=0)
|
671
|
+
RhoConf.read_log(limit)
|
672
|
+
end
|
668
673
|
|
669
674
|
def sources
|
670
675
|
@@sources
|
@@ -721,7 +726,9 @@ module Rho
|
|
721
726
|
module AsyncHttp
|
722
727
|
|
723
728
|
def self.make_auth_header(args)
|
724
|
-
auth = args[:authentication]
|
729
|
+
auth = args[:authentication] if args.has_key?(:authentication)
|
730
|
+
auth = args [:authorization] if args.has_key?(:authorization)
|
731
|
+
|
725
732
|
return nil unless auth.is_a? Hash
|
726
733
|
return nil if auth[:type].nil?
|
727
734
|
|
@@ -0,0 +1,103 @@
|
|
1
|
+
|
2
|
+
module Rho
|
3
|
+
|
4
|
+
class BluetoothManager
|
5
|
+
|
6
|
+
OK = 'OK'
|
7
|
+
CANCEL = 'CANCEL'
|
8
|
+
ERROR = 'ERROR'
|
9
|
+
|
10
|
+
ROLE_SERVER = 'ROLE_SERVER'
|
11
|
+
ROLE_CLIENT = 'ROLE_CLIENT'
|
12
|
+
|
13
|
+
def self.is_bluetooth_available
|
14
|
+
# return true/false
|
15
|
+
return RhoBluetooth.is_bluetooth_available()
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.off_bluetooth
|
19
|
+
RhoBluetooth.off_bluetooth()
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.set_device_name(name)
|
23
|
+
RhoBluetooth.set_device_name(name)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.get_device_name
|
27
|
+
return RhoBluetooth.get_device_name()
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.get_last_error
|
31
|
+
#return OK/ERROR/...
|
32
|
+
return RhoBluetooth.get_last_error()
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.create_session(role, callback_url)
|
36
|
+
# return OK/ERROR
|
37
|
+
#
|
38
|
+
# in callback
|
39
|
+
# status - OK/ERROR/CANCEL
|
40
|
+
# connected_device_name
|
41
|
+
puts 'BluetoothManager.rb::create_session()'
|
42
|
+
RhoBluetooth.create_session(role, callback_url)
|
43
|
+
return OK
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
class BluetoothSession
|
49
|
+
|
50
|
+
OK = 'OK'
|
51
|
+
CANCEL = 'CANCEL'
|
52
|
+
ERROR = 'ERROR'
|
53
|
+
|
54
|
+
SESSION_INPUT_DATA_RECEIVED = 'SESSION_INPUT_DATA_RECEIVED'
|
55
|
+
SESSION_DISCONNECT = 'SESSION_DISCONNECT'
|
56
|
+
|
57
|
+
def self.set_callback(connected_device_name, session_callback_url)
|
58
|
+
# return OK/ERROR
|
59
|
+
#
|
60
|
+
# in callback
|
61
|
+
# connected_device_name
|
62
|
+
# event_type - SESSION_INPUT_DATA_RECEIVED/ERROR/SESSION_DISCONNECT
|
63
|
+
puts 'BluetoothSession.rb::set_callback()'
|
64
|
+
RhoBluetooth.session_set_callback(connected_device_name, session_callback_url)
|
65
|
+
return OK
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.disconnect(connected_device_name)
|
69
|
+
# return OK/ERROR
|
70
|
+
RhoBluetooth.session_disconnect(connected_device_name)
|
71
|
+
return OK
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.get_status(connected_device_name)
|
75
|
+
# return -1 if error, 0 if empty or 0< if data waiting for read
|
76
|
+
return RhoBluetooth.session_get_status(connected_device_name)
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.read(connected_device_name)
|
80
|
+
# return array of bytes
|
81
|
+
return RhoBluetooth.session_read_data(connected_device_name)
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.write(connected_device_name, data)
|
85
|
+
# array of bytes
|
86
|
+
RhoBluetooth.session_write_data(connected_device_name, data)
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.read_string(connected_device_name)
|
90
|
+
# return string
|
91
|
+
return RhoBluetooth.session_read_string(connected_device_name)
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.write_string(connected_device_name, data)
|
95
|
+
# return OK/ERROR
|
96
|
+
RhoBluetooth.session_write_string(connected_device_name, data)
|
97
|
+
return OK
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
end
|
@@ -77,6 +77,8 @@ module Rho
|
|
77
77
|
|
78
78
|
# Returns true if the request's header contains "XMLHttpRequest".
|
79
79
|
def xml_http_request?
|
80
|
+
return false if !@request || !@request['headers'] || !@request['headers']['X-Requested-With']
|
81
|
+
|
80
82
|
not /XMLHttpRequest/i.match(@request['headers']['X-Requested-With']).nil?
|
81
83
|
end
|
82
84
|
alias xhr? :xml_http_request?
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'bsearch'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
if defined? RHO_ME
|
5
|
+
require 'rho/rhoevent_bb'
|
6
|
+
else
|
7
|
+
require 'rho/rhoevent_c'
|
8
|
+
end
|
9
|
+
|
10
|
+
module Rho
|
11
|
+
module RhoEvent
|
12
|
+
# These values determined experimentally on iPhone
|
13
|
+
MIN_TIME = Time.utc(2007, 'jan', 1, 0, 0, 0)
|
14
|
+
MAX_TIME = Time.utc(2030, 'dec', 31, 23, 59, 59)
|
15
|
+
|
16
|
+
#TODO: update examples
|
17
|
+
# Examples of how to use select method:
|
18
|
+
#
|
19
|
+
# selected = Rho::RhoEvent.select('first_name' => 'David') { |x| x[1]['last_name']=='Taylor' }
|
20
|
+
# ==> returns record(s) of the David Taylor
|
21
|
+
#
|
22
|
+
# selected = Rho::RhoEvent.select('first_name' => 'Kate')
|
23
|
+
# ==> Returns all records of Kate
|
24
|
+
#
|
25
|
+
# selected = Rho::RhoEvent.select('last_name' => 'User') do |x|
|
26
|
+
# x[1]['first_name']=='Test' and x[1]['company_name']=="rhomobile"
|
27
|
+
# end
|
28
|
+
# ==> returns all records of the Test User from the company rhomobile
|
29
|
+
#
|
30
|
+
def self.select(index, &block)
|
31
|
+
key, value = index.keys[0], index.values[0]
|
32
|
+
if @events.nil? or @key != key
|
33
|
+
@key, @events = key, find(:all).to_a.sort! {|x,y| x[1][key] <=> y[1][key] }
|
34
|
+
end
|
35
|
+
found = @events[@events.bsearch_range {|x| x[1][key] <=> value}]
|
36
|
+
unless found.nil? or block.nil?
|
37
|
+
return found.select(&block)
|
38
|
+
end
|
39
|
+
return found
|
40
|
+
end
|
41
|
+
|
42
|
+
end # module RhoEvent
|
43
|
+
end # module Rho
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'bsearch'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
module Rho
|
5
|
+
module RhoEvent
|
6
|
+
def self.find(*args)
|
7
|
+
pb = Calendar::openCalendar
|
8
|
+
if pb.nil?
|
9
|
+
puts "Can't open calendar"
|
10
|
+
return nil
|
11
|
+
elsif args.first == :all
|
12
|
+
|
13
|
+
if args.length > 1
|
14
|
+
records = Calendar::findCalendarEvents(pb, args[1])
|
15
|
+
else
|
16
|
+
records = Calendar::getallCalendarEvents(pb)
|
17
|
+
end
|
18
|
+
|
19
|
+
Calendar::closeCalendar(pb)
|
20
|
+
return records
|
21
|
+
else
|
22
|
+
record = Calendar::getCalendarEvent(pb,args.first)
|
23
|
+
Calendar::closeCalendar(pb)
|
24
|
+
return record
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.create!(properties)
|
29
|
+
pb = Calendar::openCalendar
|
30
|
+
unless pb.nil?
|
31
|
+
record = Calendar::createEvent(pb)
|
32
|
+
if record.nil?
|
33
|
+
puts "Can't find event " + properties['id']
|
34
|
+
else
|
35
|
+
properties.each do |key,value|
|
36
|
+
if key == 'start_date' or key == 'end_date'
|
37
|
+
value = Time.parse(value) if value.is_a? String
|
38
|
+
end
|
39
|
+
if key == 'reminder' and value.is_a?(String) and value.empty?
|
40
|
+
next
|
41
|
+
end
|
42
|
+
Calendar::setEventValue(record,key,value)
|
43
|
+
end
|
44
|
+
Calendar::addEvent(pb,record)
|
45
|
+
end
|
46
|
+
Calendar::closeCalendar(pb)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.destroy(recordId)
|
51
|
+
pb = Calendar::openCalendar
|
52
|
+
unless pb.nil?
|
53
|
+
record = Calendar::openCalendarEvent(pb,recordId)
|
54
|
+
if record.nil?
|
55
|
+
puts "Can't find event " + recordId
|
56
|
+
else
|
57
|
+
Calendar::deleteEvent(pb,record)
|
58
|
+
end
|
59
|
+
Calendar::closeCalendar(pb)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.update_attributes(properties)
|
64
|
+
pb = Calendar::openCalendar
|
65
|
+
unless pb.nil?
|
66
|
+
record = Calendar::openCalendarEvent(pb,properties['id'])
|
67
|
+
if record.nil?
|
68
|
+
puts "Can't find event " + properties['id']
|
69
|
+
else
|
70
|
+
properties.each do |key,value|
|
71
|
+
Calendar::setEventValue(record,key,value)
|
72
|
+
end
|
73
|
+
Calendar::saveEvent(pb,record)
|
74
|
+
end
|
75
|
+
Calendar::closeCalendar(pb)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end # module RhoEvent
|
80
|
+
end # module Rho
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'bsearch'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
module Rho
|
5
|
+
module RhoEvent
|
6
|
+
def self.find(*args)
|
7
|
+
if args.first == :all
|
8
|
+
params = {}
|
9
|
+
params = args[1] if args.length >= 2 and args[1].is_a? Hash
|
10
|
+
|
11
|
+
params['start_date'] = MIN_TIME if params['start_date'].nil? or params['start_date'] < MIN_TIME
|
12
|
+
params['end_date'] = MAX_TIME if params['end_date'].nil? or params['end_date'] > MAX_TIME
|
13
|
+
|
14
|
+
params['include_repeating'] = false if ( params['start_date'] == MIN_TIME || params['end_date'] == MAX_TIME )
|
15
|
+
|
16
|
+
puts "Rho::Calendar.fetch(params) : #{params}"
|
17
|
+
events = Rho::Calendar.fetch(params)
|
18
|
+
#puts "events : #{events}"
|
19
|
+
#ret = {}
|
20
|
+
#events.each do |e|
|
21
|
+
# ret[e[Rho::RhoEvent::ID]] = e
|
22
|
+
#end
|
23
|
+
#ret
|
24
|
+
events
|
25
|
+
else
|
26
|
+
id = args.first.to_s
|
27
|
+
id = $1 if id.is_a?(String) and id =~ /^{(.*)}$/
|
28
|
+
Rho::Calendar.fetch_by_id(id)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.create!(event)
|
33
|
+
Rho::Calendar.save(event)
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.destroy(id)
|
37
|
+
id = $1 if id.is_a?(String) and id =~ /^{(.*)}$/
|
38
|
+
Rho::Calendar.delete(id)
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.update_attributes(event)
|
42
|
+
puts "update_attributes: #{event}"
|
43
|
+
Rho::Calendar.save(event)
|
44
|
+
end
|
45
|
+
|
46
|
+
end # module RhoEvent
|
47
|
+
end # module Rho
|
data/lib/framework/rhodes.rb
CHANGED
@@ -107,6 +107,7 @@ class RhomDbAdapter
|
|
107
107
|
#puts "RhomDbAdapter: Executing query - #{sql}; #{args}"
|
108
108
|
begin
|
109
109
|
result = @database.execute( sql, is_batch, args )
|
110
|
+
#puts "result : #{result}"
|
110
111
|
rescue Exception => e
|
111
112
|
puts "exception when running query: #{e}"
|
112
113
|
raise
|
@@ -249,7 +250,7 @@ class RhomDbAdapter
|
|
249
250
|
quests << ','
|
250
251
|
end
|
251
252
|
|
252
|
-
cols << "#{key}"
|
253
|
+
cols << "\"#{key}\""
|
253
254
|
quests << '?'
|
254
255
|
vals << val
|
255
256
|
end
|