rhodes 5.5.0.3 → 5.5.0.7

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.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -0
  3. data/lib/commonAPI/coreapi/ext/platform/android/src/com/rho/notification/NotificationSingleton.java +20 -8
  4. data/lib/commonAPI/coreapi/ext/platform/iphone/cpp_based_impl/SystemImpl.mm +1 -2
  5. data/lib/commonAPI/coreapi/ext/system.xml +1 -1
  6. data/platform/android/build/android.rake +1 -0
  7. data/platform/iphone/Classes/AppManager/AppManager.m +44 -3
  8. data/platform/iphone/Classes/NativeView/RhoNativeViewManager.mm +4 -3
  9. data/platform/iphone/Classes/NativeView/RhoNativeViewManagerOC.h +1 -1
  10. data/platform/iphone/Classes/RhoMainView.h +8 -2
  11. data/platform/iphone/Classes/RhoUIWebView.h +75 -0
  12. data/platform/iphone/Classes/RhoUIWebView.m +142 -0
  13. data/platform/iphone/Classes/RhoWKWebView.h +87 -0
  14. data/platform/iphone/Classes/RhoWKWebView.m +187 -0
  15. data/platform/iphone/Classes/RhoWebView.h +72 -0
  16. data/platform/iphone/Classes/RhoWebViewFabrique.h +35 -0
  17. data/platform/iphone/Classes/RhoWebViewFabrique.m +87 -0
  18. data/platform/iphone/Classes/Rhodes.m +17 -6
  19. data/platform/iphone/Classes/Signature.old/SignatureDelegate.m +11 -4
  20. data/platform/iphone/Classes/Signature/SignatureDelegate.m +3 -4
  21. data/platform/iphone/Classes/SimpleMainView.h +7 -5
  22. data/platform/iphone/Classes/SimpleMainView.m +174 -179
  23. data/platform/iphone/Classes/SplitView/RightViewController.h +2 -2
  24. data/platform/iphone/Classes/SplitView/RightViewController.m +9 -10
  25. data/platform/iphone/Classes/SplitView/SplittedMainView.h +2 -3
  26. data/platform/iphone/Classes/SplitView/SplittedMainView.m +10 -7
  27. data/platform/iphone/Classes/TabbedMainView.h +2 -1
  28. data/platform/iphone/Classes/TabbedMainView.m +13 -10
  29. data/platform/iphone/Classes/URLProtocol/CRhoURLProtocol.m +21 -5
  30. data/platform/iphone/Classes/WebView.m +1 -1
  31. data/platform/iphone/RhoAppBaseLib/RhoAppBaseLib.xcodeproj/project.pbxproj +40 -3
  32. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +4 -0
  33. data/platform/iphone/rbuild/iphone.rake +51 -0
  34. data/platform/shared/common/RhoNativeViewManager.h +9 -9
  35. data/platform/shared/common/RhodesApp.cpp +13 -1
  36. data/platform/shared/net/HttpServer.cpp +12 -2
  37. data/platform/shared/qt/rhodes/ExternalWebView.ui +11 -2
  38. data/platform/shared/qt/rhodes/QtMainWindow.cpp +9 -7
  39. data/platform/shared/qt/rhodes/QtMainWindow.ui +13 -4
  40. data/platform/shared/qt/rhodes/qkineticscroller.cpp +1245 -0
  41. data/platform/shared/qt/rhodes/qkineticscroller.h +165 -0
  42. data/platform/shared/qt/rhodes/qkineticscroller_p.h +168 -0
  43. data/platform/shared/qt/rhodes/qtflickgesture.cpp +696 -0
  44. data/platform/shared/qt/rhodes/qtflickgesture_p.h +107 -0
  45. data/platform/shared/qt/rhodes/qtscroller.cpp +2080 -0
  46. data/platform/shared/qt/rhodes/qtscroller.h +138 -0
  47. data/platform/shared/qt/rhodes/qtscroller_p.h +205 -0
  48. data/platform/shared/qt/rhodes/qtscrollerfilter.cpp +350 -0
  49. data/platform/shared/qt/rhodes/qtscrollerfilter_p.h +110 -0
  50. data/platform/shared/qt/rhodes/qtscrollerproperties.cpp +412 -0
  51. data/platform/shared/qt/rhodes/qtscrollerproperties.h +135 -0
  52. data/platform/shared/qt/rhodes/qtscrollerproperties_p.h +90 -0
  53. data/platform/shared/qt/rhodes/qtscrollevent.cpp +190 -0
  54. data/platform/shared/qt/rhodes/qtscrollevent.h +100 -0
  55. data/platform/shared/qt/rhodes/qtscrollevent_p.h +33 -0
  56. data/platform/shared/qt/rhodes/qwebviewkineticscroller.cpp +347 -0
  57. data/platform/shared/qt/rhodes/qwebviewkineticscroller.h +90 -0
  58. data/platform/shared/qt/rhodes/qwebviewselectionsuppressor.h +113 -0
  59. data/platform/shared/qt/rhodes/rhodes.pro +19 -0
  60. data/res/generators/rhogen.rb +307 -15
  61. data/res/generators/templates/application/app/Settings/err_sync.erb +12 -6
  62. data/res/generators/templates/application/app/Settings/home.erb +32 -17
  63. data/res/generators/templates/application/app/Settings/index.erb +55 -26
  64. data/res/generators/templates/application/app/Settings/javascript_index.html +111 -0
  65. data/res/generators/templates/application/app/Settings/javascript_login.html +65 -0
  66. data/res/generators/templates/application/app/Settings/login.erb +25 -19
  67. data/res/generators/templates/application/app/Settings/reset.erb +18 -9
  68. data/res/generators/templates/application/app/Settings/wait.erb +10 -7
  69. data/res/generators/templates/application/app/index.erb +32 -20
  70. data/res/generators/templates/application/app/javascript_index.html +66 -0
  71. data/res/generators/templates/application/app/javascript_index.js +250 -0
  72. data/res/generators/templates/application/app/layout.erb +12 -67
  73. data/res/generators/templates/application/javascript_build.yml +41 -0
  74. data/res/generators/templates/application/javascript_rhoconfig.txt +123 -0
  75. data/res/generators/templates/application/public/bootstrap-3.3.7/css/bootstrap-theme.css +587 -0
  76. data/res/generators/templates/application/public/bootstrap-3.3.7/css/bootstrap-theme.css.map +1 -0
  77. data/res/generators/templates/application/public/bootstrap-3.3.7/css/bootstrap-theme.min.css +6 -0
  78. data/res/generators/templates/application/public/bootstrap-3.3.7/css/bootstrap-theme.min.css.map +1 -0
  79. data/res/generators/templates/application/public/bootstrap-3.3.7/css/bootstrap.css +6757 -0
  80. data/res/generators/templates/application/public/bootstrap-3.3.7/css/bootstrap.css.map +1 -0
  81. data/res/generators/templates/application/public/bootstrap-3.3.7/css/bootstrap.min.css +6 -0
  82. data/res/generators/templates/application/public/bootstrap-3.3.7/css/bootstrap.min.css.map +1 -0
  83. data/res/generators/templates/application/public/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.eot +0 -0
  84. data/res/generators/templates/application/public/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg +288 -0
  85. data/res/generators/templates/application/public/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.ttf +0 -0
  86. data/res/generators/templates/application/public/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff +0 -0
  87. data/res/generators/templates/application/public/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff2 +0 -0
  88. data/res/generators/templates/application/public/bootstrap-3.3.7/js/bootstrap.js +2377 -0
  89. data/res/generators/templates/application/public/bootstrap-3.3.7/js/bootstrap.min.js +7 -0
  90. data/res/generators/templates/application/public/bootstrap-3.3.7/js/npm.js +13 -0
  91. data/res/generators/templates/application/public/css/style.css +3 -0
  92. data/res/generators/templates/application/public/jquery/jquery-3.1.1.min.js +4 -0
  93. data/res/generators/templates/application/public/jquery/jquery-3.1.1.min.map +1 -0
  94. data/res/generators/templates/application/rhoconfig.txt +16 -0
  95. data/res/generators/templates/iphone_project/Bremen7.xcodeproj/project.pbxproj +4 -0
  96. data/res/generators/templates/model/edit.erb +22 -21
  97. data/res/generators/templates/model/index.erb +24 -22
  98. data/res/generators/templates/model/javascript_edit.html +65 -0
  99. data/res/generators/templates/model/javascript_index.html +56 -0
  100. data/res/generators/templates/model/javascript_index.js +83 -0
  101. data/res/generators/templates/model/javascript_model.js +16 -0
  102. data/res/generators/templates/model/javascript_new.html +64 -0
  103. data/res/generators/templates/model/javascript_show.html +66 -0
  104. data/res/generators/templates/model/new.erb +22 -19
  105. data/res/generators/templates/model/show.erb +22 -14
  106. data/res/prebuild_base_app/app/index.erb +31 -18
  107. data/res/prebuild_base_app/app/layout.erb +11 -56
  108. data/version +1 -1
  109. metadata +59 -24
  110. data/res/generators/templates/application/public/css/android.css +0 -418
  111. data/res/generators/templates/application/public/css/iphone.css +0 -378
  112. data/res/generators/templates/application/public/css/jqmobile-patch.css +0 -62
  113. data/res/generators/templates/application/public/css/re_webkit.css +0 -736
  114. data/res/generators/templates/application/public/css/re_webkit_flat.css +0 -753
  115. data/res/generators/templates/application/public/css/windows_mobile.css +0 -327
  116. data/res/generators/templates/application/public/jqmobile/images/ajax-loader.gif +0 -0
  117. data/res/generators/templates/application/public/jqmobile/images/icon-search-black.png +0 -0
  118. data/res/generators/templates/application/public/jqmobile/images/icons-18-black.png +0 -0
  119. data/res/generators/templates/application/public/jqmobile/images/icons-18-white.png +0 -0
  120. data/res/generators/templates/application/public/jqmobile/images/icons-36-black.png +0 -0
  121. data/res/generators/templates/application/public/jqmobile/images/icons-36-white.png +0 -0
  122. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.4.5.min.css +0 -3
  123. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.4.5.min.js +0 -10
  124. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.4.5.min.map +0 -1
  125. data/res/generators/templates/application/public/jqmobile/jquery.mobile.structure-1.4.5.min.css +0 -3
  126. data/res/generators/templates/application/public/jqmobile/jquery.mobile.theme-1.4.5.min.css +0 -3
  127. data/res/generators/templates/application/public/jquery/jquery-1.9.1.min.js +0 -5
  128. data/res/generators/templates/application/public/jquery/jquery-1.9.1.min.map +0 -1
  129. data/res/generators/templates/application/public/js/application.js +0 -1
  130. data/res/generators/templates/application/public/js/jqmobile-patch.js +0 -466
  131. data/res/generators/templates/application/public/js/syncengine.js +0 -504
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3fefb632e42b9675b28aa6a3a099b8cbf67e76a7
4
- data.tar.gz: e76d92596810baaeb2c52cb82d2c37aff0fd709e
3
+ metadata.gz: 4b6a8fe4921a90ac277e6260888c303d0be2894d
4
+ data.tar.gz: f40242f22db04f9cad0845e3c6c3bd937ca8be79
5
5
  SHA512:
