rhodes 3.2.1 → 3.2.2.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/CHANGELOG +7 -0
  2. data/Manifest.txt +36 -0
  3. data/lib/extensions/barcode/ext/barcode/platform/android/jni/src/barcode.cpp +24 -3
  4. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/android/CaptureActivity.java +11 -280
  5. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/android/camera/CameraManager.java +11 -4
  6. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/rhomobile/barcode/Barcode.java +2 -1
  7. data/lib/extensions/barcode/ext/barcode/platform/iphone/Barcode.xcodeproj/project.pbxproj +36 -0
  8. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeCallbackHelper.h +25 -0
  9. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeCallbackHelper.mm +195 -0
  10. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewController.h +59 -0
  11. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewController.m +346 -0
  12. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewFactory.h +7 -0
  13. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewFactory.mm +58 -0
  14. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewFactoryRegister.mm +18 -0
  15. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewManager.h +16 -0
  16. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewManager.mm +32 -0
  17. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/barcode.m +9 -2
  18. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarCameraSimulator.h +45 -0
  19. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarCaptureReader.h +7 -1
  20. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarReaderView.h +21 -4
  21. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarReaderViewController.h +32 -2
  22. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarSDK.h +1 -0
  23. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar.h +26 -5
  24. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Decoder.h +1 -0
  25. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Symbol.h +2 -3
  26. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/libzbar.a +0 -0
  27. data/lib/extensions/barcode/ext/barcode/shared/ruby/barcode.i +3 -2
  28. data/lib/extensions/barcode/ext/barcode/shared/ruby/barcode_wrap.c +7 -4
  29. data/lib/extensions/barcode/ext/barcode/shared/src/zbar.c +2 -2
  30. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +1 -1
  31. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraNewService.java +7 -2
  32. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraOldService.java +5 -1
  33. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraSemiService.java +8 -1
  34. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraService.java +4 -2
  35. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +11 -6
  36. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +21 -13
  37. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java +33 -11
  38. data/platform/android/build/android.rake +63 -1
  39. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +4 -0
  40. data/platform/iphone/curl/curl.xcodeproj/project.pbxproj +4 -0
  41. data/platform/iphone/icon.png +0 -0
  42. data/platform/iphone/rbuild/iphone.rake +6 -4
  43. data/platform/iphone/rhoextlib/rhoextlib.xcodeproj/project.pbxproj +4 -1
  44. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +4 -1
  45. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +4 -0
  46. data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +4 -0
  47. data/platform/wp7/IronRuby/bin/Silverlight3Release/IronRuby.Libraries.dll +0 -0
  48. data/platform/wp7/IronRuby/bin/Silverlight3Release/IronRuby.dll +0 -0
  49. data/platform/wp7/IronRuby/bin/Silverlight3Release/Microsoft.Dynamic.dll +0 -0
  50. data/platform/wp7/IronRuby/bin/Silverlight3Release/Microsoft.Scripting.Core.dll +0 -0
  51. data/platform/wp7/IronRuby/bin/Silverlight3Release/Microsoft.Scripting.dll +0 -0
  52. data/res/generators/rhogen.rb +191 -0
  53. data/res/generators/templates/extension/app/MontanaTest/controller.rb +20 -0
  54. data/res/generators/templates/extension/app/MontanaTest/index.erb +17 -0
  55. data/res/generators/templates/extension/extensions/montana/ext.yml +4 -0
  56. data/res/generators/templates/extension/extensions/montana/ext/build +17 -0
  57. data/res/generators/templates/extension/extensions/montana/ext/build.bat +36 -0
  58. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/android/Rakefile +77 -0
  59. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/android/ext_build.files +1 -0
  60. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/android/jni/src/montana.cpp +28 -0
  61. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/android/src/com/montana/Montana.java +10 -0
  62. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/bb/Montana.files +1 -0
  63. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/bb/Rakefile +97 -0
  64. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/bb/montana.jdp +48 -0
  65. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/bb/src/com/montana/Montana.java +118 -0
  66. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Classes/Montana.h +4 -0
  67. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Classes/Montana.m +24 -0
  68. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Montana.xcodeproj/project.pbxproj +300 -0
  69. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Montana_Prefix.pch +7 -0
  70. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Rakefile +74 -0
  71. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/wm/Montana.vcproj +331 -0
  72. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/wm/Rakefile +62 -0
  73. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/wm/src/montana_wm.cpp +40 -0
  74. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/wm/src/montana_wm.h +2 -0
  75. data/res/generators/templates/extension/extensions/montana/ext/montana/shared/ruby/montana.i +15 -0
  76. data/res/generators/templates/extension/extensions/montana/ext/montana/shared/ruby/montana_wrap.c +2287 -0
  77. data/res/generators/templates/extension/extensions/montana/ext/montana/shared/src/montana.c +20 -0
  78. data/res/generators/templates/extension/extensions/montana/montana.rb +13 -0
  79. data/spec/framework_spec/build.yml +1 -1
  80. data/spec/phone_spec/build.yml +1 -1
  81. data/version +1 -1
  82. metadata +42 -5
