rhodes 2.1.0 → 2.2.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +7 -0
- data/README.textile +4 -5
- data/Rakefile +8 -1
- data/lib/build/jake.rb +22 -16
- data/lib/extensions/rhoxml/rexml/cdata.rb +67 -0
- data/lib/extensions/rhoxml/rexml/document.rb +2 -116
- data/lib/extensions/rhoxml/rexml/element.rb +1 -1
- data/lib/extensions/rhoxml/rexml/text.rb +117 -0
- data/lib/framework/rho/render.rb +19 -11
- data/lib/framework/rho/rho.rb +17 -10
- data/lib/framework/rho/rhobluetooth.rb +103 -0
- data/lib/framework/rho/rhocontroller.rb +2 -0
- data/lib/framework/rho/rhoevent.rb +43 -0
- data/lib/framework/rho/rhoevent_bb.rb +80 -0
- data/lib/framework/rho/rhoevent_c.rb +47 -0
- data/lib/framework/rhodes.rb +2 -2
- data/lib/framework/rhom/rhom_db_adapter.rb +2 -1
- data/lib/framework/rhom/rhom_model.rb +9 -3
- data/lib/framework/rhom/rhom_object_factory.rb +46 -22
- data/lib/framework/rhom/rhom_source.rb +12 -10
- data/lib/framework/version.rb +2 -2
- data/lib/rhodes.rb +2 -2
- data/platform/android/Rhodes/AndroidManifest.xml +23 -2
- data/platform/android/Rhodes/gen/com/rhomobile/rhodes/R.java +54 -38
- data/platform/android/Rhodes/jni/include/rhodes.h +3 -0
- data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +2 -2
- data/platform/android/Rhodes/jni/include/rhodes/details/rhojava.inc +4 -0
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +16 -0
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_bluetooth_RhoBluetoothManager.h +21 -0
- data/platform/android/Rhodes/jni/src/bluetooth.cpp +169 -0
- data/platform/android/Rhodes/jni/src/callbacks.cpp +10 -0
- data/platform/android/Rhodes/jni/src/event.cpp +429 -0
- data/platform/android/Rhodes/jni/src/fileapi.cpp +51 -1
- data/platform/android/Rhodes/jni/src/rhodes.cpp +16 -0
- data/platform/android/Rhodes/jni/src/sslimpl.cpp +3 -0
- data/platform/android/Rhodes/res/layout/bt_device_list.xml +42 -0
- data/platform/android/Rhodes/res/layout/bt_device_name.xml +7 -0
- data/platform/android/Rhodes/res/values/strings.xml +8 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +14 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +2 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Push.java +7 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +58 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java +53 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +8 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +144 -3
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/IRhoBluetoothManager.java +66 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothDeviceListActivity.java +201 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManager.java +139 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java +401 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerOld.java +136 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothSession.java +457 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/UUIDHelper.java +71 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +12 -7
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java +19 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +261 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +4 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +2 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/MailUriHandler.java +10 -2
- data/platform/android/build/RhodesSRC_build.files +33 -22
- data/platform/android/build/android.rake +198 -27
- data/platform/android/build/librhodes_build.files +3 -1
- data/platform/android/build/libruby_build.files +4 -1
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBResult.java +2 -2
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBRowResult.java +1 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +7 -4
- data/platform/bb/Hsqldb/src/org/hsqldb/Like.java +3 -3
- data/platform/bb/Hsqldb/src/org/hsqldb/Table.java +3 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Tokenizer.java +1 -1
- data/platform/bb/RubyVM/RubyVM.jdp +1 -0
- data/platform/bb/RubyVM/src/com/rho/RhoConf.java +108 -1
- data/platform/bb/RubyVM/src/com/rho/RhoLogConf.java +7 -1
- data/platform/bb/RubyVM/src/com/rho/RhoRuby.java +7 -4
- data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +7 -1
- data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +1 -1
- data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +21 -23
- data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +19 -10
- data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +8 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +3 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +14 -17
- data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyFile.java +7 -5
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RhoSupport.java +2 -0
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyRuntime.java +10 -1
- data/platform/bb/RubyVM/src/j2me/io/File.java +7 -6
- data/platform/bb/build/RubyVM_build.files +412 -412
- data/platform/bb/build/bb.rake +42 -18
- data/platform/bb/build/hsqldb_build.files +151 -151
- data/platform/bb/build/rhodes_build.files +44 -40
- data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +2 -0
- data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +237 -0
- data/platform/bb/rhodes/platform/common/com/rho/RhodesApplicationPlatform.java +14 -0
- data/platform/bb/rhodes/rhodes.jdp +6 -1
- data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +7 -1
- data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +14 -0
- data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +62 -76
- data/platform/bb/rhodes/src/com/rho/rubyext/RhoCalendar.java +660 -0
- data/platform/bb/rhodes/src/{rhomobile → com/rho/rubyext}/RhoPhonebook.java +95 -38
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +22 -1
- data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +26 -6
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +21 -7
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothManager.java +528 -0
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothPort.java +281 -0
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothScreen.java +119 -0
- data/platform/bb/rhodes/src/rhomobile/camera/CameraFilesListener.java +2 -2
- data/platform/iphone/Classes/AppManager/AppManager.m +70 -7
- data/platform/iphone/Classes/Bluetooth/Bluetooth.h +72 -0
- data/platform/iphone/Classes/Bluetooth/Bluetooth.m +414 -0
- data/platform/iphone/Classes/Event/Event.h +12 -0
- data/platform/iphone/Classes/Event/Event.m +300 -0
- data/platform/iphone/Classes/LogOptionsController.h +2 -1
- data/platform/iphone/Classes/LogOptionsController.m +1 -1
- data/platform/iphone/Classes/LogViewController.h +2 -1
- data/platform/iphone/Classes/MapView/MapViewController.h +2 -1
- data/platform/iphone/Classes/RhoViewController.h +16 -0
- data/platform/iphone/Classes/RhoViewController.m +20 -0
- data/platform/iphone/Classes/Rhodes.h +12 -0
- data/platform/iphone/Classes/Rhodes.m +34 -6
- data/platform/iphone/Classes/Signature/SignatureViewController.h +2 -2
- data/platform/iphone/Classes/Signature/SignatureViewController.m +0 -10
- data/platform/iphone/Classes/SimpleMainView.h +2 -2
- data/platform/iphone/Classes/SimpleMainView.m +5 -14
- data/platform/iphone/Classes/SplashViewController.h +2 -2
- data/platform/iphone/Classes/TabbedMainView.h +2 -2
- data/platform/iphone/Classes/TabbedMainView.m +5 -10
- data/platform/iphone/Info.plist +5 -5
- data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +39 -0
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +47 -4
- data/platform/osx/Rhodes Debugger/NoodleLineNumberView.m +3 -2
- data/platform/shared/common/AutoPointer.h +3 -0
- data/platform/shared/common/RhoConf.cpp +2 -1
- data/platform/shared/common/RhoThread.h +1 -1
- data/platform/shared/common/RhoTime.h +3 -3
- data/platform/shared/common/RhodesApp.cpp +75 -23
- data/platform/shared/common/RhodesApp.h +4 -0
- data/platform/shared/common/RhodesAppBase.h +2 -0
- data/platform/shared/common/ThreadQueue.cpp +23 -18
- data/platform/shared/common/ThreadQueue.h +2 -0
- data/platform/shared/db/res/db/syncdb.schema +39 -39
- data/platform/shared/logging/RhoLogConf.cpp +58 -3
- data/platform/shared/logging/RhoLogConf.h +3 -1
- data/platform/shared/net/CURLNetRequest.cpp +17 -6
- data/platform/shared/net/HttpServer.cpp +125 -25
- data/platform/shared/net/HttpServer.h +4 -3
- data/platform/shared/ruby/ext/bluetooth/bluetooth.i +56 -0
- data/platform/shared/ruby/ext/bluetooth/bluetooth_wrap.c +2563 -0
- data/platform/shared/ruby/ext/calendar/calendar.i +28 -0
- data/platform/shared/ruby/ext/calendar/calendar_wrap.c +2251 -0
- data/platform/shared/ruby/ext/calendar/event.h +41 -0
- data/platform/shared/ruby/ext/calendar/event.i +28 -0
- data/platform/shared/ruby/ext/calendar/event_wrap.c +2151 -0
- data/platform/shared/ruby/ext/rho/rhoruby.c +103 -3
- data/platform/shared/ruby/ext/rho/rhoruby.h +16 -2
- data/platform/shared/ruby/ext/rhoconf/rhoconf.i +12 -0
- data/platform/shared/ruby/ext/rhoconf/rhoconf_wrap.c +101 -0
- data/platform/shared/ruby/ext/system/system.i +14 -0
- data/platform/shared/ruby/ext/system/system_wrap.c +2568 -2208
- data/platform/shared/ruby/main.c +8 -0
- data/platform/shared/rubyext/GeoLocation.cpp +6 -3
- data/platform/shared/rubyext/System.cpp +14 -0
- data/platform/shared/sync/SyncEngine.cpp +9 -1
- data/platform/shared/sync/SyncNotify.cpp +16 -8
- data/platform/shared/sync/SyncNotify.h +1 -0
- data/platform/shared/sync/SyncThread.cpp +7 -12
- data/platform/shared/sync/SyncThread.h +5 -3
- data/platform/wm/build/wm.rake +7 -1
- data/platform/wm/rhodes/Alert.cpp +1 -1
- data/platform/wm/rhodes/MainWindow.cpp +28 -0
- data/platform/wm/rhodes/MainWindow.h +9 -0
- data/platform/wm/rhodes/OutlookApp.cpp +72 -0
- data/platform/wm/rhodes/OutlookApp.h +22 -0
- data/platform/wm/rhodes/Rhodes.cpp +8 -0
- data/platform/wm/rhodes/Rhodes.rc +31 -0
- data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +1274 -0
- data/platform/wm/rhodes/bluetooth/Bluetooth.h +321 -0
- data/platform/wm/rhodes/phonebook/NativeAddressBook.cpp +37 -70
- data/platform/wm/rhodes/phonebook/NativeAddressBook.h +0 -4
- data/platform/wm/rhodes/resource.h +8 -1
- data/platform/wm/rhodes/rho/net/NetRequest.cpp +4 -0
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +6 -4
- data/platform/wm/rhodes/rho/rubyext/calendar.cpp +487 -0
- data/platform/wm/rhodes/rhodes.vcproj +28 -11
- data/platform/wm/rhodes/stdafx.h +1 -0
- data/platform/wm/rubylib/rubylib.vcproj +32 -0
- data/rakefile.rb +8 -1
- data/res/generators/templates/application/Rakefile +1 -1
- data/res/generators/templates/application/app/layout.erb +4 -1
- data/res/generators/templates/application/build.yml +0 -1
- data/res/generators/templates/application/public/css/iphone.css +2 -2
- data/res/generators/templates/application/public/jqtouch/jqtouch-iphone.css +9 -0
- data/res/generators/templates/application/public/jqtouch/jqtouch.css +1 -5
- data/res/generators/templates/application/public/jqtouch/jqtouch.js +3 -2
- data/rhodes.gemspec +1 -1
- data/spec/perfomance_spec/app/Benchmark/benchmark.rb +4 -0
- data/spec/perfomance_spec/app/Benchmark/bulk_results.erb +13 -0
- data/spec/perfomance_spec/app/Benchmark/controller.rb +178 -0
- data/spec/perfomance_spec/app/Benchmark/create_results.erb +13 -0
- data/spec/perfomance_spec/app/Benchmark/customers.erb +35 -0
- data/spec/perfomance_spec/app/Benchmark/index.erb +9 -0
- data/spec/perfomance_spec/app/Benchmark/products.erb +25 -0
- data/spec/perfomance_spec/app/Benchmark/search_results.erb +13 -0
- data/spec/perfomance_spec/app/Customer/customer.rb +6 -0
- data/spec/perfomance_spec/app/Perftest/index.erb +5 -0
- data/spec/perfomance_spec/app/Product/index.erb +25 -0
- data/spec/perfomance_spec/app/Product/product.rb +6 -0
- data/spec/perfomance_spec/app/helpers/application_helper.rb +126 -0
- data/spec/perfomance_spec/app/helpers/browser_helper.rb +18 -0
- data/spec/perfomance_spec/rhoconfig.txt +1 -1
- data/spec/phone_spec/app/Account_s/account_s.rb +5 -2
- data/spec/phone_spec/app/Case/case.rb +1 -0
- data/spec/phone_spec/app/Case_s/case_s.rb +2 -0
- data/spec/phone_spec/app/Data/perftest.json +35 -0
- data/spec/phone_spec/app/Data/testCDATA.xml +11 -0
- data/spec/phone_spec/app/Product/product.rb +1 -1
- data/spec/phone_spec/app/{Spec → spec}/asynchttp_spec.rb +66 -17
- data/spec/phone_spec/app/{Spec → spec}/barcode_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/blobsync_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/bsearch_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/bulksync_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/contacts_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/crypt_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/date_spec.rb +0 -0
- data/spec/phone_spec/app/spec/events_spec.rb +199 -0
- data/spec/phone_spec/app/{Spec → spec}/fixtures/client_info.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/fixtures/object_values.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/json_spec.rb +11 -2
- data/spec/phone_spec/app/{Spec → spec}/mapview_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/nativebar_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/navbar_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/pagination/fixtures/object_values.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/rho_controller_spec.rb +5 -0
- data/spec/phone_spec/app/{Spec → spec}/rho_spec.rb +48 -0
- data/spec/phone_spec/app/{Spec → spec}/rhofile_spec.rb +9 -6
- data/spec/phone_spec/app/{Spec → spec}/rhom_object_spec.rb +188 -9
- data/spec/phone_spec/app/{Spec → spec}/syncengine_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/xml_spec.rb +15 -0
- data/spec/phone_spec/app/{Spec → spec}/xruby_spec.rb +0 -0
- data/spec/phone_spec/app/spec_runner.rb +4 -1
- data/spec/phone_spec/build.yml +2 -1
- metadata +95 -31
- data/platform/bb/rhodes/platform/5.0/com/rho/RhoMainScreen.java +0 -36
- data/platform/bb/rhodes/platform/6.0/com/rho/BrowserAdapter5.java +0 -155
- data/platform/bb/rhodes/platform/6.0/com/rho/RhoMainScreen.java +0 -36
@@ -0,0 +1,321 @@
|
|
1
|
+
|
2
|
+
#pragma once
|
3
|
+
|
4
|
+
#include <windows.h>
|
5
|
+
|
6
|
+
#ifndef OS_WINDOWS
|
7
|
+
|
8
|
+
|
9
|
+
#include <winsock2.h>
|
10
|
+
#include <ws2bth.h>
|
11
|
+
#include <bthapi.h>
|
12
|
+
#include <bthutil.h>
|
13
|
+
|
14
|
+
|
15
|
+
#define MAX_NAME_SIZE 1024
|
16
|
+
#define MAX_ADDR_SIZE 32
|
17
|
+
#define MAX_MESSAGE_SIZE 256
|
18
|
+
|
19
|
+
#ifndef ARRAYSIZE
|
20
|
+
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
|
21
|
+
#endif
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
#define RHO_BT_OK "OK"
|
35
|
+
#define RHO_BT_CANCEL "CANCEL"
|
36
|
+
#define RHO_BT_ERROR "ERROR"
|
37
|
+
|
38
|
+
#define RHO_BT_ROLE_SERVER "ROLE_SERVER"
|
39
|
+
#define RHO_BT_ROLE_CLIENT "ROLE_CLIENT"
|
40
|
+
|
41
|
+
#define RHO_BT_SESSION_INPUT_DATA_RECEIVED "SESSION_INPUT_DATA_RECEIVED"
|
42
|
+
#define RHO_BT_SESSION_DISCONNECT "SESSION_DISCONNECT"
|
43
|
+
|
44
|
+
#define RHO_DISCOVER_TIME_MS 5000
|
45
|
+
#define RHO_DISCOVERED_TIME_MS 5000
|
46
|
+
#define SerialPortConnectGUID L"00001101-0000-1000-8000-00805F9B34FB"
|
47
|
+
|
48
|
+
class RhoBluetoothManager;
|
49
|
+
|
50
|
+
|
51
|
+
// CRhoBluetoothDiscoverDlg dialog
|
52
|
+
class CRhoBluetoothDiscoverDlg : public //CDialog
|
53
|
+
#if defined(OS_WINDOWS)
|
54
|
+
COkCancelModalDialog<CRhoBluetoothDiscoverDlg>
|
55
|
+
#else
|
56
|
+
CDialogImpl <CRhoBluetoothDiscoverDlg>
|
57
|
+
#endif
|
58
|
+
{
|
59
|
+
public:
|
60
|
+
CRhoBluetoothDiscoverDlg ();
|
61
|
+
~CRhoBluetoothDiscoverDlg ();
|
62
|
+
|
63
|
+
enum { IDD = IDD_BLUETOOTH_DISCOVER };
|
64
|
+
|
65
|
+
BEGIN_MSG_MAP(CRhoBluetoothDiscoverDlg)
|
66
|
+
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
|
67
|
+
COMMAND_ID_HANDLER(IDOK, OnOK)
|
68
|
+
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
|
69
|
+
END_MSG_MAP()
|
70
|
+
|
71
|
+
public:
|
72
|
+
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
|
73
|
+
LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
|
74
|
+
LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
|
75
|
+
|
76
|
+
int mSelectedDevice;
|
77
|
+
};
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
// CRhoBluetoothDiscoveredDlg dialog
|
82
|
+
class CRhoBluetoothDiscoveredDlg : public //CDialog
|
83
|
+
#if defined(OS_WINDOWS)
|
84
|
+
COkCancelModalDialog<CRhoBluetoothDiscoveredDlg>
|
85
|
+
#else
|
86
|
+
CDialogImpl <CRhoBluetoothDiscoveredDlg>
|
87
|
+
#endif
|
88
|
+
{
|
89
|
+
public:
|
90
|
+
CRhoBluetoothDiscoveredDlg ();
|
91
|
+
~CRhoBluetoothDiscoveredDlg ();
|
92
|
+
|
93
|
+
enum { IDD = IDD_BLUETOOTH_DISCOVERED };
|
94
|
+
|
95
|
+
BEGIN_MSG_MAP(CRhoBluetoothDiscoveredDlg)
|
96
|
+
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
|
97
|
+
COMMAND_ID_HANDLER(IDOK, OnOK)
|
98
|
+
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
|
99
|
+
END_MSG_MAP()
|
100
|
+
|
101
|
+
public:
|
102
|
+
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
|
103
|
+
LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
|
104
|
+
LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
|
105
|
+
};
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
struct RhoDeviceList
|
110
|
+
{
|
111
|
+
BT_ADDR bthAddress;
|
112
|
+
TCHAR bthName[40];
|
113
|
+
RhoDeviceList *NextDevice;
|
114
|
+
};
|
115
|
+
|
116
|
+
struct RhoDeviceInfo
|
117
|
+
{
|
118
|
+
WCHAR szDeviceNameAddr[MAX_NAME_SIZE];
|
119
|
+
|
120
|
+
};
|
121
|
+
|
122
|
+
struct RhoDataBlock {
|
123
|
+
RhoDataBlock() {
|
124
|
+
buf = NULL;
|
125
|
+
size = 0;
|
126
|
+
next = NULL;
|
127
|
+
}
|
128
|
+
void* buf;
|
129
|
+
int size;
|
130
|
+
RhoDataBlock* next;
|
131
|
+
};
|
132
|
+
|
133
|
+
|
134
|
+
class RhoDiscoverDlg {
|
135
|
+
public:
|
136
|
+
RhoDiscoverDlg();
|
137
|
+
virtual ~RhoDiscoverDlg();
|
138
|
+
|
139
|
+
void openDialog(RhoBluetoothManager* btManager);
|
140
|
+
void updateDeviceListFromManager();
|
141
|
+
|
142
|
+
private:
|
143
|
+
RhoBluetoothManager* mBtManager;
|
144
|
+
CRhoBluetoothDiscoverDlg dlg;
|
145
|
+
HCURSOR hCurs;
|
146
|
+
int mShowCursor;
|
147
|
+
};
|
148
|
+
|
149
|
+
class RhoDiscoveredDlg {
|
150
|
+
public:
|
151
|
+
RhoDiscoveredDlg();
|
152
|
+
virtual ~RhoDiscoveredDlg();
|
153
|
+
|
154
|
+
void openDialog(RhoBluetoothManager* btManager);
|
155
|
+
void closeDialog();
|
156
|
+
|
157
|
+
private:
|
158
|
+
RhoBluetoothManager* mBtManager;
|
159
|
+
CRhoBluetoothDiscoveredDlg dlg;
|
160
|
+
HCURSOR hCurs;
|
161
|
+
int mShowCursor;
|
162
|
+
};
|
163
|
+
|
164
|
+
|
165
|
+
|
166
|
+
DWORD WINAPI runThreadDiscoverDevices(LPVOID data);
|
167
|
+
|
168
|
+
class RhoBluetoothManager {
|
169
|
+
// public API :
|
170
|
+
public :
|
171
|
+
// Ruby API
|
172
|
+
int rho_bluetooth_is_bluetooth_available();
|
173
|
+
void rho_bluetooth_off_bluetooth();
|
174
|
+
void rho_bluetooth_set_device_name(const char* device_name);
|
175
|
+
const char* rho_bluetooth_get_device_name();
|
176
|
+
const char* rho_bluetooth_get_last_error();
|
177
|
+
const char* rho_bluetooth_create_session(const char* role, const char* callback_url);
|
178
|
+
void rho_bluetooth_session_set_callback(const char* connected_device_name, const char* callback_url);
|
179
|
+
void rho_bluetooth_session_disconnect(const char* connected_device_name);
|
180
|
+
int rho_bluetooth_session_get_status(const char* connected_device_name);
|
181
|
+
const char* rho_bluetooth_session_read_string(const char* connected_device_name);
|
182
|
+
void rho_bluetooth_session_write_data(const char* connected_device_name, void* buf, int datasize);
|
183
|
+
|
184
|
+
// access API
|
185
|
+
static RhoBluetoothManager* getInstance();
|
186
|
+
static void releaseAll();
|
187
|
+
|
188
|
+
RhoDiscoverDlg* getDiscoverDlg() {return &mDiscoverDlg;}
|
189
|
+
RhoDiscoveredDlg* getDiscoveredDlg() {return &mDiscoveredDlg;}
|
190
|
+
|
191
|
+
public:
|
192
|
+
RhoBluetoothManager();
|
193
|
+
virtual ~RhoBluetoothManager();
|
194
|
+
|
195
|
+
int DiscoverDevices();
|
196
|
+
int GetNumDevices(){return m_iNumDevices;};
|
197
|
+
int GetDeviceInfo(RhoDeviceInfo *pPeerDevicesInfo);
|
198
|
+
int GetLocalDeviceName(RhoDeviceInfo *pLocalDeviceInfo);
|
199
|
+
int GetDeviceInfo(RhoDeviceInfo *pPeerDeviceInfo, int iSelectedItem);
|
200
|
+
int GetGUID(WCHAR *psz, GUID *pGUID) ;
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
void fireCreateSessionCallBack(const char* status, const char* connected_device_name);
|
205
|
+
|
206
|
+
void onDiscoverDlgSelectDevice(int index);
|
207
|
+
void onDiscoverDlgCancel();
|
208
|
+
void onDiscoveredDlgCancel();
|
209
|
+
void onServerConnectionCreated();
|
210
|
+
|
211
|
+
RhoDiscoverDlg mDiscoverDlg;
|
212
|
+
RhoDiscoveredDlg mDiscoveredDlg;
|
213
|
+
|
214
|
+
void addDataBlock(RhoDataBlock* block);
|
215
|
+
void* readAllBlocks(int* size, int additional_space);
|
216
|
+
int getBlocksSummarySize();
|
217
|
+
|
218
|
+
void terminateDiscoverThread();
|
219
|
+
void terminateDiscoveredThread();
|
220
|
+
|
221
|
+
private:
|
222
|
+
|
223
|
+
void fireRhodeCallback(const char* callback_url, const char* body);
|
224
|
+
void fireSessionCallBack(const char* connected_device_name, const char* event_type);
|
225
|
+
|
226
|
+
void init();
|
227
|
+
void freeAll();
|
228
|
+
void freeAllBlocks();
|
229
|
+
int getBlocksSummarySizeFromBlock(RhoDataBlock* block);
|
230
|
+
|
231
|
+
int RegisterService(BYTE *rgbSdpRecord, int cSdpRecord, int iChannelOffset, UCHAR channel);
|
232
|
+
|
233
|
+
int makeConnection(BT_ADDR bt_addr);
|
234
|
+
|
235
|
+
RhoDeviceList *m_pDeviceList, *m_pStart, *m_pEnd, *m_pCurrentDevice;
|
236
|
+
|
237
|
+
int m_iNumDevices;
|
238
|
+
HANDLE m_hReadThread; // thread with read from socket, infinity
|
239
|
+
HANDLE m_hDiscoverThred; // thread with find BT devices,
|
240
|
+
HANDLE m_hDiscoveredThread; // thread with discovered this device and read data
|
241
|
+
SOCKET m_socketServer;
|
242
|
+
SOCKET m_socketClient;
|
243
|
+
DWORD m_dwBluetoothMode;
|
244
|
+
SOCKADDR_BTH m_saClient;
|
245
|
+
|
246
|
+
bool mIsBluetoothEnabled;
|
247
|
+
|
248
|
+
char mConnectedDeviceName[MAX_NAME_SIZE];
|
249
|
+
char mLocalDeviceName[MAX_NAME_SIZE];
|
250
|
+
|
251
|
+
char mCreateSessionCallback[MAX_NAME_SIZE];
|
252
|
+
char mSessionCallback[MAX_NAME_SIZE];
|
253
|
+
|
254
|
+
RhoDataBlock* mFirstDataBlock;
|
255
|
+
RhoDataBlock* mLastDataBlock;
|
256
|
+
|
257
|
+
char* mReadedString;
|
258
|
+
|
259
|
+
static DWORD WINAPI runThreadReadData(LPVOID voidArg);
|
260
|
+
static DWORD WINAPI runThreadDiscovered(LPVOID data);
|
261
|
+
|
262
|
+
};
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
#endif // OS_WINDOWS
|
294
|
+
|
295
|
+
extern "C" int rho_bluetooth_is_bluetooth_available();
|
296
|
+
|
297
|
+
extern "C" void rho_bluetooth_off_bluetooth();
|
298
|
+
|
299
|
+
extern "C" void rho_bluetooth_set_device_name(const char* device_name);
|
300
|
+
|
301
|
+
extern "C" const char* rho_bluetooth_get_device_name();
|
302
|
+
|
303
|
+
extern "C" const char* rho_bluetooth_get_last_error();
|
304
|
+
|
305
|
+
extern "C" const char* rho_bluetooth_create_session(const char* role, const char* callback_url);
|
306
|
+
|
307
|
+
extern "C" void rho_bluetooth_session_set_callback(const char* connected_device_name, const char* callback_url);
|
308
|
+
|
309
|
+
extern "C" void rho_bluetooth_session_disconnect(const char* connected_device_name);
|
310
|
+
|
311
|
+
extern "C" int rho_bluetooth_session_get_status(const char* connected_device_name);
|
312
|
+
|
313
|
+
extern "C" const char* rho_bluetooth_session_read_string(const char* connected_device_name);
|
314
|
+
|
315
|
+
extern "C" void rho_bluetooth_session_write_string(const char* connected_device_name, const char* str);
|
316
|
+
|
317
|
+
extern "C" VALUE rho_bluetooth_session_read_data(const char* connected_device_name);
|
318
|
+
|
319
|
+
extern "C" void rho_bluetooth_session_write_data(const char* connected_device_name, VALUE data);
|
320
|
+
|
321
|
+
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
#include "ext/phonebook/phonebook.h"
|
4
4
|
#include "NativeAddressBook.h"
|
5
|
+
#include "OutlookApp.h"
|
5
6
|
#include <common/RhoStd.h>
|
6
7
|
|
7
8
|
#define INITGUID
|
@@ -184,20 +185,26 @@ int CABOutlookRecord::remove() {
|
|
184
185
|
//=============================================================================
|
185
186
|
|
186
187
|
CNativeAddressBook::CNativeAddressBook() :
|
187
|
-
|
188
|
+
m_outlookItems(NULL), m_hSim(0)
|
189
|
+
{
|
188
190
|
}
|
189
191
|
|
190
|
-
CNativeAddressBook::~CNativeAddressBook()
|
191
|
-
|
192
|
-
|
192
|
+
CNativeAddressBook::~CNativeAddressBook()
|
193
|
+
{
|
194
|
+
if(m_outlookItems) {
|
195
|
+
m_outlookItems->Release();
|
196
|
+
}
|
193
197
|
|
194
198
|
if (m_hSim)
|
195
199
|
closeSimAB();
|
196
200
|
}
|
197
201
|
|
198
|
-
int CNativeAddressBook::openAB()
|
202
|
+
int CNativeAddressBook::openAB()
|
203
|
+
{
|
199
204
|
initSimAB();
|
200
|
-
|
205
|
+
|
206
|
+
COutlookApp* pApp = COutlookApp::Create();
|
207
|
+
return pApp->getApp() != 0;
|
201
208
|
}
|
202
209
|
|
203
210
|
int CNativeAddressBook::getAllRecords(std::vector<CABRecord*>& records) {
|
@@ -231,66 +238,14 @@ int CNativeAddressBook::deleteRecord(CABRecord* record) {
|
|
231
238
|
|
232
239
|
//=============================================================================
|
233
240
|
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
/*if (hr != S_OK) {
|
240
|
-
// CoInitializeEx failed.
|
241
|
-
LOG(ERROR) + "CoInitializeEx failed.";
|
242
|
-
return false; // Replace with specific error handling.;
|
243
|
-
}*/
|
244
|
-
|
245
|
-
IUnknown* pUnknown = NULL;
|
246
|
-
hr = CoCreateInstance(__uuidof(Application),//CLSID_Application,
|
247
|
-
NULL, CLSCTX_INPROC_SERVER,
|
248
|
-
IID_IUnknown,
|
249
|
-
(void **)&pUnknown);
|
250
|
-
if (hr != S_OK) {
|
251
|
-
// CoCreateInstance failed.
|
252
|
-
LOG(ERROR) + "CoCreateInstance failed.";
|
253
|
-
CoUninitialize();
|
254
|
-
return false; // Replace with specific error handling.;
|
255
|
-
}
|
256
|
-
|
257
|
-
hr = pUnknown->QueryInterface(__uuidof(IPOutlookApp)/*IID_IPOutlookApp*/, (void**)&m_outlookApp);
|
258
|
-
if (hr != S_OK) {
|
259
|
-
// QueryInterface failed.
|
260
|
-
LOG(ERROR) + "QueryInterface failed.";
|
261
|
-
CoUninitialize();
|
262
|
-
return false; // Replace with specific error handling.;
|
263
|
-
}
|
264
|
-
|
265
|
-
hr = m_outlookApp->Logon(NULL);
|
266
|
-
if (hr != S_OK) {
|
267
|
-
// Logon failed.
|
268
|
-
LOG(ERROR) + "Logon failed.";
|
269
|
-
m_outlookApp->Release();
|
270
|
-
CoUninitialize();
|
271
|
-
return false; // Replace with specific error handling.;
|
272
|
-
}
|
273
|
-
|
274
|
-
m_openedOutlookAB = true;
|
275
|
-
return m_openedOutlookAB;
|
276
|
-
}
|
277
|
-
|
278
|
-
int CNativeAddressBook::closeOutlookAB() {
|
279
|
-
if(m_outlookItems) {
|
280
|
-
m_outlookItems->Release();
|
281
|
-
}
|
282
|
-
if(m_outlookApp) {
|
283
|
-
m_outlookApp->Release();
|
284
|
-
CoUninitialize();
|
285
|
-
}
|
286
|
-
return 1;
|
287
|
-
}
|
288
|
-
|
289
|
-
bool CNativeAddressBook::getOutlookItems() {
|
290
|
-
if( (m_outlookApp!=NULL)&&(m_outlookItems==NULL)) {
|
241
|
+
bool CNativeAddressBook::getOutlookItems()
|
242
|
+
{
|
243
|
+
IPOutlookApp* pApp = COutlookApp::getInstance()->getApp();
|
244
|
+
if( (pApp!=NULL)&&(m_outlookItems==NULL))
|
245
|
+
{
|
291
246
|
//
|
292
247
|
IFolder* polFolder;
|
293
|
-
HRESULT res =
|
248
|
+
HRESULT res = pApp->GetDefaultFolder(olFolderContacts, &polFolder);
|
294
249
|
if (res != S_OK) {
|
295
250
|
// QueryInterface failed.
|
296
251
|
LOG(ERROR) + "GetDefaultFolder failed.";
|
@@ -310,8 +265,12 @@ bool CNativeAddressBook::getOutlookItems() {
|
|
310
265
|
return true;
|
311
266
|
}
|
312
267
|
|
313
|
-
int CNativeAddressBook::getAllOutlookRecords(std::vector<CABRecord*>& records)
|
314
|
-
|
268
|
+
int CNativeAddressBook::getAllOutlookRecords(std::vector<CABRecord*>& records)
|
269
|
+
{
|
270
|
+
IPOutlookApp* pApp = COutlookApp::getInstance()->getApp();
|
271
|
+
|
272
|
+
if(pApp && getOutlookItems())
|
273
|
+
{
|
315
274
|
int size;
|
316
275
|
m_outlookItems->get_Count(&size);
|
317
276
|
|
@@ -331,8 +290,12 @@ int CNativeAddressBook::getAllOutlookRecords(std::vector<CABRecord*>& records) {
|
|
331
290
|
return 1;
|
332
291
|
}
|
333
292
|
|
334
|
-
CABRecord* CNativeAddressBook::getOutlookRecord(long oid)
|
335
|
-
|
293
|
+
CABRecord* CNativeAddressBook::getOutlookRecord(long oid)
|
294
|
+
{
|
295
|
+
IPOutlookApp* pApp = COutlookApp::getInstance()->getApp();
|
296
|
+
|
297
|
+
if(pApp && getOutlookItems())
|
298
|
+
{
|
336
299
|
DWORD index;
|
337
300
|
if(S_OK==GetItemIndexFromOid(m_outlookItems,oid,&index)) {
|
338
301
|
IContact * pContact;
|
@@ -351,8 +314,12 @@ CABRecord* CNativeAddressBook::getOutlookRecord(long oid) {
|
|
351
314
|
return NULL;
|
352
315
|
}
|
353
316
|
|
354
|
-
int CNativeAddressBook::addOutlookRecord(CABOutlookRecord* record)
|
355
|
-
|
317
|
+
int CNativeAddressBook::addOutlookRecord(CABOutlookRecord* record)
|
318
|
+
{
|
319
|
+
IPOutlookApp* pApp = COutlookApp::getInstance()->getApp();
|
320
|
+
|
321
|
+
if(pApp && getOutlookItems())
|
322
|
+
{
|
356
323
|
if(SUCCEEDED(m_outlookItems->Add((IDispatch**)&record->m_pContact))) {
|
357
324
|
record->save();
|
358
325
|
}
|