6
- metadata.gz: 7558439b9d27ba3f40ccea3fbe90c57649258a33d299fb8c6539e8be7ea1a331787255d3bae489b71d5a100eab409638b68f482e84b0588412dc6978a9caee84
7
- data.tar.gz: 775316f2f7e9ff1723dbc58dcb91204ca7e5004c4fb2df49f663d854054b07f358026e47f35e7b8b029570ebf907b3b321562b36e4b9469b0661d949f7f63a83
6
+ metadata.gz: 16e08d6a447f5df244cf071ff824b7b5178cc8ee33002236e4e83b7840e54bc74520ecb958c548c9cbd88a82e39a09e5fada56fa6a21c439ab56b1cd92132429
7
+ data.tar.gz: 5eaa670bce2d1496314a456f4c651973694002bf4c291e6fb7e4ebd73d3a397fcb5e6249c68c65a8fb6d0189d57a3af197495c20304ce7d4656263543baf5308
data/README.md CHANGED
@@ -1,3 +1,13 @@
1
+ # Current state of Rhomobile solution
2
+
3
+ Currently Rhomobile solution supported and improved by TAU Technologies (partner of Zebra Technologies).
4
+ For questions on commercial support contact [contact mail](mailto:info@tau-technologies.com) or reach out to the [TAU Technologies website](http://www.tau-technologies.com).
5
+
6
+ Current actual version is Rhomobile Suite 5.5. [Download RMS 5.5](http://rhomobile.tau-technologies.com/index.html)
7
+
8
+ Actual documentation located on [RMS 5.5 documentation](http://docs.tau-technologies.com/en/5.5/home)
9
+
10
+
1
11
  # RhoMobile Open Source Documentation
2
12
 
3
13
  This page contains links to documentation and source-code repositories for the RhoMobile Suite, which has been released by Zebra Technologies to the open source community.
@@ -37,6 +37,7 @@ import com.rho.notification.INotificationSingleton;
37
37
  import com.rhomobile.rhodes.Logger;
38
38
  import com.rhomobile.rhodes.R;
39
39
  import com.rhomobile.rhodes.RhodesActivity;
40
+ import com.rhomobile.rhodes.RhodesService;
40
41
  import com.rhomobile.rhodes.RhodesApplication;
41
42
  import com.rhomobile.rhodes.api.IMethodResult;
42
43
  import com.rhomobile.rhodes.api.MethodResult;
@@ -212,15 +213,26 @@ public class NotificationSingleton implements INotificationSingleton
212
213
 
213
214
  if (duration != 0)
214
215
  {
215
- Activity activity = RhodesActivity.safeGetInstance();
216
- if(vibrator != null) vibrator.cancel();
217
- vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);
218
-
219
- if ( duration > 15000 ) {
220
- duration = 15000;
216
+ Context context = null;
217
+ try {
218
+ context = RhodesService.getContext();
219
+ }
220
+ catch (IllegalStateException e) {
221
+ context = null;
222
+ Logger.D(TAG, "Rhodes main Service (com.rhomobile.rhodes.RhodesService) is not run !!!");
223
+ }
224
+ if (context != null) {
225
+ if(vibrator != null) vibrator.cancel();
226
+ vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
227
+
228
+ if ( duration > 15000 ) {
229
+ duration = 15000;
230
+ }
231
+ vibrator.vibrate(duration > 0 ? duration : 1000);
232
+ }
233
+ else {
234
+ Logger.D(TAG, "Can not vibrate, because can not get Rhodes main Context !!!");
221
235
  }
222
-
223
- vibrator.vibrate(duration > 0 ? duration : 1000);
224
236
  }
225
237
  }
226
238
 
@@ -138,8 +138,7 @@ namespace rho {
138
138
 
139
139
  void SystemImplIphone::getPhoneId(rho::apiGenerator::CMethodResult& result)
140
140
  {
141
- //getIphoneProperty("phone_id", result);
142
- result.set("");
141
+ getIphoneProperty("phone_id", result);
143
142
  }
144
143
 
145
144
  void SystemImplIphone::getDeviceName(rho::apiGenerator::CMethodResult& result)
@@ -98,7 +98,7 @@ Be sure to review the [Ruby API Usage](/guide/api_ruby) guide for important info
98
98
  </PROPERTY>
99
99
  <PROPERTY name="phoneId" type="STRING" readOnly="true">
100
100
  <DESC>Hardware based ID. It depends on capabilities configured for an application and has to remain same even across application uninstall/install.</DESC>
101
- <PLATFORM>WM, CE, Android</PLATFORM>
101
+ <PLATFORM>WM, CE, iOS, Android</PLATFORM>
102
102
  </PROPERTY>
103
103
  <PROPERTY name="deviceName" type="STRING" readOnly="true">
104
104
  <DESC>Name of device application running on. Examples: '9000' (BB), 'iPhone', 'dream' (Android). In Consumer Android device, name of the Industrial Design along with manufacturer name shall be shown. </DESC>
@@ -1901,6 +1901,7 @@ namespace "build" do
1901
1901
  #next
1902
1902
  end
1903
1903
 
1904
+ next if ((!package) or (package.empty?))
1904
1905
 
1905
1906
  r_dir = File.join $tmpdir, 'gen', package.split('.')
1906
1907
  mkdir_p r_dir
@@ -48,6 +48,8 @@
48
48
  #import "common/app_build_configs.h"
49
49
 
50
50
  #include <sys/xattr.h>
51
+ #include <sys/types.h>
52
+ #include <sys/sysctl.h>
51
53
 
52
54
  #undef DEFAULT_LOGCATEGORY
53
55
  #define DEFAULT_LOGCATEGORY "RhodesApp"
@@ -419,8 +421,9 @@ BOOL isPathIsSymLink(NSFileManager *fileManager, NSString* path) {
419
421
  }
420
422
  }
421
423
  }
422
-
424
+ NSLog(@"Create rhodes logging and rhoconfig.txt loading");
423
425
  rho_logconf_Init_with_separate_user_path(rho_native_rhopath(), rho_native_rhopath(), "", rho_native_rhouserpath());
426
+ NSLog(@"Create rhodes app");
424
427
  rho_rhodesapp_create_with_separate_user_path(rho_native_rhopath(), rho_native_rhouserpath());
425
428
  RAWLOG_INFO("Rhodes started");
426
429
  }