@@ -64,6 +64,7 @@ public final class CameraManager {
64
64
  private final Context context;
65
65
  private final CameraConfigurationManager configManager;
66
66
  private Camera camera;
67
+ private int mCameraIndex = 0;
67
68
  private Rect framingRect;
68
69
  private Rect framingRectInPreview;
69
70
  private boolean initialized;
@@ -82,9 +83,9 @@ public final class CameraManager {
82
83
  *
83
84
  * @param context The Activity which wants to use the camera.
84
85
  */
85
- public static void init(Context context) {
86
+ public static void init(Context context, int camera_index) {
86
87
  if (cameraManager == null) {
87
- cameraManager = new CameraManager(context);
88
+ cameraManager = new CameraManager(context, camera_index);
88
89
  }
89
90
  }
90
91
 
@@ -97,8 +98,9 @@ public final class CameraManager {
97
98
  return cameraManager;
98
99
  }
99
100
 
100
- private CameraManager(Context context) {
101
+ private CameraManager(Context context, int camera_index) {
101
102
 
103
+ this.mCameraIndex = camera_index;
102
104
  this.context = context;
103
105
  this.configManager = new CameraConfigurationManager(context);
104
106
 
@@ -121,7 +123,12 @@ public final class CameraManager {
121
123
  */
122
124
  public void openDriver(SurfaceHolder holder) throws IOException {
123
125
  if (camera == null) {
124
- camera = Camera.open();
126
+ if (mCameraIndex == 0) {
127
+ camera = Camera.open();
128
+ }
129
+ else {
130
+ camera = com.rhomobile.rhodes.camera.Camera.getCameraService().getFrontCamera();
131
+ }
125
132
  if (camera == null) {
126
133
  throw new IOException();
127
134
  }
@@ -65,13 +65,14 @@ public class Barcode {
65
65
 
66
66
  private static String ourCallback = null;
67
67
 
68
- public static void take(String callback) {
68
+ public static void take(String callback, int camera_index) {
69
69
  ourCallback = callback;
70
70
 
71
71
  // PerformOnUiThread.exec( new Runnable() {
72
72
  // public void run() {
73
73
  RhodesActivity ra = RhodesActivity.safeGetInstance();
74
74
  Intent intent = new Intent(ra, com.google.zxing.client.android.CaptureActivity.class);
75
+ intent.putExtra(com.google.zxing.client.android.CaptureActivity.CAMERA_INDEX_EXTRA, camera_index);
75
76
  ra.startActivity(intent);
76
77
  // }
77
78
  // });
@@ -18,6 +18,15 @@
18
18
  FA4D3F4E136B07B2009D6E63 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA4D3F4D136B07B2009D6E63 /* CoreMedia.framework */; };
19
19
  FA4D3F50136B07BB009D6E63 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA4D3F4F136B07BB009D6E63 /* CoreVideo.framework */; };
20
20
  FA4D3F52136B07CA009D6E63 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA4D3F51136B07CA009D6E63 /* libiconv.dylib */; };
21
+ FAA838881455B0BA0002F4E6 /* BarcodeViewFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = FAA838831455B0BA0002F4E6 /* BarcodeViewFactory.h */; };
22
+ FAA838891455B0BA0002F4E6 /* BarcodeViewFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAA838841455B0BA0002F4E6 /* BarcodeViewFactory.mm */; };
23
+ FAA8388A1455B0BA0002F4E6 /* BarcodeViewFactoryRegister.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAA838851455B0BA0002F4E6 /* BarcodeViewFactoryRegister.mm */; };
24
+ FAA8388B1455B0BA0002F4E6 /* BarcodeViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FAA838861455B0BA0002F4E6 /* BarcodeViewManager.h */; };
25
+ FAA8388C1455B0BA0002F4E6 /* BarcodeViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAA838871455B0BA0002F4E6 /* BarcodeViewManager.mm */; };
26
+ FAA838901455B1F60002F4E6 /* BarcodeViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = FAA8388E1455B1F60002F4E6 /* BarcodeViewController.h */; };
27
+ FAA838911455B1F60002F4E6 /* BarcodeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FAA8388F1455B1F60002F4E6 /* BarcodeViewController.m */; };
28
+ FAA839321455F7210002F4E6 /* BarcodeCallbackHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = FAA839301455F7210002F4E6 /* BarcodeCallbackHelper.h */; };
29
+ FAA839331455F7210002F4E6 /* BarcodeCallbackHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAA839311455F7210002F4E6 /* BarcodeCallbackHelper.mm */; };
21
30
  FAAE06AD11EF4F02001787D8 /* ImageProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAAE06AA11EF4F02001787D8 /* ImageProvider.cpp */; };
