rhodes 2.2.0 → 2.2.1.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -0
- data/lib/build/jake.rb +1 -1
- data/lib/extensions/barcode/ext/barcode/shared/zbar/zbar/zbar/error.h +14 -0
- data/lib/framework/rhodes.rb +2 -2
- data/lib/framework/version.rb +2 -2
- data/lib/rhodes.rb +2 -2
- data/platform/android/Rhodes/AndroidManifest.xml +2 -2
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +10 -2
- data/platform/android/Rhodes/jni/src/rhodes.cpp +9 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +18 -4
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java +1 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +54 -3
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/Alert.java +14 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +12 -3
- data/platform/bb/RubyVM/src/com/rho/RhodesApp.java +2 -1
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +4 -0
- data/platform/iphone/Classes/AppManager/AppManager.m +8 -0
- data/platform/iphone/Classes/RhoMainView.h +2 -0
- data/platform/iphone/Classes/RhoNativeViewManager.mm +4 -2
- data/platform/iphone/Classes/SimpleMainView.h +2 -0
- data/platform/iphone/Classes/SimpleMainView.m +4 -0
- data/platform/iphone/Classes/TabbedMainView.h +2 -0
- data/platform/iphone/Classes/TabbedMainView.m +8 -0
- data/platform/iphone/Info.plist +1 -1
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +27 -140
- data/platform/shared/common/RhodesApp.h +1 -1
- data/platform/shared/common/RhodesAppBase.cpp +2 -1
- data/platform/shared/rubyext/System.cpp +6 -0
- data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +12 -0
- data/rhodes.gemspec +1 -1
- data/spec/phone_spec/app/spec_runner.rb +1 -1
- metadata +7 -5
data/CHANGELOG
CHANGED
data/lib/build/jake.rb
CHANGED
@@ -104,6 +104,7 @@ extern int _zbar_verbosity;
|
|
104
104
|
|
105
105
|
#else
|
106
106
|
|
107
|
+
/*
|
107
108
|
# ifdef __GNUC__
|
108
109
|
# define zprintf(level, format, args...) do { \
|
109
110
|
fprintf(stderr, "%s: " format, __func__ , ##args); \
|
@@ -115,6 +116,19 @@ extern int _zbar_verbosity;
|
|
115
116
|
ZFLUSH \
|
116
117
|
} while(0)
|
117
118
|
# endif
|
119
|
+
*/
|
120
|
+
|
121
|
+
// Disable console output
|
122
|
+
# ifdef __GNUC__
|
123
|
+
# define zprintf(level, format, args...) do { \
|
124
|
+
} while(0)
|
125
|
+
# else
|
126
|
+
# define zprintf(level, format, ...) do { \
|
127
|
+
} while(0)
|
128
|
+
# endif
|
129
|
+
|
130
|
+
|
131
|
+
|
118
132
|
|
119
133
|
#endif
|
120
134
|
|
data/lib/framework/rhodes.rb
CHANGED
data/lib/framework/version.rb
CHANGED
data/lib/rhodes.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
2
2
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
3
3
|
package="com.rhomobile.rhodes"
|
4
|
-
android:versionCode="
|
5
|
-
android:versionName="2.2.
|
4
|
+
android:versionCode="23"
|
5
|
+
android:versionName="2.2.1">
|
6
6
|
<uses-sdk android:minSdkVersion="3" />
|
7
7
|
<application android:icon="@drawable/icon"
|
8
8
|
android:multiprocess="true"
|
@@ -45,6 +45,14 @@ JNIEXPORT void JNICALL Java_com_rhomobile_rhodes_RhodesService_startRhodesApp
|
|
45
45
|
JNIEXPORT void JNICALL Java_com_rhomobile_rhodes_RhodesService_doSyncAllSources
|
46
46
|
(JNIEnv *, jobject, jboolean);
|
47
47
|
|
48
|
+
/*
|
49
|
+
* Class: com_rhomobile_rhodes_RhodesService
|
50
|
+
* Method: doSyncSource
|
51
|
+
* Signature: (Ljava/lang/String;)V
|
52
|
+
*/
|
53
|
+
JNIEXPORT void JNICALL Java_com_rhomobile_rhodes_RhodesService_doSyncSource
|
54
|
+
(JNIEnv *, jobject, jstring);
|
55
|
+
|
48
56
|
/*
|
49
57
|
* Class: com_rhomobile_rhodes_RhodesService
|
50
58
|
* Method: getOptionsUrl
|
@@ -160,9 +168,9 @@ JNIEXPORT void JNICALL Java_com_rhomobile_rhodes_RhodesService_setPushRegistrati
|
|
160
168
|
/*
|
161
169
|
* Class: com_rhomobile_rhodes_RhodesService
|
162
170
|
* Method: callPushCallback
|
163
|
-
* Signature: (Ljava/lang/String;)
|
171
|
+
* Signature: (Ljava/lang/String;)Z
|
164
172
|
*/
|
165
|
-
JNIEXPORT
|
173
|
+
JNIEXPORT jboolean JNICALL Java_com_rhomobile_rhodes_RhodesService_callPushCallback
|
166
174
|
(JNIEnv *, jobject, jstring);
|
167
175
|
|
168
176
|
#ifdef __cplusplus
|
@@ -420,6 +420,13 @@ RHO_GLOBAL void JNICALL Java_com_rhomobile_rhodes_RhodesService_doSyncAllSources
|
|
420
420
|
rho_sync_doSyncAllSources(show_status_popup);
|
421
421
|
}
|
422
422
|
|
423
|
+
RHO_GLOBAL void JNICALL Java_com_rhomobile_rhodes_RhodesService_doSyncSource
|
424
|
+
(JNIEnv *env, jobject, jstring sourceObj)
|
425
|
+
{
|
426
|
+
std::string source = rho_cast<std::string>(env, sourceObj);
|
427
|
+
rho_sync_doSyncSourceByName(source.c_str());
|
428
|
+
}
|
429
|
+
|
423
430
|
RHO_GLOBAL jstring JNICALL Java_com_rhomobile_rhodes_RhodesService_getOptionsUrl
|
424
431
|
(JNIEnv *env, jobject)
|
425
432
|
{
|
@@ -502,11 +509,11 @@ RHO_GLOBAL void JNICALL Java_com_rhomobile_rhodes_RhodesService_setPushRegistrat
|
|
502
509
|
rho::sync::CClientRegister::Create(new rho::common::CRhoClassFactory, id.c_str());
|
503
510
|
}
|
504
511
|
|
505
|
-
RHO_GLOBAL
|
512
|
+
RHO_GLOBAL jboolean JNICALL Java_com_rhomobile_rhodes_RhodesService_callPushCallback
|
506
513
|
(JNIEnv *env, jobject, jstring jData)
|
507
514
|
{
|
508
515
|
std::string data = rho_cast<std::string>(env, jData);
|
509
|
-
rho_rhodesapp_callPushCallback(data.c_str());
|
516
|
+
return (jboolean)rho_rhodesapp_callPushCallback(data.c_str());
|
510
517
|
}
|
511
518
|
|
512
519
|
RHO_GLOBAL char *rho_timezone()
|
@@ -1,5 +1,6 @@
|
|
1
1
|
package com.rhomobile.rhodes;
|
2
2
|
|
3
|
+
import android.app.Activity;
|
3
4
|
import android.content.BroadcastReceiver;
|
4
5
|
import android.content.Context;
|
5
6
|
import android.content.Intent;
|
@@ -47,12 +48,25 @@ public class PushReceiver extends BroadcastReceiver {
|
|
47
48
|
@Override
|
48
49
|
public void onReceive(Context context, Intent intent) {
|
49
50
|
String action = intent.getAction();
|
50
|
-
if (action.equals(PushService.C2DM_INTENT_PREFIX + "REGISTRATION"))
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
if (action.equals(PushService.C2DM_INTENT_PREFIX + "REGISTRATION")) {
|
52
|
+
try {
|
53
|
+
handleRegistration(context, intent);
|
54
|
+
}
|
55
|
+
catch (Exception e) {
|
56
|
+
Log.e(TAG, "Can't handle PUSH registration: " + e.getMessage());
|
57
|
+
}
|
58
|
+
}
|
59
|
+
else if (action.equals(PushService.C2DM_INTENT_PREFIX + "RECEIVE")) {
|
60
|
+
try {
|
61
|
+
handleMessage(context, intent);
|
62
|
+
}
|
63
|
+
catch (Exception e) {
|
64
|
+
Log.e(TAG, "Can't handle PUSH message: " + e.getMessage());
|
65
|
+
}
|
66
|
+
}
|
54
67
|
else
|
55
68
|
Log.w(TAG, "Unknown action received (PUSH): " + action);
|
69
|
+
setResult(Activity.RESULT_OK, null /* data */, null /* extra */);
|
56
70
|
}
|
57
71
|
|
58
72
|
}
|
@@ -27,7 +27,7 @@ public class PushService {
|
|
27
27
|
|
28
28
|
checkCapabilities();
|
29
29
|
|
30
|
-
Logger.D(TAG, "Register for PUSH messages");
|
30
|
+
Logger.D(TAG, "Register for PUSH messages (use \"" + Push.SENDER + "\" as sender)");
|
31
31
|
|
32
32
|
Context ctx = RhodesService.getInstance().getContext();
|
33
33
|
Intent registrationIntent = new Intent(C2DM_INTENT_PREFIX + "REGISTER");
|
@@ -9,6 +9,7 @@ import java.util.Set;
|
|
9
9
|
import java.util.TimeZone;
|
10
10
|
import java.util.Vector;
|
11
11
|
|
12
|
+
import com.rhomobile.rhodes.alert.Alert;
|
12
13
|
import com.rhomobile.rhodes.bluetooth.RhoBluetoothManager;
|
13
14
|
import com.rhomobile.rhodes.file.RhoFileApi;
|
14
15
|
import com.rhomobile.rhodes.geolocation.GeoLocation;
|
@@ -135,6 +136,7 @@ public class RhodesService {
|
|
135
136
|
private native void startRhodesApp();
|
136
137
|
|
137
138
|
public native void doSyncAllSources(boolean v);
|
139
|
+
public native void doSyncSource(String source);
|
138
140
|
|
139
141
|
public native String getOptionsUrl();
|
140
142
|
public native String getStartUrl();
|
@@ -686,6 +688,11 @@ public class RhodesService {
|
|
686
688
|
else if (name.equalsIgnoreCase("device_name")) {
|
687
689
|
return Build.DEVICE;
|
688
690
|
}
|
691
|
+
else if (name.equalsIgnoreCase("is_emulator"))
|
692
|
+
{
|
693
|
+
String strDevice = Build.DEVICE;
|
694
|
+
return new Boolean(strDevice != null && strDevice.equalsIgnoreCase("generic"));
|
695
|
+
}
|
689
696
|
else if (name.equalsIgnoreCase("os_version")) {
|
690
697
|
return Build.VERSION.RELEASE;
|
691
698
|
}
|
@@ -705,7 +712,7 @@ public class RhodesService {
|
|
705
712
|
|
706
713
|
public native void setPushRegistrationId(String id);
|
707
714
|
|
708
|
-
private native
|
715
|
+
private native boolean callPushCallback(String data);
|
709
716
|
|
710
717
|
public void handlePushMessage(Intent intent) {
|
711
718
|
Logger.D(TAG, "Receive PUSH message");
|
@@ -719,6 +726,10 @@ public class RhodesService {
|
|
719
726
|
StringBuilder builder = new StringBuilder();
|
720
727
|
|
721
728
|
Set<String> keys = extras.keySet();
|
729
|
+
// Remove system related keys
|
730
|
+
keys.remove("collapse_key");
|
731
|
+
keys.remove("from");
|
732
|
+
|
722
733
|
for (String key : keys) {
|
723
734
|
Logger.D(TAG, "PUSH item: " + key);
|
724
735
|
Object value = extras.get(key);
|
@@ -732,9 +743,49 @@ public class RhodesService {
|
|
732
743
|
|
733
744
|
String data = builder.toString();
|
734
745
|
Logger.D(TAG, "Received PUSH message: " + data);
|
735
|
-
callPushCallback(data)
|
746
|
+
if (callPushCallback(data))
|
747
|
+
return;
|
736
748
|
|
737
|
-
|
749
|
+
String alert = extras.getString("alert");
|
750
|
+
if (alert != null) {
|
751
|
+
Logger.D(TAG, "PUSH: Alert: " + alert);
|
752
|
+
Alert.showPopup(alert);
|
753
|
+
}
|
754
|
+
String sound = extras.getString("sound");
|
755
|
+
if (sound != null) {
|
756
|
+
Logger.D(TAG, "PUSH: Sound file name: " + sound);
|
757
|
+
Alert.playFile("/public/alerts/" + sound, null);
|
758
|
+
}
|
759
|
+
String vibrate = extras.getString("vibrate");
|
760
|
+
if (vibrate != null) {
|
761
|
+
Logger.D(TAG, "PUSH: Vibrate: " + vibrate);
|
762
|
+
int duration;
|
763
|
+
try {
|
764
|
+
duration = Integer.parseInt(vibrate);
|
765
|
+
}
|
766
|
+
catch (NumberFormatException e) {
|
767
|
+
duration = 5;
|
768
|
+
}
|
769
|
+
Logger.D(TAG, "Vibrate " + duration + " seconds");
|
770
|
+
Alert.vibrate(duration);
|
771
|
+
}
|
772
|
+
|
773
|
+
String syncSources = extras.getString("do_sync");
|
774
|
+
if (syncSources != null) {
|
775
|
+
Logger.D(TAG, "PUSH: Sync:");
|
776
|
+
boolean syncAll = false;
|
777
|
+
for (String source : syncSources.split(",")) {
|
778
|
+
Logger.D(TAG, "url = " + source);
|
779
|
+
if (source.equalsIgnoreCase("all"))
|
780
|
+
syncAll = true;
|
781
|
+
else {
|
782
|
+
doSyncSource(source.trim());
|
783
|
+
}
|
784
|
+
}
|
785
|
+
|
786
|
+
if (syncAll)
|
787
|
+
doSyncAllSources(true);
|
788
|
+
}
|
738
789
|
}
|
739
790
|
|
740
791
|
}
|
@@ -21,6 +21,7 @@
|
|
21
21
|
package com.rhomobile.rhodes.alert;
|
22
22
|
|
23
23
|
import java.io.File;
|
24
|
+
import java.io.FileInputStream;
|
24
25
|
import java.util.Map;
|
25
26
|
import java.util.Vector;
|
26
27
|
|
@@ -54,6 +55,7 @@ public class Alert {
|
|
54
55
|
private static final String TAG = "Alert";
|
55
56
|
|
56
57
|
private static Dialog currentAlert = null;
|
58
|
+
private static MediaPlayer currentMP = null;
|
57
59
|
|
58
60
|
private static native void doCallback(String url, String id, String title);
|
59
61
|
|
@@ -283,14 +285,19 @@ public class Alert {
|
|
283
285
|
vibrator.vibrate(duration);
|
284
286
|
}
|
285
287
|
catch (Exception e) {
|
286
|
-
reportFail("
|
288
|
+
reportFail("vibrate", e);
|
287
289
|
}
|
288
290
|
}
|
289
291
|
|
290
292
|
public static void playFile(String fileName, String mediaType) {
|
291
293
|
try {
|
292
294
|
Logger.T(TAG, "playFile: " + fileName + " (" + mediaType + ")");
|
295
|
+
|
296
|
+
if (currentMP != null)
|
297
|
+
currentMP.release();
|
298
|
+
|
293
299
|
MediaPlayer mp = new MediaPlayer();
|
300
|
+
currentMP = mp;
|
294
301
|
mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {
|
295
302
|
public boolean onError(MediaPlayer mp, int what, int extra) {
|
296
303
|
Logger.E(TAG, "Error when playing file : " + what + ", " + extra);
|
@@ -302,9 +309,14 @@ public class Alert {
|
|
302
309
|
f = new File(f, fileName);
|
303
310
|
if (!f.exists())
|
304
311
|
RhoFileApi.copy(fileName);
|
312
|
+
|
305
313
|
String source = f.getCanonicalPath();
|
306
314
|
Logger.T(TAG, "Final file name: " + source);
|
307
|
-
mp.setDataSource(source);
|
315
|
+
//mp.setDataSource(source);
|
316
|
+
|
317
|
+
FileInputStream fs = new FileInputStream(f);
|
318
|
+
mp.setDataSource(fs.getFD());
|
319
|
+
|
308
320
|
mp.prepare();
|
309
321
|
mp.start();
|
310
322
|
} catch (Exception e) {
|
@@ -29,8 +29,9 @@ public class EventStore {
|
|
29
29
|
private static final String EVENTS_PRIVACY = "visibility";
|
30
30
|
|
31
31
|
private static void reportFail(String name, Exception e) {
|
32
|
-
Logger.E(TAG, "Call of \"" + name + "\" failed: " + e.getMessage());
|
33
|
-
e
|
32
|
+
Logger.E(TAG, "Call of \"" + name + "\" failed: " + e != null ? e.getMessage() : "null exception");
|
33
|
+
if ( e != null )
|
34
|
+
e.printStackTrace();
|
34
35
|
}
|
35
36
|
|
36
37
|
private static String dateToString(Date date) {
|
@@ -246,7 +247,15 @@ public class EventStore {
|
|
246
247
|
|
247
248
|
Logger.D(TAG, "delete(id)");
|
248
249
|
|
249
|
-
|
250
|
+
ContentResolver r = getContentResolver();
|
251
|
+
int rows;
|
252
|
+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) {
|
253
|
+
Uri uri = ContentUris.withAppendedId(EVENTS_URI, Long.parseLong(id));
|
254
|
+
rows = getContentResolver().delete(uri, null, null);
|
255
|
+
}
|
256
|
+
else {
|
257
|
+
rows = r.delete(EVENTS_URI, "_id=?", new String[] {id});
|
258
|
+
}
|
250
259
|
Logger.D(TAG, String.format("%d rows deleted", rows));
|
251
260
|
|
252
261
|
return null;
|
@@ -112,7 +112,8 @@ public class RhodesApp
|
|
112
112
|
{
|
113
113
|
return strUrl.startsWith("http://") || strUrl.startsWith("https://") ||
|
114
114
|
strUrl.startsWith("javascript:") || strUrl.startsWith("mailto:")
|
115
|
-
|| strUrl.startsWith("tel:")|| strUrl.startsWith("wtai:")
|
115
|
+
|| strUrl.startsWith("tel:")|| strUrl.startsWith("wtai:") ||
|
116
|
+
strUrl.startsWith("sms:");
|
116
117
|
}
|
117
118
|
|
118
119
|
public String canonicalizeRhoUrl(String url)
|
@@ -172,6 +172,10 @@ public class System {
|
|
172
172
|
return ObjectFactory.createString(DeviceInfo.getDeviceName());
|
173
173
|
if ( strPropName.equalsIgnoreCase("os_version") )
|
174
174
|
return ObjectFactory.createString(DeviceInfo.getSoftwareVersion());
|
175
|
+
if ( strPropName.equalsIgnoreCase("rhodes_port") )
|
176
|
+
return ObjectFactory.createInteger(0);
|
177
|
+
if ( strPropName.equalsIgnoreCase("is_emulator") )
|
178
|
+
return ObjectFactory.createBoolean(DeviceInfo.isSimulator());
|
175
179
|
|
176
180
|
return RubyConstant.QNIL;
|
177
181
|
}
|
@@ -320,7 +320,15 @@ int rho_sysimpl_get_property(char* szPropName, VALUE* resValue)
|
|
320
320
|
NSString *version = [[UIDevice currentDevice] systemVersion];
|
321
321
|
*resValue = rho_ruby_create_string([version UTF8String]);
|
322
322
|
return 1;
|
323
|
+
}else if (strcasecmp("is_emulator", szPropName) == 0) {
|
324
|
+
int bSim = 0;
|
325
|
+
#if TARGET_IPHONE_SIMULATOR
|
326
|
+
bSim = 1;
|
327
|
+
#endif
|
328
|
+
*resValue = rho_ruby_create_boolean(bSim);
|
329
|
+
return 1;
|
323
330
|
}
|
331
|
+
|
324
332
|
/*
|
325
333
|
// Removed because it's possibly dangerous: Apple could reject application
|
326
334
|
// used such approach from its AppStore
|
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
#import "RhoNativeViewManagerOC.h"
|
14
14
|
#import "RhoNativeViewManager.h"
|
15
|
-
|
15
|
+
#import "Rhodes.h"
|
16
16
|
|
17
17
|
|
18
18
|
|
@@ -196,7 +196,7 @@ static RhoNativeViewManagerOC *instance = NULL;
|
|
196
196
|
}
|
197
197
|
|
198
198
|
+(UIWebView*)getWebViewObject:(int)tab_index {
|
199
|
-
return
|
199
|
+
return [[[Rhodes sharedInstance] mainView] getWebView:tab_index];
|
200
200
|
}
|
201
201
|
|
202
202
|
|
@@ -204,6 +204,7 @@ static RhoNativeViewManagerOC *instance = NULL;
|
|
204
204
|
|
205
205
|
|
206
206
|
|
207
|
+
|
207
208
|
void RhoNativeViewManager::registerViewType(const char* viewType, NativeViewFactory* factory) {
|
208
209
|
NativeViewFactoryOCImpl* f = [NativeViewFactoryOCImpl makeFactory:factory];
|
209
210
|
NSString* s = [[NSString alloc] initWithUTF8String:viewType];
|
@@ -222,3 +223,4 @@ void RhoNativeViewManager::unregisterViewType(const char* viewType) {
|
|
222
223
|
void* RhoNativeViewManager::getWebViewObject(int tab_index) {
|
223
224
|
return [RhoNativeViewManagerOC getWebViewObject:tab_index];
|
224
225
|
}
|
226
|
+
|
@@ -205,6 +205,14 @@
|
|
205
205
|
return tabindex;
|
206
206
|
}
|
207
207
|
|
208
|
+
- (UIWebView*)getWebView:(int)tab_index {
|
209
|
+
if (tab_index == -1) {
|
210
|
+
tab_index = [self activeTab];
|
211
|
+
}
|
212
|
+
return [[self subView:tab_index] getWebView:-1];
|
213
|
+
}
|
214
|
+
|
215
|
+
|
208
216
|
- (void)addNavBar:(NSString*)title left:(NSArray*)left right:(NSArray*)right {
|
209
217
|
[[self subView:[self activeTab]] addNavBar:title left:left right:right];
|
210
218
|
}
|
data/platform/iphone/Info.plist
CHANGED
@@ -27,7 +27,6 @@
|
|
27
27
|
BD38E6DC115CFF14001CE05C /* WebView.m in Sources */ = {isa = PBXBuildFile; fileRef = BD38E6DB115CFF14001CE05C /* WebView.m */; };
|
28
28
|
BD38E755115D1AAC001CE05C /* TabbedMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = BD38E754115D1AAC001CE05C /* TabbedMainView.m */; };
|
29
29
|
BD486F59124FB66600F8A93F /* Event.m in Sources */ = {isa = PBXBuildFile; fileRef = BD486F58124FB66600F8A93F /* Event.m */; };
|
30
|
-
BD486FE212505FE000F8A93F /* EventKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD486FE112505FE000F8A93F /* EventKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
31
30
|
BD5B744B113BE2DB00C6070A /* SplashViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BD5B7449113BE2DB00C6070A /* SplashViewController.m */; };
|
32
31
|
BD6A622A123E46BB0093E03C /* RhoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6A6229123E46BB0093E03C /* RhoViewController.m */; };
|
33
32
|
BD97AC211160EE8F006960F9 /* RhoAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = BD97AC201160EE8F006960F9 /* RhoAlert.m */; };
|
@@ -183,7 +182,6 @@
|
|
183
182
|
BD38E754115D1AAC001CE05C /* TabbedMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TabbedMainView.m; sourceTree = "<group>"; };
|
184
183
|
BD486F57124FB66600F8A93F /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = Event/Event.h; sourceTree = "<group>"; };
|
185
184
|
BD486F58124FB66600F8A93F /* Event.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Event.m; path = Event/Event.m; sourceTree = "<group>"; };
|
186
|
-
BD486FE112505FE000F8A93F /* EventKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKit.framework; path = System/Library/Frameworks/EventKit.framework; sourceTree = SDKROOT; };
|
187
185
|
BD5B7448113BE2DB00C6070A /* SplashViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SplashViewController.h; sourceTree = "<group>"; };
|
188
186
|
BD5B7449113BE2DB00C6070A /* SplashViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SplashViewController.m; sourceTree = "<group>"; };
|
189
187
|
BD6A6228123E46BB0093E03C /* RhoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RhoViewController.h; sourceTree = "<group>"; };
|
@@ -282,7 +280,6 @@
|
|
282
280
|
46AD7DB31117AFB9009A974A /* MapKit.framework in Frameworks */,
|
283
281
|
46AD7DB71117AFBF009A974A /* CFNetwork.framework in Frameworks */,
|
284
282
|
FACC2100123A759A0088A447 /* GameKit.framework in Frameworks */,
|
285
|
-
BD486FE212505FE000F8A93F /* EventKit.framework in Frameworks */,
|
286
283
|
);
|
287
284
|
runOnlyForDeploymentPostprocessing = 0;
|
288
285
|
};
|
@@ -353,7 +350,6 @@
|
|
353
350
|
46AD7DB21117AFB9009A974A /* MapKit.framework */,
|
354
351
|
46AD7DB61117AFBF009A974A /* CFNetwork.framework */,
|
355
352
|
FACC20FF123A759A0088A447 /* GameKit.framework */,
|
356
|
-
BD486FE112505FE000F8A93F /* EventKit.framework */,
|
357
353
|
);
|
358
354
|
name = CustomTemplate;
|
359
355
|
sourceTree = "<group>";
|
@@ -915,7 +911,6 @@
|
|
915
911
|
CODE_SIGN_IDENTITY = "Don't Code Sign";
|
916
912
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign";
|
917
913
|
COPY_PHASE_STRIP = NO;
|
918
|
-
EXTENSIONS_LDFLAGS = "-filelist $(TARGET_TEMP_DIR)/rhodeslibs.txt";
|
919
914
|
GCC_DYNAMIC_NO_PIC = NO;
|
920
915
|
GCC_OPTIMIZATION_LEVEL = 0;
|
921
916
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
@@ -930,7 +925,6 @@
|
|
930
925
|
);
|
931
926
|
OTHER_CFLAGS = "";
|
932
927
|
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
|
933
|
-
OTHER_LDFLAGS = "$(EXTENSIONS_LDFLAGS)";
|
934
928
|
PRODUCT_NAME = rhorunner;
|
935
929
|
PROVISIONING_PROFILE = "";
|
936
930
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
|
@@ -963,19 +957,6 @@
|
|
963
957
|
ONLY_ACTIVE_ARCH = YES;
|
964
958
|
OTHER_CFLAGS = "";
|
965
959
|
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
|
966
|
-
OTHER_LDFLAGS = "$(EXTENSIONS_LDFLAGS)";
|
967
|
-
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
|
968
|
-
"-framework",
|
969
|
-
CFNetwork,
|
970
|
-
"-framework",
|
971
|
-
CoreGraphics,
|
972
|
-
"$(EXTENSIONS_LDFLAGS)",
|
973
|
-
);
|
974
|
-
"OTHER_LDFLAGS[sdk=iphonesimulator*][arch=*]" = (
|
975
|
-
"-framework",
|
976
|
-
CFNetwork,
|
977
|
-
"$(EXTENSIONS_LDFLAGS)",
|
978
|
-
);
|
979
960
|
PRODUCT_NAME = rhorunner;
|
980
961
|
PROVISIONING_PROFILE = "";
|
981
962
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
|
@@ -991,72 +972,23 @@
|
|
991
972
|
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
992
973
|
CODE_SIGN_ENTITLEMENTS = Entitlements.plist;
|
993
974
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign";
|
975
|
+
EXTENSIONS_LDFLAGS = "-filelist $(TARGET_TEMP_DIR)/rhodeslibs.txt";
|
994
976
|
GCC_C_LANGUAGE_STANDARD = c99;
|
995
977
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
996
978
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
997
979
|
HEADER_SEARCH_PATHS = ../shared;
|
998
980
|
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
|
999
|
-
"
|
1000
|
-
|
1001
|
-
|
1002
|
-
"-lrhosynclib",
|
1003
|
-
"-ltcmalloc",
|
1004
|
-
"-lrholib",
|
1005
|
-
"-lrhoextlib",
|
1006
|
-
);
|
1007
|
-
"OTHER_LDFLAGS[sdk=iphoneos3.0][arch=*]" = (
|
1008
|
-
"-framework",
|
1009
|
-
MapKit,
|
1010
|
-
"-framework",
|
1011
|
-
CFNetwork,
|
1012
|
-
"-lrhorubylib",
|
1013
|
-
"-lrhosynclib",
|
1014
|
-
"-ltcmalloc",
|
1015
|
-
"-lrholib",
|
1016
|
-
"-lrhoextlib",
|
1017
|
-
);
|
1018
|
-
"OTHER_LDFLAGS[sdk=iphoneos3.1][arch=*]" = (
|
1019
|
-
"-framework",
|
1020
|
-
MapKit,
|
1021
|
-
"-framework",
|
1022
|
-
CFNetwork,
|
1023
|
-
"-lrhorubylib",
|
1024
|
-
"-lrhosynclib",
|
1025
|
-
"-ltcmalloc",
|
1026
|
-
"-lrholib",
|
1027
|
-
"-lrhoextlib",
|
981
|
+
"$(EXTENSIONS_LDFLAGS)",
|
982
|
+
"-weak_framework",
|
983
|
+
EventKit,
|
1028
984
|
);
|
985
|
+
"OTHER_LDFLAGS[sdk=iphoneos3.2][arch=*]" = "$(EXTENSIONS_LDFLAGS)";
|
1029
986
|
"OTHER_LDFLAGS[sdk=iphonesimulator*][arch=*]" = (
|
1030
|
-
"
|
1031
|
-
|
1032
|
-
|
1033
|
-
"-lrhosynclib",
|
1034
|
-
"-ltcmalloc",
|
1035
|
-
"-lrholib",
|
1036
|
-
"-lrhoextlib",
|
1037
|
-
);
|
1038
|
-
"OTHER_LDFLAGS[sdk=iphonesimulator3.0][arch=*]" = (
|
1039
|
-
"-framework",
|
1040
|
-
MapKit,
|
1041
|
-
"-framework",
|
1042
|
-
CFNetwork,
|
1043
|
-
"-lrhorubylib",
|
1044
|
-
"-lrhosynclib",
|
1045
|
-
"-ltcmalloc",
|
1046
|
-
"-lrholib",
|
1047
|
-
"-lrhoextlib",
|
1048
|
-
);
|
1049
|
-
"OTHER_LDFLAGS[sdk=iphonesimulator3.1][arch=*]" = (
|
1050
|
-
"-framework",
|
1051
|
-
MapKit,
|
1052
|
-
"-framework",
|
1053
|
-
CFNetwork,
|
1054
|
-
"-lrhorubylib",
|
1055
|
-
"-lrhosynclib",
|
1056
|
-
"-ltcmalloc",
|
1057
|
-
"-lrholib",
|
1058
|
-
"-lrhoextlib",
|
987
|
+
"$(EXTENSIONS_LDFLAGS)",
|
988
|
+
"-weak_framework",
|
989
|
+
EventKit,
|
1059
990
|
);
|
991
|
+
"OTHER_LDFLAGS[sdk=iphonesimulator3.2][arch=*]" = "$(EXTENSIONS_LDFLAGS)";
|
1060
992
|
PREBINDING = NO;
|
1061
993
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
|
1062
994
|
SDKROOT = iphoneos3.2;
|
@@ -1086,45 +1018,6 @@
|
|
1086
1018
|
ONLY_ACTIVE_ARCH = YES;
|
1087
1019
|
OTHER_CFLAGS = "";
|
1088
1020
|
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
|
1089
|
-
OTHER_LDFLAGS = "$(EXTENSIONS_LDFLAGS)";
|
1090
|
-
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
|
1091
|
-
"-framework",
|
1092
|
-
CFNetwork,
|
1093
|
-
"$(EXTENSIONS_LDFLAGS)",
|
1094
|
-
);
|
1095
|
-
"OTHER_LDFLAGS[sdk=iphoneos3.0][arch=*]" = (
|
1096
|
-
"-framework",
|
1097
|
-
MapKit,
|
1098
|
-
"-framework",
|
1099
|
-
CFNetwork,
|
1100
|
-
"$(EXTENSIONS_LDFLAGS)",
|
1101
|
-
);
|
1102
|
-
"OTHER_LDFLAGS[sdk=iphoneos3.1][arch=*]" = (
|
1103
|
-
"-framework",
|
1104
|
-
MapKit,
|
1105
|
-
"-framework",
|
1106
|
-
CFNetwork,
|
1107
|
-
"$(EXTENSIONS_LDFLAGS)",
|
1108
|
-
);
|
1109
|
-
"OTHER_LDFLAGS[sdk=iphonesimulator*][arch=*]" = (
|
1110
|
-
"-framework",
|
1111
|
-
CFNetwork,
|
1112
|
-
"$(EXTENSIONS_LDFLAGS)",
|
1113
|
-
);
|
1114
|
-
"OTHER_LDFLAGS[sdk=iphonesimulator3.0][arch=*]" = (
|
1115
|
-
"-framework",
|
1116
|
-
MapKit,
|
1117
|
-
"-framework",
|
1118
|
-
CFNetwork,
|
1119
|
-
"$(EXTENSIONS_LDFLAGS)",
|
1120
|
-
);
|
1121
|
-
"OTHER_LDFLAGS[sdk=iphonesimulator3.1][arch=*]" = (
|
1122
|
-
"-framework",
|
1123
|
-
MapKit,
|
1124
|
-
"-framework",
|
1125
|
-
CFNetwork,
|
1126
|
-
"$(EXTENSIONS_LDFLAGS)",
|
1127
|
-
);
|
1128
1021
|
PRODUCT_NAME = rhorunner;
|
1129
1022
|
SDKROOT = iphoneos4.0;
|
1130
1023
|
TARGETED_DEVICE_FAMILY = "1,2";
|
@@ -1139,6 +1032,7 @@
|
|
1139
1032
|
CODE_SIGN_ENTITLEMENTS = "";
|
1140
1033
|
CODE_SIGN_IDENTITY = "Don't Code Sign";
|
1141
1034
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign";
|
1035
|
+
EXTENSIONS_LDFLAGS = "-filelist $(TARGET_TEMP_DIR)/rhodeslibs.txt";
|
1142
1036
|
GCC_C_LANGUAGE_STANDARD = c99;
|
1143
1037
|
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
|
1144
1038
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
@@ -1147,19 +1041,17 @@
|
|
1147
1041
|
IBC_FLATTEN_NIBS = YES;
|
1148
1042
|
ONLY_ACTIVE_ARCH = YES;
|
1149
1043
|
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
|
1150
|
-
"
|
1151
|
-
"-
|
1152
|
-
|
1153
|
-
"-lrholib",
|
1154
|
-
"-lrhoextlib",
|
1044
|
+
"$(EXTENSIONS_LDFLAGS)",
|
1045
|
+
"-weak_framework",
|
1046
|
+
EventKit,
|
1155
1047
|
);
|
1048
|
+
"OTHER_LDFLAGS[sdk=iphoneos3.2][arch=*]" = "$(EXTENSIONS_LDFLAGS)";
|
1156
1049
|
"OTHER_LDFLAGS[sdk=iphonesimulator*][arch=*]" = (
|
1157
|
-
"
|
1158
|
-
"-
|
1159
|
-
|
1160
|
-
"-lrholib",
|
1161
|
-
"-lrhoextlib",
|
1050
|
+
"$(EXTENSIONS_LDFLAGS)",
|
1051
|
+
"-weak_framework",
|
1052
|
+
EventKit,
|
1162
1053
|
);
|
1054
|
+
"OTHER_LDFLAGS[sdk=iphonesimulator3.2][arch=*]" = "$(EXTENSIONS_LDFLAGS)";
|
1163
1055
|
PREBINDING = NO;
|
1164
1056
|
PROVISIONING_PROFILE = "";
|
1165
1057
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
|
@@ -1175,28 +1067,23 @@
|
|
1175
1067
|
buildSettings = {
|
1176
1068
|
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
1177
1069
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign";
|
1070
|
+
EXTENSIONS_LDFLAGS = "-filelist $(TARGET_TEMP_DIR)/rhodeslibs.txt";
|
1178
1071
|
GCC_C_LANGUAGE_STANDARD = c99;
|
1179
1072
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
1180
1073
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
1181
1074
|
HEADER_SEARCH_PATHS = ../shared;
|
1182
1075
|
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
|
1183
|
-
"
|
1184
|
-
|
1185
|
-
|
1186
|
-
"-lrhosynclib",
|
1187
|
-
"-ltcmalloc",
|
1188
|
-
"-lrholib",
|
1189
|
-
"-lrhoextlib",
|
1076
|
+
"$(EXTENSIONS_LDFLAGS)",
|
1077
|
+
"-weak_framework",
|
1078
|
+
EventKit,
|
1190
1079
|
);
|
1080
|
+
"OTHER_LDFLAGS[sdk=iphoneos3.2][arch=*]" = "$(EXTENSIONS_LDFLAGS)";
|
1191
1081
|
"OTHER_LDFLAGS[sdk=iphonesimulator*][arch=*]" = (
|
1192
|
-
"
|
1193
|
-
|
1194
|
-
|
1195
|
-
"-lrhosynclib",
|
1196
|
-
"-ltcmalloc",
|
1197
|
-
"-lrholib",
|
1198
|
-
"-lrhoextlib",
|
1082
|
+
"$(EXTENSIONS_LDFLAGS)",
|
1083
|
+
"-weak_framework",
|
1084
|
+
EventKit,
|
1199
1085
|
);
|
1086
|
+
"OTHER_LDFLAGS[sdk=iphonesimulator3.2][arch=*]" = "$(EXTENSIONS_LDFLAGS)";
|
1200
1087
|
PREBINDING = NO;
|
1201
1088
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
|
1202
1089
|
SDKROOT = iphoneos3.2;
|
@@ -110,6 +110,7 @@ public:
|
|
110
110
|
void loadUrl(String url);
|
111
111
|
|
112
112
|
boolean isLocalServerStarted();
|
113
|
+
const char* getFreeListeningPort();
|
113
114
|
|
114
115
|
protected:
|
115
116
|
virtual void run();
|
@@ -117,7 +118,6 @@ protected:
|
|
117
118
|
void initHttpServer();
|
118
119
|
void initAppUrls();
|
119
120
|
|
120
|
-
const char* getFreeListeningPort();
|
121
121
|
net::INetRequest& getNet(){ return *m_NetRequest; }
|
122
122
|
};
|
123
123
|
|
@@ -56,7 +56,8 @@ String CRhodesAppBase::canonicalizeRhoUrl(const String& strUrl)
|
|
56
56
|
strncmp("javascript:", strUrl.c_str(), 11 ) == 0 ||
|
57
57
|
strncmp("mailto:", strUrl.c_str(), 7) == 0 ||
|
58
58
|
strncmp("tel:", strUrl.c_str(), 4) == 0 ||
|
59
|
-
strncmp("wtai:", strUrl.c_str(), 5) == 0
|
59
|
+
strncmp("wtai:", strUrl.c_str(), 5) == 0 ||
|
60
|
+
strncmp("sms:", strUrl.c_str(), 4) == 0
|
60
61
|
)
|
61
62
|
return strUrl;
|
62
63
|
|
@@ -50,6 +50,12 @@ VALUE rho_sys_get_property(char* szPropName)
|
|
50
50
|
if (strcasecmp("full_browser",szPropName) == 0)
|
51
51
|
return rho_ruby_create_boolean(1);
|
52
52
|
|
53
|
+
if (strcasecmp("rhodes_port",szPropName) == 0)
|
54
|
+
return rho_ruby_create_integer(atoi(RHODESAPP().getFreeListeningPort()));
|
55
|
+
|
56
|
+
if (strcasecmp("is_emulator",szPropName) == 0)
|
57
|
+
return rho_ruby_create_boolean(0);
|
58
|
+
|
53
59
|
RAWLOG_ERROR1("Unknown Rho::System property : %s", szPropName);
|
54
60
|
|
55
61
|
return rho_ruby_get_NIL();
|
@@ -339,6 +339,18 @@ int rho_sysimpl_get_property(char* szPropName, VALUE* resValue)
|
|
339
339
|
return 1;
|
340
340
|
}
|
341
341
|
|
342
|
+
if (strcasecmp("is_emulator",szPropName) == 0)
|
343
|
+
{
|
344
|
+
bool bEmulator = false;
|
345
|
+
#ifdef OS_WINDOWS
|
346
|
+
bEmulator = true;
|
347
|
+
#else
|
348
|
+
|
349
|
+
#endif
|
350
|
+
*resValue = rho_ruby_create_boolean(bEmulator?1:0);
|
351
|
+
return 1;
|
352
|
+
}
|
353
|
+
|
342
354
|
return 0;
|
343
355
|
}
|
344
356
|
|
data/rhodes.gemspec
CHANGED
@@ -20,7 +20,7 @@ class SpecRunner < MSpecScript
|
|
20
20
|
|
21
21
|
config[:files] << "spec/contacts_spec" unless System.get_property('device_name') == 'Win32'
|
22
22
|
# Disable events specs on Android because emulator doesn't contain Calendar provider
|
23
|
-
config[:files] << "spec/events_spec" unless System.get_property('device_name') == 'Win32' or System.get_property('platform') == 'ANDROID'
|
23
|
+
config[:files] << "spec/events_spec" unless System.get_property('device_name') == 'Win32' or (System.get_property('platform') == 'ANDROID' and System.get_property('is_emulator'))
|
24
24
|
|
25
25
|
config[:files] << "spec/barcode_spec" unless System.get_property('device_name') == 'Win32'
|
26
26
|
config[:files] << "spec/mapview_spec" unless System.get_property('platform') == 'WINDOWS'
|
metadata
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rhodes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 62196425
|
5
|
+
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
|
9
|
+
- 1
|
10
|
+
- beta
|
11
|
+
- 1
|
12
|
+
version: 2.2.1.beta.1
|
11
13
|
platform: ruby
|
12
14
|
authors:
|
13
15
|
- Rhomobile
|
@@ -15,7 +17,7 @@ autorequire:
|
|
15
17
|
bindir: bin
|
16
18
|
cert_chain: []
|
17
19
|
|
18
|
-
date: 2010-10-
|
20
|
+
date: 2010-10-18 00:00:00 -07:00
|
19
21
|
default_executable:
|
20
22
|
dependencies:
|
21
23
|
- !ruby/object:Gem::Dependency
|