@@ -765,6 +768,8 @@ static const double RHO_IPHONE4_PPI = 326.0;
765
768
  // http://www.apple.com/ipad/specs/
766
769
  static const double RHO_IPAD_PPI = 132.0;
767
770
  static const double RHO_NEW_IPAD_PPI = 264.0;
771
+ static const double RHO_IPAD_MINI_PPI = 163.0;
772
+ static const double RHO_IPAD_MINI_RETINA_PPI = 326.0;
768
773
 
769
774
  static float get_scale() {
770
775
  float scales = 1;//[[UIScreen mainScreen] scale];
@@ -787,6 +792,24 @@ int rho_sysimpl_get_property_iphone(char* szPropName, NSObject** resValue)
787
792
  {
788
793
  if (strcasecmp("platform", szPropName) == 0)
789
794
  {*resValue = [NSString stringWithUTF8String:"APPLE"]; return 1;}
795
+ else if (strcasecmp("phone_id", szPropName) == 0){
796
+ NSString* uniqueIdentifier = nil;
797
+ if( [UIDevice instancesRespondToSelector:@selector(identifierForVendor)] ) {
798
+ // iOS 6+
799
+ uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
800
+ } else {
801
+ // before iOS 6, so just generate an identifier and store it
802
+ uniqueIdentifier = [[NSUserDefaults standardUserDefaults] objectForKey:@"identiferForVendor"];
803
+ if( !uniqueIdentifier ) {
804
+ CFUUIDRef uuid = CFUUIDCreate(NULL);
805
+ uniqueIdentifier = (NSString*)CFUUIDCreateString(NULL, uuid);
806
+ CFRelease(uuid);
807
+ [[NSUserDefaults standardUserDefaults] setObject:uniqueIdentifier forKey:@"identifierForVendor"];
808
+ }
809
+ }
810
+ *resValue = uniqueIdentifier;
811
+ return 1;
812
+ }
790
813
  else if (strcasecmp("locale", szPropName) == 0)
791
814
  {*resValue = rho_sys_get_locale_iphone(); return 1; }
792
815
  else if (strcasecmp("country", szPropName) == 0) {
@@ -835,8 +858,26 @@ int rho_sysimpl_get_property_iphone(char* szPropName, NSObject** resValue)
835
858
  strcasecmp("ppi_y", szPropName) == 0) {
836
859
  #ifdef __IPHONE_3_2
837
860
  if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
838
- if (get_scale() > 1.2) {
839
- *resValue = [NSNumber numberWithDouble:RHO_NEW_IPAD_PPI];
861
+
862
+ //Fix DPI issue on Ipad Mini
863
+ //get the device model name
864
+ size_t size;
865
+ sysctlbyname("hw.machine", NULL, &size, NULL, 0);
866
+ char *machine = malloc(size);
867
+ sysctlbyname("hw.machine", machine, &size, NULL, 0);
868
+ NSString *platform = [NSString stringWithUTF8String:machine];
869
+ free(machine);
870
+
871
+ // IPad Mini
872
+ if([platform isEqualToString:@"iPad2,5"] || [platform isEqualToString:@"iPad2,6"] || [platform isEqualToString:@"iPad2,7"]){
873
+ *resValue = [NSNumber numberWithDouble:RHO_IPAD_MINI_PPI];
874
+ }
875
+ // IPad Mini Retina
876
+ else if ([platform isEqualToString:@"iPad4,4"] || [platform isEqualToString:@"iPad4,5"] || [platform isEqualToString:@"iPad4,6"] || [platform isEqualToString:@"iPad4,7"] || [platform isEqualToString:@"iPad4,8"] || [platform isEqualToString:@"iPad4,9"] || [platform isEqualToString:@"iPad5,1"] || [platform isEqualToString:@"iPad5,2"]) {
877
+ *resValue = [NSNumber numberWithDouble:RHO_IPAD_MINI_RETINA_PPI];
878
+ }
879
+ else if (get_scale() > 1.2) {
880
+ *resValue = [NSNumber numberWithDouble:RHO_NEW_IPAD_PPI];
840
881
  }
841
882
  else {
842
883
  *resValue = [NSNumber numberWithDouble:RHO_IPAD_PPI];
@@ -269,8 +269,9 @@ static RhoNativeViewManagerOC *instance = NULL;
269
269
  [sharedInstance.mProviders removeObjectForKey:viewType];
270
270
  }
271
271
 
272
- +(UIWebView*)getWebViewObject:(int)tab_index {
273
- return [[[Rhodes sharedInstance] mainView] getWebView:tab_index];
272
+ // UIView* for iPhone - ATTENTION !!! Now method return CONTAINER VIEW for WebView. For UIWebView is [UIWebView scrollView]. For WkWebView is [WKWebView scrollView] !!!
273
+ +(UIView*)getWebViewObject:(int)tab_index {
274
+ return [[[[Rhodes sharedInstance] mainView] getRhoWebView:tab_index] containerView];
274
275
  }
275
276
 
276
277
 
@@ -428,7 +429,7 @@ void RhoNativeViewManager::unregisterViewType(const char* viewType) {
428
429
  }
429
430
 
430
431
  // that function return native object used for display Web content :
431
- // UIWebView* for iPhone
432
+ // // UIView* for iPhone - ATTENTION !!! Now method return CONTAINER VIEW for WebView. For UIWebView is [UIWebView scrollView]. For WkWebView is [WKWebView scrollView] !!!
432
433
  // jobject for Android - jobect is android.webkit.WebView class type
433
434
  // HWND for Windows Mobile
434
435
  void* RhoNativeViewManager::getWebViewObject(int tab_index) {
@@ -66,7 +66,7 @@
66
66
 
67
67
  +(void)registerViewType:(NSString*)viewType factory:(id)factory;
68
68
  +(void)unregisterViewType:(NSString*)viewType;
69
- +(UIWebView*)getWebViewObject:(int)tab_index;
69
+ +(UIView*)getWebViewObject:(int)tab_index;
70
70
 
71
71
  +(int)create_native_view:(NSString*)viewType tab_index:(int)tab_index params:(VALUE)params;
72
72
  +(void)navigate_native_view:(int)nv_id message:(NSString*)message;
@@ -25,12 +25,18 @@
25
25
  *------------------------------------------------------------------------*/
26
26
 
27
27
  #import <UIKit/UIKit.h>
28
+ #import "RhoWebView.h"
29
+
30
+
31
+ #define RHO_TAG_WEBVIEW 1
32
+ #define RHO_TAG_TOOLBAR 2
33
+ #define RHO_TAG_NAVBAR 3
28
34
 
29
35
  @protocol RhoMainView
30
36
 
31
37
  - (UIView*)view;
32
38
 
33
- - (UIWebView*)detachWebView;
39
+ - (id<RhoWebView,NSObject>)detachRhoWebView;
34
40
 
35
41
  - (void)loadHTMLString:(NSString*)data;
36
42
 
@@ -51,7 +57,7 @@
51
57
  - (void)addNavBar:(NSString*)title left:(NSArray*)left right:(NSArray*)right;
52
58
  - (void)removeNavBar;
53
59
 
54
- - (UIWebView*)getWebView:(int)tab_index;
60
+ - (id<RhoWebView,NSObject>)getRhoWebView:(int)tab_index;
55
61
 
56
62
  -(void)openNativeView:(UIView*)nv_view tab_index:(int)tab_index;
57
63
  -(void)closeNativeView:(int)tab_index;
@@ -0,0 +1,75 @@
1
+ /*------------------------------------------------------------------------
2
+ * (The MIT License)
3
+ *
4
+ * Copyright (c) 2008-2016 TAU Technologies, 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://tau-technologies.com
25
+ *------------------------------------------------------------------------*/
26
+
27
+ #import <UIKit/UIKit.h>
28
+ #import "RhoWebView.h"
29
+
30
+ @interface RhoUIWebView : NSObject<RhoWebView, UIWebViewDelegate> {
31
+ UIWebView *webview;
32
+ id<RhoWebViewDelegate,NSObject> delegate;
33
+ }
34
+
35
+ @property (nonatomic,retain) UIWebView *webview;
36
+ @property (nonatomic,retain) id<RhoWebViewDelegate,NSObject> delegate;
37
+
38
+ - (id)initWithFrame:(CGRect)frame;
39
+
40
+ - (void) setupDelegate:(id<RhoWebViewDelegate,NSObject>)delegate;
41
+
42
+ - (UIView*)view;
43
+
44
+ - (UIView*)containerView;
45
+
46
+ - (NSString*)currentLocation;
47
+
48
+ // UIWebView
49
+
50
+ - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
51
+
52
+ - (void)loadRequest:(NSURLRequest *)request;
53
+
54
+ - (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;
55
+
56
+ - (void)stopLoading;
57
+
58
+ - (void)reload;
59
+
60
+ - (void)goBack;
61
+
62
+ - (void)goForward;
63
+
64
+
65
+ // UIWebViewDelegate
66
+
67
+ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
68
+
69
+ - (void)webViewDidStartLoad:(UIWebView *)webView;
70
+
71
+ - (void)webViewDidFinishLoad:(UIWebView *)webView;
72
+
73
+ - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
74
+
75
+ @end
@@ -0,0 +1,142 @@
1
+ /*------------------------------------------------------------------------
2
+ * (The MIT License)
3
+ *
4
+ * Copyright (c) 2008-2016 TAU Technologies, 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://tau-technologies.com
25
+ *------------------------------------------------------------------------*/
26
+
27
+ #import "RhoUIWebView.h"
28
+ #import "RhoMainView.h"
29
+
30
+ #include "logging/RhoLog.h"
31
+ #include "common/RhoConf.h"
32
+
33
+
34
+ #undef DEFAULT_LOGCATEGORY
35
+ #define DEFAULT_LOGCATEGORY "RhoUIWebView"
36
+
37
+
38
+ @implementation RhoUIWebView
39
+
40
+ @synthesize webview, delegate;
41
+
42
+
43
+ - (id)initWithFrame:(CGRect)frame {
44
+ [self init];
45
+ UIWebView* w = [[UIWebView alloc] initWithFrame:frame];
46
+ w.scalesPageToFit = YES;
47
+ if ( !rho_conf_getBool("WebView.enableBounce") )
48
+ [[w scrollView] setBounces:NO];
49
+ w.userInteractionEnabled = YES;
50
+ w.multipleTouchEnabled = YES;
51
+ w.clipsToBounds = NO;
52
+ w.dataDetectorTypes = UIDataDetectorTypeNone;
53
+ w.delegate = self;
54
+ w.autoresizesSubviews = YES;
55
+ //w.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
56
+ w.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
57
+ w.tag = RHO_TAG_WEBVIEW;
58
+ //assert([w retainCount] == 1);
59
+ self.webview = w;
60
+
61
+
62
+
63
+ return self;
64
+ }
65
+
66
+ - (UIView*)view {
67
+ return self.webview;
68
+ }
69
+
70
+ - (NSString*)currentLocation {
71
+ return [[webview.request mainDocumentURL] absoluteString];
72
+ }
73
+
74
+ - (void) setupDelegate:(id<RhoWebViewDelegate,NSObject>)delegate {
75
+ self.delegate = delegate;
76
+ }
77
+
78
+ - (UIView*)containerView {
79
+ return self.webview.scrollView;
80
+ }
81
+
82
+
83
+
84
+
85
+ //UIWebView
86
+
87
+ - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script {
88
+ return [webview stringByEvaluatingJavaScriptFromString:script];
89
+ }
90
+
91
+ - (void)loadRequest:(NSURLRequest *)request {
92
+ [webview loadRequest:request];
93
+ }
94
+
95
+ - (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL {
96
+ [webview loadHTMLString:string baseURL:baseURL];
97
+ }
98
+
99
+ - (void)stopLoading {
100
+ [webview stopLoading];
101
+ }
102
+
103
+ - (void)reload {
104
+ [webview reload];
105
+ }
106
+
107
+ - (void)goBack {
108
+ [webview goBack];
109
+ }
110
+
111
+ - (void)goForward {
112
+ [webview goForward];
113
+ }
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ // UIWebViewDelegate
122
+
123
+ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
124
+ if (delegate != nil) {
125
+ return [delegate shouldStartLoadWithRequest:self request:request navigationType:navigationType];
126
+ }
127
+ return YES;
128
+ }
129
+
130
+ - (void)webViewDidStartLoad:(UIWebView *)webView {
131
+ [delegate webViewDidStartLoad:self];
132
+ }
133
+
134
+ - (void)webViewDidFinishLoad:(UIWebView *)webView {
135
+ [delegate webViewDidFinishLoad:self];
136
+ }
137
+
138
+ - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
139
+ [delegate didFailLoadWithError:self error:error];
140
+ }
141
+
142
+ @end