22
31
  FAAE06AE11EF4F02001787D8 /* ImageProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = FAAE06AB11EF4F02001787D8 /* ImageProvider.h */; };
23
32
  FAAE06AF11EF4F02001787D8 /* ImageProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAAE06AC11EF4F02001787D8 /* ImageProvider.mm */; };
@@ -38,6 +47,15 @@
38
47
  FA4D3F4D136B07B2009D6E63 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
39
48
  FA4D3F4F136B07BB009D6E63 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; };
40
49
  FA4D3F51136B07CA009D6E63 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
50
+ FAA838831455B0BA0002F4E6 /* BarcodeViewFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BarcodeViewFactory.h; path = Classes/BarcodeViewFactory.h; sourceTree = "<group>"; };
51
+ FAA838841455B0BA0002F4E6 /* BarcodeViewFactory.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BarcodeViewFactory.mm; path = Classes/BarcodeViewFactory.mm; sourceTree = "<group>"; };
52
+ FAA838851455B0BA0002F4E6 /* BarcodeViewFactoryRegister.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BarcodeViewFactoryRegister.mm; path = Classes/BarcodeViewFactoryRegister.mm; sourceTree = "<group>"; };
53
+ FAA838861455B0BA0002F4E6 /* BarcodeViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BarcodeViewManager.h; path = Classes/BarcodeViewManager.h; sourceTree = "<group>"; };
54
+ FAA838871455B0BA0002F4E6 /* BarcodeViewManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BarcodeViewManager.mm; path = Classes/BarcodeViewManager.mm; sourceTree = "<group>"; };
55
+ FAA8388E1455B1F60002F4E6 /* BarcodeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BarcodeViewController.h; path = Classes/BarcodeViewController.h; sourceTree = "<group>"; };
56
+ FAA8388F1455B1F60002F4E6 /* BarcodeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BarcodeViewController.m; path = Classes/BarcodeViewController.m; sourceTree = "<group>"; };
57
+ FAA839301455F7210002F4E6 /* BarcodeCallbackHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BarcodeCallbackHelper.h; path = Classes/BarcodeCallbackHelper.h; sourceTree = "<group>"; };
58
+ FAA839311455F7210002F4E6 /* BarcodeCallbackHelper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BarcodeCallbackHelper.mm; path = Classes/BarcodeCallbackHelper.mm; sourceTree = "<group>"; };
41
59
  FAAE06AA11EF4F02001787D8 /* ImageProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ImageProvider.cpp; path = Classes/ImageProvider.cpp; sourceTree = "<group>"; };
42
60
  FAAE06AB11EF4F02001787D8 /* ImageProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ImageProvider.h; path = Classes/ImageProvider.h; sourceTree = "<group>"; };
43
61
  FAAE06AC11EF4F02001787D8 /* ImageProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ImageProvider.mm; path = Classes/ImageProvider.mm; sourceTree = "<group>"; };
@@ -104,6 +122,15 @@
104
122
  08FB77AEFE84172EC02AAC07 /* Classes */ = {
105
123
  isa = PBXGroup;
106
124
  children = (
125
+ FAA839301455F7210002F4E6 /* BarcodeCallbackHelper.h */,
126
+ FAA839311455F7210002F4E6 /* BarcodeCallbackHelper.mm */,
127
+ FAA8388E1455B1F60002F4E6 /* BarcodeViewController.h */,
128
+ FAA8388F1455B1F60002F4E6 /* BarcodeViewController.m */,
129
+ FAA838831455B0BA0002F4E6 /* BarcodeViewFactory.h */,
130
+ FAA838841455B0BA0002F4E6 /* BarcodeViewFactory.mm */,
131
+ FAA838851455B0BA0002F4E6 /* BarcodeViewFactoryRegister.mm */,
132
+ FAA838861455B0BA0002F4E6 /* BarcodeViewManager.h */,
133
+ FAA838871455B0BA0002F4E6 /* BarcodeViewManager.mm */,
107
134
  FA4D3F0E136AFA94009D6E63 /* barcode.m */,
108
135
  FAAE06AA11EF4F02001787D8 /* ImageProvider.cpp */,
109
136
  FAAE06AB11EF4F02001787D8 /* ImageProvider.h */,
@@ -154,6 +181,10 @@
154
181
  files = (
155
182
  AA747D9F0F9514B9006C5449 /* Barcode_Prefix.pch in Headers */,
156
183
  FAAE06AE11EF4F02001787D8 /* ImageProvider.h in Headers */,
184
+ FAA838881455B0BA0002F4E6 /* BarcodeViewFactory.h in Headers */,
185
+ FAA8388B1455B0BA0002F4E6 /* BarcodeViewManager.h in Headers */,
186
+ FAA838901455B1F60002F4E6 /* BarcodeViewController.h in Headers */,
187
+ FAA839321455F7210002F4E6 /* BarcodeCallbackHelper.h in Headers */,
157
188
  );
158
189
  runOnlyForDeploymentPostprocessing = 0;
159
190
  };
@@ -211,6 +242,11 @@
211
242
  FAAE06AF11EF4F02001787D8 /* ImageProvider.mm in Sources */,
212
243
  FAAE072811EF4F22001787D8 /* barcode_wrap.c in Sources */,
213
244
  FA4D3F0F136AFA94009D6E63 /* barcode.m in Sources */,
245
+ FAA838891455B0BA0002F4E6 /* BarcodeViewFactory.mm in Sources */,
246
+ FAA8388A1455B0BA0002F4E6 /* BarcodeViewFactoryRegister.mm in Sources */,
247
+ FAA8388C1455B0BA0002F4E6 /* BarcodeViewManager.mm in Sources */,
248
+ FAA838911455B1F60002F4E6 /* BarcodeViewController.m in Sources */,
249
+ FAA839331455F7210002F4E6 /* BarcodeCallbackHelper.mm in Sources */,
214
250
  );
215
251
  runOnlyForDeploymentPostprocessing = 0;
216
252
  };
@@ -0,0 +1,25 @@
1
+
2
+
3
+ #import <UIKit/UIKit.h>
4
+ #import <Foundation/Foundation.h>
5
+
6
+
7
+
8
+
9
+
10
+
11
+ #ifdef __cplusplus
12
+ extern "C" {
13
+ #endif //__cplusplus
14
+
15
+ void Barcode_executeRhoCallBackWithParams(NSString* callbackURL,
16
+ NSString* intName, int intValue,
17
+ NSString* str1Name, NSString* str1Value,
18
+ NSString* str2Name, NSString* str2Value,
19
+ NSString* str3Name, NSString* str3Value,
20
+ NSString* dataName, NSData* dataValue
21
+ );
22
+
23
+ #ifdef __cplusplus
24
+ }
25
+ #endif //__cplusplus
@@ -0,0 +1,195 @@
1
+
2
+
3
+
4
+ // rhodes/platform/shared/rubyext/WebView.h
5
+ #import "rubyext/WebView.h"
6
+ //void rho_webview_navigate(const char* url, int index);
7
+
8
+
9
+ // rhodes/platform/shared/common/RhodesApp.h
10
+ #import "common/RhodesApp.h"
11
+ //void rho_net_request(const char *url);
12
+ //char* rho_http_normalizeurl(const char* szUrl);
13
+
14
+ //#include "net/INetRequest.h"
15
+
16
+ #include "ruby/ext/rho/rhoruby.h"
17
+
18
+ #include <string.h>
19
+
20
+ #import "BarcodeCallbackHelper.h"
21
+
22
+
23
+ /*
24
+ VALUE rho_ruby_create_string(const char* szVal);
25
+ VALUE rho_ruby_create_string_withlen(int len);
26
+ VALUE rho_ruby_create_boolean(unsigned char b);
27
+ VALUE rho_ruby_create_integer(__int64 i);
28
+ VALUE rho_ruby_create_double(double d);
29
+ VALUE rho_ruby_create_time(long t);
30
+ void rho_ruby_add_to_array(VALUE ar, VALUE val);
31
+
32
+ time_t rho_ruby_get_time(VALUE rTime);
33
+
34
+ VALUE rho_ruby_create_byte_array(unsigned char* buf, int length);
35
+ int rho_ruby_unpack_byte_array(VALUE array_value, unsigned char* buf, int max_length);
36
+
37
+ */
38
+
39
+
40
+
41
+ class BarcodeRhoCallbackIntContainer : public rho::ICallbackObject
42
+ {
43
+ public:
44
+ BarcodeRhoCallbackIntContainer(int number)
45
+ {
46
+ mNumber = number;
47
+ }
48
+ virtual ~BarcodeRhoCallbackIntContainer() {
49
+ }
50
+
51
+ // return Ruby object
52
+ virtual unsigned long getObjectValue() {
53
+ unsigned long rrr = rho_ruby_create_integer(mNumber);
54
+ return rrr;
55
+ }
56
+
57
+ private:
58
+ int mNumber;
59
+
60
+ };
61
+
62
+ class BarcodeRhoCallbackStringContainer : public rho::ICallbackObject
63
+ {
64
+ public:
65
+ BarcodeRhoCallbackStringContainer(NSString* str)
66
+ {
67
+ const char* utf8str = [str UTF8String];
68
+ mString = new char[strlen(utf8str) + 1];
69
+ strcpy(mString, utf8str);
70
+ }
71
+ virtual ~BarcodeRhoCallbackStringContainer() {
72
+ delete mString;
73
+ }
74
+
75
+ // return Ruby object
76
+ virtual unsigned long getObjectValue() {
77
+ unsigned long rrr = rho_ruby_create_string((const char*)mString);
78
+ return rrr;
79
+ }
80
+
81
+ private:
82
+ char* mString;
83
+
84
+ };
85
+
86
+ class BarcodeRhoCallbackDataContainer : public rho::ICallbackObject
87
+ {
88
+ public:
89
+ BarcodeRhoCallbackDataContainer(NSData* data)
90
+ {
91
+ mDataSize = [data length];
92
+ mData = new unsigned char[mDataSize+1];
93
+ [data getBytes:mData length:mDataSize];
94
+ }
95
+ virtual ~BarcodeRhoCallbackDataContainer() {
96
+ delete mData;
97
+ }
98
+
99
+ // return Ruby object
100
+ virtual unsigned long getObjectValue() {
101
+ return rho_ruby_create_byte_array(mData, mDataSize);
102
+ }
103
+
104
+ private:
105
+ unsigned char* mData;
106
+ int mDataSize;
107
+
108
+ };
109
+
110
+
111
+
112
+ #ifdef __cplusplus
113
+ extern "C" {
114
+ #endif //__cplusplus
115
+
116
+
117
+ void Barcode_executeRhoCallBackWithParams(NSString* callbackURL,
118
+ NSString* intName, int intValue,
119
+ NSString* str1Name, NSString* str1Value,
120
+ NSString* str2Name, NSString* str2Value,
121
+ NSString* str3Name, NSString* str3Value,
122
+ NSString* dataName, NSData* dataValue
123
+ )
124
+ {
125
+ NSString* strBody = @"&rho_callback=1";
126
+
127
+ if (intName != nil) {
128
+ strBody = [strBody stringByAppendingString:@"&"];
129
+
130
+ //NSNumber *number = [NSNumber numberWithInt:intValue];
131
+ //NSString* intValueStr = [NSString stringWithFormat:@"%@",number];
132
+ //NSString* strParam = @"";
133
+ //strParam = [strParam stringByAppendingString:intName];
134
+ //strParam = [strParam stringByAppendingString:@"="];
135
+ //strParam = [strParam stringByAppendingString:intValueStr];
136
+ NSString* strParam = [NSString stringWithUTF8String:(RHODESAPP().addCallbackObject( new BarcodeRhoCallbackIntContainer(intValue), [intName UTF8String]).c_str())];
137
+
138
+ strBody = [strBody stringByAppendingString:strParam];
139
+ }
140
+ if ((str1Name != nil) && (str1Value != null)) {
141
+ strBody = [strBody stringByAppendingString:@"&"];
142
+
143
+ //NSString* strParam = @"";
144
+ //strParam = [strParam stringByAppendingString:str1Name];
145
+ //strParam = [strParam stringByAppendingString:@"="];
146
+ //strParam = [strParam stringByAppendingString:str1Value];
147
+ NSString* strParam = [NSString stringWithUTF8String:(RHODESAPP().addCallbackObject( new BarcodeRhoCallbackStringContainer(str1Value), [str1Name UTF8String]).c_str())];
148
+
149
+ strBody = [strBody stringByAppendingString:strParam];
150
+ }
151
+ if ((str2Name != nil) && (str2Value != null)) {
152
+ strBody = [strBody stringByAppendingString:@"&"];
153
+
154
+ //NSString* strParam = @"";
155
+ //strParam = [strParam stringByAppendingString:str2Name];
156
+ //strParam = [strParam stringByAppendingString:@"="];
157
+ //strParam = [strParam stringByAppendingString:str2Value];
158
+ NSString* strParam = [NSString stringWithUTF8String:(RHODESAPP().addCallbackObject( new BarcodeRhoCallbackStringContainer(str2Value), [str2Name UTF8String]).c_str())];
159
+
160
+ strBody = [strBody stringByAppendingString:strParam];
161
+ }
162
+ if ((str3Name != nil) && (str3Value != null)) {
163
+ strBody = [strBody stringByAppendingString:@"&"];
164
+
165
+ //NSString* strParam = @"";
166
+ //strParam = [strParam stringByAppendingString:str3Name];
167
+ //strParam = [strParam stringByAppendingString:@"="];
168
+ //strParam = [strParam stringByAppendingString:str3Value];
169
+ NSString* strParam = [NSString stringWithUTF8String:(RHODESAPP().addCallbackObject( new BarcodeRhoCallbackStringContainer(str3Value), [str3Name UTF8String]).c_str())];
170
+
171
+ strBody = [strBody stringByAppendingString:strParam];
172
+ }
173
+ if (dataName != nil) {
174
+ strBody = [strBody stringByAppendingString:@"&"];
175
+ NSString* strParam = [NSString stringWithUTF8String:(RHODESAPP().addCallbackObject( new BarcodeRhoCallbackDataContainer(dataValue), [dataName UTF8String]).c_str())];
176
+ strBody = [strBody stringByAppendingString:strParam];
177
+ }
178
+
179
+ const char* cb = [callbackURL UTF8String];
180
+ const char* b = [strBody UTF8String];
181
+ char* norm_url = rho_http_normalizeurl(cb);
182
+
183
+ rho_net_request_with_data(rho_http_normalizeurl(cb), b);
184
+
185
+ rho_http_free(norm_url);
186
+
187
+
188
+ }
189
+
190
+
191
+ #ifdef __cplusplus
192
+ }
193
+ #endif //__cplusplus
194
+
195
+
@@ -0,0 +1,59 @@
1
+ /*------------------------------------------------------------------------
2
+ * (The MIT License)
3
+ *
4
+ * Copyright (c) 2008-2011 Rhomobile, Inc.
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in
14
+ * all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ * THE SOFTWARE.
23
+ *
24
+ * http://rhomobile.com
25
+ *------------------------------------------------------------------------*/
26
+
27
+ #import <UIKit/UIKit.h>
28
+ //#import "RhoMainView.h"
29
+ //#import "RhoViewController.h"
30
+ //#import "ZBarSDK/Headers/ZBarSDK/ZBarSDK.h"
31
+ #import "ZBarSDK.h"
32
+
33
+
34
+ @interface BarcodeViewController : UIViewController <ZBarReaderViewDelegate> {
35
+ UIView *signatureView;
36
+ UIToolbar *toolbar;
37
+
38
+ ZBarReaderView *readerView;
39
+ UITextView *resultText;
40
+ ZBarCameraSimulator *cameraSim;
41
+
42
+ NSString* callback_url;
43
+
44
+ }
45
+
46
+ @property (nonatomic, retain) ZBarReaderView *readerView;
47
+ @property (nonatomic, retain) UITextView *resultText;
48
+ @property (nonatomic, retain) NSString* callback_url;
49
+
50
+
51
+ +(void)createBarcodeView:(NSString*) callback;
52
+
53
+ - (id)initWithRect:(CGRect)rect;
54
+
55
+ - (void)loadView;
56
+
57
+ +(UIView*) getCurrentView;
58
+
59
+ @end
@@ -0,0 +1,346 @@
1
+ /*------------------------------------------------------------------------
2
+ * (The MIT License)
3
+ *
4
+ * Copyright (c) 2008-2011 Rhomobile, Inc.
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in
14
+ * all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ * THE SOFTWARE.
23
+ *
24
+ * http://rhomobile.com
25
+ *------------------------------------------------------------------------*/
26
+
27
+ #import "BarcodeViewController.h"
28
+ #import "BarcodeViewManager.h"
29
+
30
+ //#import "AppManager.h"
31
+ //#import "Rhodes.h"
32
+ #import "common/RhodesApp.h"
33
+
34
+ #include "common/RhoConf.h"
35
+ #include "common/RhodesApp.h"
36
+ #include "logging/RhoLog.h"
37
+
38
+ #undef DEFAULT_LOGCATEGORY
39
+ #define DEFAULT_LOGCATEGORY "BarcodeViewController"
40
+
41
+ #include "BarcodeCallbackHelper.h"
42
+
43
+ static BarcodeViewController* bv = nil;
44
+
45
+
46
+
47
+ @interface RhoCreateBarcodeViewTask : NSObject {}
48
+
49
+ + (void)run:(NSString*)value;
50
+
51
+ @end
52
+
53
+ @implementation RhoCreateBarcodeViewTask
54
+
55
+ static RhoCreateBarcodeViewTask* instance_create = nil;
56
+
57
+ -(void)runCommand:(NSString*)callback {
58
+ //if (mc) {
59
+ // [mc close];
60
+ // mc = nil;
61
+ //}
62
+ BarcodeViewController* bvc = [[BarcodeViewController alloc] initWithCallback:callback];
63
+ bv = bvc;
64
+ [BarcodeViewManager openView];
65
+
66
+ }
67
+
68
+ +(void) run:(NSString*)value {
69
+ if (instance_create == nil) {
70
+ instance_create = [[RhoCreateBarcodeViewTask alloc] init];
71
+ }
72
+ [instance_create performSelectorOnMainThread:@selector(runCommand:) withObject:value waitUntilDone:NO];
73
+ }
74
+
75
+ @end
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+ @implementation BarcodeViewController
84
+
85
+
86
+ +(void)createBarcodeView:(NSString*) callback {
87
+ [RhoCreateBarcodeViewTask run:callback];
88
+ }
89
+
90
+
91
+ - (id)initWithCallback:(NSString*)callback {
92
+ [self initWithRect:CGRectMake(0,0,320,460)];
93
+ callback_url = callback;
94
+ return self;
95
+ }
96
+
97
+
98
+
99
+ - (id)initWithRect:(CGRect)rect{
100
+ [self init];
101
+
102
+ self.view.frame = rect;
103
+
104
+ //content.backgroundColor = [UIColor redColor];
105
+ //1ontent.backgroundColor = [UIColor groupTableViewBackgroundColor];
106
+
107
+ toolbar = [[UIToolbar alloc] init];
108
+ toolbar.barStyle = UIBarStyleBlack;
109
+
110
+ toolbar.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
111
+ toolbar.autoresizesSubviews = YES;
112
+
113
+ {
114
+ UIBarButtonItem *btn_fixed = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
115
+ UIBarButtonItem* btn_cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(doCancel:)];
116
+ UIBarButtonItem* btn_space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
117
+
118
+ NSMutableArray *btns = [NSMutableArray arrayWithCapacity:6];
119
+ [btns addObject:btn_fixed];
120
+ [btns addObject:btn_cancel];
121
+ [btns addObject:btn_fixed];
122
+ [btns addObject:btn_space];
123
+
124
+ [btn_fixed release];
125
+ [btn_cancel release];
126
+ [btn_space release];
127
+
128
+ [toolbar setItems:btns];
129
+
130
+ }
131
+
132
+
133
+ [toolbar sizeToFit];
134
+ CGRect srect = self.view.frame;
135
+ CGRect trect = toolbar.frame;
136
+ srect.size.height -= trect.size.height;
137
+ srect.origin.y = 0;
138
+ trect.origin.x = 0;
139
+ trect.origin.y = srect.origin.y+srect.size.height;
140
+ trect.size.width = srect.size.width;
141
+ toolbar.frame = trect;
142
+ toolbar.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
143
+
144
+ CGRect rrect = srect;
145
+ srect.size.height -= 40;
146
+ rrect.size.height = 40;
147
+ rrect.origin.y += srect.size.height;
148
+
149
+ resultText = [[UITextView alloc] initWithFrame:rrect];
150
+ resultText.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
151
+ resultText.autoresizesSubviews = YES;
152
+ resultText.frame = rrect;
153
+ resultText.textAlignment = UITextAlignmentCenter;
154
+ resultText.font = [resultText.font fontWithSize:22];
155
+
156
+ readerView = [[ZBarReaderView alloc] initWithImageScanner:[[ZBarImageScanner alloc] init]];//initWithFrame:srect];//CGRectZero];
157
+
158
+ readerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
159
+ readerView.autoresizesSubviews = YES;
160
+ readerView.frame = srect;
161
+
162
+ //signatureView = [[SignatureView alloc] initWithFrame:CGRectZero];
163
+ //signatureView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
164
+ //signatureView.autoresizesSubviews = YES;
165
+ //signatureView.frame = srect;
166
+
167
+ [self.view addSubview:readerView];
168
+ [self.view addSubview:resultText];
169
+ [self.view addSubview:toolbar];
170
+
171
+ //[readerView start];
172
+
173
+ // the delegate receives decode results
174
+ readerView.readerDelegate = self;
175
+
176
+ // you can use this to support the simulator
177
+ if(TARGET_IPHONE_SIMULATOR) {
178
+ cameraSim = [[ZBarCameraSimulator alloc]
179
+ initWithViewController: self];
180
+ cameraSim.readerView = readerView;
181
+ }
182
+
183
+ [self.view layoutSubviews];
184
+
185
+
186
+ return self;
187
+
188
+ }
189
+
190
+
191
+ // Implement loadView to create a view hierarchy programmatically, without using a nib.
192
+ - (void)loadView {
193
+ UIView* content = [[UIView alloc] initWithFrame:CGRectZero];
194
+ content.autoresizesSubviews = YES;
195
+
196
+ self.view = content;
197
+ [content release];
198
+
199
+
200
+
201
+
202
+ }
203
+
204
+ - (void)doDone:(id)sender {
205
+ if (callback_url == nil) {
206
+ return;
207
+ }
208
+
209
+ Barcode_executeRhoCallBackWithParams(callback_url, nil,0,
210
+ @"status", @"ok",
211
+ @"barcode", resultText.text,
212
+ nil, nil, nil, nil);
213
+
214
+
215
+ /*
216
+ NSString* strBody = @"";
217
+ strBody = [strBody stringByAppendingString:@"&rho_callback=1&status=ok"];
218
+ strBody = [strBody stringByAppendingString:@"&barcode="];
219
+ strBody = [strBody stringByAppendingString:resultText.text];
220
+ char* norm_url = rho_http_normalizeurl([callback_url UTF8String]);
221
+ rho_net_request_with_data(norm_url, [strBody UTF8String]);
222
+ rho_http_free(norm_url);
223
+ */
224
+ [BarcodeViewManager closeView];
225
+ }
226
+
227
+ - (void)doCancel:(id)sender {
228
+ if (callback_url == nil) {
229
+ return;
230
+ }
231
+ Barcode_executeRhoCallBackWithParams(callback_url, nil,0,
232
+ @"status", @"cancel",
233
+ nil, nil,
234
+ nil, nil, nil, nil);
235
+
236
+ [BarcodeViewManager closeView];
237
+ }
238
+
239
+
240
+
241
+ ///*
242
+ // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
243
+ - (void)viewDidLoad {
244
+ [super viewDidLoad];
245
+
246
+
247
+
248
+
249
+ //[self.view
250
+ }
251
+ //*/
252
+
253
+
254
+ - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
255
+ }
256
+
257
+ - (void) willRotateToInterfaceOrientation: (UIInterfaceOrientation) orient
258
+ duration: (NSTimeInterval) duration
259
+ {
260
+ // compensate for view rotation so camera preview is not rotated
261
+ [readerView willRotateToInterfaceOrientation: orient
262
+ duration: duration];
263
+ }
264
+
265
+ - (void) viewDidAppear: (BOOL) animated
266
+ {
267
+ // run the reader when the view is visible
268
+ [readerView start];
269
+ }
270
+
271
+ - (void) viewWillDisappear: (BOOL) animated
272
+ {
273
+ [readerView stop];
274
+ }
275
+
276
+ - (void) readerView: (ZBarReaderView*) view
277
+ didReadSymbols: (ZBarSymbolSet*) syms
278
+ fromImage: (UIImage*) img
279
+ {
280
+ // do something useful with results
281
+ for(ZBarSymbol *sym in syms) {
282
+ resultText.text = sym.data;
283
+
284
+ {
285
+ UIBarButtonItem *btn_fixed = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
286
+ UIBarButtonItem* btn_cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(doCancel:)];
287
+ UIBarButtonItem* btn_space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
288
+ UIBarButtonItem* btn_done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doDone:)];
289
+
290
+ NSMutableArray *btns = [NSMutableArray arrayWithCapacity:6];
291
+ [btns addObject:btn_fixed];
292
+ [btns addObject:btn_cancel];
293
+ [btns addObject:btn_fixed];
294
+ [btns addObject:btn_space];
295
+ [btns addObject:btn_done];
296
+
297
+ [btn_fixed release];
298
+ [btn_cancel release];
299
+ [btn_space release];
300
+ [btn_done release];
301
+
302
+ [toolbar setItems:btns];
303
+
304
+ }
305
+
306
+
307
+
308
+
309
+ break;
310
+ }
311
+ }
312
+
313
+
314
+ +(UIView*)getCurrentView
315
+ {
316
+ return bv.view;
317
+ }
318
+
319
+
320
+
321
+ - (void)didReceiveMemoryWarning {
322
+ // Releases the view if it doesn't have a superview.
323
+ [super didReceiveMemoryWarning];
324
+
325
+ // Release any cached data, images, etc that aren't in use.
326
+ }
327
+
328
+ - (void)viewDidUnload {
329
+ // Release any retained subviews of the main view.
330
+ // e.g. self.myOutlet = nil;
331
+ }
332
+
333
+
334
+ - (void)dealloc {
335
+ [readerView removeFromSuperview];
336
+ [toolbar removeFromSuperview];
337
+ [resultText removeFromSuperview];
338
+ [readerView release];
339
+ [toolbar release];
340
+ [resultText release];
341
+ [super dealloc];
342
+ }
343
+
344
+
345
+
346
+ @end