Mercurial > dwindows
annotate android/dw.cpp @ 3005:522ef24b0aba default tip
GTK4: Fix even more deprecation warnings in GTK 4.10 and later.
Migrate to GtkAlertDialog for 4.10 from GtkMessageDialog.
Still need to center the dialog or something.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 20 Dec 2023 05:17:54 +0000 |
parents | 392f0b3dd502 |
children |
rev | line source |
---|---|
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2 * Dynamic Windows: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3 * A GTK like GUI implementation of the Android GUI. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4 * |
2947
edb4307ac7ce
Update copyright date, readme, license and changelog for upcoming release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2909
diff
changeset
|
5 * (C) 2011-2023 Brian Smith <brian@dbsoft.org> |
2751
ee1cfa7d645e
Update copyright dates for the new year 2022.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2736
diff
changeset
|
6 * (C) 2011-2022 Mark Hessling <mark@rexx.org> |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7 * |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
8 * Requires Android API 26 (Oreo) or higher. |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
9 * |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
10 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
11 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
12 #include "dw.h" |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
13 #include <stdlib.h> |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
14 #include <string.h> |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
15 #include <sys/utsname.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
16 #include <sys/socket.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
17 #include <sys/un.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
18 #include <sys/mman.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
19 #include <sys/types.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
20 #include <sys/stat.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
21 #include <dlfcn.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
22 #include <errno.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
23 #include <fcntl.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
24 #include <unistd.h> |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
25 #if defined(__ANDROID__) && (__ANDROID_API__+0) < 21 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
26 #include <sys/syscall.h> |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
27 |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
28 /* Until Android API version 21 NDK does not define getsid wrapper in libc, although there is the corresponding syscall */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
29 inline pid_t getsid(pid_t pid) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
30 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
31 return static_cast< pid_t >(::syscall(__NR_getsid, pid)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
32 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
33 #endif |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
34 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
35 #ifdef __cplusplus |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
36 extern "C" { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
37 #endif |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
38 |
2484
cb5b67154399
Android: The DWindows class should be org.dbsoft.dwindows, remove dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2483
diff
changeset
|
39 #define DW_CLASS_NAME "org/dbsoft/dwindows/DWindows" |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
40 |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
41 /* Dynamic Windows internal variables */ |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
42 static char _dw_app_id[_DW_APP_ID_SIZE+1]= {0}; |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
43 static char _dw_app_name[_DW_APP_ID_SIZE+1]= {0}; |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
44 static char _dw_exec_dir[MAX_PATH+1] = {0}; |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
45 static char _dw_user_dir[MAX_PATH+1] = {0}; |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
46 static int _dw_android_api = 0; |
2834
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
47 static int _dw_container_mode = DW_CONTAINER_MODE_DEFAULT; |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
48 static int _dw_render_safe_mode = DW_FEATURE_ENABLED; |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
49 |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
50 static pthread_key_t _dw_env_key; |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
51 static pthread_key_t _dw_fgcolor_key; |
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
52 static pthread_key_t _dw_bgcolor_key; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
53 static HEV _dw_main_event; |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
54 static JavaVM *_dw_jvm; |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
55 static jobject _dw_obj; |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
56 static jobject _dw_class_loader; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
57 static jmethodID _dw_class_method; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
58 |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
59 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *pjvm, void *reserved) |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
60 { |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
61 JNIEnv *env; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
62 jclass randomClass, classClass, classLoaderClass; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
63 jmethodID getClassLoaderMethod; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
64 |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
65 /* Initialize the handle to the Java Virtual Machine */ |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
66 _dw_jvm = pjvm; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
67 _dw_jvm->GetEnv((void**)&env, JNI_VERSION_1_6); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
68 |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
69 randomClass = env->FindClass(DW_CLASS_NAME); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
70 classClass = env->GetObjectClass(randomClass); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
71 classLoaderClass = env->FindClass("java/lang/ClassLoader"); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
72 getClassLoaderMethod = env->GetMethodID(classClass, "getClassLoader", |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
73 "()Ljava/lang/ClassLoader;"); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
74 _dw_class_loader = env->NewGlobalRef(env->CallObjectMethod(randomClass, getClassLoaderMethod)); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
75 _dw_class_method = env->GetMethodID(classLoaderClass, "findClass", |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
76 "(Ljava/lang/String;)Ljava/lang/Class;"); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
77 |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
78 return JNI_VERSION_1_6; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
79 } |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
80 |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
81 jclass _dw_find_class(JNIEnv *env, const char* name) |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
82 { |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
83 jstring jname = env->NewStringUTF(name); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
84 jclass clazz = static_cast<jclass>(env->CallObjectMethod(_dw_class_loader, _dw_class_method, jname)); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
85 env->DeleteLocalRef(jname); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
86 return clazz; |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
87 } |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
88 |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
89 // Do a quick check if an exception occurred... |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
90 // Display then clear it so we can continue... |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
91 // Return TRUE if an exception had occurred |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
92 int _dw_jni_check_exception(JNIEnv *env) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
93 { |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
94 if(env->ExceptionCheck()) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
95 { |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
96 env->ExceptionDescribe(); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
97 env->ExceptionClear(); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
98 return TRUE; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
99 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
100 return FALSE; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
101 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
102 |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
103 #define _DW_REFERENCE_NONE 0 |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
104 #define _DW_REFERENCE_WEAK 1 |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
105 #define _DW_REFERENCE_STRONG 2 |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
106 |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
107 // Handle returns from JNI functions and make sure the |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
108 // return value is sane... |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
109 // Reference: 0 no reference 1 weak 2 strong |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
110 jobject _dw_jni_check_result(JNIEnv *env, jobject obj, int reference) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
111 { |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
112 jobject result = nullptr; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
113 |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
114 if(!_dw_jni_check_exception(env) && obj) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
115 { |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
116 if(reference == _DW_REFERENCE_WEAK) |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
117 result = env->NewWeakGlobalRef(obj); |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
118 else if(reference == _DW_REFERENCE_STRONG) |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
119 result = env->NewGlobalRef(obj); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
120 else |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
121 result = obj; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
122 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
123 return result; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
124 } |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
125 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
126 /* Call the dwmain entry point, Android has no args, so just pass the app path */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
127 void _dw_main_launch(char *arg) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
128 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
129 static HEV startup = nullptr; |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
130 |
2496
3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2495
diff
changeset
|
131 /* Safety check to prevent multiple initializations... */ |
2511
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
132 if(startup) |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
133 { |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
134 /* If we are called a second time.. post the event... |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
135 * so we stop waiting. |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
136 */ |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
137 dw_event_post(startup); |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
138 return; |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
139 } |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
140 else |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
141 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
142 char *argv[2] = {arg, nullptr}; |
2511
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
143 |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
144 /* Wait for a short while to see if we get called again... |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
145 * if we get called again we will be posted, if not... |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
146 * just wait for the timer to expire. |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
147 */ |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
148 startup = dw_event_new(); |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
149 /* Wait for 10 seconds to see if we get called again */ |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
150 dw_event_wait(startup, 10000); |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
151 |
0945d0428dfe
Android: New workaround for activity relaunch at startup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
152 /* Continue after being posted or after our timeout */ |
2513
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
153 dwmain(1, argv); |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
154 } |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
155 free(arg); |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
156 } |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
157 |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
158 /* Called when DWindows activity starts up... so we create a thread |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
159 * to call the dwmain() entrypoint... then we wait for dw_main() |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
160 * to be called and return. |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
161 * Parameters: |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
162 * path: The path to the Android app. |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
163 */ |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
164 JNIEXPORT void JNICALL |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
165 Java_org_dbsoft_dwindows_DWindows_dwindowsInit(JNIEnv* env, jobject obj, jstring apppath, jstring appcache, jstring appID) |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
166 { |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
167 const char *arg = env->GetStringUTFChars((jstring)apppath, nullptr); |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
168 const char *cache = env->GetStringUTFChars((jstring)appcache, nullptr); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
169 const char *appid = env->GetStringUTFChars((jstring)appID, nullptr); |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
170 char *home = getenv("HOME"); |
2513
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
171 |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
172 if(!_dw_main_event) |
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
173 { |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
174 /* Save our class object pointer for later */ |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
175 _dw_obj = env->NewGlobalRef(obj); |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
176 |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
177 /* Save the JNIEnv for the main thread */ |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
178 pthread_key_create(&_dw_env_key, nullptr); |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
179 pthread_setspecific(_dw_env_key, env); |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
180 pthread_key_create(&_dw_fgcolor_key, nullptr); |
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
181 pthread_setspecific(_dw_fgcolor_key, nullptr); |
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
182 pthread_key_create(&_dw_bgcolor_key, nullptr); |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
183 pthread_setspecific(_dw_bgcolor_key, (void *)DW_RGB_TRANSPARENT); |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
184 |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
185 /* Create the dwmain event */ |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
186 _dw_main_event = dw_event_new(); |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
187 } |
2513
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
188 |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
189 if(cache) |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
190 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
191 /* Store the passed in path for dw_app_dir() */ |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
192 strncpy(_dw_exec_dir, cache, MAX_PATH); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
193 env->ReleaseStringUTFChars(appcache, cache); |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
194 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
195 /* Store the best path for dw_user_dir() */ |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
196 if(home) |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
197 strncpy(_dw_user_dir, home, MAX_PATH); |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
198 else if(arg) |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
199 strncpy(_dw_user_dir, arg, MAX_PATH); |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
200 else |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2657
diff
changeset
|
201 strcpy(_dw_user_dir, "/"); |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
202 if(appid) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
203 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
204 /* Store our reported Android AppID */ |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
205 strncpy(_dw_app_id, appid, _DW_APP_ID_SIZE); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
206 env->ReleaseStringUTFChars(appID, appid); |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
207 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
208 |
2513
0fa54c340902
Android: Second try at that new fix... move it into _dw_main_launch()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2511
diff
changeset
|
209 /* Launch the new thread to execute dwmain() */ |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
210 dw_thread_new((void *) _dw_main_launch, strdup(arg ? arg : ""), 0); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
211 |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
212 if(arg) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
213 env->ReleaseStringUTFChars(apppath, arg); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
214 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
215 |
2626
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
216 typedef struct _dwsighandler |
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
217 { |
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
218 struct _dwsighandler *next; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
219 ULONG message; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
220 HWND window; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
221 int id; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
222 void *signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
223 void *discfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
224 void *data; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
225 |
2626
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
226 } DWSignalHandler; |
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
227 |
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
228 static DWSignalHandler *DWRoot = nullptr; |
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
229 |
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
230 DWSignalHandler *_dw_get_handler(HWND window, int messageid) |
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
231 { |
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
232 DWSignalHandler *tmp = DWRoot; |
2483
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
233 JNIEnv *env; |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
234 |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
235 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
236 /* Find any callbacks for this function */ |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
237 while (tmp) { |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
238 if (tmp->message == messageid && env->IsSameObject(window, tmp->window)) { |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
239 return tmp; |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
240 } |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
241 tmp = tmp->next; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
242 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
243 } |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
244 return nullptr; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
245 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
246 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
247 typedef struct |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
248 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
249 ULONG message; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
250 char name[30]; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
251 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
252 } DWSignalList; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
253 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
254 /* List of signals */ |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
255 static DWSignalList DWSignalTranslate[] = { |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
256 { _DW_EVENT_CONFIGURE, DW_SIGNAL_CONFIGURE }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
257 { _DW_EVENT_KEY_PRESS, DW_SIGNAL_KEY_PRESS }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
258 { _DW_EVENT_BUTTON_PRESS, DW_SIGNAL_BUTTON_PRESS }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
259 { _DW_EVENT_BUTTON_RELEASE, DW_SIGNAL_BUTTON_RELEASE }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
260 { _DW_EVENT_MOTION_NOTIFY, DW_SIGNAL_MOTION_NOTIFY }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
261 { _DW_EVENT_DELETE, DW_SIGNAL_DELETE }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
262 { _DW_EVENT_EXPOSE, DW_SIGNAL_EXPOSE }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
263 { _DW_EVENT_CLICKED, DW_SIGNAL_CLICKED }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
264 { _DW_EVENT_ITEM_ENTER, DW_SIGNAL_ITEM_ENTER }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
265 { _DW_EVENT_ITEM_CONTEXT, DW_SIGNAL_ITEM_CONTEXT }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
266 { _DW_EVENT_LIST_SELECT, DW_SIGNAL_LIST_SELECT }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
267 { _DW_EVENT_ITEM_SELECT, DW_SIGNAL_ITEM_SELECT }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
268 { _DW_EVENT_SET_FOCUS, DW_SIGNAL_SET_FOCUS }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
269 { _DW_EVENT_VALUE_CHANGED, DW_SIGNAL_VALUE_CHANGED }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
270 { _DW_EVENT_SWITCH_PAGE, DW_SIGNAL_SWITCH_PAGE }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
271 { _DW_EVENT_TREE_EXPAND, DW_SIGNAL_TREE_EXPAND }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
272 { _DW_EVENT_COLUMN_CLICK, DW_SIGNAL_COLUMN_CLICK }, |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
273 { _DW_EVENT_HTML_RESULT, DW_SIGNAL_HTML_RESULT }, |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
274 { _DW_EVENT_HTML_CHANGED, DW_SIGNAL_HTML_CHANGED }, |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
275 { _DW_EVENT_HTML_MESSAGE, DW_SIGNAL_HTML_MESSAGE }, |
2983
81611e54ff1d
Android: Fix DW_SIGNAL_HTML_MESSAGE, there were 3 problems in the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2982
diff
changeset
|
276 { 0, "" } |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
277 }; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
278 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
279 #define _DW_EVENT_PARAM_SIZE 10 |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
280 |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
281 void _dw_render_create_bitmap(HWND handle); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
282 void _dw_render_finish_draw(HWND handle); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
283 |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
284 |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
285 int _dw_event_handler2(void **params) |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
286 { |
2626
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
287 DWSignalHandler *handler = (DWSignalHandler *)params[9]; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
288 int message = DW_POINTER_TO_INT(params[8]); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
289 int retval = -1; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
290 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
291 if(handler) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
292 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
293 switch(message) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
294 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
295 /* Timer event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
296 case _DW_EVENT_TIMER: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
297 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
298 int (*timerfunc)(void *) = (int (* API)(void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
299 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
300 if(!timerfunc(handler->data)) |
2584
2acc7ba5dea0
Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
301 dw_timer_disconnect(handler->window); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
302 retval = 0; |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
303 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
304 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
305 /* Configure/Resize event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
306 case _DW_EVENT_CONFIGURE: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
307 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
308 int (*sizefunc)(HWND, int, int, void *) = (int (* API)(HWND, int, int, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
309 int width = DW_POINTER_TO_INT(params[3]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
310 int height = DW_POINTER_TO_INT(params[4]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
311 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
312 if(width > 0 && height > 0) |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
313 retval = sizefunc(handler->window, width, height, handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
314 else |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
315 retval = 0; |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
316 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
317 } |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
318 case _DW_EVENT_KEY_PRESS: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
319 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
320 int (*keypressfunc)(HWND, char, int, int, void *, char *) = (int (* API)(HWND, char, int, int, void *, char *))handler->signalfunction; |
2596
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
321 char *utf8 = (char *)params[1], ch = (char)DW_POINTER_TO_INT(params[3]); |
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
322 int vk = DW_POINTER_TO_INT(params[4]), special = DW_POINTER_TO_INT(params[5]); |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
323 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
324 retval = keypressfunc(handler->window, ch, (int)vk, special, handler->data, utf8); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
325 if(utf8) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
326 free(utf8); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
327 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
328 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
329 /* Button press and release event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
330 case _DW_EVENT_BUTTON_PRESS: |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
331 case _DW_EVENT_BUTTON_RELEASE: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
332 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
333 int (* API buttonfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction; |
2608
a11522c30345
Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2607
diff
changeset
|
334 int button = params[5] ? DW_POINTER_TO_INT(params[5]) : 1; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
335 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
336 retval = buttonfunc(handler->window, DW_POINTER_TO_INT(params[3]), DW_POINTER_TO_INT(params[4]), button, handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
337 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
338 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
339 /* Motion notify event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
340 case _DW_EVENT_MOTION_NOTIFY: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
341 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
342 int (* API motionfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
343 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
344 retval = motionfunc(handler->window, DW_POINTER_TO_INT(params[3]), DW_POINTER_TO_INT(params[4]), DW_POINTER_TO_INT(params[5]), handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
345 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
346 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
347 /* Window close event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
348 case _DW_EVENT_DELETE: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
349 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
350 int (* API closefunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction; |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
351 retval = closefunc(handler->window, handler->data); |
2812
723b79981427
Android: I think we need to close the window if the DELETE handler does not
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2810
diff
changeset
|
352 if(retval < 1) |
723b79981427
Android: I think we need to close the window if the DELETE handler does not
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2810
diff
changeset
|
353 dw_window_destroy(handler->window); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
354 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
355 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
356 /* Window expose/draw event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
357 case _DW_EVENT_EXPOSE: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
358 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
359 DWExpose exp; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
360 int (* API exposefunc)(HWND, DWExpose *, void *) = (int (* API)(HWND, DWExpose *, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
361 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
362 exp.x = DW_POINTER_TO_INT(params[3]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
363 exp.y = DW_POINTER_TO_INT(params[4]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
364 exp.width = DW_POINTER_TO_INT(params[5]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
365 exp.height = DW_POINTER_TO_INT(params[6]); |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
366 if(_dw_render_safe_mode) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
367 _dw_render_create_bitmap(handler->window); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
368 retval = exposefunc(handler->window, &exp, handler->data); |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
369 if(_dw_render_safe_mode) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
370 _dw_render_finish_draw(handler->window); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
371 /* Return here so we don't free params since we |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
372 * are always handling expose/draw on the UI thread. |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
373 */ |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
374 return retval; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
375 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
376 /* Clicked event for buttons and menu items */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
377 case _DW_EVENT_CLICKED: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
378 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
379 int (* API clickfunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
380 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
381 retval = clickfunc(handler->window, handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
382 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
383 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
384 /* Container class selection event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
385 case _DW_EVENT_ITEM_ENTER: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
386 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
387 int (*containerselectfunc)(HWND, char *, void *, void *) =(int (* API)(HWND, char *, void *, void *)) handler->signalfunction; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
388 char *text = (char *)params[1]; |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
389 |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
390 retval = containerselectfunc(handler->window, text, handler->data, params[7]); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
391 if(text) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
392 free(text); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
393 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
394 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
395 /* Container context menu event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
396 case _DW_EVENT_ITEM_CONTEXT: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
397 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
398 int (* API containercontextfunc)(HWND, char *, int, int, void *, void *) = (int (* API)(HWND, char *, int, int, void *, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
399 char *text = (char *)params[1]; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
400 void *user = params[7]; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
401 int x = DW_POINTER_TO_INT(params[3]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
402 int y = DW_POINTER_TO_INT(params[4]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
403 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
404 retval = containercontextfunc(handler->window, text, x, y, handler->data, user); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
405 if(text) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
406 free(text); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
407 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
408 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
409 /* Generic selection changed event for several classes */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
410 case _DW_EVENT_LIST_SELECT: |
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
411 case _DW_EVENT_VALUE_CHANGED: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
412 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
413 int (* API valuechangedfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
414 int selected = DW_POINTER_TO_INT(params[3]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
415 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
416 retval = valuechangedfunc(handler->window, selected, handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
417 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
418 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
419 /* Tree class selection event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
420 case _DW_EVENT_ITEM_SELECT: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
421 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
422 int (* API treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (* API)(HWND, HTREEITEM, char *, void *, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
423 char *text = (char *)params[1]; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
424 void *user = params[7]; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
425 |
2776
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
426 retval = treeselectfunc(handler->window, (jobject)params[0], text, handler->data, user); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
427 if(text) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
428 free(text); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
429 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
430 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
431 /* Set Focus event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
432 case _DW_EVENT_SET_FOCUS: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
433 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
434 int (* API setfocusfunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
435 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
436 retval = setfocusfunc(handler->window, handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
437 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
438 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
439 /* Notebook page change event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
440 case _DW_EVENT_SWITCH_PAGE: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
441 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
442 int (* API switchpagefunc)(HWND, unsigned long, void *) = (int (* API)(HWND, unsigned long, void *))handler->signalfunction; |
2495
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
443 unsigned long pageID = DW_POINTER_TO_INT(params[3]); |
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
444 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
445 retval = switchpagefunc(handler->window, pageID, handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
446 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
447 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
448 /* Tree expand event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
449 case _DW_EVENT_TREE_EXPAND: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
450 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
451 int (* API treeexpandfunc)(HWND, HTREEITEM, void *) = (int (* API)(HWND, HTREEITEM, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
452 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
453 retval = treeexpandfunc(handler->window, (HTREEITEM)params[0], handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
454 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
455 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
456 /* Column click event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
457 case _DW_EVENT_COLUMN_CLICK: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
458 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
459 int (* API clickcolumnfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
460 int column_num = DW_POINTER_TO_INT(params[3]); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
461 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
462 retval = clickcolumnfunc(handler->window, column_num, handler->data); |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
463 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
464 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
465 /* HTML result event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
466 case _DW_EVENT_HTML_RESULT: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
467 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
468 int (* API htmlresultfunc)(HWND, int, char *, void *, void *) = (int (* API)(HWND, int, char *, void *, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
469 char *result = (char *)params[1]; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
470 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
471 retval = htmlresultfunc(handler->window, result ? DW_ERROR_NONE : DW_ERROR_UNKNOWN, result, params[7], handler->data); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
472 if(result) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
473 free(result); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
474 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
475 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
476 /* HTML changed event */ |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
477 case _DW_EVENT_HTML_CHANGED: |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
478 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
479 int (* API htmlchangedfunc)(HWND, int, char *, void *) = (int (* API)(HWND, int, char *, void *))handler->signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
480 char *uri = (char *)params[1]; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
481 |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
482 retval = htmlchangedfunc(handler->window, DW_POINTER_TO_INT(params[3]), uri, handler->data); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
483 if(uri) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
484 free(uri); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
485 break; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
486 } |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
487 /* HTML message event */ |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
488 case _DW_EVENT_HTML_MESSAGE: |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
489 { |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
490 int (* API htmlmessagefunc)(HWND, char *, char *, void *) = (int (* API)(HWND, char *, char *, void *))handler->signalfunction; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
491 char *name = (char *)params[1]; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
492 char *body = (char *)params[2]; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
493 |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
494 retval = htmlmessagefunc(handler->window, name, body, handler->data); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
495 if(name) |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
496 free(name); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
497 if(body) |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
498 free(body); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
499 break; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
500 } |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
501 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
502 } |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
503 return retval; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
504 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
505 |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
506 /* We create queues of events... the oldest event indexed by |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
507 * _dw_event_queue->head, the newest by _dw_event_queue->tail. |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
508 */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
509 #define _DW_EVENT_QUEUE_LENGTH 50 |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
510 |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
511 typedef struct |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
512 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
513 int head, tail; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
514 HMTX mutex; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
515 void *queue[_DW_EVENT_QUEUE_LENGTH][_DW_EVENT_PARAM_SIZE]; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
516 } _dw_event_queue; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
517 |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
518 /* Higher priority draw queue gets handled first */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
519 _dw_event_queue _dw_high = { -1, -1 }; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
520 _dw_event_queue _dw_low = { -1, -1 }; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
521 int _dw_main_active = TRUE; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
522 DWTID _dw_main_thread = -1; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
523 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
524 /* Add a new event to the queue if there is space. |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
525 * This will be handled in the thread running dw_main() |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
526 */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
527 int _dw_queue_event(void **params, _dw_event_queue *queue) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
528 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
529 int newtail = queue->tail + 1; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
530 int retval = FALSE; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
531 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
532 /* Initialize the mutex if necessary... return on failure. */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
533 if(!queue->mutex && !(queue->mutex = dw_mutex_new())) |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
534 return retval; |
2632
04d5c8147e33
Android: mainSleep seems to be hanging, so switch to using dw_mutex_trylock()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2631
diff
changeset
|
535 |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
536 /* Protect the queue in a mutex... hold for as short as possible */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
537 while(dw_mutex_trylock(queue->mutex) != DW_ERROR_NONE) |
2632
04d5c8147e33
Android: mainSleep seems to be hanging, so switch to using dw_mutex_trylock()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2631
diff
changeset
|
538 sched_yield(); |
04d5c8147e33
Android: mainSleep seems to be hanging, so switch to using dw_mutex_trylock()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2631
diff
changeset
|
539 |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
540 /* If we are at the end of the queue, loop back to the start. */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
541 if(newtail >= _DW_EVENT_QUEUE_LENGTH) |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
542 newtail = 0; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
543 /* If the new tail will be at the head, the event queue |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
544 * if full... drop the event. |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
545 */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
546 if(newtail != queue->head) |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
547 { |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
548 /* If the queue was empty, head and tail will be the same. */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
549 if (queue->head == -1) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
550 queue->head = newtail; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
551 /* Copy the new event from the stack into the event queue. */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
552 memcpy(&queue->queue[newtail], params, _DW_EVENT_PARAM_SIZE * sizeof(void *)); |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
553 /* Update the tail index */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
554 queue->tail = newtail; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
555 /* Successfully queued event */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
556 retval = TRUE; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
557 } |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
558 dw_mutex_unlock(queue->mutex); |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
559 return retval; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
560 } |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
561 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
562 /* If there is an event waiting, pop it off the queue, |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
563 * advance the head and return TRUE. |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
564 * If there are no events waiting return FALSE |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
565 */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
566 int _dw_dequeue_event(void **params, _dw_event_queue *queue) |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
567 { |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
568 int retval = FALSE; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
569 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
570 /* Initialize the mutex if necessary... return FALSE on failure. */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
571 if(!queue->mutex && !(queue->mutex = dw_mutex_new())) |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
572 return retval; |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
573 dw_mutex_lock(queue->mutex); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
574 if(queue->head != -1) |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
575 { |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
576 /* Copy the params out of the queue so it can be filled in by new events */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
577 memcpy(params, &queue->queue[queue->head], _DW_EVENT_PARAM_SIZE * sizeof(void *)); |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
578 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
579 /* If the head is the same as the tail... |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
580 * there was only one event... so set the |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
581 * head and tail to -1 to indicate empty. |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
582 */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
583 if(queue->head == queue->tail) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
584 queue->head = queue->tail = -1; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
585 else |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
586 { |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
587 /* Advance the head */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
588 queue->head++; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
589 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
590 /* If we are at the end of the queue, loop back to the start. */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
591 if(queue->head >= _DW_EVENT_QUEUE_LENGTH) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
592 queue->head = 0; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
593 } |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
594 /* Successfully dequeued event */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
595 retval = TRUE; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
596 /* Notify dw_main() that there is an event to handle */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
597 dw_event_post(_dw_main_event); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
598 } |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
599 dw_mutex_unlock(queue->mutex); |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
600 return retval; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
601 } |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
602 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
603 int _dw_event_handler(jobject object, void **params) |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
604 { |
2670
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2668
diff
changeset
|
605 int messageid = DW_POINTER_TO_INT(params[8]); |
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2668
diff
changeset
|
606 DWSignalHandler *handler = _dw_get_handler(object, messageid); |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
607 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
608 if (handler) |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
609 { |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
610 params[9] = (void *)handler; |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
611 |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
612 /* When we are not in safe rendering mode, |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
613 * We have to handle draw events in the main thread. |
2983
81611e54ff1d
Android: Fix DW_SIGNAL_HTML_MESSAGE, there were 3 problems in the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2982
diff
changeset
|
614 * If it isn't a draw event, queue the event. |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
615 */ |
2670
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2668
diff
changeset
|
616 if(DW_POINTER_TO_INT(params[8]) != _DW_EVENT_EXPOSE) |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
617 { |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
618 /* Push the new event onto the queue if it fits */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
619 _dw_queue_event(params, &_dw_high); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
620 } |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
621 else if(_dw_render_safe_mode == DW_FEATURE_ENABLED) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
622 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
623 /* Push the new event onto the high priority queue if it fits */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
624 _dw_queue_event(params, &_dw_low); |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
625 } |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
626 else |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
627 return _dw_event_handler2(params); |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
628 |
2670
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2668
diff
changeset
|
629 } /* If we don't have a handler, destroy the window */ |
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2668
diff
changeset
|
630 else if(messageid == _DW_EVENT_DELETE) |
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2668
diff
changeset
|
631 dw_window_destroy(object); |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
632 return 0; |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
633 } |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
634 |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
635 /* |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
636 * Entry location for all event handlers from the Android UI |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
637 */ |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
638 JNIEXPORT jint JNICALL |
2484
cb5b67154399
Android: The DWindows class should be org.dbsoft.dwindows, remove dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2483
diff
changeset
|
639 Java_org_dbsoft_dwindows_DWindows_eventHandler(JNIEnv* env, jobject obj, jobject obj1, jobject obj2, |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
640 jint message, jstring str1, jstring str2, |
2499
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
641 jint inta, jint intb, jint intc, jint intd) { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
642 const char *utf81 = str1 ? env->GetStringUTFChars(str1, nullptr) : nullptr; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
643 const char *utf82 = str2 ? env->GetStringUTFChars(str2, nullptr) : nullptr; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
644 void *params[_DW_EVENT_PARAM_SIZE] = { DW_POINTER(obj2), DW_POINTER(utf81 ? strdup(utf81) : nullptr), |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
645 DW_POINTER(utf82 ? strdup(utf82) : nullptr), |
2785
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
646 DW_INT_TO_POINTER(inta), DW_INT_TO_POINTER(intb), |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
647 DW_INT_TO_POINTER(intc), DW_INT_TO_POINTER(intd), nullptr, |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
648 DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
649 |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
650 int retval = _dw_event_handler(obj1, params); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
651 if(utf81) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
652 env->ReleaseStringUTFChars(str1, utf81); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
653 if(utf82) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
654 env->ReleaseStringUTFChars(str2, utf82); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
655 return retval; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
656 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
657 |
2483
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
658 /* A more simple method for quicker calls */ |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
659 JNIEXPORT void JNICALL |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
660 Java_org_dbsoft_dwindows_DWindows_eventHandlerSimple(JNIEnv* env, jobject obj, jobject obj1, jint message) |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
661 { |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
662 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
663 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
664 params[8] = DW_INT_TO_POINTER(message); |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
665 _dw_event_handler(obj1, params); |
2483
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
666 } |
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
667 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
668 /* Handler for notebook page changes */ |
2495
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
669 JNIEXPORT void JNICALL |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
670 Java_org_dbsoft_dwindows_DWindows_eventHandlerNotebook(JNIEnv* env, jobject obj, jobject obj1, jint message, jlong pageID) |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
671 { |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
672 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
673 |
2577
6fdab466d7a2
Android: Fix notebook page change event page always being 0.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2572
diff
changeset
|
674 params[3] = DW_INT_TO_POINTER(pageID); |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
675 params[8] = DW_INT_TO_POINTER(message); |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
676 _dw_event_handler(obj1, params); |
2495
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
677 } |
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
678 |
2505
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
679 /* Handlers for HTML events */ |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
680 JNIEXPORT void JNICALL |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
681 Java_org_dbsoft_dwindows_DWindows_eventHandlerHTMLResult(JNIEnv* env, jobject obj, jobject obj1, |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
682 jint message, jstring htmlResult, jlong data) { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
683 const char *result = env->GetStringUTFChars(htmlResult, nullptr); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
684 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, DW_POINTER(result ? strdup(result) : nullptr), nullptr, |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
685 nullptr, nullptr, nullptr, nullptr, DW_INT_TO_POINTER(data), |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
686 DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
687 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
688 _dw_event_handler(obj1, params); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
689 if(result) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
690 env->ReleaseStringUTFChars(htmlResult, result); |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
691 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
692 |
2499
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
693 JNIEXPORT void JNICALL |
2505
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
694 Java_org_dbsoft_dwindows_DWWebViewClient_eventHandlerHTMLChanged(JNIEnv* env, jobject obj, jobject obj1, |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
695 jint message, jstring URI, jint status) { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
696 const char *uri = env->GetStringUTFChars(URI, nullptr); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
697 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, DW_POINTER(uri ? strdup(uri) : nullptr), nullptr, |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
698 DW_INT_TO_POINTER(status), nullptr, nullptr, nullptr, nullptr, |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
699 DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
700 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
701 _dw_event_handler(obj1, params); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
702 if(uri) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
703 env->ReleaseStringUTFChars(URI, uri); |
2505
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
704 } |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
705 |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
706 JNIEXPORT void JNICALL |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
707 Java_org_dbsoft_dwindows_DWWebViewInterface_eventHandlerHTMLMessage(JNIEnv *env, jobject thiz, |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
708 jobject obj1, jint message, |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
709 jstring htmlName, jstring htmlBody) { |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
710 const char *name = env->GetStringUTFChars(htmlName, nullptr); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
711 const char *body = env->GetStringUTFChars(htmlBody, nullptr); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
712 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, DW_POINTER(name ? strdup(name) : nullptr), |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
713 DW_POINTER(body ? strdup(body) : nullptr), |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
714 nullptr, nullptr, nullptr, nullptr, nullptr, |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
715 DW_INT_TO_POINTER(message), nullptr }; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
716 |
2983
81611e54ff1d
Android: Fix DW_SIGNAL_HTML_MESSAGE, there were 3 problems in the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2982
diff
changeset
|
717 // This seems callback seems to run on an uninitialized thread... |
81611e54ff1d
Android: Fix DW_SIGNAL_HTML_MESSAGE, there were 3 problems in the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2982
diff
changeset
|
718 pthread_setspecific(_dw_env_key, env); |
81611e54ff1d
Android: Fix DW_SIGNAL_HTML_MESSAGE, there were 3 problems in the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2982
diff
changeset
|
719 |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
720 _dw_event_handler(obj1, params); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
721 if(name) |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
722 env->ReleaseStringUTFChars(htmlName, name); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
723 if(body) |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
724 env->ReleaseStringUTFChars(htmlBody, body); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
725 } |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
726 |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
727 |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
728 typedef struct _dwprint |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
729 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
730 int (*drawfunc)(HPRINT, HPIXMAP, int, void *); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
731 void *drawdata; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
732 unsigned long flags; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
733 char *jobname; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
734 jint pages; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
735 jobject printjob; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
736 } DWPrint; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
737 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
738 /* Handlers for Print events */ |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
739 JNIEXPORT void JNICALL |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
740 Java_org_dbsoft_dwindows_DWPrintDocumentAdapter_eventHandlerPrintDraw(JNIEnv* env, jobject obj, jlong pr, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
741 jobject bitmap, jint page, jint width, jint height) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
742 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
743 DWPrint *print = (DWPrint *)pr; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
744 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
745 if(print && print->drawfunc) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
746 { |
2728
850da6b24830
Android: Fix a crash setting pixmap font in print callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2727
diff
changeset
|
747 HPIXMAP pixmap = (HPIXMAP)alloca(sizeof(struct _hpixmap)); |
850da6b24830
Android: Fix a crash setting pixmap font in print callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2727
diff
changeset
|
748 |
850da6b24830
Android: Fix a crash setting pixmap font in print callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2727
diff
changeset
|
749 memset(pixmap, 0, sizeof(struct _hpixmap)); |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
750 pixmap->width = width; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
751 pixmap->height = height; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
752 pixmap->bitmap = bitmap; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
753 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
754 print->drawfunc(print, pixmap, (int)page, print->drawdata); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
755 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
756 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
757 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
758 JNIEXPORT void JNICALL |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
759 Java_org_dbsoft_dwindows_DWPrintDocumentAdapter_eventHandlerPrintFinish(JNIEnv* env, jobject obj, jlong pr) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
760 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
761 DWPrint *print = (DWPrint *) pr; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
762 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
763 if(print) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
764 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
765 if(print->jobname) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
766 free(print->jobname); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
767 free(print); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
768 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
769 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
770 |
2505
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
771 JNIEXPORT void JNICALL |
2499
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
772 Java_org_dbsoft_dwindows_DWindows_eventHandlerInt(JNIEnv* env, jobject obj, jobject obj1, jint message, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
773 jint inta, jint intb, jint intc, jint intd) { |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
774 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, nullptr, nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
775 DW_INT_TO_POINTER(inta), DW_INT_TO_POINTER(intb), |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
776 DW_INT_TO_POINTER(intc), DW_INT_TO_POINTER(intd), nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
777 DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
778 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
779 _dw_event_handler(obj1, params); |
2499
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
780 } |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
781 |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
782 JNIEXPORT void JNICALL |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
783 Java_org_dbsoft_dwindows_DWComboBox_eventHandlerInt(JNIEnv* env, jobject obj, jint message, |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
784 jint inta, jint intb, jint intc, jint intd) { |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
785 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, nullptr, nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
786 DW_INT_TO_POINTER(inta), DW_INT_TO_POINTER(intb), |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
787 DW_INT_TO_POINTER(intc), DW_INT_TO_POINTER(intd), nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
788 DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
789 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
790 _dw_event_handler(obj, params); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
791 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
792 |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
793 JNIEXPORT void JNICALL |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
794 Java_org_dbsoft_dwindows_DWSpinButton_eventHandlerInt(JNIEnv* env, jobject obj, jint message, |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
795 jint inta, jint intb, jint intc, jint intd) { |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
796 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, nullptr, nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
797 DW_INT_TO_POINTER(inta), DW_INT_TO_POINTER(intb), |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
798 DW_INT_TO_POINTER(intc), DW_INT_TO_POINTER(intd), nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
799 DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
800 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
801 _dw_event_handler(obj, params); |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
802 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
803 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
804 JNIEXPORT void JNICALL |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
805 Java_org_dbsoft_dwindows_DWListBox_eventHandlerInt(JNIEnv* env, jobject obj, jint message, |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
806 jint inta, jint intb, jint intc, jint intd) { |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
807 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, nullptr, nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
808 DW_INT_TO_POINTER(inta), DW_INT_TO_POINTER(intb), |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
809 DW_INT_TO_POINTER(intc), DW_INT_TO_POINTER(intd), nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
810 DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
811 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
812 _dw_event_handler(obj, params); |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
813 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
814 |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
815 JNIEXPORT void JNICALL |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
816 Java_org_dbsoft_dwindows_DWRender_eventHandlerInt(JNIEnv* env, jobject obj, jint message, |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
817 jint inta, jint intb, jint intc, jint intd) { |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
818 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, nullptr, nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
819 DW_INT_TO_POINTER(inta), DW_INT_TO_POINTER(intb), |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
820 DW_INT_TO_POINTER(intc), DW_INT_TO_POINTER(intd), nullptr, |
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
821 DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
822 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
823 _dw_event_handler(obj, params); |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
824 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
825 |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
826 JNIEXPORT void JNICALL |
2835
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
827 Java_org_dbsoft_dwindows_DWContainerAdapter_eventHandlerInt(JNIEnv* env, jobject obj, jobject obj1, |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
828 jint message, jint inta, jint intb, jint intc, jint intd) { |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
829 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, nullptr, nullptr, |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
830 DW_INT_TO_POINTER(inta), DW_INT_TO_POINTER(intb), |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
831 DW_INT_TO_POINTER(intc), DW_INT_TO_POINTER(intd), nullptr, |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
832 DW_INT_TO_POINTER(message), nullptr }; |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
833 |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
834 _dw_event_handler(obj1, params); |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
835 } |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
836 |
1f0017a07771
Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2834
diff
changeset
|
837 JNIEXPORT void JNICALL |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
838 Java_org_dbsoft_dwindows_DWindows_eventHandlerContainer(JNIEnv* env, jobject obj, jobject obj1, |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
839 jint message, jstring jtitle, jint x, jint y, jlong data) { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
840 const char *title = jtitle ? env->GetStringUTFChars(jtitle, nullptr) : nullptr; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
841 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, DW_POINTER(title ? strdup(title) : nullptr), nullptr, |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
842 DW_INT_TO_POINTER(x), DW_INT_TO_POINTER(y), nullptr, nullptr, |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
843 DW_POINTER(data), DW_INT_TO_POINTER(message), nullptr }; |
2785
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
844 |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
845 _dw_event_handler(obj1, params); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
846 if(title) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
847 env->ReleaseStringUTFChars(jtitle, title); |
2785
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
848 } |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
849 |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
850 JNIEXPORT void JNICALL |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
851 Java_org_dbsoft_dwindows_DWindows_eventHandlerTree(JNIEnv* env, jobject obj, jobject obj1, |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
852 jint message, jobject item, jstring jtitle, jlong data) { |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
853 const char *title = jtitle ? env->GetStringUTFChars(jtitle, nullptr) : nullptr; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
854 void *params[_DW_EVENT_PARAM_SIZE] = { DW_POINTER(item), DW_POINTER(title ? strdup(title) : nullptr), |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
855 nullptr, nullptr, nullptr, nullptr, nullptr, DW_POINTER(data), |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
856 DW_INT_TO_POINTER(message), nullptr }; |
2785
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
857 |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
858 _dw_event_handler(obj1, params); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
859 if(title) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
860 env->ReleaseStringUTFChars(jtitle, title); |
2785
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
861 } |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
862 |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
863 JNIEXPORT void JNICALL |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
864 Java_org_dbsoft_dwindows_DWindows_eventHandlerTreeItem(JNIEnv* env, jobject obj, jobject obj1, |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
865 jint message, jobject item) { |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
866 void *params[_DW_EVENT_PARAM_SIZE] = { DW_POINTER(item), nullptr, nullptr, nullptr, nullptr, |
220d63da2183
Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2777
diff
changeset
|
867 nullptr, nullptr, nullptr, DW_INT_TO_POINTER(message), nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
868 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
869 _dw_event_handler(obj1, params); |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
870 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
871 |
2596
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
872 JNIEXPORT void JNICALL |
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
873 Java_org_dbsoft_dwindows_DWindows_eventHandlerKey(JNIEnv *env, jobject obj, jobject obj1, jint message, jint ch, |
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
874 jint vk, jint modifiers, jstring str) { |
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
875 const char *cstr = str ? env->GetStringUTFChars(str, nullptr) : nullptr; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
876 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr, DW_POINTER(cstr ? strdup(cstr) : nullptr), nullptr, |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
877 DW_INT_TO_POINTER(ch), DW_INT_TO_POINTER(vk), DW_INT_TO_POINTER(modifiers), |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
878 nullptr, nullptr, DW_INT_TO_POINTER(message), nullptr }; |
2596
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
879 |
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
880 _dw_event_handler(obj1, params); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
881 if(cstr) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
882 env->ReleaseStringUTFChars(str, cstr); |
2596
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
883 } |
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2584
diff
changeset
|
884 |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
885 /* Handler for Timer events */ |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
886 JNIEXPORT jint JNICALL |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
887 Java_org_dbsoft_dwindows_DWindows_eventHandlerTimer(JNIEnv* env, jobject obj, jlong sigfunc, jlong data) { |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
888 int (*timerfunc)(void *) = (int (* API)(void *))sigfunc; |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
889 |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
890 pthread_setspecific(_dw_env_key, env); |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
891 return timerfunc((void *)data); |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
892 } |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
893 |
2544
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
894 /* A more simple method for quicker calls */ |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
895 JNIEXPORT void JNICALL |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
896 Java_org_dbsoft_dwindows_DWMenu_eventHandlerSimple(JNIEnv* env, jobject obj, jobject obj1, jint message) { |
2571
e34b627b2491
Android: Functional version of the event threading changes... this improves stability...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2566
diff
changeset
|
897 void *params[_DW_EVENT_PARAM_SIZE] = { nullptr }; |
2566
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
898 |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
899 params[8] = DW_INT_TO_POINTER(message); |
4427af56eebe
Android: Add experimental event threading code, currently disabled.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2561
diff
changeset
|
900 _dw_event_handler(obj1, params); |
2544
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
901 } |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
902 |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
903 |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
904 /* This function adds a signal handler callback into the linked list. |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
905 */ |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
906 void _dw_new_signal(ULONG message, HWND window, int msgid, void *signalfunction, void *discfunc, void *data) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
907 { |
2626
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
908 DWSignalHandler *newsig = (DWSignalHandler *)malloc(sizeof(DWSignalHandler)); |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
909 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
910 newsig->message = message; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
911 newsig->window = window; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
912 newsig->id = msgid; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
913 newsig->signalfunction = signalfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
914 newsig->discfunction = discfunc; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
915 newsig->data = data; |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
916 newsig->next = nullptr; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
917 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
918 if (!DWRoot) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
919 DWRoot = newsig; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
920 else |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
921 { |
2626
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
922 DWSignalHandler *prev = nullptr, *tmp = DWRoot; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
923 while(tmp) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
924 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
925 if(tmp->message == message && |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
926 tmp->window == window && |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
927 tmp->id == msgid && |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
928 tmp->signalfunction == signalfunction) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
929 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
930 tmp->data = data; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
931 free(newsig); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
932 return; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
933 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
934 prev = tmp; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
935 tmp = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
936 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
937 if(prev) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
938 prev->next = newsig; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
939 else |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
940 DWRoot = newsig; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
941 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
942 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
943 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
944 /* Finds the message number for a given signal name */ |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
945 ULONG _dw_findsigmessage(const char *signame) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
946 { |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
947 int z = 0; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
948 |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
949 while(DWSignalTranslate[z].message) |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
950 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
951 if(strcasecmp(signame, DWSignalTranslate[z].name) == 0) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
952 return DWSignalTranslate[z].message; |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
953 z++; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
954 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
955 return 0L; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
956 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
957 |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
958 unsigned long _dw_colors[] = |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
959 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
960 0x00000000, /* 0 black */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
961 0x000000bb, /* 1 red */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
962 0x0000bb00, /* 2 green */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
963 0x0000aaaa, /* 3 yellow */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
964 0x00cc0000, /* 4 blue */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
965 0x00bb00bb, /* 5 magenta */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
966 0x00bbbb00, /* 6 cyan */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
967 0x00bbbbbb, /* 7 white */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
968 0x00777777, /* 8 grey */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
969 0x000000ff, /* 9 bright red */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
970 0x0000ff00, /* 10 bright green */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
971 0x0000eeee, /* 11 bright yellow */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
972 0x00ff0000, /* 12 bright blue */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
973 0x00ff00ff, /* 13 bright magenta */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
974 0x00eeee00, /* 14 bright cyan */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
975 0x00ffffff, /* 15 bright white */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
976 0xff000000 /* 16 default color */ |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
977 }; |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
978 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
979 /* Return the RGB color regardless if a predefined color was passed */ |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
980 jlong _dw_get_color(unsigned long thiscolor) |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
981 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
982 if(thiscolor & DW_RGB_COLOR) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
983 { |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
984 return ((jlong)thiscolor) & ~DW_RGB_COLOR; |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
985 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
986 else if(thiscolor < 17) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
987 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
988 return _dw_colors[thiscolor]; |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
989 } |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
990 else if(thiscolor == DW_RGB_TRANSPARENT) |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
991 { |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
992 return -1; |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
993 } |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
994 return 0; |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
995 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
996 |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
997 int _dw_dark_mode_detected() |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
998 { |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
999 JNIEnv *env; |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1000 int retval = DW_ERROR_UNKNOWN; |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1001 |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1002 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1003 { |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1004 // First get the class that contains the method you need to call |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1005 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1006 // Get the method that you want to call |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1007 jmethodID darkModeDetected = env->GetMethodID(clazz, "darkModeDetected", |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1008 "()I"); |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1009 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1010 retval = env->CallIntMethod(_dw_obj, darkModeDetected); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1011 _dw_jni_check_exception(env); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1012 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1013 return retval; |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1014 } |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
1015 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1016 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1017 * Runs a message loop for Dynamic Windows. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1018 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1019 void API dw_main(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1020 { |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1021 JNIEnv *env; |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1022 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1023 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1024 { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1025 // First get the class that contains the method you need to call |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1026 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1027 // Get the method that you want to call |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1028 jmethodID dwMain = env->GetMethodID(clazz, "dwMain", |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1029 "()V"); |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1030 // Call the method on the object |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1031 env->CallVoidMethod(_dw_obj, dwMain); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1032 _dw_jni_check_exception(env); |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1033 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1034 |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1035 /* Save our thread ID, so we know if we should handle |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1036 * events in callback dw_main_sleep/iteration() calls. |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1037 */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1038 _dw_main_thread = dw_thread_id(); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1039 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1040 do |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1041 { |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1042 void *params[_DW_EVENT_PARAM_SIZE]; |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1043 int result; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1044 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1045 dw_event_reset(_dw_main_event); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1046 |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1047 /* Dequeue and handle any pending events, |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1048 * always checking for high events first. |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1049 */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1050 do |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1051 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1052 if((result = _dw_dequeue_event(params, &_dw_high))) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1053 _dw_event_handler2(params); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1054 else if((result = _dw_dequeue_event(params, &_dw_low))) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1055 _dw_event_handler2(params); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1056 } while(result); |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1057 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1058 /* Wait for something to wake us up, |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1059 * either a posted event, or dw_main_quit() |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1060 */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1061 dw_event_wait(_dw_main_event, 100); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1062 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1063 } while(_dw_main_active); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1064 _dw_main_thread = -1; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1065 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1066 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1067 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1068 * Causes running dw_main() to return. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1069 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1070 void API dw_main_quit(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1071 { |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1072 _dw_main_active = FALSE; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
1073 dw_event_post(_dw_main_event); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1074 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1075 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1076 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1077 * Runs a message loop for Dynamic Windows, for a period of milliseconds. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1078 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1079 * milliseconds: Number of milliseconds to run the loop for. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1080 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1081 void API dw_main_sleep(int milliseconds) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1082 { |
2514
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1083 JNIEnv *env; |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1084 |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1085 /* If we are in an event callback from dw_main() ... |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1086 * we need to continue handling events from the UI. |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1087 */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1088 if(_dw_main_thread == dw_thread_id()) |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1089 { |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1090 struct timeval tv, start; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1091 /* The time left to wait from the start */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1092 int difference = milliseconds; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1093 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1094 gettimeofday(&start, NULL); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1095 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1096 do |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1097 { |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1098 void *params[_DW_EVENT_PARAM_SIZE]; |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1099 int result; |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1100 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1101 dw_event_reset(_dw_main_event); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1102 |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1103 /* Dequeue and handle any pending events, |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1104 * always checking for high events first. |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1105 */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1106 do |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1107 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1108 if((result = _dw_dequeue_event(params, &_dw_high))) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1109 _dw_event_handler2(params); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1110 else if((result = _dw_dequeue_event(params, &_dw_low))) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1111 _dw_event_handler2(params); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1112 } while(result); |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1113 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1114 /* Wait for something to wake us up, |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1115 * either a posted event, or dw_main_quit() |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1116 */ |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1117 dw_event_wait(_dw_main_event, difference); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1118 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1119 gettimeofday(&tv, NULL); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1120 |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1121 } while(_dw_main_active && (difference = ((tv.tv_sec - start.tv_sec)*1000) + ((tv.tv_usec - start.tv_usec)/1000)) <= milliseconds); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1122 } |
2801
b004cc75d574
Android: Remove the _DW_EVENT_THREADING experiment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2796
diff
changeset
|
1123 else if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2514
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1124 { |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1125 // First get the class that contains the method you need to call |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1126 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1127 // Get the method that you want to call |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1128 jmethodID mainSleep = env->GetMethodID(clazz, "mainSleep", |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1129 "(I)V"); |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1130 // Call the method on the object |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1131 env->CallVoidMethod(_dw_obj, mainSleep, milliseconds); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1132 _dw_jni_check_exception(env); |
2514
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1133 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1134 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1135 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1136 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1137 * Processes a single message iteration and returns. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1138 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1139 void API dw_main_iteration(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1140 { |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1141 if(_dw_main_thread == dw_thread_id()) |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1142 { |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1143 void *params[_DW_EVENT_PARAM_SIZE]; |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1144 |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1145 /* Dequeue a single pending event, try high first */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1146 if (_dw_dequeue_event(params, &_dw_high)) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1147 _dw_event_handler2(params); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
1148 else if (_dw_dequeue_event(params, &_dw_low)) |
2631
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1149 _dw_event_handler2(params); |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1150 } |
e9f4f0d2e5da
Android: Implement an event queue that will be handled by dw_main() and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2626
diff
changeset
|
1151 else |
2514
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1152 /* If we sleep for 0 milliseconds... we will drop out |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1153 * of the loop at the first idle moment |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2513
diff
changeset
|
1154 */ |
2801
b004cc75d574
Android: Remove the _DW_EVENT_THREADING experiment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2796
diff
changeset
|
1155 dw_main_sleep(0); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1156 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1157 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1158 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1159 * Cleanly terminates a DW session, should be signal handler safe. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1160 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1161 * exitcode: Exit code reported to the operating system. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1162 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1163 void API dw_exit(int exitcode) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1164 { |
2487
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1165 JNIEnv *env; |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1166 |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1167 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1168 { |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1169 // First get the class that contains the method you need to call |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1170 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1171 // Get the method that you want to call |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1172 jmethodID dwindowsExit = env->GetMethodID(clazz, "dwindowsExit", |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1173 "(I)V"); |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1174 // Call the method on the object |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1175 env->CallVoidMethod(_dw_obj, dwindowsExit, exitcode); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1176 _dw_jni_check_exception(env); |
2487
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
1177 } |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
1178 // We shouldn't get here, but in case JNI can't call dwindowsExit... |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1179 exit(exitcode); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1180 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1181 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1182 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1183 * Free's memory allocated by dynamic windows. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1184 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1185 * ptr: Pointer to dynamic windows allocated |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1186 * memory to be free()'d. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1187 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1188 void API dw_free(void *ptr) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1189 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1190 free(ptr); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1191 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1192 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1193 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1194 * Returns a pointer to a static buffer which contains the |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1195 * current user directory. Or the root directory if it could |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1196 * not be determined. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1197 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1198 char * API dw_user_dir(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1199 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1200 return _dw_user_dir; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1201 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1202 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1203 /* |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1204 * Returns a pointer to a static buffer which contains the |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1205 * private application data directory. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1206 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1207 char * API dw_app_dir(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1208 { |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
1209 /* The path is passed in via JNI dwindowsInit() */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1210 return _dw_exec_dir; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1211 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1212 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1213 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1214 * Sets the application ID used by this Dynamic Windows application instance. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1215 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1216 * appid: A string typically in the form: com.company.division.application |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1217 * appname: The application name used on Windows or nullptr. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1218 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1219 * DW_ERROR_NONE after successfully setting the application ID. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1220 * DW_ERROR_UNKNOWN if unsupported on this system. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1221 * DW_ERROR_GENERAL if the application ID is not allowed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1222 * Remarks: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1223 * This must be called before dw_init(). If dw_init() is called first |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1224 * it will create a unique ID in the form: org.dbsoft.dwindows.application |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1225 * or if the application name cannot be detected: org.dbsoft.dwindows.pid.# |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1226 * The appname is used on Windows and Android. If nullptr is passed the |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
1227 * detected name will be used, but a prettier name may be desired. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1228 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1229 int API dw_app_id_set(const char *appid, const char *appname) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1230 { |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
1231 if(appid) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
1232 strncpy(_dw_app_id, appid, _DW_APP_ID_SIZE); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
1233 if(appname) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
1234 strncpy(_dw_app_name, appname, _DW_APP_ID_SIZE); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
1235 return DW_ERROR_NONE; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1236 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1237 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1238 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1239 * Displays a debug message on the console... |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1240 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1241 * format: printf style format string. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1242 * ...: Additional variables for use in the format. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1243 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1244 void API dw_debug(const char *format, ...) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1245 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1246 va_list args; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1247 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1248 va_start(args, format); |
2901
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1249 vfprintf(stderr, format, args); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1250 va_end(args); |
2901
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1251 } |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1252 |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1253 void API dw_vdebug(const char *format, va_list args) |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1254 { |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1255 JNIEnv *env; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1256 |
2482
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1257 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1258 { |
2901
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1259 char outbuf[1025] = {0}; |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1260 |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1261 vsnprintf(outbuf, 1024, format, args); |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1262 |
2482
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1263 // Construct a String |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1264 jstring jstr = env->NewStringUTF(outbuf); |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1265 // First get the class that contains the method you need to call |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1266 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1267 // Get the method that you want to call |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1268 jmethodID debugMessage = env->GetMethodID(clazz, "debugMessage", |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1269 "(Ljava/lang/String;)V"); |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1270 // Call the method on the object |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1271 env->CallVoidMethod(_dw_obj, debugMessage, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1272 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1273 env->DeleteLocalRef(jstr); |
2482
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1274 } |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1275 else { |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1276 /* Output to stderr, if there is another way to send it |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1277 * on the implementation platform, change this. |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1278 */ |
2901
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1279 vfprintf(stderr, format, args); |
2482
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
1280 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1281 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1282 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1283 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1284 * Displays a Message Box with given text and title.. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1285 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1286 * title: The title of the message box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1287 * flags: flags to indicate buttons and icon |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1288 * format: printf style format string. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1289 * ...: Additional variables for use in the format. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1290 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1291 * DW_MB_RETURN_YES, DW_MB_RETURN_NO, DW_MB_RETURN_OK, |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1292 * or DW_MB_RETURN_CANCEL based on flags and user response. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1293 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1294 int API dw_messagebox(const char *title, int flags, const char *format, ...) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1295 { |
2486
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1296 va_list args; |
2901
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1297 int rc; |
2486
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1298 |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1299 va_start(args, format); |
2901
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1300 rc = dw_vmessagebox(title, flags, format, args); |
2486
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1301 va_end(args); |
2901
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1302 return rc; |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1303 } |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1304 |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1305 int API dw_vmessagebox(const char *title, int flags, const char *format, va_list args) |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1306 { |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1307 JNIEnv *env; |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1308 int retval = 0; |
2486
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1309 |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1310 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1311 { |
2901
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1312 char outbuf[1025] = {0}; |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1313 |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1314 vsnprintf(outbuf, 1024, format, args); |
761b7a12b079
Add va_list versions of dw_debug() and dw_messagebox() for use in C++ bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2856
diff
changeset
|
1315 |
2486
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1316 // Construct a String |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1317 jstring jstr = env->NewStringUTF(outbuf); |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1318 jstring jstrtitle = env->NewStringUTF(title); |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1319 // First get the class that contains the method you need to call |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1320 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1321 // Get the method that you want to call |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1322 jmethodID messageBox = env->GetMethodID(clazz, "messageBox", |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1323 "(Ljava/lang/String;Ljava/lang/String;I)I"); |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
1324 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1325 retval = env->CallIntMethod(_dw_obj, messageBox, jstrtitle, jstr, flags); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1326 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1327 env->DeleteLocalRef(jstr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1328 env->DeleteLocalRef(jstrtitle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1329 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1330 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1331 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1332 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1333 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1334 * Opens a file dialog and queries user selection. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1335 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1336 * title: Title bar text for dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1337 * defpath: The default path of the open dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1338 * ext: Default file extention. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1339 * flags: DW_FILE_OPEN or DW_FILE_SAVE. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1340 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1341 * nullptr on error. A malloced buffer containing |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1342 * the file path on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1343 * |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1344 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1345 char * API dw_file_browse(const char *title, const char *defpath, const char *ext, int flags) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1346 { |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1347 JNIEnv *env; |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1348 char *retval = nullptr; |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1349 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1350 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1351 { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1352 // Use a long parameter |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1353 jstring jstr = env->NewStringUTF(title); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1354 jstring path = nullptr; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1355 jstring jext = nullptr; |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1356 if(defpath) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1357 path = env->NewStringUTF(defpath); |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1358 if(ext) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1359 jext = env->NewStringUTF(defpath); |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1360 // First get the class that contains the method you need to call |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
1361 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1362 // Get the method that you want to call |
2715
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
1363 jmethodID fileBrowse = env->GetMethodID(clazz, "fileBrowseNew", |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1364 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;"); |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1365 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1366 jstring jresult = (jstring)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, fileBrowse, jstr, path, jext, flags), _DW_REFERENCE_NONE); |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
1367 if(jresult) |
2790
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1368 { |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1369 const char *str = env->GetStringUTFChars(jresult, nullptr); |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1370 if(str) |
2795
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1371 retval = strdup(str); |
2790
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1372 } |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1373 env->DeleteLocalRef(jstr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1374 if(path) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1375 env->DeleteLocalRef(path); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1376 if(jext) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1377 env->DeleteLocalRef(jext); |
2790
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1378 } |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1379 return retval; |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1380 } |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1381 |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1382 int API dw_file_open(const char *path, int mode) |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1383 { |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1384 int retval = -1; |
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
1385 |
2795
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1386 if(path) |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1387 { |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1388 JNIEnv *env; |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1389 |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1390 // If we have no URI we can use the normal open call |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1391 if(!strstr(path, "://")) |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1392 return open(path, mode); |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1393 // If we have a URI, use Android calls to get the URI file descriptor |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1394 if ((env = (JNIEnv *) pthread_getspecific(_dw_env_key))) |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1395 { |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1396 // dw_file_browse saves a second string with the URI after the path |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1397 // So find the end of the string and check for a trailing \n |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1398 // The URI will be after that if found. |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1399 jstring jstr = env->NewStringUTF(path); |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1400 // First get the class that contains the method you need to call |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1401 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1402 // Get the method that you want to call |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1403 jmethodID fileOpen = env->GetMethodID(clazz, "fileOpen", |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1404 "(Ljava/lang/String;I)I"); |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1405 // Call the method on the object |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1406 retval = (int) env->CallIntMethod(_dw_obj, fileOpen, jstr, (jint) mode); |
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1407 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1408 env->DeleteLocalRef(jstr); |
2795
5c61aba17b69
Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2790
diff
changeset
|
1409 } |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1410 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1411 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1412 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1413 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1414 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1415 * Gets the contents of the default clipboard as text. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1416 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1417 * None. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1418 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1419 * Pointer to an allocated string of text or nullptr if clipboard empty or contents could not |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1420 * be converted to text. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1421 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1422 char * API dw_clipboard_get_text() |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1423 { |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1424 JNIEnv *env; |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1425 |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1426 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1427 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1428 const char *utf8 = nullptr; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1429 char *retval = nullptr; |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1430 |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1431 // First get the class that contains the method you need to call |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1432 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1433 // Get the method that you want to call |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1434 jmethodID clipboardGetText = env->GetMethodID(clazz, "clipboardGetText", |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1435 "()Ljava/lang/String;"); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1436 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1437 jstring result = (jstring)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, clipboardGetText), _DW_REFERENCE_NONE); |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1438 // Get the UTF8 string result |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1439 if(result) |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
1440 utf8 = env->GetStringUTFChars(result, nullptr); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1441 if(utf8) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1442 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1443 retval = strdup(utf8); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1444 env->ReleaseStringUTFChars(result, utf8); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1445 } |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1446 return retval; |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1447 } |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1448 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1449 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1450 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1451 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1452 * Sets the contents of the default clipboard to the supplied text. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1453 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1454 * str: Text to put on the clipboard. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1455 * len: Length of the text. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1456 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1457 void API dw_clipboard_set_text(const char *str, int len) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1458 { |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1459 JNIEnv *env; |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1460 |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1461 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1462 { |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1463 // Construct a String |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1464 jstring jstr = env->NewStringUTF(str); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1465 // First get the class that contains the method you need to call |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1466 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1467 // Get the method that you want to call |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1468 jmethodID clipboardSetText = env->GetMethodID(clazz, "clipboardSetText", |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1469 "(Ljava/lang/String;)V"); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1470 // Call the method on the object |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1471 env->CallVoidMethod(_dw_obj, clipboardSetText, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1472 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1473 env->DeleteLocalRef(jstr); |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1474 } |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1475 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1476 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1477 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1478 * Allocates and initializes a dialog struct. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1479 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1480 * data: User defined data to be passed to functions. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1481 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1482 * A handle to a dialog or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1483 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1484 DWDialog * API dw_dialog_new(void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1485 { |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1486 DWDialog *tmp = (DWDialog *)malloc(sizeof(DWDialog)); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1487 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1488 if(tmp) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1489 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1490 tmp->eve = dw_event_new(); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1491 dw_event_reset(tmp->eve); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1492 tmp->data = data; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1493 tmp->done = FALSE; |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1494 tmp->result = nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1495 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1496 return tmp; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1497 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1498 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1499 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1500 * Accepts a dialog struct and returns the given data to the |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1501 * initial called of dw_dialog_wait(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1502 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1503 * dialog: Pointer to a dialog struct aquired by dw_dialog_new). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1504 * result: Data to be returned by dw_dialog_wait(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1505 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1506 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1507 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1508 int API dw_dialog_dismiss(DWDialog *dialog, void *result) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1509 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1510 dialog->result = result; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1511 dw_event_post(dialog->eve); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1512 dialog->done = TRUE; |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
1513 return DW_ERROR_NONE; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1514 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1515 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1516 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1517 * Accepts a dialog struct waits for dw_dialog_dismiss() to be |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1518 * called by a signal handler with the given dialog struct. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1519 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1520 * dialog: Pointer to a dialog struct aquired by dw_dialog_new). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1521 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1522 * The data passed to dw_dialog_dismiss(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1523 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1524 void * API dw_dialog_wait(DWDialog *dialog) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1525 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1526 void *tmp = nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1527 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1528 while(!dialog->done) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1529 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1530 dw_main_iteration(); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1531 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1532 dw_event_close(&dialog->eve); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1533 tmp = dialog->result; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1534 free(dialog); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1535 return tmp; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1536 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1537 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1538 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1539 * Create a new Box to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1540 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1541 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1542 * pad: Number of pixels to pad around the box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1543 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1544 * A handle to a box or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1545 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1546 HWND API dw_box_new(int type, int pad) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1547 { |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1548 JNIEnv *env; |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1549 |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1550 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1551 { |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1552 // First get the class that contains the method you need to call |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1553 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1554 // Get the method that you want to call |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1555 jmethodID boxNew = env->GetMethodID(clazz, "boxNew", "(II)Landroid/widget/LinearLayout;"); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1556 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1557 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, boxNew, type, pad), _DW_REFERENCE_WEAK); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1558 return result; |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1559 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1560 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1561 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1562 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1563 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1564 * Create a new Group Box to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1565 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1566 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1567 * pad: Number of pixels to pad around the box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1568 * title: Text to be displayined in the group outline. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1569 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1570 * A handle to a groupbox window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1571 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1572 HWND API dw_groupbox_new(int type, int pad, const char *title) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1573 { |
2689
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1574 JNIEnv *env; |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1575 |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1576 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1577 { |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1578 // Construct a String |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1579 jstring jstr = title ? env->NewStringUTF(title) : nullptr; |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1580 // First get the class that contains the method you need to call |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1581 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1582 // Get the method that you want to call |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1583 jmethodID groupBoxNew = env->GetMethodID(clazz, "groupBoxNew", |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1584 "(IILjava/lang/String;)Landroid/widget/LinearLayout;"); |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1585 // Call the method on the object |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1586 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, groupBoxNew, type, pad, jstr), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1587 if(jstr) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1588 env->DeleteLocalRef(jstr); |
2689
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1589 return result; |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1590 } |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2687
diff
changeset
|
1591 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1592 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1593 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1594 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1595 * Create a new scrollable Box to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1596 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1597 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1598 * pad: Number of pixels to pad around the box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1599 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1600 * A handle to a scrollbox or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1601 */ |
2495
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
1602 HWND API dw_scrollbox_new(int type, int pad) |
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
1603 { |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1604 JNIEnv *env; |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1605 |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1606 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1607 { |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1608 // First get the class that contains the method you need to call |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1609 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1610 // Get the method that you want to call |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1611 jmethodID scrollBoxNew = env->GetMethodID(clazz, "scrollBoxNew", |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1612 "(II)Landroid/widget/ScrollView;"); |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1613 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1614 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, scrollBoxNew, type, pad), _DW_REFERENCE_WEAK); |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1615 return result; |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1616 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1617 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1618 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1619 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1620 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1621 * Returns the position of the scrollbar in the scrollbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1622 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1623 * handle: Handle to the scrollbox to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1624 * orient: The vertical or horizontal scrollbar. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1625 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1626 * The vertical or horizontal position in the scrollbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1627 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1628 int API dw_scrollbox_get_pos(HWND handle, int orient) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1629 { |
2706
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1630 JNIEnv *env; |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1631 int retval = DW_ERROR_UNKNOWN; |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1632 |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1633 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1634 { |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1635 // First get the class that contains the method you need to call |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1636 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1637 // Get the method that you want to call |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1638 jmethodID scrollBoxGetPos = env->GetMethodID(clazz, "scrollBoxGetPos", |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1639 "(Landroid/widget/ScrollView;I)I"); |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1640 // Call the method on the object |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1641 retval = env->CallIntMethod(_dw_obj, scrollBoxGetPos, handle, orient); |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1642 if(_dw_jni_check_exception(env)) |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1643 retval = DW_ERROR_UNKNOWN; |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1644 } |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1645 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1646 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1647 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1648 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1649 * Gets the range for the scrollbar in the scrollbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1650 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1651 * handle: Handle to the scrollbox to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1652 * orient: The vertical or horizontal scrollbar. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1653 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1654 * The vertical or horizontal range of the scrollbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1655 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1656 int API dw_scrollbox_get_range(HWND handle, int orient) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1657 { |
2706
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1658 JNIEnv *env; |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1659 int retval = DW_ERROR_UNKNOWN; |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1660 |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1661 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1662 { |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1663 // First get the class that contains the method you need to call |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1664 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1665 // Get the method that you want to call |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1666 jmethodID scrollBoxGetRange = env->GetMethodID(clazz, "scrollBoxGetRange", |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1667 "(Landroid/widget/ScrollView;I)I"); |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1668 // Call the method on the object |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1669 retval = env->CallIntMethod(_dw_obj, scrollBoxGetRange, handle, orient); |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1670 if(_dw_jni_check_exception(env)) |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1671 retval = DW_ERROR_UNKNOWN; |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1672 } |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2702
diff
changeset
|
1673 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1674 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1675 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1676 /* Internal box packing function called by the other 3 functions */ |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1677 void _dw_box_pack(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad, const char *funcname) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1678 { |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1679 JNIEnv *env; |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1680 |
2675
a7868380098f
Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2671
diff
changeset
|
1681 if(box && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1682 { |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1683 // First get the class that contains the method you need to call |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1684 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1685 // Get the method that you want to call |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
1686 jmethodID boxPack = env->GetMethodID(clazz, "boxPack", "(Landroid/view/View;Landroid/view/View;IIIIII)V"); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1687 // Call the method on the object |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
1688 env->CallVoidMethod(_dw_obj, boxPack, box, item, index, width, height, hsize, vsize, pad); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1689 _dw_jni_check_exception(env); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1690 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1691 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1692 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1693 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1694 * Remove windows (widgets) from the box they are packed into. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1695 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1696 * handle: Window handle of the packed item to be removed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1697 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1698 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1699 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1700 int API dw_box_unpack(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1701 { |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1702 JNIEnv *env; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1703 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
1704 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1705 { |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1706 // First get the class that contains the method you need to call |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1707 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1708 // Get the method that you want to call |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1709 jmethodID boxUnpack = env->GetMethodID(clazz, "boxUnpack", "(Landroid/view/View;)V"); |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1710 // Call the method on the object |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1711 env->CallVoidMethod(_dw_obj, boxUnpack, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1712 _dw_jni_check_exception(env); |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1713 return DW_ERROR_NONE; |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1714 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1715 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1716 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1717 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1718 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1719 * Remove windows (widgets) from a box at an arbitrary location. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1720 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1721 * box: Window handle of the box to be removed from. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1722 * index: 0 based index of packed items. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1723 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1724 * Handle to the removed item on success, 0 on failure or padding. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1725 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1726 HWND API dw_box_unpack_at_index(HWND box, int index) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1727 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1728 JNIEnv *env; |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1729 HWND retval = nullptr; |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1730 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
1731 if(box && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1732 // First get the class that contains the method you need to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1733 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1734 // Get the method that you want to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1735 jmethodID boxUnpackAtIndex = env->GetMethodID(clazz, "boxUnpackAtIndex", |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1736 "(Landroid/widget/LinearLayout;I)Landroid/view/View;"); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1737 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1738 retval = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, boxUnpackAtIndex, box, index), _DW_REFERENCE_WEAK); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1739 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1740 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1741 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1742 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1743 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1744 * Pack windows (widgets) into a box at an arbitrary location. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1745 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1746 * box: Window handle of the box to be packed into. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1747 * item: Window handle of the item to pack. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1748 * index: 0 based index of packed items. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1749 * width: Width in pixels of the item or -1 to be self determined. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1750 * height: Height in pixels of the item or -1 to be self determined. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1751 * hsize: TRUE if the window (widget) should expand horizontally to fill space given. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1752 * vsize: TRUE if the window (widget) should expand vertically to fill space given. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1753 * pad: Number of pixels of padding around the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1754 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1755 void API dw_box_pack_at_index(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1756 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1757 _dw_box_pack(box, item, index, width, height, hsize, vsize, pad, "dw_box_pack_at_index()"); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1758 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1759 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1760 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1761 * Pack windows (widgets) into a box from the start (or top). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1762 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1763 * box: Window handle of the box to be packed into. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1764 * item: Window handle of the item to pack. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1765 * width: Width in pixels of the item or -1 to be self determined. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1766 * height: Height in pixels of the item or -1 to be self determined. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1767 * hsize: TRUE if the window (widget) should expand horizontally to fill space given. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1768 * vsize: TRUE if the window (widget) should expand vertically to fill space given. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1769 * pad: Number of pixels of padding around the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1770 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1771 void API dw_box_pack_start(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1772 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1773 /* 65536 is the table limit on GTK... |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1774 * seems like a high enough value we will never hit it here either. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1775 */ |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
1776 _dw_box_pack(box, item, -1, width, height, hsize, vsize, pad, "dw_box_pack_start()"); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1777 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1778 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1779 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1780 * Pack windows (widgets) into a box from the end (or bottom). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1781 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1782 * box: Window handle of the box to be packed into. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1783 * item: Window handle of the item to pack. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1784 * width: Width in pixels of the item or -1 to be self determined. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1785 * height: Height in pixels of the item or -1 to be self determined. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1786 * hsize: TRUE if the window (widget) should expand horizontally to fill space given. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1787 * vsize: TRUE if the window (widget) should expand vertically to fill space given. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1788 * pad: Number of pixels of padding around the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1789 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1790 void API dw_box_pack_end(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1791 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1792 _dw_box_pack(box, item, 0, width, height, hsize, vsize, pad, "dw_box_pack_end()"); |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1793 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1794 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1795 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1796 * Create a new button window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1797 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1798 * text: The text to be display by the static text widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1799 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1800 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1801 * A handle to a button window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1802 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1803 HWND API dw_button_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1804 { |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1805 JNIEnv *env; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1806 |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1807 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1808 { |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1809 // Construct a String |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1810 jstring jstr = env->NewStringUTF(text); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1811 // First get the class that contains the method you need to call |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1812 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1813 // Get the method that you want to call |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1814 jmethodID buttonNew = env->GetMethodID(clazz, "buttonNew", |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1815 "(Ljava/lang/String;I)Landroid/widget/Button;"); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1816 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1817 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, buttonNew, jstr, (int)cid), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1818 env->DeleteLocalRef(jstr); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1819 return result; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1820 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1821 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1822 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1823 |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1824 HWND _dw_entryfield_new(const char *text, ULONG cid, int password) |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1825 { |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1826 JNIEnv *env; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1827 |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1828 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1829 { |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1830 // Construct a String |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1831 jstring jstr = env->NewStringUTF(text); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1832 // First get the class that contains the method you need to call |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
1833 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1834 // Get the method that you want to call |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1835 jmethodID entryfieldNew = env->GetMethodID(clazz, "entryfieldNew", |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1836 "(Ljava/lang/String;II)Landroid/widget/EditText;"); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1837 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1838 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, entryfieldNew, jstr, (int)cid, password), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1839 env->DeleteLocalRef(jstr); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1840 return result; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1841 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1842 return nullptr; |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1843 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1844 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1845 * Create a new Entryfield window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1846 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1847 * text: The default text to be in the entryfield widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1848 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1849 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1850 * A handle to an entryfield window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1851 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1852 HWND API dw_entryfield_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1853 { |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1854 return _dw_entryfield_new(text, cid, FALSE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1855 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1856 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1857 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1858 * Create a new Entryfield (password) window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1859 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1860 * text: The default text to be in the entryfield widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1861 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1862 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1863 * A handle to an entryfield password window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1864 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1865 HWND API dw_entryfield_password_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1866 { |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
1867 return _dw_entryfield_new(text, cid, TRUE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1868 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1869 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1870 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1871 * Sets the entryfield character limit. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1872 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1873 * handle: Handle to the spinbutton to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1874 * limit: Number of characters the entryfield will take. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1875 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1876 void API dw_entryfield_set_limit(HWND handle, ULONG limit) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1877 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1878 JNIEnv *env; |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1879 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
1880 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1881 { |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1882 // First get the class that contains the method you need to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1883 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1884 // Get the method that you want to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1885 jmethodID entryfieldSetLimit = env->GetMethodID(clazz, "entryfieldSetLimit", |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1886 "(Landroid/widget/EditText;J)V"); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1887 // Call the method on the object |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1888 env->CallVoidMethod(_dw_obj, entryfieldSetLimit, handle, (jlong)limit); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1889 _dw_jni_check_exception(env); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
1890 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1891 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1892 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1893 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1894 * Create a new bitmap button window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1895 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1896 * text: Bubble help text to be displayed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1897 * id: An ID of a bitmap in the resource file. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1898 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1899 * A handle to a bitmap button window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1900 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1901 HWND API dw_bitmapbutton_new(const char *text, ULONG resid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1902 { |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1903 JNIEnv *env; |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1904 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1905 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1906 { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1907 // Construct a String |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1908 jstring jstr = env->NewStringUTF(text); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1909 // First get the class that contains the method you need to call |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1910 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1911 // Get the method that you want to call |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1912 jmethodID bitmapButtonNew = env->GetMethodID(clazz, "bitmapButtonNew", |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1913 "(Ljava/lang/String;I)Landroid/widget/ImageButton;"); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1914 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1915 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, bitmapButtonNew, jstr, (int)resid), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1916 env->DeleteLocalRef(jstr); |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1917 return result; |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1918 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1919 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1920 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1921 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1922 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1923 * Create a new bitmap button window (widget) to be packed from a file. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1924 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1925 * text: Bubble help text to be displayed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1926 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1927 * filename: Name of the file, omit extention to have |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1928 * DW pick the appropriate file extension. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1929 * (BMP on OS/2 or Windows, XPM on Unix) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1930 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1931 * A handle to a bitmap button window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1932 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1933 HWND API dw_bitmapbutton_new_from_file(const char *text, unsigned long cid, const char *filename) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1934 { |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1935 JNIEnv *env; |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1936 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1937 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1938 { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1939 // Construct a String |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1940 jstring jstr = env->NewStringUTF(text); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1941 jstring path = env->NewStringUTF(filename); |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1942 // First get the class that contains the method you need to call |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1943 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1944 // Get the method that you want to call |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1945 jmethodID bitmapButtonNewFromFile = env->GetMethodID(clazz, "bitmapButtonNewFromFile", |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1946 "(Ljava/lang/String;ILjava/lang/String;)Landroid/widget/ImageButton;"); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1947 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1948 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, bitmapButtonNewFromFile, jstr, (int)cid, path), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1949 env->DeleteLocalRef(jstr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1950 env->DeleteLocalRef(path); |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1951 return result; |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1952 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1953 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1954 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1955 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1956 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1957 * Create a new bitmap button window (widget) to be packed from data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1958 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1959 * text: Bubble help text to be displayed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1960 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1961 * data: The contents of the image |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1962 * (BMP or ICO on OS/2 or Windows, XPM on Unix) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1963 * len: length of str |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1964 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1965 * A handle to a bitmap button window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1966 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1967 HWND API dw_bitmapbutton_new_from_data(const char *text, unsigned long cid, const char *data, int len) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1968 { |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1969 JNIEnv *env; |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1970 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1971 if(data && len > 0 && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1972 { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1973 // Construct a String |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1974 jstring jstr = env->NewStringUTF(text); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1975 // Construct a byte array |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1976 jbyteArray bytearray = env->NewByteArray(len); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1977 env->SetByteArrayRegion(bytearray, 0, len, reinterpret_cast<const jbyte *>(data)); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1978 // First get the class that contains the method you need to call |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1979 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1980 // Get the method that you want to call |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1981 jmethodID bitmapButtonNewFromData = env->GetMethodID(clazz, "bitmapButtonNewFromData", |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1982 "(Ljava/lang/String;I[BI)Landroid/widget/ImageButton;"); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1983 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
1984 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, bitmapButtonNewFromData, jstr, (int)cid, bytearray, len), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1985 // TODO: Clean up after the array now that we are finished |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1986 //env->ReleaseByteArrayElements(bytearray, (jbyte *) data, 0); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
1987 env->DeleteLocalRef(jstr); |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1988 return result; |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1989 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1990 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1991 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1992 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1993 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1994 * Create a new spinbutton window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1995 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1996 * text: The text to be display by the static text widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1997 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1998 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
1999 * A handle to a spinbutton window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2000 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2001 HWND API dw_spinbutton_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2002 { |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2003 JNIEnv *env; |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2004 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2005 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2006 { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2007 // Construct a String |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2008 jstring jstr = env->NewStringUTF(text); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2009 // First get the class that contains the method you need to call |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2010 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2011 // Get the method that you want to call |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2012 jmethodID spinButtonNew = env->GetMethodID(clazz, "spinButtonNew", |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2013 "(Ljava/lang/String;I)Lorg/dbsoft/dwindows/DWSpinButton;"); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2014 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2015 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, spinButtonNew, jstr, (int)cid), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2016 env->DeleteLocalRef(jstr); |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2017 return result; |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2018 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
2019 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2020 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2021 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2022 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2023 * Sets the spinbutton value. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2024 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2025 * handle: Handle to the spinbutton to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2026 * position: Current value of the spinbutton. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2027 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2028 void API dw_spinbutton_set_pos(HWND handle, long position) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2029 { |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2030 JNIEnv *env; |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2031 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2032 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2033 { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2034 // First get the class that contains the method you need to call |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2035 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2036 // Get the method that you want to call |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2037 jmethodID spinButtonSetPos = env->GetMethodID(clazz, "spinButtonSetPos", |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2038 "(Lorg/dbsoft/dwindows/DWSpinButton;J)V"); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2039 // Call the method on the object |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2040 env->CallVoidMethod(_dw_obj, spinButtonSetPos, handle, (jlong)position); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2041 _dw_jni_check_exception(env); |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2042 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2043 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2044 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2045 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2046 * Sets the spinbutton limits. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2047 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2048 * handle: Handle to the spinbutton to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2049 * upper: Upper limit. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2050 * lower: Lower limit. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2051 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2052 void API dw_spinbutton_set_limits(HWND handle, long upper, long lower) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2053 { |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2054 JNIEnv *env; |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2055 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2056 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2057 { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2058 // First get the class that contains the method you need to call |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2059 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2060 // Get the method that you want to call |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2061 jmethodID spinButtonSetLimits = env->GetMethodID(clazz, "spinButtonSetLimits", |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2062 "(Lorg/dbsoft/dwindows/DWSpinButton;JJ)V"); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2063 // Call the method on the object |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2064 env->CallVoidMethod(_dw_obj, spinButtonSetLimits, handle, (jlong)upper, (jlong)lower); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2065 _dw_jni_check_exception(env); |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2066 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2067 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2068 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2069 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2070 * Returns the current value of the spinbutton. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2071 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2072 * handle: Handle to the spinbutton to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2073 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2074 * Number value displayed in the spinbutton. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2075 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2076 long API dw_spinbutton_get_pos(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2077 { |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2078 JNIEnv *env; |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2079 long retval = 0; |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2080 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2081 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2082 { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2083 // First get the class that contains the method you need to call |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2084 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2085 // Get the method that you want to call |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2086 jmethodID spinButtonGetPos = env->GetMethodID(clazz, "spinButtonGetPos", |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2087 "(Lorg/dbsoft/dwindows/DWSpinButton;)J"); |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2088 // Call the method on the object |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2089 retval = env->CallLongMethod(_dw_obj, spinButtonGetPos, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2090 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2091 retval = 0; |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2092 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
2093 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2094 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2095 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2096 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2097 * Create a new radiobutton window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2098 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2099 * text: The text to be display by the static text widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2100 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2101 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2102 * A handle to a radio button window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2103 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2104 HWND API dw_radiobutton_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2105 { |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2106 JNIEnv *env; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2107 |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2108 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2109 { |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2110 // Construct a String |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2111 jstring jstr = env->NewStringUTF(text); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2112 // First get the class that contains the method you need to call |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
2113 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2114 // Get the method that you want to call |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2115 jmethodID radioButtonNew = env->GetMethodID(clazz, "radioButtonNew", |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2116 "(Ljava/lang/String;I)Landroid/widget/RadioButton;"); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2117 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2118 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, radioButtonNew, jstr, (int)cid), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2119 env->DeleteLocalRef(jstr); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2120 return result; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2121 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
2122 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2123 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2124 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2125 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2126 * Create a new slider window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2127 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2128 * vertical: TRUE or FALSE if slider is vertical. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2129 * increments: Number of increments available. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2130 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2131 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2132 * A handle to a slider window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2133 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2134 HWND API dw_slider_new(int vertical, int increments, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2135 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2136 JNIEnv *env; |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2137 |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2138 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2139 { |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2140 // First get the class that contains the method you need to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2141 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2142 // Get the method that you want to call |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
2143 jmethodID sliderNew = env->GetMethodID(clazz, "sliderNew", |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
2144 "(III)Lorg/dbsoft/dwindows/DWSlider;"); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2145 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2146 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, sliderNew, vertical, increments, (jint)cid), _DW_REFERENCE_WEAK); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2147 return result; |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2148 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
2149 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2150 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2151 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2152 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2153 * Returns the position of the slider. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2154 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2155 * handle: Handle to the slider to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2156 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2157 * Position of the slider in the set range. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2158 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2159 unsigned int API dw_slider_get_pos(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2160 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2161 JNIEnv *env; |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2162 unsigned int retval = 0; |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2163 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
2164 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2165 { |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2166 // First get the class that contains the method you need to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2167 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2168 // Get the method that you want to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2169 jmethodID percentGetPos = env->GetMethodID(clazz, "percentGetPos", |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
2170 "(Landroid/view/View;)I"); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2171 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2172 retval = env->CallIntMethod(_dw_obj, percentGetPos, handle); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2173 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2174 retval = 0; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2175 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2176 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2177 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2178 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2179 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2180 * Sets the slider position. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2181 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2182 * handle: Handle to the slider to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2183 * position: Position of the slider withing the range. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2184 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2185 void API dw_slider_set_pos(HWND handle, unsigned int position) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2186 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2187 dw_percent_set_pos(handle, position); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2188 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2189 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2190 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2191 * Create a new scrollbar window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2192 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2193 * vertical: TRUE or FALSE if scrollbar is vertical. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2194 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2195 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2196 * A handle to a scrollbar window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2197 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2198 HWND API dw_scrollbar_new(int vertical, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2199 { |
2719
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2200 JNIEnv *env; |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2201 |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2202 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2203 { |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2204 // First get the class that contains the method you need to call |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2205 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2206 // Get the method that you want to call |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
2207 jmethodID scrollBarNew = env->GetMethodID(clazz, "scrollBarNew", |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
2208 "(II)Lorg/dbsoft/dwindows/DWSlider;"); |
2719
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2209 // Call the method on the object |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2210 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, scrollBarNew, vertical, (jint)cid), _DW_REFERENCE_WEAK); |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2211 return result; |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2212 } |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
2213 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2214 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2215 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2216 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2217 * Returns the position of the scrollbar. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2218 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2219 * handle: Handle to the scrollbar to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2220 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2221 * Position of the scrollbar in the set range. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2222 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2223 unsigned int API dw_scrollbar_get_pos(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2224 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2225 return dw_slider_get_pos(handle); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2226 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2227 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2228 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2229 * Sets the scrollbar position. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2230 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2231 * handle: Handle to the scrollbar to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2232 * position: Position of the scrollbar withing the range. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2233 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2234 void API dw_scrollbar_set_pos(HWND handle, unsigned int position) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2235 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2236 dw_percent_set_pos(handle, position); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2237 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2238 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2239 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2240 * Sets the scrollbar range. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2241 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2242 * handle: Handle to the scrollbar to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2243 * range: Maximum range value. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2244 * visible: Visible area relative to the range. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2245 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2246 void API dw_scrollbar_set_range(HWND handle, unsigned int range, unsigned int visible) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2247 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2248 JNIEnv *env; |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2249 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
2250 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2251 { |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2252 // First get the class that contains the method you need to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2253 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2254 // Get the method that you want to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2255 jmethodID percentSetRange = env->GetMethodID(clazz, "percentSetRange", |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
2256 "(Landroid/view/View;I)V"); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2257 // Call the method on the object |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2258 env->CallVoidMethod(_dw_obj, percentSetRange, handle, (jint)range); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2259 _dw_jni_check_exception(env); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2260 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2261 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2262 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2263 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2264 * Create a new percent bar window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2265 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2266 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2267 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2268 * A handle to a percent bar window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2269 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2270 HWND API dw_percent_new(ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2271 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2272 JNIEnv *env; |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2273 |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2274 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2275 { |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2276 // First get the class that contains the method you need to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2277 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2278 // Get the method that you want to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2279 jmethodID percentNew = env->GetMethodID(clazz, "percentNew", |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2280 "(I)Landroid/widget/ProgressBar;"); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2281 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2282 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, percentNew, (jint)cid), _DW_REFERENCE_WEAK); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2283 return result; |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2284 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
2285 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2286 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2287 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2288 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2289 * Sets the percent bar position. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2290 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2291 * handle: Handle to the percent bar to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2292 * position: Position of the percent bar withing the range. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2293 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2294 void API dw_percent_set_pos(HWND handle, unsigned int position) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2295 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2296 JNIEnv *env; |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2297 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
2298 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2299 { |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2300 // First get the class that contains the method you need to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2301 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2302 // Get the method that you want to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2303 jmethodID percentSetPos = env->GetMethodID(clazz, "percentSetPos", |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
2304 "(Landroid/view/View;I)V"); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2305 // Call the method on the object |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2306 env->CallVoidMethod(_dw_obj, percentSetPos, handle, (jint)position); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2307 _dw_jni_check_exception(env); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2308 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2309 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2310 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2311 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2312 * Create a new checkbox window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2313 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2314 * text: The text to be display by the static text widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2315 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2316 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2317 * A handle to a checkbox window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2318 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2319 HWND API dw_checkbox_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2320 { |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2321 JNIEnv *env; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2322 |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2323 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2324 { |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2325 // Construct a String |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2326 jstring jstr = env->NewStringUTF(text); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2327 // First get the class that contains the method you need to call |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
2328 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2329 // Get the method that you want to call |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2330 jmethodID checkboxNew = env->GetMethodID(clazz, "checkboxNew", |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2331 "(Ljava/lang/String;I)Landroid/widget/CheckBox;"); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2332 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2333 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, checkboxNew, jstr, (int)cid), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2334 env->DeleteLocalRef(jstr); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2335 return result; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2336 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
2337 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2338 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2339 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2340 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2341 * Returns the state of the checkbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2342 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2343 * handle: Handle to the checkbox to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2344 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2345 * State of checkbox (TRUE or FALSE). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2346 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2347 int API dw_checkbox_get(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2348 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2349 JNIEnv *env; |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2350 int retval = FALSE; |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2351 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
2352 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2353 { |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2354 // First get the class that contains the method you need to call |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2355 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2356 // Get the method that you want to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2357 jmethodID checkOrRadioGetChecked = env->GetMethodID(clazz, "checkOrRadioGetChecked", |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2358 "(Landroid/view/View;)Z"); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2359 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2360 retval = env->CallBooleanMethod(_dw_obj, checkOrRadioGetChecked, handle); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2361 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2362 retval = FALSE; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2363 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2364 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2365 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2366 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2367 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2368 * Sets the state of the checkbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2369 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2370 * handle: Handle to the checkbox to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2371 * value: TRUE for checked, FALSE for unchecked. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2372 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2373 void API dw_checkbox_set(HWND handle, int value) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2374 { |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2375 JNIEnv *env; |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2376 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
2377 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2378 { |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2379 // First get the class that contains the method you need to call |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2380 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2381 // Get the method that you want to call |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2382 jmethodID checkOrRadioSetChecked = env->GetMethodID(clazz, "checkOrRadioSetChecked", |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2383 "(Landroid/view/View;I)V"); |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2384 // Call the method on the object |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2385 env->CallVoidMethod(_dw_obj, checkOrRadioSetChecked, handle, value); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2386 _dw_jni_check_exception(env); |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
2387 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2388 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2389 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2390 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2391 * Create a new listbox window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2392 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2393 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2394 * multi: Multiple select TRUE or FALSE. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2395 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2396 * A handle to a listbox window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2397 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2398 HWND API dw_listbox_new(ULONG cid, int multi) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2399 { |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2400 JNIEnv *env; |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2401 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2402 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2403 { |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2404 // First get the class that contains the method you need to call |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2405 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2406 // Get the method that you want to call |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2407 jmethodID listBoxNew = env->GetMethodID(clazz, "listBoxNew", |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2408 "(II)Lorg/dbsoft/dwindows/DWListBox;"); |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2409 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2410 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, listBoxNew, (int)cid, multi), _DW_REFERENCE_WEAK); |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2411 return result; |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2412 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
2413 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2414 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2415 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2416 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2417 * Appends the specified text to the listbox's (or combobox) entry list. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2418 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2419 * handle: Handle to the listbox to be appended to. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2420 * text: Text to append into listbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2421 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2422 void API dw_listbox_append(HWND handle, const char *text) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2423 { |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2424 JNIEnv *env; |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2425 |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2426 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2427 { |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2428 // Construct a String |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2429 jstring jstr = env->NewStringUTF(text); |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2430 // First get the class that contains the method you need to call |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2431 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2432 // Get the method that you want to call |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2433 jmethodID listOrComboBoxAppend = env->GetMethodID(clazz, "listOrComboBoxAppend", |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2434 "(Landroid/view/View;Ljava/lang/String;)V"); |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2435 // Call the method on the object |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2436 env->CallVoidMethod(_dw_obj, listOrComboBoxAppend, handle, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2437 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2438 env->DeleteLocalRef(jstr); |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2439 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2440 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2441 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2442 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2443 * Inserts the specified text into the listbox's (or combobox) entry list. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2444 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2445 * handle: Handle to the listbox to be inserted into. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2446 * text: Text to insert into listbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2447 * pos: 0-based position to insert text |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2448 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2449 void API dw_listbox_insert(HWND handle, const char *text, int pos) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2450 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2451 JNIEnv *env; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2452 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2453 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2454 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2455 // Construct a String |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2456 jstring jstr = env->NewStringUTF(text); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2457 // First get the class that contains the method you need to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2458 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2459 // Get the method that you want to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2460 jmethodID listOrComboBoxInsert = env->GetMethodID(clazz, "listOrComboBoxInsert", |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2461 "(Landroid/view/View;Ljava/lang/String;I)V"); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2462 // Call the method on the object |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2463 env->CallVoidMethod(_dw_obj, listOrComboBoxInsert, handle, jstr, pos); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2464 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2465 env->DeleteLocalRef(jstr); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2466 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2467 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2468 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2469 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2470 * Appends the specified text items to the listbox's (or combobox) entry list. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2471 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2472 * handle: Handle to the listbox to be appended to. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2473 * text: Text strings to append into listbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2474 * count: Number of text strings to append |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2475 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2476 void API dw_listbox_list_append(HWND handle, char **text, int count) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2477 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2478 int x; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2479 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2480 /* TODO: this would be more efficient passing in an array */ |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2481 for(x=0;x<count;x++) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2482 dw_listbox_append(handle, text[x]); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2483 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2484 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2485 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2486 * Clears the listbox's (or combobox) list of all entries. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2487 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2488 * handle: Handle to the listbox to be cleared. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2489 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2490 void API dw_listbox_clear(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2491 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2492 JNIEnv *env; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2493 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2494 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2495 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2496 // First get the class that contains the method you need to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2497 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2498 // Get the method that you want to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2499 jmethodID listOrComboBoxClear = env->GetMethodID(clazz, "listOrComboBoxClear", |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2500 "(Landroid/view/View;)V"); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2501 // Call the method on the object |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2502 env->CallVoidMethod(_dw_obj, listOrComboBoxClear, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2503 _dw_jni_check_exception(env); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2504 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2505 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2506 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2507 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2508 * Returns the listbox's item count. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2509 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2510 * handle: Handle to the listbox to be counted. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2511 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2512 * The number of items in the listbox. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2513 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2514 int API dw_listbox_count(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2515 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2516 JNIEnv *env; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2517 int retval = 0; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2518 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2519 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2520 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2521 // First get the class that contains the method you need to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2522 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2523 // Get the method that you want to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2524 jmethodID listOrComboBoxCount = env->GetMethodID(clazz, "listOrComboBoxCount", |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2525 "(Landroid/view/View;)I"); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2526 // Call the method on the object |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2527 retval = env->CallIntMethod(_dw_obj, listOrComboBoxCount, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2528 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2529 retval = 0; |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2530 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2531 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2532 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2533 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2534 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2535 * Sets the topmost item in the viewport. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2536 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2537 * handle: Handle to the listbox to be cleared. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2538 * top: Index to the top item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2539 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2540 void API dw_listbox_set_top(HWND handle, int top) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2541 { |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2542 JNIEnv *env; |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2543 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2544 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2545 { |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2546 // First get the class that contains the method you need to call |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2547 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2548 // Get the method that you want to call |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2549 jmethodID listBoxSetTop = env->GetMethodID(clazz, "listBoxSetTop", |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2550 "(Landroid/view/View;I)V"); |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2551 // Call the method on the object |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2552 env->CallVoidMethod(_dw_obj, listBoxSetTop, handle, top); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2553 _dw_jni_check_exception(env); |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2518
diff
changeset
|
2554 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2555 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2556 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2557 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2558 * Copies the given index item's text into buffer. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2559 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2560 * handle: Handle to the listbox to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2561 * index: Index into the list to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2562 * buffer: Buffer where text will be copied. |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2563 * length: Length of the buffer (including nullptr). |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2564 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2565 void API dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2566 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2567 JNIEnv *env; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2568 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2569 if(buffer && length > 0 && handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2570 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2571 // First get the class that contains the method you need to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2572 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2573 // Get the method that you want to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2574 jmethodID listOrComboBoxGetText = env->GetMethodID(clazz, "listOrComboBoxGetText", |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2575 "(Landroid/view/View;I)Ljava/lang/String;"); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2576 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2577 jstring result = (jstring)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, listOrComboBoxGetText, handle, index), _DW_REFERENCE_NONE); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2578 // Get the UTF8 string result |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2579 if(result) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2580 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2581 const char *utf8 = env->GetStringUTFChars(result, nullptr); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2582 |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2583 if(utf8) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2584 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2585 strncpy(buffer, utf8, length); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2586 env->ReleaseStringUTFChars(result, utf8); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2587 } |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2588 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2589 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2590 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2591 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2592 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2593 * Sets the text of a given listbox entry. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2594 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2595 * handle: Handle to the listbox to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2596 * index: Index into the list to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2597 * buffer: Buffer where text will be copied. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2598 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2599 void API dw_listbox_set_text(HWND handle, unsigned int index, const char *buffer) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2600 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2601 JNIEnv *env; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2602 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2603 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2604 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2605 // Construct a String |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2606 jstring jstr = env->NewStringUTF(buffer); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2607 // First get the class that contains the method you need to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2608 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2609 // Get the method that you want to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2610 jmethodID listOrComboBoxSetText = env->GetMethodID(clazz, "listOrComboBoxSetText", |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2611 "(Landroid/view/View;ILjava/lang/String;)V"); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2612 // Call the method on the object |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2613 env->CallVoidMethod(_dw_obj, listOrComboBoxSetText, handle, index, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2614 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2615 env->DeleteLocalRef(jstr); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2616 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2617 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2618 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2619 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2620 * Returns the index to the item in the list currently selected. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2621 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2622 * handle: Handle to the listbox to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2623 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2624 * The selected item index or DW_ERROR_UNKNOWN (-1) on error. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2625 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2626 int API dw_listbox_selected(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2627 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2628 JNIEnv *env; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2629 int retval = DW_ERROR_UNKNOWN; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2630 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2631 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2632 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2633 // First get the class that contains the method you need to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2634 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2635 // Get the method that you want to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2636 jmethodID listOrComboBoxGetSelected = env->GetMethodID(clazz, "listOrComboBoxGetSelected", |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2637 "(Landroid/view/View;)I"); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2638 // Call the method on the object |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2639 retval = env->CallIntMethod(_dw_obj, listOrComboBoxGetSelected, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2640 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2641 retval = DW_ERROR_UNKNOWN; |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2642 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2643 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2644 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2645 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2646 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2647 * Returns the index to the current selected item or -1 when done. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2648 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2649 * handle: Handle to the listbox to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2650 * where: Either the previous return or -1 to restart. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2651 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2652 * The next selected item or DW_ERROR_UNKNOWN (-1) on error. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2653 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2654 int API dw_listbox_selected_multi(HWND handle, int where) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2655 { |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2656 JNIEnv *env; |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2657 int retval = DW_ERROR_UNKNOWN; |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2658 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2659 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2660 { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2661 // First get the class that contains the method you need to call |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2662 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2663 // Get the method that you want to call |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2664 jmethodID listBoxSelectedMulti = env->GetMethodID(clazz, "listBoxSelectedMulti", |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2665 "(Landroid/view/View;I)I"); |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2666 // Call the method on the object |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2667 retval = env->CallIntMethod(_dw_obj, listBoxSelectedMulti, handle, where); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2668 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2669 retval = DW_ERROR_UNKNOWN; |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2670 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2671 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2672 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2673 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2674 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2675 * Sets the selection state of a given index. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2676 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2677 * handle: Handle to the listbox to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2678 * index: Item index. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2679 * state: TRUE if selected FALSE if unselected. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2680 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2681 void API dw_listbox_select(HWND handle, int index, int state) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2682 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2683 JNIEnv *env; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2684 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2685 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2686 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2687 // First get the class that contains the method you need to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2688 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2689 // Get the method that you want to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2690 jmethodID listOrComboBoxSelect = env->GetMethodID(clazz, "listOrComboBoxSelect", |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2691 "(Landroid/view/View;II)V"); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2692 // Call the method on the object |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2693 env->CallVoidMethod(_dw_obj, listOrComboBoxSelect, handle, index, state); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2694 _dw_jni_check_exception(env); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2695 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2696 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2697 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2698 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2699 * Deletes the item with given index from the list. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2700 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2701 * handle: Handle to the listbox to be set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2702 * index: Item index. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2703 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2704 void API dw_listbox_delete(HWND handle, int index) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2705 { |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2706 JNIEnv *env; |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2707 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2708 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2709 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2710 // First get the class that contains the method you need to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2711 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2712 // Get the method that you want to call |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2713 jmethodID listOrComboBoxDelete = env->GetMethodID(clazz, "listOrComboBoxDelete", |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2714 "(Landroid/view/View;I)V"); |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2715 // Call the method on the object |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2716 env->CallVoidMethod(_dw_obj, listOrComboBoxDelete, handle, index); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2717 _dw_jni_check_exception(env); |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2515
diff
changeset
|
2718 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2719 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2720 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2721 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2722 * Create a new Combobox window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2723 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2724 * text: The default text to be in the combpbox widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2725 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2726 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2727 * A handle to a combobox window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2728 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2729 HWND API dw_combobox_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2730 { |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2731 JNIEnv *env; |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2732 |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2733 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2734 { |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2735 // Construct a String |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2736 jstring jstr = env->NewStringUTF(text); |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2737 // First get the class that contains the method you need to call |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2738 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2739 // Get the method that you want to call |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2740 jmethodID comboBoxNew = env->GetMethodID(clazz, "comboBoxNew", |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2741 "(Ljava/lang/String;I)Lorg/dbsoft/dwindows/DWComboBox;"); |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2742 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2743 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, comboBoxNew, jstr, (int)cid), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2744 env->DeleteLocalRef(jstr); |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2745 return result; |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
2746 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
2747 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2748 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2749 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2750 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2751 * Create a new Multiline Editbox window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2752 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2753 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2754 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
2755 * A handle to a MLE window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2756 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2757 HWND API dw_mle_new(ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2758 { |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2759 JNIEnv *env; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2760 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2761 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2762 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2763 // First get the class that contains the method you need to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2764 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2765 // Get the method that you want to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2766 jmethodID mleNew = env->GetMethodID(clazz, "mleNew", |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2767 "(I)Landroid/widget/EditText;"); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2768 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2769 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, mleNew, (int)cid), _DW_REFERENCE_WEAK); |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2770 return result; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2771 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
2772 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2773 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2774 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2775 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2776 * Adds text to an MLE box and returns the current point. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2777 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2778 * handle: Handle to the MLE to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2779 * buffer: Text buffer to be imported. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2780 * startpoint: Point to start entering text. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2781 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2782 * Current position in the buffer. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2783 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2784 unsigned int API dw_mle_import(HWND handle, const char *buffer, int startpoint) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2785 { |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2786 JNIEnv *env; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2787 int retval = 0; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2788 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2789 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2790 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2791 // Construct a String |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2792 jstring jstr = env->NewStringUTF(buffer); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2793 // First get the class that contains the method you need to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2794 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2795 // Get the method that you want to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2796 jmethodID mleImport = env->GetMethodID(clazz, "mleImport", |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2797 "(Landroid/widget/EditText;Ljava/lang/String;I)I"); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2798 // Call the method on the object |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2799 retval = env->CallIntMethod(_dw_obj, mleImport, handle, jstr, startpoint); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2800 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2801 retval = 0; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
2802 env->DeleteLocalRef(jstr); |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2803 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2804 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2805 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2806 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2807 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2808 * Grabs text from an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2809 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2810 * handle: Handle to the MLE to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2811 * buffer: Text buffer to be exported. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2812 * startpoint: Point to start grabbing text. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2813 * length: Amount of text to be grabbed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2814 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2815 void API dw_mle_export(HWND handle, char *buffer, int startpoint, int length) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2816 { |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2817 if(buffer && length > 0) { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2818 char *text = dw_window_get_text(handle); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2819 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2820 if (text) { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2821 int len = strlen(text); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2822 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2823 if (startpoint < len) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2824 strncpy(buffer, &text[startpoint], length); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2825 else |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2826 buffer[0] = '\0'; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2827 free(text); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2828 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2829 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2830 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2831 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2832 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2833 * Obtains information about an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2834 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2835 * handle: Handle to the MLE to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2836 * bytes: A pointer to a variable to return the total bytes. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2837 * lines: A pointer to a variable to return the number of lines. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2838 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2839 void API dw_mle_get_size(HWND handle, unsigned long *bytes, unsigned long *lines) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2840 { |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2841 char *text = dw_window_get_text(handle); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2842 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2843 if(bytes) { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2844 if(text) { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2845 *bytes = strlen(text); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2846 } else { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2847 *bytes = 0; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2848 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2849 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2850 if(lines) { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2851 if(text) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2852 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2853 int count = 0; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2854 char *tmp = text; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2855 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2856 while((tmp = strchr(tmp, '\n'))) { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2857 count++; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2858 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2859 *lines = count; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2860 } else { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2861 *lines = 0; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2862 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2863 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2864 if(text) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2865 free(text); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2866 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2867 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2868 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2869 * Deletes text from an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2870 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2871 * handle: Handle to the MLE to be deleted from. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2872 * startpoint: Point to start deleting text. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2873 * length: Amount of text to be deleted. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2874 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2875 void API dw_mle_delete(HWND handle, int startpoint, int length) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2876 { |
2525
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2877 JNIEnv *env; |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2878 |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2879 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2880 { |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2881 // First get the class that contains the method you need to call |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2882 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2883 // Get the method that you want to call |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2884 jmethodID mleDelete = env->GetMethodID(clazz, "mleDelete", |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2885 "(Landroid/widget/EditText;II)V"); |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2886 // Call the method on the object |
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2887 env->CallVoidMethod(_dw_obj, mleDelete, handle, startpoint, length); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2888 _dw_jni_check_exception(env); |
2525
9fd26efff9da
Android: Implement dw_mle_delete() so that the tested output is correct.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
2889 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2890 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2891 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2892 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2893 * Clears all text from an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2894 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2895 * handle: Handle to the MLE to be cleared. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2896 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2897 void API dw_mle_clear(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2898 { |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2899 JNIEnv *env; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2900 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2901 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2902 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2903 // First get the class that contains the method you need to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2904 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2905 // Get the method that you want to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2906 jmethodID mleClear = env->GetMethodID(clazz, "mleClear", |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2907 "(Landroid/widget/EditText;)V"); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2908 // Call the method on the object |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2909 env->CallVoidMethod(_dw_obj, mleClear, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2910 _dw_jni_check_exception(env); |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2911 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2912 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2913 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2914 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2915 * Sets the visible line of an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2916 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2917 * handle: Handle to the MLE to be positioned. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2918 * line: Line to be visible. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2919 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2920 void API dw_mle_set_visible(HWND handle, int line) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2921 { |
2707
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2922 JNIEnv *env; |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2923 |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2924 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2925 { |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2926 // First get the class that contains the method you need to call |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2927 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2928 // Get the method that you want to call |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2929 jmethodID mleSetVisible = env->GetMethodID(clazz, "mleSetVisible", |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2930 "(Landroid/widget/EditText;I)V"); |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2931 // Call the method on the object |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2932 env->CallVoidMethod(_dw_obj, mleSetVisible, handle, line); |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2933 _dw_jni_check_exception(env); |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
2934 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2935 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2936 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2937 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2938 * Sets the editablity of an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2939 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2940 * handle: Handle to the MLE. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2941 * state: TRUE if it can be edited, FALSE for readonly. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2942 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2943 void API dw_mle_set_editable(HWND handle, int state) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2944 { |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2945 JNIEnv *env; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2946 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2947 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2948 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2949 // First get the class that contains the method you need to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2950 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2951 // Get the method that you want to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2952 jmethodID mleSetEditable = env->GetMethodID(clazz, "mleSetEditable", |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2953 "(Landroid/widget/EditText;I)V"); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2954 // Call the method on the object |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2955 env->CallVoidMethod(_dw_obj, mleSetEditable, handle, state); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2956 _dw_jni_check_exception(env); |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2957 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2958 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2959 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2960 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2961 * Sets the word wrap state of an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2962 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2963 * handle: Handle to the MLE. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2964 * state: TRUE if it wraps, FALSE if it doesn't. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2965 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2966 void API dw_mle_set_word_wrap(HWND handle, int state) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2967 { |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2968 JNIEnv *env; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2969 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2970 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2971 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2972 // First get the class that contains the method you need to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2973 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2974 // Get the method that you want to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2975 jmethodID mleSetWordWrap = env->GetMethodID(clazz, "mleSetWordWrap", |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2976 "(Landroid/widget/EditText;I)V"); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2977 // Call the method on the object |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2978 env->CallVoidMethod(_dw_obj, mleSetWordWrap, handle, state); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
2979 _dw_jni_check_exception(env); |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2980 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2981 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2982 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2983 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2984 * Sets the current cursor position of an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2985 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2986 * handle: Handle to the MLE to be positioned. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2987 * point: Point to position cursor. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2988 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2989 void API dw_mle_set_cursor(HWND handle, int point) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2990 { |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2991 JNIEnv *env; |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2992 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2993 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2994 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2995 // First get the class that contains the method you need to call |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2996 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2997 // Get the method that you want to call |
2701
9df2c11f020f
Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2697
diff
changeset
|
2998 jmethodID mleSetCursor = env->GetMethodID(clazz, "mleSetCursor", |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
2999 "(Landroid/widget/EditText;I)V"); |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3000 // Call the method on the object |
2701
9df2c11f020f
Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2697
diff
changeset
|
3001 env->CallVoidMethod(_dw_obj, mleSetCursor, handle, point); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3002 _dw_jni_check_exception(env); |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3003 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3004 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3005 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3006 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3007 * Sets the word auto complete state of an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3008 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3009 * handle: Handle to the MLE. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3010 * state: Bitwise combination of DW_MLE_COMPLETE_TEXT/DASH/QUOTE |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3011 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3012 void API dw_mle_set_auto_complete(HWND handle, int state) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3013 { |
2702
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3014 JNIEnv *env; |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3015 |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3016 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3017 { |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3018 // First get the class that contains the method you need to call |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3019 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3020 // Get the method that you want to call |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3021 jmethodID mleSetAutoComplete = env->GetMethodID(clazz, "mleSetAutoComplete", |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3022 "(Landroid/widget/EditText;I)V"); |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3023 // Call the method on the object |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3024 env->CallVoidMethod(_dw_obj, mleSetAutoComplete, handle, state); |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3025 _dw_jni_check_exception(env); |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3026 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3027 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3028 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3029 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3030 * Finds text in an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3031 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3032 * handle: Handle to the MLE to be cleared. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3033 * text: Text to search for. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3034 * point: Start point of search. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3035 * flags: Search specific flags. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3036 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3037 * Position in buffer or DW_ERROR_UNKNOWN (-1) on error. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3038 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3039 int API dw_mle_search(HWND handle, const char *text, int point, unsigned long flags) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3040 { |
2708
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3041 JNIEnv *env; |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3042 int retval = DW_ERROR_UNKNOWN; |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3043 |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3044 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3045 { |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3046 // Construct a String |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3047 jstring jstr = env->NewStringUTF(text); |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3048 // First get the class that contains the method you need to call |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3049 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3050 // Get the method that you want to call |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3051 jmethodID mleSearch = env->GetMethodID(clazz, "mleSearch", |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3052 "(Landroid/widget/EditText;Ljava/lang/String;II)I"); |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3053 // Call the method on the object |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3054 retval = env->CallIntMethod(_dw_obj, mleSearch, handle, jstr, point, (jint)flags); |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3055 if(_dw_jni_check_exception(env)) |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3056 retval = DW_ERROR_UNKNOWN; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3057 env->DeleteLocalRef(jstr); |
2708
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3058 } |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3059 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3060 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3061 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3062 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3063 * Stops redrawing of an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3064 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3065 * handle: Handle to the MLE to freeze. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3066 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3067 void API dw_mle_freeze(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3068 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
3069 /* Don't think this is necessary on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3070 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3071 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3072 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3073 * Resumes redrawing of an MLE box. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3074 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3075 * handle: Handle to the MLE to thaw. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3076 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3077 void API dw_mle_thaw(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3078 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
3079 /* Don't think this is necessary on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3080 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3081 |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3082 HWND _dw_text_new(const char *text, ULONG cid, int status) |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3083 { |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3084 JNIEnv *env; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3085 |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3086 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3087 { |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3088 // Construct a String |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3089 jstring jstr = env->NewStringUTF(text); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3090 // First get the class that contains the method you need to call |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
3091 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3092 // Get the method that you want to call |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3093 jmethodID textNew = env->GetMethodID(clazz, "textNew", |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3094 "(Ljava/lang/String;II)Landroid/widget/TextView;"); |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3095 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3096 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, textNew, jstr, (int)cid, status), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3097 env->DeleteLocalRef(jstr); |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3098 return result; |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3099 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3100 return nullptr; |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3101 } |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3102 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3103 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3104 * Create a new status text window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3105 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3106 * text: The text to be display by the static text widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3107 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3108 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3109 * A handle to a status text window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3110 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3111 HWND API dw_status_text_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3112 { |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3113 return _dw_text_new(text, cid, TRUE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3114 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3115 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3116 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3117 * Create a new static text window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3118 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3119 * text: The text to be display by the static text widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3120 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3121 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3122 * A handle to a text window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3123 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3124 HWND API dw_text_new(const char *text, ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3125 { |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3126 return _dw_text_new(text, cid, FALSE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3127 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3128 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3129 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3130 * Creates a rendering context widget (window) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3131 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3132 * id: An id to be used with dw_window_from_id. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3133 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3134 * A handle to the widget or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3135 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3136 HWND API dw_render_new(unsigned long cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3137 { |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3138 JNIEnv *env; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3139 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3140 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3141 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3142 // First get the class that contains the method you need to call |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3143 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3144 // Get the method that you want to call |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3145 jmethodID renderNew = env->GetMethodID(clazz, "renderNew", |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3146 "(I)Lorg/dbsoft/dwindows/DWRender;"); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3147 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3148 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, renderNew, (int)cid), _DW_REFERENCE_WEAK); |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3149 return result; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3150 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3151 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3152 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3153 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3154 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3155 * Invalidate the render widget triggering an expose event. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3156 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3157 * handle: A handle to a render widget to be redrawn. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3158 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3159 void API dw_render_redraw(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3160 { |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3161 JNIEnv *env; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3162 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3163 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3164 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3165 // First get the class that contains the method you need to call |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3166 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3167 // Get the method that you want to call |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3168 jmethodID renderRedraw = env->GetMethodID(clazz, "renderRedraw", |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3169 "(Lorg/dbsoft/dwindows/DWRender;I)V"); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3170 // Call the method on the object |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3171 env->CallVoidMethod(_dw_obj, renderRedraw, handle, (jint)_dw_render_safe_mode); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3172 _dw_jni_check_exception(env); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3173 } |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3174 } |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3175 |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3176 /* Internal function to create backing bitmap */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3177 void _dw_render_create_bitmap(HWND handle) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3178 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3179 JNIEnv *env; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3180 |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3181 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3182 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3183 // First get the class that contains the method you need to call |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3184 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3185 // Get the method that you want to call |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3186 jmethodID renderCreateBitmap = env->GetMethodID(clazz, "renderCreateBitmap", |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3187 "(Lorg/dbsoft/dwindows/DWRender;)V"); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3188 // Call the method on the object |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3189 env->CallVoidMethod(_dw_obj, renderCreateBitmap, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3190 _dw_jni_check_exception(env); |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3191 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3192 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3193 |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3194 /* Internal function to trigger a redraw using the backing bitmap */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3195 void _dw_render_finish_draw(HWND handle) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3196 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3197 JNIEnv *env; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3198 |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3199 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3200 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3201 // First get the class that contains the method you need to call |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3202 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3203 // Get the method that you want to call |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3204 jmethodID renderFinishDraw = env->GetMethodID(clazz, "renderFinishDraw", |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3205 "(Lorg/dbsoft/dwindows/DWRender;)V"); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3206 // Call the method on the object |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3207 env->CallVoidMethod(_dw_obj, renderFinishDraw, handle); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3208 _dw_jni_check_exception(env); |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3209 } |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3210 } |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3211 |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
3212 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3213 /* Sets the current foreground drawing color. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3214 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3215 * red: red value. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3216 * green: green value. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3217 * blue: blue value. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3218 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3219 void API dw_color_foreground_set(unsigned long value) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3220 { |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3221 pthread_setspecific(_dw_fgcolor_key, (void *)value); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3222 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3223 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3224 /* Sets the current background drawing color. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3225 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3226 * red: red value. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3227 * green: green value. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3228 * blue: blue value. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3229 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3230 void API dw_color_background_set(unsigned long value) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3231 { |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3232 pthread_setspecific(_dw_bgcolor_key, (void *)value); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3233 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3234 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3235 /* Allows the user to choose a color using the system's color chooser dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3236 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3237 * value: current color |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3238 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3239 * The selected color or the current color if cancelled. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3240 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3241 unsigned long API dw_color_choose(unsigned long value) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3242 { |
2714
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3243 JNIEnv *env; |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3244 unsigned long newcolor = value; |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3245 |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3246 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3247 { |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3248 unsigned long _value = _dw_get_color(value); |
2722
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3249 int r, g, b; |
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3250 jint ac; |
2714
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3251 |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3252 // First get the class that contains the method you need to call |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3253 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3254 // Get the method that you want to call |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3255 jmethodID colorChoose = env->GetMethodID(clazz, "colorChoose", |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3256 "(IIIII)I"); |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3257 // Call the method on the object |
2722
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3258 ac = env->CallIntMethod(_dw_obj, colorChoose, (jint)value, 0, |
2714
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3259 (jint)DW_RED_VALUE(_value), (jint)DW_GREEN_VALUE(_value), (jint)DW_BLUE_VALUE(_value)); |
2722
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3260 if(_dw_jni_check_exception(env)) |
2714
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3261 return value; |
2722
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3262 // Convert from Android Color to RGB back to Dynamic Windows |
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3263 b = ac & 0xff; |
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3264 g = (ac >> 8) & 0xff; |
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3265 r = (ac >> 16) & 0xff; |
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
3266 newcolor = DW_RGB(r, g, b); |
2714
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3267 } |
26bb1e4a97d0
Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2710
diff
changeset
|
3268 return newcolor; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3269 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3270 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3271 /* Draw a point on a window (preferably a render window). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3272 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3273 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3274 * pixmap: Handle to the pixmap. (choose only one of these) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3275 * x: X coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3276 * y: Y coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3277 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3278 void API dw_draw_point(HWND handle, HPIXMAP pixmap, int x, int y) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3279 { |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3280 JNIEnv *env; |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3281 |
2534
c4255630cade
Android: Fix the safety check in the dw_draw_*() functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2533
diff
changeset
|
3282 if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3283 { |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3284 jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3285 jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
3286 |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3287 // First get the class that contains the method you need to call |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3288 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3289 // Get the method that you want to call |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3290 jmethodID drawPoint = env->GetMethodID(clazz, "drawPoint", |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3291 "(Lorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;IIJJ)V"); |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3292 // Call the method on the object |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3293 env->CallVoidMethod(_dw_obj, drawPoint, handle, pixmap ? pixmap->bitmap : nullptr, x, y, fgcolor, bgcolor); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3294 _dw_jni_check_exception(env); |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3295 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3296 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3297 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3298 /* Draw a line on a window (preferably a render window). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3299 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3300 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3301 * pixmap: Handle to the pixmap. (choose only one of these) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3302 * x1: First X coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3303 * y1: First Y coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3304 * x2: Second X coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3305 * y2: Second Y coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3306 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3307 void API dw_draw_line(HWND handle, HPIXMAP pixmap, int x1, int y1, int x2, int y2) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3308 { |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3309 JNIEnv *env; |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3310 |
2534
c4255630cade
Android: Fix the safety check in the dw_draw_*() functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2533
diff
changeset
|
3311 if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3312 { |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3313 jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3314 jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
3315 |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3316 // First get the class that contains the method you need to call |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3317 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3318 // Get the method that you want to call |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3319 jmethodID drawLine = env->GetMethodID(clazz, "drawLine", |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3320 "(Lorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;IIIIJJ)V"); |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3321 // Call the method on the object |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3322 env->CallVoidMethod(_dw_obj, drawLine, handle, pixmap ? pixmap->bitmap : nullptr, x1, y1, x2, y2, fgcolor, bgcolor); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3323 _dw_jni_check_exception(env); |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3324 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3325 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3326 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3327 /* Draw text on a window (preferably a render window). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3328 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3329 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3330 * pixmap: Handle to the pixmap. (choose only one of these) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3331 * x: X coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3332 * y: Y coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3333 * text: Text to be displayed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3334 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3335 void API dw_draw_text(HWND handle, HPIXMAP pixmap, int x, int y, const char *text) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3336 { |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3337 JNIEnv *env; |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3338 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3339 if((handle || pixmap) && text && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3340 { |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3341 jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3342 jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
3343 |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3344 // Construct the string |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3345 jstring jstr = env->NewStringUTF(text); |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3346 // First get the class that contains the method you need to call |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3347 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3348 // Get the method that you want to call |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3349 jmethodID drawLine = env->GetMethodID(clazz, "drawText", |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3350 "(Lorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;IILjava/lang/String;Landroid/graphics/Typeface;ILandroid/view/View;JJ)V"); |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3351 // Call the method on the object |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3352 env->CallVoidMethod(_dw_obj, drawLine, handle, pixmap ? pixmap->bitmap : nullptr, x, y, jstr, |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
3353 pixmap ? pixmap->typeface : nullptr, pixmap ? pixmap->fontsize : 0, |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3354 pixmap ? pixmap->handle : nullptr, fgcolor, bgcolor); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3355 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3356 env->DeleteLocalRef(jstr); |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3357 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3358 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3359 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3360 /* Query the width and height of a text string. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3361 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3362 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3363 * pixmap: Handle to the pixmap. (choose only one of these) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3364 * text: Text to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3365 * width: Pointer to a variable to be filled in with the width. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3366 * height: Pointer to a variable to be filled in with the height. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3367 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3368 void API dw_font_text_extents_get(HWND handle, HPIXMAP pixmap, const char *text, int *width, int *height) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3369 { |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3370 JNIEnv *env; |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3371 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3372 if((handle || pixmap) && text && (width || height) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3373 { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3374 // Construct the string |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3375 jstring jstr = env->NewStringUTF(text); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3376 // First get the class that contains the method you need to call |
2548
c4d75d30430c
Android: Minor fixes to that last commit... missed dw.h changes and remove test code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2547
diff
changeset
|
3377 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3378 // Get the method that you want to call |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3379 jmethodID fontTextExtentsGet = env->GetMethodID(clazz, "fontTextExtentsGet", |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3380 "(Lorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;Ljava/lang/String;Landroid/graphics/Typeface;ILandroid/view/View;)J"); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3381 // Call the method on the object |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3382 jlong dimensions = env->CallLongMethod(_dw_obj, fontTextExtentsGet, handle, pixmap ? pixmap->bitmap : nullptr, jstr, |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3383 pixmap ? pixmap->typeface : nullptr, pixmap ? pixmap->fontsize : 0, pixmap ? pixmap->handle : nullptr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3384 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3385 dimensions = 0; |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3386 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3387 if(width) |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3388 *width = dimensions & 0xFFFF; |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3389 if(height) |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3390 *height = (dimensions >> 32) & 0xFFFF; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3391 env->DeleteLocalRef(jstr); |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
3392 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3393 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3394 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3395 /* Draw a polygon on a window (preferably a render window). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3396 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3397 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3398 * pixmap: Handle to the pixmap. (choose only one of these) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3399 * flags: DW_DRAW_FILL (1) to fill the polygon or DW_DRAW_DEFAULT (0). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3400 * npoints: Number of points passed in. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3401 * x: Pointer to array of X coordinates. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3402 * y: Pointer to array of Y coordinates. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3403 */ |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3404 void API dw_draw_polygon(HWND handle, HPIXMAP pixmap, int flags, int npoints, int *x, int *y) |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3405 { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3406 JNIEnv *env; |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3407 |
2537
cd9d2ba251d5
Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2535
diff
changeset
|
3408 if((handle || pixmap) && npoints > 0 && x && y && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3409 { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3410 jintArray jx = env->NewIntArray(npoints); |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3411 jintArray jy = env->NewIntArray(npoints); |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3412 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3413 if(jx && jy) |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3414 { |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3415 jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3416 jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
3417 |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3418 // Construct the integer arrays |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3419 env->SetIntArrayRegion(jx, 0, npoints, x); |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3420 env->SetIntArrayRegion(jy, 0, npoints, y); |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3421 // First get the class that contains the method you need to call |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3422 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3423 // Get the method that you want to call |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3424 jmethodID drawPolygon = env->GetMethodID(clazz, "drawPolygon", |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3425 "(Lorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;II[I[IJJ)V"); |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3426 // Call the method on the object |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3427 env->CallVoidMethod(_dw_obj, drawPolygon, handle, pixmap ? pixmap->bitmap : nullptr, flags, npoints, jx, jy, fgcolor, bgcolor); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3428 _dw_jni_check_exception(env); |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3429 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3430 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3431 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3432 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3433 /* Draw a rectangle on a window (preferably a render window). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3434 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3435 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3436 * pixmap: Handle to the pixmap. (choose only one of these) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3437 * flags: DW_DRAW_FILL (1) to fill the box or DW_DRAW_DEFAULT (0). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3438 * x: X coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3439 * y: Y coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3440 * width: Width of rectangle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3441 * height: Height of rectangle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3442 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3443 void API dw_draw_rect(HWND handle, HPIXMAP pixmap, int flags, int x, int y, int width, int height) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3444 { |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3445 JNIEnv *env; |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3446 |
2534
c4255630cade
Android: Fix the safety check in the dw_draw_*() functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2533
diff
changeset
|
3447 if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3448 { |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3449 jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3450 jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
3451 |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3452 // First get the class that contains the method you need to call |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3453 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3454 // Get the method that you want to call |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3455 jmethodID drawLine = env->GetMethodID(clazz, "drawRect", |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3456 "(Lorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;IIIIJJ)V"); |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3457 // Call the method on the object |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3458 env->CallVoidMethod(_dw_obj, drawLine, handle, pixmap ? pixmap->bitmap : nullptr, x, y, width, height, fgcolor, bgcolor); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3459 _dw_jni_check_exception(env); |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
3460 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3461 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3462 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3463 /* Draw an arc on a window (preferably a render window). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3464 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3465 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3466 * pixmap: Handle to the pixmap. (choose only one of these) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3467 * flags: DW_DRAW_FILL (1) to fill the arc or DW_DRAW_DEFAULT (0). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3468 * DW_DRAW_FULL will draw a complete circle/elipse. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3469 * xorigin: X coordinate of center of arc. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3470 * yorigin: Y coordinate of center of arc. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3471 * x1: X coordinate of first segment of arc. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3472 * y1: Y coordinate of first segment of arc. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3473 * x2: X coordinate of second segment of arc. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3474 * y2: Y coordinate of second segment of arc. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3475 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3476 void API dw_draw_arc(HWND handle, HPIXMAP pixmap, int flags, int xorigin, int yorigin, int x1, int y1, int x2, int y2) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3477 { |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3478 JNIEnv *env; |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3479 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3480 if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3481 { |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3482 jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
3483 jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
3484 |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3485 // First get the class that contains the method you need to call |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3486 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3487 // Get the method that you want to call |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3488 jmethodID drawLine = env->GetMethodID(clazz, "drawArc", |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3489 "(Lorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;IIIIIIIJJ)V"); |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3490 // Call the method on the object |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3491 env->CallVoidMethod(_dw_obj, drawLine, handle, pixmap ? pixmap->bitmap : nullptr, flags, xorigin, yorigin, x1, y1, x2, y2, fgcolor, bgcolor); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3492 _dw_jni_check_exception(env); |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2534
diff
changeset
|
3493 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3494 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3495 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3496 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3497 * Create a tree object to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3498 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3499 * id: An ID to be used for getting the resource from the |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3500 * resource file. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3501 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3502 * A handle to a tree window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3503 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3504 HWND API dw_tree_new(ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3505 { |
2774
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3506 JNIEnv *env; |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3507 |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3508 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3509 { |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3510 // First get the class that contains the method you need to call |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3511 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3512 // Get the method that you want to call |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3513 jmethodID treeNew = env->GetMethodID(clazz, "treeNew", |
2775
5f77f52df8ac
Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2774
diff
changeset
|
3514 "(I)Lorg/dbsoft/dwindows/DWTree;"); |
2774
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3515 // Call the method on the object |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3516 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, treeNew, (int)cid), _DW_REFERENCE_WEAK); |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3517 return result; |
94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2754
diff
changeset
|
3518 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3519 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3520 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3521 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3522 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3523 * Inserts an item into a tree window (widget) after another item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3524 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3525 * handle: Handle to the tree to be inserted. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3526 * item: Handle to the item to be positioned after. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3527 * title: The text title of the entry. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3528 * icon: Handle to coresponding icon. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3529 * parent: Parent handle or 0 if root. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3530 * itemdata: Item specific data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3531 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3532 * A handle to a tree item or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3533 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3534 HTREEITEM API dw_tree_insert_after(HWND handle, HTREEITEM item, const char *title, HICN icon, HTREEITEM parent, void *itemdata) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3535 { |
2776
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3536 JNIEnv *env; |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3537 |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3538 if(handle && title && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2776
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3539 { |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3540 // Construct the string |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3541 jstring jstr = env->NewStringUTF(title); |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3542 // First get the class that contains the method you need to call |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3543 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3544 // Get the method that you want to call |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3545 jmethodID treeInsertAfter = env->GetMethodID(clazz, "treeInsertAfter", |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3546 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Lorg/dbsoft/dwindows/DWTreeItem;J)Lorg/dbsoft/dwindows/DWTreeItem;"); |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3547 // Call the method on the object |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3548 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, treeInsertAfter, handle, item, |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3549 jstr, icon, parent, (jlong)itemdata), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3550 env->DeleteLocalRef(jstr); |
2776
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3551 return result; |
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3552 } |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3553 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3554 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3555 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3556 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3557 * Inserts an item into a tree window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3558 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3559 * handle: Handle to the tree to be inserted. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3560 * title: The text title of the entry. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3561 * icon: Handle to coresponding icon. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3562 * parent: Parent handle or 0 if root. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3563 * itemdata: Item specific data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3564 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3565 * A handle to a tree item or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3566 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3567 HTREEITEM API dw_tree_insert(HWND handle, const char *title, HICN icon, HTREEITEM parent, void *itemdata) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3568 { |
2776
858155527b05
Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2775
diff
changeset
|
3569 return dw_tree_insert_after(handle, nullptr, title, icon, parent, itemdata); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3570 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3571 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3572 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3573 * Gets the text an item in a tree window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3574 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3575 * handle: Handle to the tree containing the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3576 * item: Handle of the item to be modified. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3577 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3578 * A malloc()ed buffer of item text to be dw_free()ed or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3579 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3580 char * API dw_tree_get_title(HWND handle, HTREEITEM item) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3581 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3582 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3583 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3584 if(handle && item && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3585 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3586 const char *utf8 = nullptr; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3587 char *retval = nullptr; |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3588 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3589 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3590 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3591 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3592 jmethodID treeGetTitle = env->GetMethodID(clazz, "treeGetTitle", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3593 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;)Ljava/lang/String;"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3594 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3595 jstring result = (jstring)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, treeGetTitle, handle, item), _DW_REFERENCE_NONE); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3596 // Get the UTF8 string result |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3597 if(result) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3598 utf8 = env->GetStringUTFChars(result, nullptr); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3599 if(utf8) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3600 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3601 retval = strdup(utf8); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3602 env->ReleaseStringUTFChars(result, utf8); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3603 } |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3604 } |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3605 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3606 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3607 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3608 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3609 * Gets the text an item in a tree window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3610 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3611 * handle: Handle to the tree containing the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3612 * item: Handle of the item to be modified. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3613 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3614 * A handle to a tree item or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3615 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3616 HTREEITEM API dw_tree_get_parent(HWND handle, HTREEITEM item) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3617 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3618 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3619 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3620 if(handle && item && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3621 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3622 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3623 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3624 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3625 jmethodID treeGetParent = env->GetMethodID(clazz, "treeGetParent", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3626 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;)Lorg/dbsoft/dwindows/DWTreeItem;"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3627 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3628 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, treeGetParent, handle, item), _DW_REFERENCE_WEAK); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3629 return result; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3630 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3631 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3632 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3633 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3634 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3635 * Sets the text and icon of an item in a tree window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3636 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3637 * handle: Handle to the tree containing the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3638 * item: Handle of the item to be modified. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3639 * title: The text title of the entry. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3640 * icon: Handle to coresponding icon. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3641 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3642 void API dw_tree_item_change(HWND handle, HTREEITEM item, const char *title, HICN icon) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3643 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3644 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3645 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3646 if(handle && item && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3647 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3648 // Construct the string |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3649 jstring jstr = title ? env->NewStringUTF(title) : nullptr; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3650 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3651 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3652 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3653 jmethodID treeItemChange = env->GetMethodID(clazz, "treeItemChange", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3654 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;Ljava/lang/String;Landroid/graphics/drawable/Drawable;)V"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3655 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3656 env->CallVoidMethod(_dw_obj, treeItemChange, handle, item, jstr, icon); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3657 _dw_jni_check_exception(env); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3658 env->DeleteLocalRef(jstr); |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3659 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3660 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3661 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3662 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3663 * Sets the item data of a tree item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3664 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3665 * handle: Handle to the tree containing the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3666 * item: Handle of the item to be modified. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3667 * itemdata: User defined data to be associated with item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3668 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3669 void API dw_tree_item_set_data(HWND handle, HTREEITEM item, void *itemdata) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3670 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3671 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3672 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3673 if(handle && item && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3674 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3675 jlong data = (jlong)itemdata; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3676 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3677 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3678 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3679 jmethodID treeItemSetData = env->GetMethodID(clazz, "treeItemSetData", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3680 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;J)V"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3681 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3682 env->CallVoidMethod(_dw_obj, treeItemSetData, handle, item, data); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3683 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3684 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3685 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3686 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3687 * Gets the item data of a tree item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3688 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3689 * handle: Handle to the tree containing the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3690 * item: Handle of the item to be modified. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3691 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3692 * A pointer to tree item data or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3693 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3694 void * API dw_tree_item_get_data(HWND handle, HTREEITEM item) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3695 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3696 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3697 void *retval = nullptr; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3698 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3699 if(handle && item && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3700 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3701 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3702 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3703 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3704 jmethodID treeItemGetData = env->GetMethodID(clazz, "treeItemGetData", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3705 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;)J"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3706 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3707 retval = (void *)env->CallLongMethod(_dw_obj, treeItemGetData, handle, item); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3708 } |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3709 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3710 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3711 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3712 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3713 * Sets this item as the active selection. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3714 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3715 * handle: Handle to the tree window (widget) to be selected. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3716 * item: Handle to the item to be selected. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3717 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3718 void API dw_tree_item_select(HWND handle, HTREEITEM item) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3719 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3720 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3721 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3722 if(handle && item && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3723 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3724 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3725 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3726 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3727 jmethodID treeItemSelect = env->GetMethodID(clazz, "treeItemSelect", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3728 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;)V"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3729 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3730 env->CallVoidMethod(_dw_obj, treeItemSelect, handle, item); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3731 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3732 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3733 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3734 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3735 * Removes all nodes from a tree. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3736 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3737 * handle: Handle to the window (widget) to be cleared. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3738 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3739 void API dw_tree_clear(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3740 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3741 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3742 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3743 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3744 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3745 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3746 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3747 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3748 jmethodID treeClear = env->GetMethodID(clazz, "treeClear", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3749 "(Lorg/dbsoft/dwindows/DWTree;)V"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3750 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3751 env->CallVoidMethod(_dw_obj, treeClear, handle); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3752 } |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3753 } |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3754 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3755 /* Internal function to set the expanded state */ |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3756 void _dw_tree_item_set_expanded(HWND handle, HTREEITEM item, jint state) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3757 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3758 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3759 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3760 if(handle && item && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3761 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3762 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3763 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3764 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3765 jmethodID treeItemExpand = env->GetMethodID(clazz, "treeItemExpand", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3766 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;I)V"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3767 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3768 env->CallVoidMethod(_dw_obj, treeItemExpand, handle, item, state); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3769 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3770 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3771 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3772 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3773 * Expands a node on a tree. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3774 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3775 * handle: Handle to the tree window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3776 * item: Handle to node to be expanded. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3777 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3778 void API dw_tree_item_expand(HWND handle, HTREEITEM item) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3779 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3780 _dw_tree_item_set_expanded(handle, item, TRUE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3781 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3782 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3783 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3784 * Collapses a node on a tree. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3785 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3786 * handle: Handle to the tree window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3787 * item: Handle to node to be collapsed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3788 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3789 void API dw_tree_item_collapse(HWND handle, HTREEITEM item) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3790 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3791 _dw_tree_item_set_expanded(handle, item, FALSE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3792 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3793 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3794 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3795 * Removes a node from a tree. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3796 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3797 * handle: Handle to the window (widget) to be cleared. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3798 * item: Handle to node to be deleted. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3799 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3800 void API dw_tree_item_delete(HWND handle, HTREEITEM item) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3801 { |
2777
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3802 JNIEnv *env; |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3803 |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3804 if(handle && item && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3805 { |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3806 // First get the class that contains the method you need to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3807 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3808 // Get the method that you want to call |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3809 jmethodID treeItemDelete = env->GetMethodID(clazz, "treeItemDelete", |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3810 "(Lorg/dbsoft/dwindows/DWTree;Lorg/dbsoft/dwindows/DWTreeItem;)V"); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3811 // Call the method on the object |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3812 env->CallVoidMethod(_dw_obj, treeItemDelete, handle, item); |
7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2776
diff
changeset
|
3813 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3814 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3815 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3816 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3817 * Create a container object to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3818 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3819 * id: An ID to be used for getting the resource from the |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3820 * resource file. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3821 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3822 * A handle to a container window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3823 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3824 HWND API dw_container_new(ULONG cid, int multi) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3825 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3826 JNIEnv *env; |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3827 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3828 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3829 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3830 // First get the class that contains the method you need to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3831 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3832 // Get the method that you want to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3833 jmethodID containerNew = env->GetMethodID(clazz, "containerNew", |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3834 "(II)Landroid/widget/ListView;"); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3835 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3836 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, containerNew, (int)cid, multi), _DW_REFERENCE_WEAK); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3837 return result; |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3838 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
3839 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3840 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3841 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3842 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3843 * Sets up the container columns. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3844 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3845 * handle: Handle to the container to be configured. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3846 * flags: An array of unsigned longs with column flags. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3847 * titles: An array of strings with column text titles. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3848 * count: The number of columns (this should match the arrays). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3849 * separator: The column number that contains the main separator. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3850 * (this item may only be used in OS/2) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3851 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3852 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3853 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3854 int API dw_container_setup(HWND handle, unsigned long *flags, char **titles, int count, int separator) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3855 { |
2559
b5e8a319fde6
Android: Fix logic error in dw_container_setup() causing return from the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3856 int retval = DW_ERROR_GENERAL; |
b5e8a319fde6
Android: Fix logic error in dw_container_setup() causing return from the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3857 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3858 if(handle && flags && titles && count > 0) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3859 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3860 int z; |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3861 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3862 for(z=0;z<count;z++) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3863 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3864 JNIEnv *env; |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3865 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3866 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3867 { |
2559
b5e8a319fde6
Android: Fix logic error in dw_container_setup() causing return from the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3868 retval = DW_ERROR_NONE; |
b5e8a319fde6
Android: Fix logic error in dw_container_setup() causing return from the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3869 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3870 // Generate a string |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3871 jstring jstr = env->NewStringUTF(titles[z]); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3872 // First get the class that contains the method you need to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3873 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3874 // Get the method that you want to call |
2833
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
3875 jmethodID containerAddColumn = env->GetMethodID(clazz, "containerAddColumn", |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3876 "(Landroid/widget/ListView;Ljava/lang/String;I)V"); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3877 // Call the method on the object |
2833
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
3878 env->CallVoidMethod(_dw_obj, containerAddColumn, handle, jstr, (int)flags[z]); |
2559
b5e8a319fde6
Android: Fix logic error in dw_container_setup() causing return from the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3879 if(_dw_jni_check_exception(env)) |
b5e8a319fde6
Android: Fix logic error in dw_container_setup() causing return from the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3880 retval = DW_ERROR_GENERAL; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
3881 env->DeleteLocalRef(jstr); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3882 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3883 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3884 } |
2559
b5e8a319fde6
Android: Fix logic error in dw_container_setup() causing return from the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3885 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3886 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3887 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3888 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3889 * Configures the main filesystem column title for localization. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3890 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3891 * handle: Handle to the container to be configured. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3892 * title: The title to be displayed in the main column. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3893 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3894 void API dw_filesystem_set_column_title(HWND handle, const char *title) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3895 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3896 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3897 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3898 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3899 * Sets up the filesystem columns, note: filesystem always has an icon/filename field. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3900 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3901 * handle: Handle to the container to be configured. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3902 * flags: An array of unsigned longs with column flags. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3903 * titles: An array of strings with column text titles. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3904 * count: The number of columns (this should match the arrays). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3905 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3906 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3907 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3908 int API dw_filesystem_setup(HWND handle, unsigned long *flags, char **titles, int count) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3909 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3910 unsigned long fsflags[2] = { DW_CFA_BITMAPORICON, DW_CFA_STRING }; |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3911 char *fstitles[2] = { (char *)"Icon", (char *)"Filename" }; |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
3912 int retval = dw_container_setup(handle, fsflags, fstitles, 2, 0); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
3913 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
3914 if(retval == DW_ERROR_NONE) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
3915 retval = dw_container_setup(handle, flags, titles, count, 0); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
3916 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3917 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3918 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3919 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3920 * Allocates memory used to populate a container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3921 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3922 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3923 * rowcount: The number of items to be populated. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3924 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3925 * Handle to container items allocated or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3926 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3927 void * API dw_container_alloc(HWND handle, int rowcount) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3928 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3929 JNIEnv *env; |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3930 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3931 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3932 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3933 // First get the class that contains the method you need to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3934 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3935 // Get the method that you want to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3936 jmethodID containerAlloc = env->GetMethodID(clazz, "containerAlloc", |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3937 "(Landroid/widget/ListView;I)Landroid/widget/ListView;"); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3938 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3939 return (void *)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, containerAlloc, handle, rowcount), _DW_REFERENCE_WEAK); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3940 } |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
3941 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3942 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3943 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3944 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3945 * Sets an item in specified row and column to the given data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3946 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3947 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3948 * pointer: Pointer to the allocated memory in dw_container_alloc(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3949 * column: Zero based column of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3950 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3951 * data: Pointer to the data to be added. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3952 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3953 void API dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3954 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3955 int rowstart = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_rowstart")); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3956 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3957 dw_container_change_item(handle, column, row + rowstart, data); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3958 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3959 |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
3960 /* Internal version that doesn't update the list immediately */ |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
3961 void API _dw_container_change_item(HWND handle, int column, int row, void *data) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
3962 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3963 JNIEnv *env; |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3964 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3965 if(handle && data && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3966 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3967 int columntype = dw_container_get_column_type(handle, column); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3968 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3969 if((columntype & DW_CFA_BITMAPORICON)) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3970 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3971 jobject icon = *((jobject *)data); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3972 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3973 if(icon) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3974 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3975 // First get the class that contains the method you need to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3976 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3977 // Get the method that you want to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3978 jmethodID containerChangeItem = env->GetMethodID(clazz, "containerChangeItemIcon", |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3979 "(Landroid/widget/ListView;IILandroid/graphics/drawable/Drawable;)V"); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3980 // Call the method on the object |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3981 env->CallVoidMethod(_dw_obj, containerChangeItem, handle, column, row, icon); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3982 _dw_jni_check_exception(env); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3983 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3984 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3985 else if((columntype & DW_CFA_STRING)) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3986 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3987 const char *tmp = *((const char **)data); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3988 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3989 if(tmp) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3990 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3991 jstring jstr = env->NewStringUTF(tmp); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3992 // First get the class that contains the method you need to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3993 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3994 // Get the method that you want to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3995 jmethodID containerChangeItem = env->GetMethodID(clazz, "containerChangeItemString", |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3996 "(Landroid/widget/ListView;IILjava/lang/String;)V"); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3997 // Call the method on the object |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
3998 env->CallVoidMethod(_dw_obj, containerChangeItem, handle, column, row, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
3999 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4000 env->DeleteLocalRef(jstr); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4001 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4002 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4003 else if((columntype & DW_CFA_ULONG)) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4004 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4005 ULONG num = *((ULONG *)data); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4006 // First get the class that contains the method you need to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4007 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4008 // Get the method that you want to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4009 jmethodID containerChangeItem = env->GetMethodID(clazz, "containerChangeItemInt", |
2833
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4010 "(Landroid/widget/ListView;IIJ)V"); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4011 // Call the method on the object |
2833
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4012 env->CallVoidMethod(_dw_obj, containerChangeItem, handle, column, row, (jlong)num); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4013 _dw_jni_check_exception(env); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4014 } |
2833
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4015 else if((columntype & DW_CFA_DATE)) |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4016 { |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4017 CDATE cdate = *((CDATE *)data); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4018 // First get the class that contains the method you need to call |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4019 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4020 // Get the method that you want to call |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4021 jmethodID containerChangeItem = env->GetMethodID(clazz, "containerChangeItemDate", |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4022 "(Landroid/widget/ListView;IIIII)V"); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4023 // Call the method on the object |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4024 env->CallVoidMethod(_dw_obj, containerChangeItem, handle, column, row, |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4025 (jint)cdate.year, (jint)cdate.month, (jint)cdate.day); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4026 _dw_jni_check_exception(env); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4027 } |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4028 else if((columntype & DW_CFA_TIME)) |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4029 { |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4030 CTIME ctime = *((CTIME *)data); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4031 // First get the class that contains the method you need to call |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4032 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4033 // Get the method that you want to call |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4034 jmethodID containerChangeItem = env->GetMethodID(clazz, "containerChangeItemTime", |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4035 "(Landroid/widget/ListView;IIIII)V"); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4036 // Call the method on the object |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4037 env->CallVoidMethod(_dw_obj, containerChangeItem, handle, column, row, |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4038 (jint)ctime.hours, (jint)ctime.minutes, (jint)ctime.seconds); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4039 _dw_jni_check_exception(env); |
469e5748c8a5
Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2812
diff
changeset
|
4040 } |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4041 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4042 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4043 |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4044 /* Notify that the data changed, causing the container to refresh */ |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4045 void _dw_container_refresh(HWND handle) |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4046 { |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4047 JNIEnv *env; |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4048 |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4049 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4050 { |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4051 // First get the class that contains the method you need to call |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4052 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4053 // Get the method that you want to call |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4054 jmethodID containerRefresh = env->GetMethodID(clazz, "containerRefresh", |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4055 "(Landroid/widget/ListView;)V"); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4056 // Call the method on the object |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4057 env->CallVoidMethod(_dw_obj, containerRefresh, handle); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4058 _dw_jni_check_exception(env); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4059 } |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4060 } |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4061 |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4062 /* |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4063 * Changes an existing item in specified row and column to the given data. |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4064 * Parameters: |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4065 * handle: Handle to the container window (widget). |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4066 * column: Zero based column of data being set. |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4067 * row: Zero based row of data being set. |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4068 * data: Pointer to the data to be added. |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4069 */ |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4070 void API dw_container_change_item(HWND handle, int column, int row, void *data) |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4071 { |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4072 _dw_container_change_item(handle, column, row, data); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4073 _dw_container_refresh(handle); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4074 } |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4075 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4076 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4077 * Changes an existing item in specified row and column to the given data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4078 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4079 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4080 * column: Zero based column of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4081 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4082 * data: Pointer to the data to be added. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4083 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4084 void API dw_filesystem_change_item(HWND handle, int column, int row, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4085 { |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4086 _dw_container_change_item(handle, column + 2, row, data); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4087 _dw_container_refresh(handle); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4088 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4089 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4090 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4091 * Changes an item in specified row and column to the given data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4092 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4093 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4094 * pointer: Pointer to the allocated memory in dw_container_alloc(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4095 * column: Zero based column of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4096 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4097 * data: Pointer to the data to be added. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4098 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4099 void API dw_filesystem_change_file(HWND handle, int row, const char *filename, HICN icon) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4100 { |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4101 _dw_container_change_item(handle, 0, row, (void *)&icon); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4102 _dw_container_change_item(handle, 1, row, (void *)&filename); |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4103 _dw_container_refresh(handle); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4104 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4105 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4106 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4107 * Sets an item in specified row and column to the given data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4108 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4109 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4110 * pointer: Pointer to the allocated memory in dw_container_alloc(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4111 * column: Zero based column of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4112 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4113 * data: Pointer to the data to be added. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4114 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4115 void API dw_filesystem_set_file(HWND handle, void *pointer, int row, const char *filename, HICN icon) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4116 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4117 dw_container_set_item(handle, pointer, 0, row, (void *)&icon); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4118 dw_container_set_item(handle, pointer, 1, row, (void *)&filename); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4119 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4120 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4121 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4122 * Sets an item in specified row and column to the given data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4123 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4124 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4125 * pointer: Pointer to the allocated memory in dw_container_alloc(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4126 * column: Zero based column of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4127 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4128 * data: Pointer to the data to be added. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4129 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4130 void API dw_filesystem_set_item(HWND handle, void *pointer, int column, int row, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4131 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4132 dw_container_set_item(handle, pointer, column + 2, row, data); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4133 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4134 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4135 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4136 * Sets the data of a row in the container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4137 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4138 * pointer: Pointer to the allocated memory in dw_container_alloc(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4139 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4140 * data: Data pointer. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4141 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4142 void API dw_container_set_row_data(void *pointer, int row, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4143 { |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4144 HWND handle = (HWND)pointer; |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4145 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4146 if(handle) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4147 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4148 int rowstart = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_rowstart")); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4149 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4150 dw_container_change_row_data(handle, row + rowstart, data); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4151 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4152 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4153 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4154 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4155 * Changes the data of a row already inserted in the container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4156 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4157 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4158 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4159 * data: Data pointer. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4160 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4161 void API dw_container_change_row_data(HWND handle, int row, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4162 { |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4163 JNIEnv *env; |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4164 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4165 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4166 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4167 // First get the class that contains the method you need to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4168 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4169 // Get the method that you want to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4170 jmethodID containerChangeRowData = env->GetMethodID(clazz, "containerChangeRowData", |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4171 "(Landroid/widget/ListView;IJ)V"); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4172 // Call the method on the object |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4173 env->CallVoidMethod(_dw_obj, containerChangeRowData, handle, row, (jlong)data); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4174 _dw_jni_check_exception(env); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4175 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4176 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4177 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4178 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4179 * Gets column type for a container column. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4180 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4181 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4182 * column: Zero based column. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4183 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4184 * Constant identifying the the column type. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4185 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4186 int API dw_container_get_column_type(HWND handle, int column) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4187 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4188 JNIEnv *env; |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4189 int retval = 0; |
2836
da90bf6d0564
Andrdoid: Mask out alignment and other flags when returning the container
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2835
diff
changeset
|
4190 int mask = (DW_CFA_BITMAPORICON | DW_CFA_STRING | DW_CFA_ULONG | DW_CFA_TIME | DW_CFA_DATE); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4191 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4192 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4193 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4194 // First get the class that contains the method you need to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4195 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4196 // Get the method that you want to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4197 jmethodID containerGetColumnType = env->GetMethodID(clazz, "containerGetColumnType", |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4198 "(Landroid/widget/ListView;I)I"); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4199 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4200 retval = env->CallIntMethod(_dw_obj, containerGetColumnType, handle, column); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4201 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4202 retval = 0; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4203 } |
2836
da90bf6d0564
Andrdoid: Mask out alignment and other flags when returning the container
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2835
diff
changeset
|
4204 return (retval & mask); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4205 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4206 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4207 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4208 * Gets column type for a filesystem container column. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4209 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4210 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4211 * column: Zero based column. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4212 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4213 * Constant identifying the the column type. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4214 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4215 int API dw_filesystem_get_column_type(HWND handle, int column) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4216 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4217 return dw_container_get_column_type(handle, column + 2); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4218 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4219 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4220 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4221 * Sets the alternating row colors for container window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4222 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4223 * handle: The window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4224 * oddcolor: Odd row background color in DW_RGB format or a default color index. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4225 * evencolor: Even row background color in DW_RGB format or a default color index. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4226 * DW_RGB_TRANSPARENT will disable coloring rows. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4227 * DW_CLR_DEFAULT will use the system default alternating row colors. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4228 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4229 void API dw_container_set_stripe(HWND handle, unsigned long oddcolor, unsigned long evencolor) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4230 { |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4231 JNIEnv *env; |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4232 |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4233 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4234 { |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4235 jlong odd = _dw_get_color(oddcolor); |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4236 jlong even = _dw_get_color(evencolor); |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4237 |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4238 // First get the class that contains the method you need to call |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4239 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4240 // Get the method that you want to call |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4241 jmethodID containerSetStripe = env->GetMethodID(clazz, "containerSetStripe", |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4242 "(Landroid/widget/ListView;JJ)V"); |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4243 if(oddcolor == DW_RGB_TRANSPARENT) |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4244 odd = -1; |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4245 else if(oddcolor == DW_CLR_DEFAULT) |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4246 odd = -2; |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4247 if(evencolor == DW_RGB_TRANSPARENT) |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4248 even = -1; |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4249 else if(evencolor == DW_CLR_DEFAULT) |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4250 even = -2; |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4251 |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4252 // Call the method on the object |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4253 env->CallVoidMethod(_dw_obj, containerSetStripe, handle, odd, even); |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4254 _dw_jni_check_exception(env); |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4255 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4256 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4257 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4258 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4259 * Sets the width of a column in the container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4260 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4261 * handle: Handle to window (widget) of container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4262 * column: Zero based column of width being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4263 * width: Width of column in pixels. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4264 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4265 void API dw_container_set_column_width(HWND handle, int column, int width) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4266 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4267 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4268 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4269 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4270 * Sets the title of a row in the container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4271 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4272 * pointer: Pointer to the allocated memory in dw_container_alloc(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4273 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4274 * title: String title of the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4275 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4276 void API dw_container_set_row_title(void *pointer, int row, const char *title) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4277 { |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4278 HWND handle = (HWND)pointer; |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4279 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4280 if(handle) |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4281 { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4282 int rowstart = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_rowstart")); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4283 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4284 dw_container_change_row_title(handle, row + rowstart, title); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4285 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4286 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4287 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4288 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4289 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4290 * Sets the title of a row in the container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4291 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4292 * handle: Handle to window (widget) of container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4293 * row: Zero based row of data being set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4294 * title: String title of the item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4295 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4296 void API dw_container_change_row_title(HWND handle, int row, const char *title) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4297 { |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4298 JNIEnv *env; |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4299 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4300 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4301 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4302 // Generate a string |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4303 jstring jstr = title ? env->NewStringUTF(title) : nullptr; |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4304 // First get the class that contains the method you need to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4305 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4306 // Get the method that you want to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4307 jmethodID containerChangeRowTitle = env->GetMethodID(clazz, "containerChangeRowTitle", |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4308 "(Landroid/widget/ListView;ILjava/lang/String;)V"); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4309 // Call the method on the object |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4310 env->CallVoidMethod(_dw_obj, containerChangeRowTitle, handle, row, jstr); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4311 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4312 env->DeleteLocalRef(jstr); |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4313 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4314 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4315 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4316 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4317 * Sets the title of a row in the container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4318 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4319 * handle: Handle to the container window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4320 * pointer: Pointer to the allocated memory in dw_container_alloc(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4321 * rowcount: The number of rows to be inserted. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4322 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4323 void API dw_container_insert(HWND handle, void *pointer, int rowcount) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4324 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4325 JNIEnv *env; |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4326 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4327 if(pointer && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4328 env->DeleteWeakGlobalRef((jobject)pointer); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4329 dw_window_set_data(handle, "_dw_rowstart", NULL); |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4330 _dw_container_refresh(handle); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4331 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4332 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4333 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4334 * Removes all rows from a container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4335 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4336 * handle: Handle to the window (widget) to be cleared. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4337 * redraw: TRUE to cause the container to redraw immediately. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4338 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4339 void API dw_container_clear(HWND handle, int redraw) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4340 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4341 JNIEnv *env; |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4342 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4343 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4344 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4345 // First get the class that contains the method you need to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4346 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4347 // Get the method that you want to call |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4348 jmethodID containerClear = env->GetMethodID(clazz, "containerClear", |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4349 "(Landroid/widget/ListView;)V"); |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4350 // Call the method on the object |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4351 env->CallVoidMethod(_dw_obj, containerClear, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4352 _dw_jni_check_exception(env); |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4353 _dw_container_refresh(handle); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4354 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4355 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4356 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4357 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4358 * Removes the first x rows from a container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4359 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4360 * handle: Handle to the window (widget) to be deleted from. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4361 * rowcount: The number of rows to be deleted. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4362 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4363 void API dw_container_delete(HWND handle, int rowcount) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4364 { |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4365 JNIEnv *env; |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4366 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4367 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4368 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4369 // First get the class that contains the method you need to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4370 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4371 // Get the method that you want to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4372 jmethodID containerDelete = env->GetMethodID(clazz, "containerDelete", |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4373 "(Landroid/widget/ListView;I)V"); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4374 // Call the method on the object |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4375 env->CallVoidMethod(_dw_obj, containerDelete, handle, rowcount); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4376 _dw_jni_check_exception(env); |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4377 _dw_container_refresh(handle); |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4378 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4379 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4380 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4381 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4382 * Scrolls container up or down. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4383 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4384 * handle: Handle to the window (widget) to be scrolled. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4385 * direction: DW_SCROLL_UP, DW_SCROLL_DOWN, DW_SCROLL_TOP or |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4386 * DW_SCROLL_BOTTOM. (rows is ignored for last two) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4387 * rows: The number of rows to be scrolled. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4388 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4389 void API dw_container_scroll(HWND handle, int direction, long rows) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4390 { |
2709
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4391 JNIEnv *env; |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4392 |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4393 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4394 { |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4395 // First get the class that contains the method you need to call |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4396 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4397 // Get the method that you want to call |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4398 jmethodID containerScroll = env->GetMethodID(clazz, "containerScroll", |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4399 "(Landroid/widget/ListView;II)V"); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4400 // Call the method on the object |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4401 env->CallVoidMethod(_dw_obj, containerScroll, handle, direction, (jint)rows); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4402 _dw_jni_check_exception(env); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4403 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4404 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4405 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4406 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4407 * Starts a new query of a container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4408 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4409 * handle: Handle to the window (widget) to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4410 * flags: If this parameter is DW_CRA_SELECTED it will only |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4411 * return items that are currently selected. Otherwise |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4412 * it will return all records in the container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4413 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4414 * Pointer to data associated with first entry or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4415 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4416 char * API dw_container_query_start(HWND handle, unsigned long flags) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4417 { |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4418 JNIEnv *env; |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4419 char *retval = nullptr; |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4420 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4421 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4422 { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4423 if(flags & DW_CR_RETDATA) { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4424 // First get the class that contains the method you need to call |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4425 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4426 // Get the method that you want to call |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4427 jmethodID containerGetDataStart = env->GetMethodID(clazz, "containerGetDataStart", |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4428 "(Landroid/widget/ListView;I)J"); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4429 // Call the method on the object |
2754
e256bd8628ba
Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2751
diff
changeset
|
4430 jlong data = env->CallLongMethod(_dw_obj, containerGetDataStart, handle, (jint)flags); |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4431 if(!_dw_jni_check_exception(env)) |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4432 retval = (char *)data; |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4433 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4434 // First get the class that contains the method you need to call |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4435 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4436 // Get the method that you want to call |
2754
e256bd8628ba
Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2751
diff
changeset
|
4437 jmethodID containerGetTitleStart = env->GetMethodID(clazz, "containerGetTitleStart", |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4438 "(Landroid/widget/ListView;I)Ljava/lang/String;"); |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4439 // Call the method on the object |
2754
e256bd8628ba
Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2751
diff
changeset
|
4440 jstring jstr = (jstring)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, containerGetTitleStart, handle, (jint)flags), _DW_REFERENCE_NONE); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4441 if(jstr) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4442 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4443 const char *str = env->GetStringUTFChars(jstr, nullptr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4444 |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4445 if(str) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4446 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4447 retval = strdup(str); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4448 env->ReleaseStringUTFChars(jstr, str); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4449 } |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4450 } |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4451 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4452 } |
2754
e256bd8628ba
Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2751
diff
changeset
|
4453 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4454 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4455 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4456 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4457 * Continues an existing query of a container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4458 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4459 * handle: Handle to the window (widget) to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4460 * flags: If this parameter is DW_CRA_SELECTED it will only |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4461 * return items that are currently selected. Otherwise |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4462 * it will return all records in the container. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4463 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4464 * Pointer to data associated with next entry or nullptr on error or completion. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4465 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4466 char * API dw_container_query_next(HWND handle, unsigned long flags) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4467 { |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4468 JNIEnv *env; |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4469 char *retval = nullptr; |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4470 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4471 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4472 { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4473 if(flags & DW_CR_RETDATA) { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4474 // First get the class that contains the method you need to call |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4475 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4476 // Get the method that you want to call |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4477 jmethodID containerGetDataStart = env->GetMethodID(clazz, "containerGetDataNext", |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4478 "(Landroid/widget/ListView;I)J"); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4479 // Call the method on the object |
2754
e256bd8628ba
Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2751
diff
changeset
|
4480 jlong data = env->CallLongMethod(_dw_obj, containerGetDataStart, handle, (jint)flags); |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4481 if(!_dw_jni_check_exception(env)) |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4482 retval = (char *)data; |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4483 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4484 // First get the class that contains the method you need to call |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4485 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4486 // Get the method that you want to call |
2754
e256bd8628ba
Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2751
diff
changeset
|
4487 jmethodID containerGetTitleNext = env->GetMethodID(clazz, "containerGetTitleNext", |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4488 "(Landroid/widget/ListView;I)Ljava/lang/String;"); |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4489 // Call the method on the object |
2754
e256bd8628ba
Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2751
diff
changeset
|
4490 jstring jstr = (jstring)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, containerGetTitleNext, handle, (jint)flags), _DW_REFERENCE_NONE); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4491 if(jstr) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4492 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4493 const char *str = env->GetStringUTFChars(jstr, nullptr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4494 |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4495 if(str) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4496 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4497 retval = strdup(str); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4498 env->ReleaseStringUTFChars(jstr, str); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4499 } |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4500 } |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4501 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2559
diff
changeset
|
4502 } |
2754
e256bd8628ba
Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2751
diff
changeset
|
4503 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4504 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4505 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4506 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4507 * Cursors the item with the text speficied, and scrolls to that item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4508 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4509 * handle: Handle to the window (widget) to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4510 * text: Text usually returned by dw_container_query(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4511 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4512 void API dw_container_cursor(HWND handle, const char *text) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4513 { |
2709
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4514 JNIEnv *env; |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4515 |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4516 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4517 { |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4518 // Generate a string |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4519 jstring jstr = text ? env->NewStringUTF(text) : nullptr; |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4520 // First get the class that contains the method you need to call |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4521 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4522 // Get the method that you want to call |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4523 jmethodID containerCursor = env->GetMethodID(clazz, "containerCursor", |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4524 "(Landroid/widget/ListView;Ljava/lang/String;)V"); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4525 // Call the method on the object |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4526 env->CallVoidMethod(_dw_obj, containerCursor, handle, jstr); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4527 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4528 if(jstr) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4529 env->DeleteLocalRef(jstr); |
2709
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4530 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4531 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4532 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4533 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4534 * Cursors the item with the data speficied, and scrolls to that item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4535 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4536 * handle: Handle to the window (widget) to be queried. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4537 * data: Data usually returned by dw_container_query(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4538 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4539 void API dw_container_cursor_by_data(HWND handle, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4540 { |
2709
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4541 JNIEnv *env; |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4542 |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4543 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4544 { |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4545 // First get the class that contains the method you need to call |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4546 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4547 // Get the method that you want to call |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4548 jmethodID containerCursorByData = env->GetMethodID(clazz, "containerCursorByData", |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4549 "(Landroid/widget/ListView;J)V"); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4550 // Call the method on the object |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4551 env->CallVoidMethod(_dw_obj, containerCursorByData, handle, (jlong)data); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4552 _dw_jni_check_exception(env); |
3cb5aa73dace
Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2708
diff
changeset
|
4553 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4554 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4555 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4556 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4557 * Deletes the item with the text speficied. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4558 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4559 * handle: Handle to the window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4560 * text: Text usually returned by dw_container_query(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4561 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4562 void API dw_container_delete_row(HWND handle, const char *text) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4563 { |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4564 JNIEnv *env; |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4565 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4566 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4567 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4568 // Generate a string |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4569 jstring jstr = text ? env->NewStringUTF(text) : nullptr; |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4570 // First get the class that contains the method you need to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4571 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4572 // Get the method that you want to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4573 jmethodID containerRowDeleteByTitle = env->GetMethodID(clazz, "containerRowDeleteByTitle", |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4574 "(Landroid/widget/ListView;Ljava/lang/String;)V"); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4575 // Call the method on the object |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4576 env->CallVoidMethod(_dw_obj, containerRowDeleteByTitle, handle, jstr); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4577 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4578 if(jstr) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4579 env->DeleteLocalRef(jstr); |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4580 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4581 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4582 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4583 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4584 * Deletes the item with the data speficied. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4585 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4586 * handle: Handle to the window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4587 * data: Data usually returned by dw_container_query(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4588 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4589 void API dw_container_delete_row_by_data(HWND handle, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4590 { |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4591 JNIEnv *env; |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4592 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4593 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4594 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4595 // First get the class that contains the method you need to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4596 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4597 // Get the method that you want to call |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4598 jmethodID containerRowDeleteByData = env->GetMethodID(clazz, "containerRowDeleteByData", |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4599 "(Landroid/widget/ListView;J)V"); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4600 // Call the method on the object |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4601 env->CallVoidMethod(_dw_obj, containerRowDeleteByData, handle, (jlong)data); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4602 _dw_jni_check_exception(env); |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4603 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4604 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4605 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4606 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4607 * Optimizes the column widths so that all data is visible. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4608 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4609 * handle: Handle to the window (widget) to be optimized. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4610 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4611 void API dw_container_optimize(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4612 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
4613 /* Not necessary with no columns */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4614 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4615 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4616 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4617 * Inserts an icon into the taskbar. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4618 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4619 * handle: Window handle that will handle taskbar icon messages. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4620 * icon: Icon handle to display in the taskbar. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4621 * bubbletext: Text to show when the mouse is above the icon. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4622 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4623 void API dw_taskbar_insert(HWND handle, HICN icon, const char *bubbletext) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4624 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4625 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4626 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4627 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4628 * Deletes an icon from the taskbar. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4629 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4630 * handle: Window handle that was used with dw_taskbar_insert(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4631 * icon: Icon handle that was used with dw_taskbar_insert(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4632 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4633 void API dw_taskbar_delete(HWND handle, HICN icon) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4634 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4635 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4636 |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4637 HICN _dw_icon_load(const char *filename, const char *data, int len, int resid) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4638 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4639 JNIEnv *env; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4640 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4641 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4642 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4643 // Construct a string |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4644 jstring file = nullptr; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4645 if(filename) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4646 file = env->NewStringUTF(filename); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4647 // Construct a byte array |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4648 jbyteArray bytearray = nullptr; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4649 if(data && len > 0) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4650 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4651 bytearray = env->NewByteArray(len); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4652 env->SetByteArrayRegion(bytearray, 0, len, reinterpret_cast<const jbyte *>(data)); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4653 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4654 // First get the class that contains the method you need to call |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4655 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4656 // Get the method that you want to call |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4657 jmethodID iconNew = env->GetMethodID(clazz, "iconNew", |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4658 "(Ljava/lang/String;[BII)Landroid/graphics/drawable/Drawable;"); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4659 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4660 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, iconNew, |
2559
b5e8a319fde6
Android: Fix logic error in dw_container_setup() causing return from the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4661 file, bytearray, len, resid), _DW_REFERENCE_STRONG); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4662 // TODO: Clean up after the array now that we are finished |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4663 //if(bytearray) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4664 //env->ReleaseByteArrayElements(bytearray, (jbyte *) data, 0); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4665 if(file) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4666 env->DeleteLocalRef(file); |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4667 return result; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4668 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4669 return nullptr; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4670 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4671 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4672 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4673 * Obtains an icon from a module (or header in GTK). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4674 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4675 * module: Handle to module (DLL) in OS/2 and Windows. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4676 * id: A unsigned long id int the resources on OS/2 and |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4677 * Windows, on GTK this is converted to a pointer |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4678 * to an embedded XPM. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4679 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4680 * Handle to the created icon or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4681 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4682 HICN API dw_icon_load(unsigned long module, unsigned long resid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4683 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4684 return _dw_icon_load(nullptr, nullptr, 0, resid); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4685 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4686 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4687 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4688 * Obtains an icon from a file. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4689 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4690 * filename: Name of the file, omit extention to have |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4691 * DW pick the appropriate file extension. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4692 * (ICO on OS/2 or Windows, XPM on Unix) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4693 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4694 * Handle to the created icon or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4695 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4696 HICN API dw_icon_load_from_file(const char *filename) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4697 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4698 return _dw_icon_load(filename, nullptr, 0, 0); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4699 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4700 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4701 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4702 * Obtains an icon from data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4703 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4704 * data: Data for the icon (ICO on OS/2 or Windows, XPM on Unix, PNG on Mac) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4705 * len: Length of the passed in data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4706 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4707 * Handle to the created icon or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4708 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4709 HICN API dw_icon_load_from_data(const char *data, int len) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4710 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
4711 return _dw_icon_load(nullptr, data, len, 0); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4712 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4713 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4714 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4715 * Frees a loaded icon resource. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4716 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4717 * handle: Handle to icon returned by dw_icon_load(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4718 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4719 void API dw_icon_free(HICN handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4720 { |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4721 if(handle) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4722 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4723 JNIEnv *env; |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4724 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4725 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4726 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4727 env->DeleteGlobalRef(handle); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4728 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4729 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4730 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4731 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4732 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4733 * Create a new MDI Frame to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4734 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4735 * id: An ID to be used with dw_window_from_id or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4736 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4737 * Handle to the created MDI widget or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4738 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4739 HWND API dw_mdi_new(unsigned long cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4740 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4741 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4742 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4743 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4744 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4745 * Creates a splitbar window (widget) with given parameters. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4746 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4747 * type: Value can be DW_VERT or DW_HORZ. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4748 * topleft: Handle to the window to be top or left. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4749 * bottomright: Handle to the window to be bottom or right. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4750 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4751 * A handle to a splitbar window or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4752 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4753 HWND API dw_splitbar_new(int type, HWND topleft, HWND bottomright, unsigned long cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4754 { |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4755 JNIEnv *env; |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4756 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4757 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4758 { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4759 // First get the class that contains the method you need to call |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4760 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4761 // Get the method that you want to call |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4762 jmethodID splitBarNew = env->GetMethodID(clazz, "splitBarNew", |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4763 "(ILandroid/view/View;Landroid/view/View;I)Landroidx/constraintlayout/widget/ConstraintLayout;"); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4764 // Call the method on the object |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4765 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, splitBarNew, type, topleft, bottomright, (int)cid), _DW_REFERENCE_WEAK); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4766 return result; |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4767 } |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4768 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4769 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4770 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4771 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4772 * Sets the position of a splitbar (pecentage). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4773 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4774 * handle: The handle to the splitbar returned by dw_splitbar_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4775 * percent: The position of the splitbar. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4776 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4777 void API dw_splitbar_set(HWND handle, float percent) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4778 { |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4779 JNIEnv *env; |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4780 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4781 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4782 { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4783 jfloat position = (jfloat)percent; |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4784 // First get the class that contains the method you need to call |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4785 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4786 // Get the method that you want to call |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4787 jmethodID splitBarSet = env->GetMethodID(clazz, "splitBarSet", |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4788 "(Landroidx/constraintlayout/widget/ConstraintLayout;F)V"); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4789 // Call the method on the object |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4790 env->CallVoidMethod(_dw_obj, splitBarSet, handle, position); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4791 _dw_jni_check_exception(env); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4792 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4793 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4794 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4795 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4796 * Gets the position of a splitbar (pecentage). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4797 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4798 * handle: The handle to the splitbar returned by dw_splitbar_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4799 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4800 * Position of the splitbar (percentage). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4801 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4802 float API dw_splitbar_get(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4803 { |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4804 JNIEnv *env; |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4805 float retval = 0; |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4806 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4807 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4808 { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4809 // First get the class that contains the method you need to call |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4810 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4811 // Get the method that you want to call |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4812 jmethodID splitBarGet = env->GetMethodID(clazz, "splitBarGet", |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4813 "(Landroidx/constraintlayout/widget/ConstraintLayout;)F"); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4814 // Call the method on the object |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4815 retval = (float)env->CallFloatMethod(_dw_obj, splitBarGet, handle); |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4816 if(_dw_jni_check_exception(env)) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4817 retval = 0; |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4818 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
4819 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4820 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4821 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4822 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4823 * Create a bitmap object to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4824 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4825 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4826 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4827 * Handle to the created bitmap widget or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4828 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4829 HWND API dw_bitmap_new(ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4830 { |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4831 JNIEnv *env; |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4832 |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4833 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4834 { |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4835 // First get the class that contains the method you need to call |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4836 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4837 // Get the method that you want to call |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4838 jmethodID mleNew = env->GetMethodID(clazz, "bitmapNew", |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4839 "(I)Landroid/widget/ImageView;"); |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4840 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4841 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, mleNew, (int)cid), _DW_REFERENCE_WEAK); |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4842 return result; |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
4843 } |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4844 return nullptr; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4845 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4846 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4847 /* Unified internal function to create an Android internal Bitmap */ |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4848 jobject _dw_jbitmap_new(unsigned long width, unsigned long height, const char *filename, const char *data, int len, int resid) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4849 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4850 JNIEnv *env; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4851 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4852 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4853 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4854 // Construct a byte array |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4855 jbyteArray bytearray = nullptr; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4856 if(data && len > 0) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4857 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4858 bytearray = env->NewByteArray(len); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4859 env->SetByteArrayRegion(bytearray, 0, len, reinterpret_cast<const jbyte *>(data)); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4860 } |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4861 if(!_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4862 { |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4863 // Construct a string |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4864 jstring file = nullptr; |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4865 if(filename) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4866 file = env->NewStringUTF(filename); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4867 // First get the class that contains the method you need to call |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4868 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4869 // Get the method that you want to call |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4870 jmethodID pixmapNew = env->GetMethodID(clazz, "pixmapNew", |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4871 "(IILjava/lang/String;[BII)Landroid/graphics/Bitmap;"); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4872 // Call the method on the object |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4873 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, pixmapNew, |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4874 (jint) width, |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4875 (jint) height, |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4876 file, bytearray, len, |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4877 resid), |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4878 _DW_REFERENCE_STRONG); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4879 // TODO: Clean up after the array now that we are finished |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4880 //if(bytearray) |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4881 //env->ReleaseByteArrayElements(bytearray, (jbyte *) data, 0); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4882 if(file) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
4883 env->DeleteLocalRef(file); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4884 return result; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4885 } |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4886 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4887 return nullptr; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4888 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4889 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4890 void _dw_pixmap_get_dimensions(HPIXMAP pixmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4891 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4892 JNIEnv *env; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4893 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4894 if(pixmap && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4895 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4896 // First get the class that contains the method you need to call |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4897 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4898 // Get the method that you want to call |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4899 jmethodID pixmapGetDimensions = env->GetMethodID(clazz, "pixmapGetDimensions", |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4900 "(Landroid/graphics/Bitmap;)J"); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4901 // Call the method on the object |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4902 jlong dimensions = env->CallLongMethod(_dw_obj, pixmapGetDimensions, pixmap->bitmap); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4903 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
4904 dimensions = 0; |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4905 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4906 pixmap->width = dimensions & 0xFFFF; |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
4907 pixmap->height = (dimensions >> 32) & 0xFFFF; |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4908 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4909 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4910 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4911 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4912 * Creates a pixmap with given parameters. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4913 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4914 * handle: Window handle the pixmap is associated with. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4915 * width: Width of the pixmap in pixels. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4916 * height: Height of the pixmap in pixels. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4917 * depth: Color depth of the pixmap. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4918 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4919 * A handle to a pixmap or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4920 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4921 HPIXMAP API dw_pixmap_new(HWND handle, unsigned long width, unsigned long height, int depth) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4922 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4923 jobject jbitmap = _dw_jbitmap_new(width, height, nullptr, nullptr, 0, 0); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4924 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4925 if(jbitmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4926 { |
2539
822f814a54f4
Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2537
diff
changeset
|
4927 HPIXMAP pixmap = (HPIXMAP)calloc(1, sizeof(struct _hpixmap)); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4928 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4929 if(pixmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4930 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4931 pixmap->width = width; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4932 pixmap->height = height; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4933 pixmap->bitmap = jbitmap; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4934 pixmap->handle = handle; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4935 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4936 return pixmap; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4937 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4938 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4939 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4940 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4941 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4942 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4943 * Creates a pixmap from a file. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4944 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4945 * handle: Window handle the pixmap is associated with. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4946 * filename: Name of the file, omit extention to have |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4947 * DW pick the appropriate file extension. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4948 * (BMP on OS/2 or Windows, XPM on Unix) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4949 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4950 * A handle to a pixmap or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4951 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4952 HPIXMAP API dw_pixmap_new_from_file(HWND handle, const char *filename) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4953 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4954 jobject jbitmap = _dw_jbitmap_new(0, 0, filename, nullptr, 0, 0); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4955 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4956 if(jbitmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4957 { |
2539
822f814a54f4
Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2537
diff
changeset
|
4958 HPIXMAP pixmap = (HPIXMAP)calloc(1, sizeof(struct _hpixmap)); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4959 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4960 if(pixmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4961 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4962 pixmap->bitmap = jbitmap; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4963 pixmap->handle = handle; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4964 _dw_pixmap_get_dimensions(pixmap); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4965 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4966 return pixmap; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4967 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4968 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4969 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4970 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4971 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4972 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4973 * Creates a pixmap from data in memory. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4974 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4975 * handle: Window handle the pixmap is associated with. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4976 * data: Source of the image data |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4977 * (BMP on OS/2 or Windows, XPM on Unix) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4978 * len: Length of data |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4979 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4980 * A handle to a pixmap or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4981 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4982 HPIXMAP API dw_pixmap_new_from_data(HWND handle, const char *data, int len) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
4983 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4984 jobject jbitmap = _dw_jbitmap_new(0, 0, nullptr, data, len, 0); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4985 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4986 if(jbitmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4987 { |
2539
822f814a54f4
Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2537
diff
changeset
|
4988 HPIXMAP pixmap = (HPIXMAP)calloc(1, sizeof(struct _hpixmap)); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4989 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4990 if(pixmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4991 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4992 pixmap->bitmap = jbitmap; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4993 pixmap->handle = handle; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4994 _dw_pixmap_get_dimensions(pixmap); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4995 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4996 return pixmap; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4997 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4998 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4999 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5000 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5001 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5002 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5003 * Sets the transparent color for a pixmap. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5004 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5005 * pixmap: Handle to a pixmap returned by |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5006 * dw_pixmap_new.. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5007 * color: Transparent RGB color |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5008 * Note: This is only necessary on platforms that |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5009 * don't handle transparency automatically |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5010 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5011 void API dw_pixmap_set_transparent_color( HPIXMAP pixmap, ULONG color ) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5012 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
5013 /* Not necessary on Android, all versions support transparency. */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5014 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5015 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5016 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5017 * Creates a pixmap from internal resource graphic specified by id. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5018 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5019 * handle: Window handle the pixmap is associated with. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5020 * id: Resource ID associated with requested pixmap. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5021 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5022 * A handle to a pixmap or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5023 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5024 HPIXMAP API dw_pixmap_grab(HWND handle, ULONG resid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5025 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5026 jobject jbitmap = _dw_jbitmap_new(0, 0, nullptr, nullptr, 0, (int)resid); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5027 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5028 if(jbitmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5029 { |
2539
822f814a54f4
Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2537
diff
changeset
|
5030 HPIXMAP pixmap = (HPIXMAP)calloc(1, sizeof(struct _hpixmap)); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5031 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5032 if(pixmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5033 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5034 pixmap->bitmap = jbitmap; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5035 pixmap->handle = handle; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5036 _dw_pixmap_get_dimensions(pixmap); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5037 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5038 return pixmap; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5039 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5040 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5041 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5042 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5043 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5044 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5045 * Sets the font used by a specified pixmap. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5046 * Normally the pixmap font is obtained from the associated window handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5047 * However this can be used to override that, or for pixmaps with no window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5048 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5049 * pixmap: Handle to a pixmap returned by dw_pixmap_new() or |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5050 * passed to the application via a callback. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5051 * fontname: Name and size of the font in the form "size.fontname" |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5052 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5053 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5054 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5055 int API dw_pixmap_set_font(HPIXMAP pixmap, const char *fontname) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5056 { |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5057 JNIEnv *env; |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5058 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5059 if(pixmap && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5060 { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5061 // Construct a string |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5062 jstring jstr = env->NewStringUTF(fontname); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5063 // First get the class that contains the method you need to call |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5064 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5065 // Get the method that you want to call |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5066 jmethodID typefaceFromFontName = env->GetMethodID(clazz, "typefaceFromFontName", |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5067 "(Ljava/lang/String;)Landroid/graphics/Typeface;"); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5068 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5069 jobject typeface = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, typefaceFromFontName, jstr), _DW_REFERENCE_STRONG); |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5070 if(typeface) |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5071 { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5072 jobject oldtypeface = pixmap->typeface; |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5073 pixmap->typeface = typeface; |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5074 if(oldtypeface) |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5075 env->DeleteGlobalRef(oldtypeface); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5076 pixmap->fontsize = atoi(fontname); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5077 } |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5078 env->DeleteLocalRef(jstr); |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5079 return DW_ERROR_NONE; |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5080 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5081 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5082 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5083 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5084 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5085 * Destroys an allocated pixmap. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5086 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5087 * pixmap: Handle to a pixmap returned by |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5088 * dw_pixmap_new.. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5089 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5090 void API dw_pixmap_destroy(HPIXMAP pixmap) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5091 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5092 if(pixmap) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5093 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5094 JNIEnv *env; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5095 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5096 if(pixmap && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5097 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5098 env->DeleteGlobalRef(pixmap->bitmap); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5099 if(pixmap->typeface) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5100 env->DeleteGlobalRef(pixmap->typeface); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5101 free(pixmap); |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5102 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5103 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5104 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5105 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5106 /* |
2950
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5107 * Returns the width of the pixmap, same as the DW_PIXMAP_WIDTH() macro, |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5108 * but exported as an API, for non-C language bindings. |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5109 */ |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5110 unsigned long API dw_pixmap_get_width(HPIXMAP pixmap) |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5111 { |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5112 return pixmap ? pixmap->width : 0; |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5113 } |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5114 |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5115 /* |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5116 * Returns the height of the pixmap, same as the DW_PIXMAP_HEIGHT() macro, |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5117 * but exported as an API, for non-C language bindings. |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5118 */ |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5119 unsigned long API dw_pixmap_get_height(HPIXMAP pixmap) |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5120 { |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5121 return pixmap ? pixmap->height : 0; |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5122 } |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5123 |
0577a97fe36d
Added dw_pixmap_get_width() and dw_pixmap_get_height() by request for language bindings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2947
diff
changeset
|
5124 /* |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5125 * Copies from one item to another. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5126 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5127 * dest: Destination window handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5128 * destp: Destination pixmap. (choose only one). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5129 * xdest: X coordinate of destination. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5130 * ydest: Y coordinate of destination. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5131 * width: Width of area to copy. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5132 * height: Height of area to copy. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5133 * src: Source window handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5134 * srcp: Source pixmap. (choose only one). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5135 * xsrc: X coordinate of source. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5136 * ysrc: Y coordinate of source. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5137 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5138 void API dw_pixmap_bitblt(HWND dest, HPIXMAP destp, int xdest, int ydest, int width, int height, HWND src, HPIXMAP srcp, int xsrc, int ysrc) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5139 { |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5140 dw_pixmap_stretch_bitblt(dest, destp, xdest, ydest, width, height, src, srcp, xsrc, ysrc, -1, -1); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5141 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5142 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5143 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5144 * Copies from one surface to another allowing for stretching. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5145 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5146 * dest: Destination window handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5147 * destp: Destination pixmap. (choose only one). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5148 * xdest: X coordinate of destination. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5149 * ydest: Y coordinate of destination. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5150 * width: Width of the target area. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5151 * height: Height of the target area. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5152 * src: Source window handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5153 * srcp: Source pixmap. (choose only one). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5154 * xsrc: X coordinate of source. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5155 * ysrc: Y coordinate of source. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5156 * srcwidth: Width of area to copy. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5157 * srcheight: Height of area to copy. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5158 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5159 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5160 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5161 int API dw_pixmap_stretch_bitblt(HWND dest, HPIXMAP destp, int xdest, int ydest, int width, int height, HWND src, HPIXMAP srcp, int xsrc, int ysrc, int srcwidth, int srcheight) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5162 { |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5163 JNIEnv *env; |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5164 int retval = DW_ERROR_GENERAL; |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5165 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5166 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5167 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5168 // First get the class that contains the method you need to call |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5169 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5170 // Get the method that you want to call |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5171 jmethodID pixmapBitBlt = env->GetMethodID(clazz, "pixmapBitBlt", |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5172 "(Lorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;IIIILorg/dbsoft/dwindows/DWRender;Landroid/graphics/Bitmap;IIII)I"); |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5173 // Call the method on the object |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
5174 retval = env->CallIntMethod(_dw_obj, pixmapBitBlt, dest, destp ? destp->bitmap : nullptr, xdest, ydest, width, height, src, srcp ? srcp->bitmap : nullptr, xsrc, ysrc, srcwidth, srcheight); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5175 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5176 retval = DW_ERROR_GENERAL; |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5177 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5178 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5179 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5180 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5181 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5182 * Create a new calendar window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5183 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5184 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5185 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5186 * Handle to the created calendar or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5187 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5188 HWND API dw_calendar_new(ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5189 { |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5190 JNIEnv *env; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5191 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5192 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5193 { |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5194 // First get the class that contains the method you need to call |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5195 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5196 // Get the method that you want to call |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5197 jmethodID calendarNew = env->GetMethodID(clazz, "calendarNew", |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5198 "(I)Landroid/widget/CalendarView;"); |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5199 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5200 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, calendarNew, (int)cid), _DW_REFERENCE_WEAK); |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5201 return result; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5202 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5203 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5204 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5205 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5206 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5207 * Sets the current date of a calendar. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5208 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5209 * handle: The handle to the calendar returned by dw_calendar_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5210 * year, month, day: To set the calendar to display. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5211 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5212 void API dw_calendar_set_date(HWND handle, unsigned int year, unsigned int month, unsigned int day) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5213 { |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5214 JNIEnv *env; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5215 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5216 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5217 { |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5218 time_t date; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5219 struct tm ts = {0}; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5220 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5221 // Convert to Unix time |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5222 ts.tm_year = year - 1900; |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
5223 ts.tm_mon = month - 1; |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5224 ts.tm_mday = day; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5225 date = mktime(&ts); |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5226 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5227 // First get the class that contains the method you need to call |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5228 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5229 // Get the method that you want to call |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5230 jmethodID calendarSetDate = env->GetMethodID(clazz, "calendarSetDate", |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5231 "(Landroid/widget/CalendarView;J)V"); |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5232 // Call the method on the object |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5233 env->CallVoidMethod(_dw_obj, calendarSetDate, handle, (jlong)date); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5234 _dw_jni_check_exception(env); |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5235 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5236 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5237 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5238 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5239 * Gets the year, month and day set in the calendar widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5240 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5241 * handle: The handle to the calendar returned by dw_calendar_new(). |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5242 * year: Variable to store the year or nullptr. |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5243 * month: Variable to store the month or nullptr. |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5244 * day: Variable to store the day or nullptr. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5245 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5246 void API dw_calendar_get_date(HWND handle, unsigned int *year, unsigned int *month, unsigned int *day) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5247 { |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5248 JNIEnv *env; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5249 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5250 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5251 { |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5252 time_t date; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5253 struct tm ts; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5254 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5255 // First get the class that contains the method you need to call |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5256 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5257 // Get the method that you want to call |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5258 jmethodID calendarGetDate = env->GetMethodID(clazz, "calendarGetDate", |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5259 "(Landroid/widget/CalendarView;)J"); |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5260 // Call the method on the object |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5261 date = (time_t)env->CallLongMethod(_dw_obj, calendarGetDate, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5262 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5263 date = 0; |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5264 ts = *localtime(&date); |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5265 if(year) |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5266 *year = ts.tm_year + 1900; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5267 if(month) |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2525
diff
changeset
|
5268 *month = ts.tm_mon + 1; |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5269 if(day) |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5270 *day = ts.tm_mday; |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
5271 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5272 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5273 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5274 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5275 * Causes the embedded HTML widget to take action. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5276 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5277 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5278 * action: One of the DW_HTML_* constants. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5279 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5280 void API dw_html_action(HWND handle, int action) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5281 { |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5282 JNIEnv *env; |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5283 |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5284 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5285 { |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5286 // First get the class that contains the method you need to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5287 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5288 // Get the method that you want to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5289 jmethodID htmlAction = env->GetMethodID(clazz, "htmlAction", |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5290 "(Landroid/webkit/WebView;I)V"); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5291 // Call the method on the object |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5292 env->CallVoidMethod(_dw_obj, htmlAction, handle, action); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5293 _dw_jni_check_exception(env); |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5294 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5295 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5296 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5297 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5298 * Render raw HTML code in the embedded HTML widget.. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5299 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5300 * handle: Handle to the window. |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5301 * string: String buffer containing HTML code to |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5302 * be rendered. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5303 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5304 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5305 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5306 int API dw_html_raw(HWND handle, const char *string) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5307 { |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5308 JNIEnv *env; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5309 int retval = DW_ERROR_GENERAL; |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5310 |
2985
e5d2c74b1a51
Android: Fixed a big in dw_window_get_text() introduced at some point.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2984
diff
changeset
|
5311 if(handle && string && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5312 { |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5313 // Construct a String |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5314 jstring jstr = env->NewStringUTF(string); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5315 // First get the class that contains the method you need to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5316 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5317 // Get the method that you want to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5318 jmethodID htmlRaw = env->GetMethodID(clazz, "htmlRaw", |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5319 "(Landroid/webkit/WebView;Ljava/lang/String;)V"); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5320 // Call the method on the object |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5321 env->CallVoidMethod(_dw_obj, htmlRaw, handle, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5322 if(!_dw_jni_check_exception(env)) |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5323 retval = DW_ERROR_NONE; |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5324 env->DeleteLocalRef(jstr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5325 } |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5326 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5327 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5328 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5329 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5330 * Render file or web page in the embedded HTML widget.. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5331 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5332 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5333 * url: Universal Resource Locator of the web or |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5334 * file object to be rendered. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5335 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5336 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5337 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5338 int API dw_html_url(HWND handle, const char *url) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5339 { |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5340 JNIEnv *env; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5341 int retval = DW_ERROR_GENERAL; |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5342 |
2985
e5d2c74b1a51
Android: Fixed a big in dw_window_get_text() introduced at some point.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2984
diff
changeset
|
5343 if(handle && url && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5344 { |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5345 // Construct a String |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5346 jstring jstr = env->NewStringUTF(url); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5347 // First get the class that contains the method you need to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5348 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5349 // Get the method that you want to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5350 jmethodID htmlLoadURL = env->GetMethodID(clazz, "htmlLoadURL", |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5351 "(Landroid/webkit/WebView;Ljava/lang/String;)V"); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5352 // Call the method on the object |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5353 env->CallVoidMethod(_dw_obj, htmlLoadURL, handle, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5354 if(!_dw_jni_check_exception(env)) |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5355 retval = DW_ERROR_NONE; |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5356 env->DeleteLocalRef(jstr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5357 } |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5358 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5359 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5360 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5361 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5362 * Executes the javascript contained in "script" in the HTML window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5363 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5364 * handle: Handle to the HTML window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5365 * script: Javascript code to execute. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5366 * scriptdata: Data passed to the signal handler. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5367 * Notes: A DW_SIGNAL_HTML_RESULT event will be raised with scriptdata. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5368 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5369 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5370 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5371 int API dw_html_javascript_run(HWND handle, const char *script, void *scriptdata) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5372 { |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5373 JNIEnv *env; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5374 int retval = DW_ERROR_GENERAL; |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5375 |
2985
e5d2c74b1a51
Android: Fixed a big in dw_window_get_text() introduced at some point.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2984
diff
changeset
|
5376 if(handle && script && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5377 { |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5378 // Construct a String |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5379 jstring jstr = env->NewStringUTF(script); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5380 // First get the class that contains the method you need to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5381 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5382 // Get the method that you want to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5383 jmethodID htmlJavascriptRun = env->GetMethodID(clazz, "htmlJavascriptRun", |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5384 "(Landroid/webkit/WebView;Ljava/lang/String;J)V"); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5385 // Call the method on the object |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5386 env->CallVoidMethod(_dw_obj, htmlJavascriptRun, handle, jstr, (jlong)scriptdata); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5387 if(!_dw_jni_check_exception(env)) |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5388 retval = DW_ERROR_NONE; |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5389 env->DeleteLocalRef(jstr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5390 } |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5391 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5392 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5393 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5394 /* |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5395 * Install a javascript function with name that can call native code. |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5396 * Parameters: |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5397 * handle: Handle to the HTML window. |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5398 * name: Javascript function name. |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5399 * Notes: A DW_SIGNAL_HTML_MESSAGE event will be raised with scriptdata. |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5400 * Returns: |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5401 * DW_ERROR_NONE (0) on success. |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5402 */ |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5403 int API dw_html_javascript_add(HWND handle, const char *name) |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5404 { |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5405 JNIEnv *env; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5406 int retval = DW_ERROR_UNKNOWN; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5407 |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5408 if(handle && name && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5409 { |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5410 // Construct a String |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5411 jstring jstr = env->NewStringUTF(name); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5412 // First get the class that contains the method you need to call |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5413 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5414 // Get the method that you want to call |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5415 jmethodID htmlJavascriptAdd = env->GetMethodID(clazz, "htmlJavascriptAdd", |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5416 "(Landroid/webkit/WebView;Ljava/lang/String;)V"); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5417 // Call the method on the object |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5418 env->CallVoidMethod(_dw_obj, htmlJavascriptAdd, handle, jstr); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5419 if(!_dw_jni_check_exception(env)) |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5420 retval = DW_ERROR_NONE; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5421 env->DeleteLocalRef(jstr); |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5422 } |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5423 return retval; |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5424 } |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5425 |
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
5426 /* |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5427 * Create a new HTML window (widget) to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5428 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5429 * id: An ID to be used with dw_window_from_id() or 0L. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5430 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5431 * Handle to the created html widget or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5432 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5433 HWND API dw_html_new(unsigned long cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5434 { |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5435 JNIEnv *env; |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5436 |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5437 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5438 { |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5439 // First get the class that contains the method you need to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5440 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5441 // Get the method that you want to call |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5442 jmethodID htmlNew = env->GetMethodID(clazz, "htmlNew", |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5443 "(I)Landroid/webkit/WebView;"); |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5444 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5445 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, htmlNew, (int)cid), _DW_REFERENCE_WEAK); |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5446 return result; |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
5447 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5448 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5449 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5450 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5451 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5452 * Returns the current X and Y coordinates of the mouse pointer. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5453 * Parameters: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5454 * x: Pointer to variable to store X coordinate or nullptr. |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5455 * y: Pointer to variable to store Y coordinate or nullptr. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5456 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5457 void API dw_pointer_query_pos(long *x, long *y) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5458 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
5459 /* No mouse pointer on Android */ |
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
5460 if(x) |
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
5461 *x = 0; |
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
5462 if(y) |
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
5463 *y = 0; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5464 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5465 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5466 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5467 * Sets the X and Y coordinates of the mouse pointer. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5468 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5469 * x: X coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5470 * y: Y coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5471 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5472 void API dw_pointer_set_pos(long x, long y) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5473 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
5474 /* No mouse pointer on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5475 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5476 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5477 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5478 * Create a menu object to be popped up. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5479 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5480 * id: An ID to be used associated with this menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5481 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5482 * Handle to the created menu or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5483 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5484 HMENUI API dw_menu_new(ULONG cid) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5485 { |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5486 JNIEnv *env; |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5487 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5488 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5489 { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5490 // First get the class that contains the method you need to call |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5491 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5492 // Get the method that you want to call |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5493 jmethodID menuNew = env->GetMethodID(clazz, "menuNew", |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5494 "(I)Lorg/dbsoft/dwindows/DWMenu;"); |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5495 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5496 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, menuNew, (int)cid), _DW_REFERENCE_WEAK); |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5497 return result; |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5498 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5499 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5500 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5501 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5502 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5503 * Create a menubar on a window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5504 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5505 * location: Handle of a window frame to be attached to. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5506 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5507 * Handle to the created menu bar or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5508 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5509 HMENUI API dw_menubar_new(HWND location) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5510 { |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5511 JNIEnv *env; |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5512 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5513 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5514 { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5515 // First get the class that contains the method you need to call |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5516 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5517 // Get the method that you want to call |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5518 jmethodID menuBarNew = env->GetMethodID(clazz, "menuBarNew", |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5519 "(Landroid/view/View;)Lorg/dbsoft/dwindows/DWMenu;"); |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5520 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5521 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, menuBarNew, location), _DW_REFERENCE_WEAK); |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5522 return result; |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5523 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5524 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5525 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5526 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5527 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5528 * Destroys a menu created with dw_menubar_new or dw_menu_new. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5529 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5530 * menu: Handle of a menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5531 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5532 void API dw_menu_destroy(HMENUI *menu) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5533 { |
2545
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5534 JNIEnv *env; |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5535 |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5536 if(menu && *menu && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5537 { |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5538 // First get the class that contains the method you need to call |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5539 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5540 // Get the method that you want to call |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5541 jmethodID menuDestroy = env->GetMethodID(clazz, "menuDestroy", |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5542 "(Lorg/dbsoft/dwindows/DWMenu;)V"); |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5543 // Call the method on the object |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5544 env->CallVoidMethod(_dw_obj, menuDestroy, *menu); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5545 _dw_jni_check_exception(env); |
2545
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5546 *menu = nullptr; |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5547 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5548 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5549 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5550 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5551 * Deletes the menu item specified. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5552 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5553 * menu: The handle to the menu in which the item was appended. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5554 * id: Menuitem id. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5555 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5556 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5557 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5558 int API dw_menu_delete_item(HMENUI menux, unsigned long id) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5559 { |
2545
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5560 JNIEnv *env; |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5561 |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5562 if(menux && id > 0 && id < 30000 && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5563 { |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5564 // First get the class that contains the method you need to call |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5565 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5566 // Get the method that you want to call |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5567 jmethodID menuDeleteItem = env->GetMethodID(clazz, "menuDeleteItem", |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5568 "(Lorg/dbsoft/dwindows/DWMenu;I)V"); |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5569 // Call the method on the object |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5570 env->CallVoidMethod(_dw_obj, menuDeleteItem, menux, (int)id); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5571 if(!_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5572 return DW_ERROR_NONE; |
2545
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5573 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5574 return DW_ERROR_UNKNOWN; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5575 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5576 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5577 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5578 * Pops up a context menu at given x and y coordinates. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5579 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5580 * menu: The handle the the existing menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5581 * parent: Handle to the window initiating the popup. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5582 * x: X coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5583 * y: Y coordinate. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5584 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5585 void API dw_menu_popup(HMENUI *menu, HWND parent, int x, int y) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5586 { |
2607
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5587 JNIEnv *env; |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5588 |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5589 if(menu && *menu && parent && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5590 { |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5591 // First get the class that contains the method you need to call |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5592 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5593 // Get the method that you want to call |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5594 jmethodID menuPopup = env->GetMethodID(clazz, "menuPopup", |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5595 "(Lorg/dbsoft/dwindows/DWMenu;Landroid/view/View;II)V"); |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5596 // Call the method on the object |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5597 env->CallVoidMethod(_dw_obj, menuPopup, *menu, parent, x, y); |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5598 _dw_jni_check_exception(env); |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5599 *menu = nullptr; |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
5600 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5601 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5602 |
2544
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5603 char _dw_removetilde(char *dest, const char *src) |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5604 { |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5605 int z, cur=0; |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5606 char accel = '\0'; |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5607 |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5608 for(z=0;z<strlen(src);z++) |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5609 { |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5610 if(src[z] != '~') |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5611 { |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5612 dest[cur] = src[z]; |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5613 cur++; |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5614 } |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5615 else |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5616 { |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5617 accel = src[z+1]; |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5618 } |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5619 } |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5620 dest[cur] = 0; |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5621 return accel; |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5622 } |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5623 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5624 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5625 * Adds a menuitem or submenu to an existing menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5626 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5627 * menu: The handle the the existing menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5628 * title: The title text on the menu item to be added. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5629 * id: An ID to be used for message passing. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5630 * flags: Extended attributes to set on the menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5631 * end: If TRUE memu is positioned at the end of the menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5632 * check: If TRUE menu is "check"able. |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5633 * submenu: Handle to an existing menu to be a submenu or nullptr. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5634 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5635 * Handle to the created menu item or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5636 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5637 HWND API dw_menu_append_item(HMENUI menux, const char *title, ULONG itemid, ULONG flags, int end, int check, HMENUI submenux) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5638 { |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5639 JNIEnv *env; |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5640 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5641 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5642 { |
2544
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5643 char *newtitle = (char *)alloca(strlen(title)+1); |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5644 char accel = _dw_removetilde(newtitle, title); |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5645 // Create a string |
2544
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
5646 jstring jstr = env->NewStringUTF(newtitle); |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5647 // First get the class that contains the method you need to call |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5648 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5649 // Get the method that you want to call |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5650 jmethodID menuAppendItem = env->GetMethodID(clazz, "menuAppendItem", |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5651 "(Lorg/dbsoft/dwindows/DWMenu;Ljava/lang/String;IIIILorg/dbsoft/dwindows/DWMenu;)Lorg/dbsoft/dwindows/DWMenuItem;"); |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5652 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5653 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, menuAppendItem, menux, jstr, (int)itemid, (int)flags, end, check, submenux), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5654 env->DeleteLocalRef(jstr); |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5655 return result; |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5656 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5657 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5658 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5659 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5660 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5661 * Sets the state of a menu item check. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5662 * Deprecated; use dw_menu_item_set_state() |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5663 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5664 * menu: The handle the the existing menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5665 * id: Menuitem id. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5666 * check: TRUE for checked FALSE for not checked. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5667 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5668 void API dw_menu_item_set_check(HMENUI menux, unsigned long itemid, int check) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5669 { |
2545
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5670 dw_menu_item_set_state(menux, itemid, check ? DW_MIS_CHECKED : DW_MIS_UNCHECKED); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5671 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5672 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5673 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5674 * Sets the state of a menu item. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5675 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5676 * menu: The handle to the existing menu. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5677 * id: Menuitem id. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5678 * flags: DW_MIS_ENABLED/DW_MIS_DISABLED |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5679 * DW_MIS_CHECKED/DW_MIS_UNCHECKED |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5680 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5681 void API dw_menu_item_set_state(HMENUI menux, unsigned long itemid, unsigned long state) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5682 { |
2545
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5683 JNIEnv *env; |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5684 |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5685 if(menux && itemid > 0 && itemid < 30000 && state && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5686 { |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5687 // First get the class that contains the method you need to call |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5688 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5689 // Get the method that you want to call |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5690 jmethodID menuSetState = env->GetMethodID(clazz, "menuSetState", |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5691 "(Lorg/dbsoft/dwindows/DWMenu;II)V"); |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5692 // Call the method on the object |
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5693 env->CallVoidMethod(_dw_obj, menuSetState, menux, (int)itemid, (int)state); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5694 _dw_jni_check_exception(env); |
2545
f803f3b164cf
Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2544
diff
changeset
|
5695 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5696 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5697 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5698 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5699 * Create a notebook object to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5700 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5701 * id: An ID to be used for getting the resource from the |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5702 * resource file. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5703 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5704 * Handle to the created notebook or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5705 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5706 HWND API dw_notebook_new(ULONG cid, int top) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5707 { |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5708 JNIEnv *env; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5709 |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5710 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5711 { |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5712 // First get the class that contains the method you need to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5713 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5714 // Get the method that you want to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5715 jmethodID notebookNew = env->GetMethodID(clazz, "notebookNew", |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5716 "(II)Landroid/widget/RelativeLayout;"); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5717 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5718 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, notebookNew, (int)cid, top), _DW_REFERENCE_WEAK); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5719 return result; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5720 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5721 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5722 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5723 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5724 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5725 * Adds a new page to specified notebook. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5726 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5727 * handle: Window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5728 * flags: Any additional page creation flags. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5729 * front: If TRUE page is added at the beginning. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5730 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5731 * ID of newly created notebook page. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5732 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5733 unsigned long API dw_notebook_page_new(HWND handle, ULONG flags, int front) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5734 { |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5735 JNIEnv *env; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5736 unsigned long result = 0; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5737 |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5738 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5739 { |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5740 // First get the class that contains the method you need to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5741 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5742 // Get the method that you want to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5743 jmethodID notebookPageNew = env->GetMethodID(clazz, "notebookPageNew", |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5744 "(Landroid/widget/RelativeLayout;JI)J"); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5745 // Call the method on the object |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5746 result = (unsigned long)env->CallLongMethod(_dw_obj, notebookPageNew, handle, (jlong)flags, front); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5747 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5748 result = 0; |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5749 } |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5750 return result; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5751 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5752 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5753 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5754 * Remove a page from a notebook. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5755 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5756 * handle: Handle to the notebook widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5757 * pageid: ID of the page to be destroyed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5758 */ |
2909
3fe7641f027c
WARNING: Fix an API inconsistency in dw_notebook_page_destroy/set()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2901
diff
changeset
|
5759 void API dw_notebook_page_destroy(HWND handle, unsigned long pageid) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5760 { |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5761 JNIEnv *env; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5762 |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5763 if(handle && pageid && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5764 { |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5765 // First get the class that contains the method you need to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5766 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5767 // Get the method that you want to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5768 jmethodID notebookPageDestroy = env->GetMethodID(clazz, "notebookPageDestroy", |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5769 "(Landroid/widget/RelativeLayout;J)V"); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5770 // Call the method on the object |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5771 env->CallVoidMethod(_dw_obj, notebookPageDestroy, handle, (jlong)pageid); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5772 _dw_jni_check_exception(env); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5773 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5774 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5775 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5776 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5777 * Queries the currently visible page ID. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5778 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5779 * handle: Handle to the notebook widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5780 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5781 * ID of visible notebook page. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5782 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5783 unsigned long API dw_notebook_page_get(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5784 { |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5785 JNIEnv *env; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5786 unsigned long result = 0; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5787 |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5788 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5789 // First get the class that contains the method you need to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5790 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5791 // Get the method that you want to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5792 jmethodID notebookPageGet = env->GetMethodID(clazz, "notebookPageGet", |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5793 "(Landroid/widget/RelativeLayout;)J"); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5794 // Call the method on the object |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5795 result = (unsigned long)env->CallLongMethod(_dw_obj, notebookPageGet, handle); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5796 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5797 result = 0; |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5798 } |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5799 return result; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5800 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5801 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5802 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5803 * Sets the currently visible page ID. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5804 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5805 * handle: Handle to the notebook widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5806 * pageid: ID of the page to be made visible. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5807 */ |
2909
3fe7641f027c
WARNING: Fix an API inconsistency in dw_notebook_page_destroy/set()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2901
diff
changeset
|
5808 void API dw_notebook_page_set(HWND handle, unsigned long pageid) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5809 { |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5810 JNIEnv *env; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5811 |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5812 if(handle && pageid && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5813 // First get the class that contains the method you need to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5814 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5815 // Get the method that you want to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5816 jmethodID notebookPageSet = env->GetMethodID(clazz, "notebookPageSet", |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5817 "(Landroid/widget/RelativeLayout;J)V"); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5818 // Call the method on the object |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5819 env->CallVoidMethod(_dw_obj, notebookPageSet, handle, (jlong)pageid); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5820 _dw_jni_check_exception(env); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5821 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5822 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5823 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5824 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5825 * Sets the text on the specified notebook tab. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5826 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5827 * handle: Notebook handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5828 * pageid: Page ID of the tab to set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5829 * text: Pointer to the text to set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5830 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5831 void API dw_notebook_page_set_text(HWND handle, ULONG pageid, const char *text) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5832 { |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5833 JNIEnv *env; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5834 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5835 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5836 { |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5837 // Construct a String |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5838 jstring jstr = env->NewStringUTF(text); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5839 // First get the class that contains the method you need to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5840 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5841 // Get the method that you want to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5842 jmethodID notebookPageSetText = env->GetMethodID(clazz, "notebookPageSetText", |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5843 "(Landroid/widget/RelativeLayout;JLjava/lang/String;)V"); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5844 // Call the method on the object |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5845 env->CallVoidMethod(_dw_obj, notebookPageSetText, handle, (jlong)pageid, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5846 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5847 env->DeleteLocalRef(jstr); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5848 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5849 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5850 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5851 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5852 * Sets the text on the specified notebook tab status area. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5853 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5854 * handle: Notebook handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5855 * pageid: Page ID of the tab to set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5856 * text: Pointer to the text to set. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5857 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5858 void API dw_notebook_page_set_status_text(HWND handle, ULONG pageid, const char *text) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5859 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5860 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5861 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5862 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5863 * Packs the specified box into the notebook page. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5864 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5865 * handle: Handle to the notebook to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5866 * pageid: Page ID in the notebook which is being packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5867 * page: Box handle to be packed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5868 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5869 void API dw_notebook_pack(HWND handle, ULONG pageid, HWND page) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5870 { |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5871 JNIEnv *env; |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5872 |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5873 if(handle && pageid && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5874 { |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5875 // First get the class that contains the method you need to call |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5876 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5877 // Get the method that you want to call |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5878 jmethodID notebookPagePack = env->GetMethodID(clazz, "notebookPagePack", |
2736
09775418c776
Android: Use "View" as the type for the viewList instead of LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2728
diff
changeset
|
5879 "(Landroid/widget/RelativeLayout;JLandroid/view/View;)V"); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5880 // Call the method on the object |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5881 env->CallVoidMethod(_dw_obj, notebookPagePack, handle, (jlong)pageid, page); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5882 _dw_jni_check_exception(env); |
2493
bca7e0ab0ccc
Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2492
diff
changeset
|
5883 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5884 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5885 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5886 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5887 * Create a new Window Frame. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5888 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5889 * owner: The Owner's window handle or HWND_DESKTOP. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5890 * title: The Window title. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5891 * flStyle: Style flags. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5892 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
5893 * Handle to the created window or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5894 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5895 HWND API dw_window_new(HWND hwndOwner, const char *title, ULONG flStyle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5896 { |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5897 JNIEnv *env; |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5898 |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5899 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5900 { |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5901 // Construct a String |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5902 jstring jstr = env->NewStringUTF(title); |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5903 // First get the class that contains the method you need to call |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
5904 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5905 // Get the method that you want to call |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
5906 jmethodID windowNew = env->GetMethodID(clazz, "windowNew", |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
5907 "(Ljava/lang/String;I)Landroid/widget/LinearLayout;"); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5908 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5909 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, windowNew, jstr, (int)flStyle), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
5910 env->DeleteLocalRef(jstr); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5911 return result; |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5912 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5913 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5914 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5915 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5916 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5917 * Call a function from the window (widget)'s context (typically the message loop thread). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5918 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5919 * handle: Window handle of the widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5920 * function: Function pointer to be called. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5921 * data: Pointer to the data to be passed to the function. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5922 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5923 void API dw_window_function(HWND handle, void *function, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5924 { |
2697
4470089e14b3
Android: Implement dw_window_function(). Call the function directly on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2696
diff
changeset
|
5925 void (* windowfunc)(void *); |
4470089e14b3
Android: Implement dw_window_function(). Call the function directly on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2696
diff
changeset
|
5926 |
4470089e14b3
Android: Implement dw_window_function(). Call the function directly on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2696
diff
changeset
|
5927 windowfunc = (void (*)(void *))function; |
4470089e14b3
Android: Implement dw_window_function(). Call the function directly on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2696
diff
changeset
|
5928 |
4470089e14b3
Android: Implement dw_window_function(). Call the function directly on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2696
diff
changeset
|
5929 if(windowfunc) |
4470089e14b3
Android: Implement dw_window_function(). Call the function directly on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2696
diff
changeset
|
5930 windowfunc(data); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5931 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5932 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5933 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5934 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5935 * Changes the appearance of the mouse pointer. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5936 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5937 * handle: Handle to widget for which to change. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5938 * cursortype: ID of the pointer you want. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5939 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5940 void API dw_window_set_pointer(HWND handle, int pointertype) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5941 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
5942 /* No mouse pointer on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5943 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5944 |
2503
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5945 int _dw_window_hide_show(HWND handle, int state) |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5946 { |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5947 JNIEnv *env; |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5948 |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5949 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5950 { |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5951 // First get the class that contains the method you need to call |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5952 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5953 // Get the method that you want to call |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5954 jmethodID windowHideShow = env->GetMethodID(clazz, "windowHideShow", |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5955 "(Landroid/view/View;I)V"); |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5956 // Call the method on the object |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5957 env->CallVoidMethod(_dw_obj, windowHideShow, handle, state); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5958 if(!_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
5959 return DW_ERROR_NONE; |
2503
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5960 } |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5961 return DW_ERROR_GENERAL; |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5962 } |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5963 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5964 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5965 * Makes the window visible. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5966 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5967 * handle: The window handle to make visible. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5968 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5969 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5970 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5971 int API dw_window_show(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5972 { |
2503
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5973 return _dw_window_hide_show(handle, TRUE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5974 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5975 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5976 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5977 * Makes the window invisible. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5978 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5979 * handle: The window handle to hide. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5980 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5981 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5982 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5983 int API dw_window_hide(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5984 { |
2503
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
5985 return _dw_window_hide_show(handle, FALSE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5986 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5987 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5988 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5989 * Sets the colors used by a specified window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5990 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5991 * handle: The window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5992 * fore: Foreground color in DW_RGB format or a default color index. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5993 * back: Background color in DW_RGB format or a default color index. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5994 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5995 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5996 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5997 int API dw_window_set_color(HWND handle, ULONG fore, ULONG back) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5998 { |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
5999 JNIEnv *env; |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6000 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6001 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6002 { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6003 unsigned long _fore = _dw_get_color(fore); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6004 unsigned long _back = _dw_get_color(back); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6005 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6006 // First get the class that contains the method you need to call |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6007 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6008 // Get the method that you want to call |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6009 jmethodID windowSetColor = env->GetMethodID(clazz, "windowSetColor", |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
6010 "(Landroid/view/View;IIIIIIIIII)V"); |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6011 // Call the method on the object |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6012 env->CallVoidMethod(_dw_obj, windowSetColor, handle, |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
6013 (jint)fore, 0, (jint)DW_RED_VALUE(_fore), (jint)DW_GREEN_VALUE(_fore), (jint)DW_BLUE_VALUE(_fore), |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
6014 (jint)back, 0, (jint)DW_RED_VALUE(_back), (jint)DW_GREEN_VALUE(_back), (jint)DW_BLUE_VALUE(_back)); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6015 if(!_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6016 return DW_ERROR_NONE; |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6017 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6018 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6019 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6020 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6021 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6022 * Sets the border size of a specified window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6023 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6024 * handle: The window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6025 * border: Size of the window border in pixels. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6026 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6027 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6028 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6029 int API dw_window_set_border(HWND handle, int border) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6030 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6031 /* No overlapping windows on Android, so no border */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6032 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6033 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6034 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6035 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6036 * Sets the style of a given window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6037 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6038 * handle: Window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6039 * style: Style features enabled or disabled. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6040 * mask: Corresponding bitmask of features to be changed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6041 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6042 void API dw_window_set_style(HWND handle, ULONG style, ULONG mask) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6043 { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6044 JNIEnv *env; |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6045 |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6046 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6047 { |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6048 // First get the class that contains the method you need to call |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6049 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6050 // Get the method that you want to call |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6051 jmethodID windowSetStyle = env->GetMethodID(clazz, "windowSetStyle", |
2790
20d39af27aa4
Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2785
diff
changeset
|
6052 "(Ljava/lang/Object;II)V"); |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6053 // Call the method on the object |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6054 env->CallVoidMethod(_dw_obj, windowSetStyle, handle, (jint)style, (jint)mask); |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6055 _dw_jni_check_exception(env); |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2577
diff
changeset
|
6056 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6057 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6058 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6059 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6060 * Sets the current focus item for a window/dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6061 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6062 * handle: Handle to the dialog item to be focused. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6063 * Remarks: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6064 * This is for use after showing the window/dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6065 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6066 void API dw_window_set_focus(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6067 { |
2582
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6068 JNIEnv *env; |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6069 |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6070 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6071 { |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6072 // First get the class that contains the method you need to call |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6073 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6074 // Get the method that you want to call |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6075 jmethodID windowSetFocus = env->GetMethodID(clazz, "windowSetFocus", |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6076 "(Landroid/view/View;)V"); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6077 // Call the method on the object |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6078 env->CallVoidMethod(_dw_obj, windowSetFocus, handle); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6079 _dw_jni_check_exception(env); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6080 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6081 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6082 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6083 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6084 * Sets the default focus item for a window/dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6085 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6086 * window: Toplevel window or dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6087 * defaultitem: Handle to the dialog item to be default. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6088 * Remarks: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6089 * This is for use before showing the window/dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6090 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6091 void API dw_window_default(HWND handle, HWND defaultitem) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6092 { |
2582
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6093 JNIEnv *env; |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6094 |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6095 if(handle && defaultitem && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6096 { |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6097 // First get the class that contains the method you need to call |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6098 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6099 // Get the method that you want to call |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6100 jmethodID windowDefault = env->GetMethodID(clazz, "windowDefault", |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6101 "(Landroid/view/View;Landroid/view/View;)V"); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6102 // Call the method on the object |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6103 env->CallVoidMethod(_dw_obj, windowDefault, handle, defaultitem); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6104 _dw_jni_check_exception(env); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6105 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6106 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6107 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6108 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6109 * Sets window to click the default dialog item when an ENTER is pressed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6110 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6111 * window: Window (widget) to look for the ENTER press. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6112 * next: Window (widget) to move to next (or click) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6113 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6114 void API dw_window_click_default(HWND handle, HWND next) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6115 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6116 /* TODO: See if this is possible on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6117 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6118 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6119 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6120 * Captures the mouse input to this window even if it is outside the bounds. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6121 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6122 * handle: Handle to receive mouse input. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6123 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6124 void API dw_window_capture(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6125 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6126 /* No mouse pointer on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6127 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6128 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6129 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6130 * Releases previous mouse capture. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6131 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6132 void API dw_window_release(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6133 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6134 /* No mouse pointer on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6135 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6136 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6137 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6138 * Changes a window's parent to newparent. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6139 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6140 * handle: The window handle to destroy. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6141 * newparent: The window's new parent window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6142 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6143 void API dw_window_reparent(HWND handle, HWND newparent) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6144 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6145 /* TODO: Do we need to do implement this? */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6146 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6147 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6148 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6149 * Sets the font used by a specified window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6150 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6151 * handle: The window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6152 * fontname: Name and size of the font in the form "size.fontname" |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6153 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6154 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6155 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6156 int API dw_window_set_font(HWND handle, const char *fontname) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6157 { |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6158 JNIEnv *env; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6159 int retval = DW_ERROR_GENERAL; |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6160 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6161 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6162 { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6163 // Construct a string |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6164 jstring jstr = env->NewStringUTF(fontname); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6165 // First get the class that contains the method you need to call |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6166 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6167 // Get the method that you want to call |
2582
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6168 jmethodID windowSetFont = env->GetMethodID(clazz, "windowSetFont", |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6169 "(Landroid/view/View;Ljava/lang/String;)V"); |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
6170 // Call the method on the object |
2582
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6171 env->CallVoidMethod(_dw_obj, windowSetFont, handle, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6172 if(!_dw_jni_check_exception(env)) |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6173 retval = DW_ERROR_NONE; |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6174 env->DeleteLocalRef(jstr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6175 } |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6176 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6177 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6178 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6179 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6180 * Returns the current font for the specified window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6181 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6182 * handle: The window handle from which to obtain the font. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6183 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6184 * A malloc()ed font name string to be dw_free()ed or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6185 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6186 char * API dw_window_get_font(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6187 { |
2582
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6188 JNIEnv *env; |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6189 char *fontname = nullptr; |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6190 |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6191 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6192 { |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6193 // First get the class that contains the method you need to call |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6194 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6195 // Get the method that you want to call |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6196 jmethodID windowGetFont = env->GetMethodID(clazz, "windowGetFont", |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6197 "(Landroid/view/View;)Ljava/lang/String;"); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6198 // Call the method on the object |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6199 jstring jstr = (jstring)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, windowGetFont, handle), _DW_REFERENCE_NONE); |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6200 |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6201 if(jstr) |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6202 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6203 const char *str = env->GetStringUTFChars(jstr, nullptr); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6204 |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6205 if(str) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6206 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6207 fontname = strdup(str); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6208 env->ReleaseStringUTFChars(jstr, str); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6209 } |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6210 } |
2582
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6211 } |
01fca1937806
Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
6212 return fontname; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6213 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6214 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6215 /* Allows the user to choose a font using the system's font chooser dialog. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6216 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6217 * currfont: current font |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6218 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6219 * A malloced buffer with the selected font or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6220 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6221 char * API dw_font_choose(const char *currfont) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6222 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6223 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6224 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6225 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6226 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6227 * Sets the default font used on text based widgets. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6228 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6229 * fontname: Font name in Dynamic Windows format. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6230 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6231 void API dw_font_set_default(const char *fontname) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6232 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6233 /* TODO: Implement this */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6234 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6235 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6236 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6237 * Destroys a window and all of it's children. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6238 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6239 * handle: The window handle to destroy. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6240 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6241 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6242 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6243 int API dw_window_destroy(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6244 { |
2668
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6245 JNIEnv *env; |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6246 int retval = DW_ERROR_GENERAL; |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6247 |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6248 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6249 { |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6250 // First get the class that contains the method you need to call |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6251 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6252 // Get the method that you want to call |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6253 jmethodID windowDestroy = env->GetMethodID(clazz, "windowDestroy", |
2796
0c534743b7a9
Android: Allow passing a menu window handle to dw_window_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2795
diff
changeset
|
6254 "(Ljava/lang/Object;)I"); |
2668
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6255 // Call the method on the object |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6256 retval = env->CallIntMethod(_dw_obj, windowDestroy, handle); |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6257 _dw_jni_check_exception(env); |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6258 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
6259 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6260 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6261 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6262 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6263 * Gets the text used for a given window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6264 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6265 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6266 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6267 * The text associsated with a given window or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6268 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6269 char * API dw_window_get_text(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6270 { |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6271 JNIEnv *env; |
2985
e5d2c74b1a51
Android: Fixed a big in dw_window_get_text() introduced at some point.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2984
diff
changeset
|
6272 char *retval = nullptr; |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6273 |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6274 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6275 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6276 const char *utf8 = nullptr; |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6277 |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6278 // First get the class that contains the method you need to call |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6279 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6280 // Get the method that you want to call |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6281 jmethodID windowGetText = env->GetMethodID(clazz, "windowGetText", |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6282 "(Landroid/view/View;)Ljava/lang/String;"); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6283 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6284 jstring result = (jstring)_dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, windowGetText, handle), _DW_REFERENCE_NONE); |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6285 // Get the UTF8 string result |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6286 if(result) |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
6287 utf8 = env->GetStringUTFChars(result, nullptr); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6288 if(utf8) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6289 { |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6290 retval = strdup(utf8); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6291 env->ReleaseStringUTFChars(result, utf8); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6292 } |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6293 } |
2985
e5d2c74b1a51
Android: Fixed a big in dw_window_get_text() introduced at some point.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2984
diff
changeset
|
6294 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6295 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6296 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6297 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6298 * Sets the text used for a given window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6299 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6300 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6301 * text: The text associsated with a given window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6302 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6303 void API dw_window_set_text(HWND handle, const char *text) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6304 { |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6305 JNIEnv *env; |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6306 |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6307 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6308 { |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6309 // Construct a String |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6310 jstring jstr = env->NewStringUTF(text); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6311 // First get the class that contains the method you need to call |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6312 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6313 // Get the method that you want to call |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6314 jmethodID windowSetText = env->GetMethodID(clazz, "windowSetText", |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6315 "(Landroid/view/View;Ljava/lang/String;)V"); |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6316 // Call the method on the object |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6317 env->CallVoidMethod(_dw_obj, windowSetText, handle, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6318 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6319 env->DeleteLocalRef(jstr); |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
6320 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6321 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6322 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6323 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6324 * Sets the text used for a given window's floating bubble help. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6325 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6326 * handle: Handle to the window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6327 * bubbletext: The text in the floating bubble tooltip. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6328 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6329 void API dw_window_set_tooltip(HWND handle, const char *bubbletext) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6330 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6331 /* No mouse pointer on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6332 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6333 |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6334 void _dw_window_set_enabled(HWND handle, jboolean state) |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6335 { |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6336 JNIEnv *env; |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6337 |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6338 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6339 { |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6340 // First get the class that contains the method you need to call |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6341 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6342 // Get the method that you want to call |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6343 jmethodID windowSetEnabled = env->GetMethodID(clazz, "windowSetEnabled", |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6344 "(Landroid/view/View;Z)V"); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6345 // Call the method on the object |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6346 env->CallVoidMethod(_dw_obj, windowSetEnabled, handle, state); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6347 _dw_jni_check_exception(env); |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6348 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6349 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6350 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6351 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6352 * Disables given window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6353 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6354 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6355 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6356 void API dw_window_disable(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6357 { |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6358 _dw_window_set_enabled(handle, JNI_FALSE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6359 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6360 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6361 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6362 * Enables given window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6363 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6364 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6365 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6366 void API dw_window_enable(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6367 { |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6368 _dw_window_set_enabled(handle, JNI_TRUE); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6369 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6370 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6371 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6372 * Sets the bitmap used for a given static window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6373 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6374 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6375 * id: An ID to be used to specify the icon, |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6376 * (pass 0 if you use the filename param) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6377 * data: memory buffer containing image (Bitmap on OS/2 or |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6378 * Windows and a pixmap on Unix, pass |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6379 * nullptr if you use the id param) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6380 * len: Length of data passed |
2852
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6381 * Returns: |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6382 * DW_ERROR_NONE on success. |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6383 * DW_ERROR_UNKNOWN if the parameters were invalid. |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6384 * DW_ERROR_GENERAL if the bitmap was unable to be loaded. |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6385 */ |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6386 int API dw_window_set_bitmap_from_data(HWND handle, unsigned long cid, const char *data, int len) |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6387 { |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6388 JNIEnv *env; |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6389 int retval = DW_ERROR_UNKNOWN; |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6390 |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6391 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6392 { |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6393 // Construct a byte array |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6394 jbyteArray bytearray = nullptr; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6395 if(data && len > 0) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6396 { |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6397 bytearray = env->NewByteArray(len); |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6398 env->SetByteArrayRegion(bytearray, 0, len, reinterpret_cast<const jbyte *>(data)); |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6399 } |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6400 // First get the class that contains the method you need to call |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6401 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6402 // Get the method that you want to call |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6403 jmethodID windowSetBitmapFromData = env->GetMethodID(clazz, "windowSetBitmapFromData", |
2852
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6404 "(Landroid/view/View;I[BI)I"); |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6405 // Call the method on the object |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6406 retval = env->CallIntMethod(_dw_obj, windowSetBitmapFromData, handle, (int)cid, bytearray, len); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6407 _dw_jni_check_exception(env); |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6408 // Clean up after the array now that we are finished |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6409 //if(bytearray) |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6410 //env->ReleaseByteArrayElements(bytearray, (jbyte *) data, 0); |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6411 } |
2852
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6412 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6413 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6414 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6415 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6416 * Sets the bitmap used for a given static window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6417 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6418 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6419 * id: An ID to be used to specify the icon, |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6420 * (pass 0 if you use the filename param) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6421 * filename: a path to a file (Bitmap on OS/2 or |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6422 * Windows and a pixmap on Unix, pass |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6423 * nullptr if you use the id param) |
2852
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6424 * Returns: |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6425 * DW_ERROR_NONE on success. |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6426 * DW_ERROR_UNKNOWN if the parameters were invalid. |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6427 * DW_ERROR_GENERAL if the bitmap was unable to be loaded. |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6428 */ |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6429 int API dw_window_set_bitmap(HWND handle, unsigned long resid, const char *filename) |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6430 { |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6431 JNIEnv *env; |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6432 int retval = DW_ERROR_UNKNOWN; |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6433 |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6434 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6435 { |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6436 // Construct a string |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6437 jstring jstr = nullptr; |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6438 if(filename) { |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6439 jstr = env->NewStringUTF(filename); |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6440 } |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6441 // First get the class that contains the method you need to call |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6442 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6443 // Get the method that you want to call |
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6444 jmethodID windowSetBitmapFromData = env->GetMethodID(clazz, "windowSetBitmap", |
2852
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6445 "(Landroid/view/View;ILjava/lang/String;)I"); |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6446 // Call the method on the object |
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6447 retval = env->CallIntMethod(_dw_obj, windowSetBitmapFromData, handle, (int)resid, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6448 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6449 if(jstr) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6450 env->DeleteLocalRef(jstr); |
2528
03f6870bcfcc
Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
6451 } |
2852
5018df4f952e
Win/Android/Template: Add return values to dw_window_set_bitmap(_from_data).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2836
diff
changeset
|
6452 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6453 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6454 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6455 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6456 * Sets the icon used for a given window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6457 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6458 * handle: Handle to the window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6459 * icon: Handle to icon to be used. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6460 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6461 void API dw_window_set_icon(HWND handle, HICN icon) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6462 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6463 /* TODO: See if this is possible, the icon is controlled by app resources */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6464 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6465 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6466 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6467 * Gets the child window handle with specified ID. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6468 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6469 * handle: Handle to the parent window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6470 * id: Integer ID of the child. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6471 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6472 * HWND of window with ID or nullptr on error. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6473 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6474 HWND API dw_window_from_id(HWND handle, int id) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6475 { |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6476 JNIEnv *env; |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
6477 HWND retval = nullptr; |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6478 |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6479 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6480 { |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6481 // First get the class that contains the method you need to call |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6482 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6483 // Get the method that you want to call |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6484 jmethodID windowFromId = env->GetMethodID(clazz, "windowFromId", |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6485 "(Landroid/view/View;I)Landroid/view/View;"); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6486 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6487 retval = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, windowFromId, handle, id), _DW_REFERENCE_NONE); |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6488 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6489 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6490 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6491 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6492 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6493 * Minimizes or Iconifies a top-level window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6494 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6495 * handle: The window handle to minimize. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6496 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6497 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6498 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6499 int API dw_window_minimize(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6500 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6501 /* TODO: Not sure if we should do anything here */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6502 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6503 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6504 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6505 /* Causes entire window to be invalidated and redrawn. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6506 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6507 * handle: Toplevel window handle to be redrawn. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6508 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6509 void API dw_window_redraw(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6510 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6511 /* Shouldn't be necessary on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6512 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6513 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6514 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6515 * Makes the window topmost. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6516 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6517 * handle: The window handle to make topmost. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6518 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6519 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6520 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6521 int API dw_window_raise(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6522 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6523 /* TODO: Not sure if we should do anything here */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6524 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6525 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6526 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6527 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6528 * Makes the window bottommost. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6529 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6530 * handle: The window handle to make bottommost. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6531 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6532 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6533 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6534 int API dw_window_lower(HWND handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6535 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6536 /* TODO: Not sure if we should do anyting here */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6537 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6538 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6539 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6540 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6541 * Sets the size of a given window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6542 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6543 * handle: Window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6544 * width: New width in pixels. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6545 * height: New height in pixels. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6546 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6547 void API dw_window_set_size(HWND handle, ULONG width, ULONG height) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6548 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6549 /* Not possible on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6550 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6551 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6552 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6553 * Gets the size the system thinks the widget should be. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6554 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6555 * handle: Window (widget) handle of the item to query. |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6556 * width: Width in pixels of the item or nullptr if not needed. |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6557 * height: Height in pixels of the item or nullptr if not needed. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6558 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6559 void API dw_window_get_preferred_size(HWND handle, int *width, int *height) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6560 { |
2686
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6561 if(width || height) |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6562 { |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6563 JNIEnv *env; |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6564 |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6565 if(handle && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6566 { |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6567 // First get the class that contains the method you need to call |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6568 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6569 // Get the method that you want to call |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6570 jmethodID windowGetPreferredSize = env->GetMethodID(clazz, "windowGetPreferredSize", |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6571 "(Landroid/view/View;)J"); |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6572 // Call the method on the object |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6573 jlong dimensions = env->CallLongMethod(_dw_obj, windowGetPreferredSize, handle); |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6574 if(_dw_jni_check_exception(env)) |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6575 dimensions = 0; |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6576 if(width) |
2687
42ff9d95e87b
Android: Fix the logic error, had height and width reversed in bitfields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2686
diff
changeset
|
6577 *width = (int)(dimensions & 0xFFFF); |
2686
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6578 if(height) |
2687
42ff9d95e87b
Android: Fix the logic error, had height and width reversed in bitfields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2686
diff
changeset
|
6579 *height = (int)((dimensions >> 32) & 0xFFFF); |
2686
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6580 } |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6581 else |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6582 { |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6583 if(width) |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6584 *width = 0; |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6585 if(height) |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6586 *height = 0; |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6587 } |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2675
diff
changeset
|
6588 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6589 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6590 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6591 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6592 * Sets the gravity of a given window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6593 * Gravity controls which corner of the screen and window the position is relative to. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6594 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6595 * handle: Window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6596 * horz: DW_GRAV_LEFT (default), DW_GRAV_RIGHT or DW_GRAV_CENTER. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6597 * vert: DW_GRAV_TOP (default), DW_GRAV_BOTTOM or DW_GRAV_CENTER. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6598 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6599 void API dw_window_set_gravity(HWND handle, int horz, int vert) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6600 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6601 /* This is not possible on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6602 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6603 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6604 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6605 * Sets the position of a given window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6606 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6607 * handle: Window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6608 * x: X location from the bottom left. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6609 * y: Y location from the bottom left. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6610 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6611 void API dw_window_set_pos(HWND handle, LONG x, LONG y) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6612 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6613 /* This is not possible on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6614 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6615 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6616 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6617 * Sets the position and size of a given window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6618 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6619 * handle: Window (widget) handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6620 * x: X location from the bottom left. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6621 * y: Y location from the bottom left. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6622 * width: Width of the widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6623 * height: Height of the widget. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6624 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6625 void API dw_window_set_pos_size(HWND handle, LONG x, LONG y, ULONG width, ULONG height) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6626 { |
2710
98cc4476b376
Android: Add comments, TODOs for functions that should eventually be implmented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
6627 /* This is not possible on Android */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6628 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6629 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6630 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6631 * Gets the position and size of a given window (widget). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6632 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6633 * handle: Window (widget) handle. |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6634 * x: X location from the bottom left or nullptr. |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6635 * y: Y location from the bottom left or nullptr. |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6636 * width: Width of the widget or nullptr. |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6637 * height: Height of the widget or nullptr. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6638 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6639 void API dw_window_get_pos_size(HWND handle, LONG *x, LONG *y, ULONG *width, ULONG *height) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6640 { |
2696
bc7c16800892
Android: dw_window_get_pos_size() isn't supported on Android...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2695
diff
changeset
|
6641 if(x) |
bc7c16800892
Android: dw_window_get_pos_size() isn't supported on Android...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2695
diff
changeset
|
6642 *x = 0; |
bc7c16800892
Android: dw_window_get_pos_size() isn't supported on Android...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2695
diff
changeset
|
6643 if(y) |
bc7c16800892
Android: dw_window_get_pos_size() isn't supported on Android...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2695
diff
changeset
|
6644 *y = 0; |
bc7c16800892
Android: dw_window_get_pos_size() isn't supported on Android...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2695
diff
changeset
|
6645 if(width) |
bc7c16800892
Android: dw_window_get_pos_size() isn't supported on Android...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2695
diff
changeset
|
6646 *width = 0; |
bc7c16800892
Android: dw_window_get_pos_size() isn't supported on Android...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2695
diff
changeset
|
6647 if(height) |
bc7c16800892
Android: dw_window_get_pos_size() isn't supported on Android...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2695
diff
changeset
|
6648 *height = 0; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6649 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6650 |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6651 static jlong _dw_screen_dimensions = 0; |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6652 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6653 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6654 * Returns the width of the screen. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6655 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6656 int API dw_screen_width(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6657 { |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6658 if(!_dw_screen_dimensions) |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6659 { |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6660 JNIEnv *env; |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6661 |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6662 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6663 { |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6664 // First get the class that contains the method you need to call |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6665 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6666 // Get the method that you want to call |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6667 jmethodID screenGetDimensions = env->GetMethodID(clazz, "screenGetDimensions", |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6668 "()J"); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6669 // Call the method on the object |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6670 _dw_screen_dimensions = env->CallLongMethod(_dw_obj, screenGetDimensions); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6671 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6672 _dw_screen_dimensions = 0; |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6673 } |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6674 } |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6675 return _dw_screen_dimensions & 0xFFFF; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6676 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6677 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6678 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6679 * Returns the height of the screen. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6680 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6681 int API dw_screen_height(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6682 { |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6683 if(!_dw_screen_dimensions) |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6684 { |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6685 JNIEnv *env; |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6686 |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6687 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6688 { |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6689 // First get the class that contains the method you need to call |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6690 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6691 // Get the method that you want to call |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6692 jmethodID screenGetDimensions = env->GetMethodID(clazz, "screenGetDimensions", |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6693 "()J"); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6694 // Call the method on the object |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6695 _dw_screen_dimensions = env->CallLongMethod(_dw_obj, screenGetDimensions); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6696 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6697 _dw_screen_dimensions = 0; |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6698 } |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6699 } |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6700 return (_dw_screen_dimensions >> 32) & 0xFFFF; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6701 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6702 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6703 /* This should return the current color depth. */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6704 unsigned long API dw_color_depth_get(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6705 { |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
6706 return 32; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6707 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6708 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6709 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6710 * Returns some information about the current operating environment. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6711 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6712 * env: Pointer to a DWEnv struct. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6713 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6714 void API dw_environment_query(DWEnv *env) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6715 { |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6716 static char osName[_DW_ENV_STRING_SIZE+1] = { 0 }; |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6717 |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6718 if(!osName[0]) |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6719 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
6720 JNIEnv *jenv; |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6721 const char *release = nullptr; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6722 jstring jstr = nullptr; |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6723 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
6724 if((jenv = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6725 { |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6726 // First get the class that contains the method you need to call |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
6727 jclass clazz = _dw_find_class(jenv, DW_CLASS_NAME); |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6728 // Get the method that you want to call |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
6729 jmethodID androidGetRelease = jenv->GetMethodID(clazz, "androidGetRelease", |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6730 "()Ljava/lang/String;"); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6731 // Call the method on the object |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6732 jstr = (jstring)_dw_jni_check_result(jenv, jenv->CallObjectMethod(_dw_obj, androidGetRelease), _DW_REFERENCE_NONE); |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6733 |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6734 if(jstr) |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
6735 release = jenv->GetStringUTFChars(jstr, nullptr); |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6736 } |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6737 snprintf(osName, _DW_ENV_STRING_SIZE-1, "Android%s%s", |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6738 release ? " " : "", release ? release : ""); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6739 if(release) |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6740 jenv->ReleaseStringUTFChars(jstr, release); |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6741 } |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6742 memset(env, '\0', sizeof(DWEnv)); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6743 |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6744 strncpy(env->osName, osName, sizeof(env->osName)-1); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6745 strncpy(env->buildDate, __DATE__, sizeof(env->buildDate)-1); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6746 strncpy(env->buildTime, __TIME__, sizeof(env->buildTime)-1); |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6747 strncpy(env->htmlEngine, "CHROME", sizeof(env->htmlEngine)-1); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6748 env->DWMajorVersion = DW_MAJOR_VERSION; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6749 env->DWMinorVersion = DW_MINOR_VERSION; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6750 env->DWSubVersion = DW_SUB_VERSION; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6751 |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6752 /* Operating system major */ |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6753 env->MajorVersion = _dw_android_api; |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6754 /* Operating system minor */ |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
6755 env->MinorVersion = 0; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6756 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6757 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6758 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6759 * Emits a beep. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6760 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6761 * freq: Frequency. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6762 * dur: Duration. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6763 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6764 void API dw_beep(int freq, int dur) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6765 { |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6766 JNIEnv *env; |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6767 |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6768 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6769 { |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6770 // First get the class that contains the method you need to call |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6771 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6772 // Get the method that you want to call |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6773 jmethodID doBeep = env->GetMethodID(clazz, "doBeep", "(I)V"); |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6774 // Call the method on the object |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6775 env->CallVoidMethod(_dw_obj, doBeep, dur); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6776 _dw_jni_check_exception(env); |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6777 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6778 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6779 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6780 /* Call this after drawing to the screen to make sure |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6781 * anything you have drawn is visible. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6782 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6783 void API dw_flush(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6784 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6785 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6786 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6787 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6788 * Add a named user data item to a window handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6789 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6790 * window: Window handle to save data to. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6791 * dataname: A string pointer identifying which data to be saved. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6792 * data: User data to be saved to the window handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6793 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6794 void API dw_window_set_data(HWND window, const char *dataname, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6795 { |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6796 JNIEnv *env; |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6797 |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6798 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6799 { |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6800 // Construct a String |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6801 jstring jstr = env->NewStringUTF(dataname); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6802 // First get the class that contains the method you need to call |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6803 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6804 // Get the method that you want to call |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6805 jmethodID windowSetData = env->GetMethodID(clazz, "windowSetData", |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6806 "(Landroid/view/View;Ljava/lang/String;J)V"); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6807 // Call the method on the object |
2518
c4e90a623437
Android: Fix not actually passing the data in dw_window_set_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
6808 env->CallVoidMethod(_dw_obj, windowSetData, window, jstr, (jlong)data); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6809 _dw_jni_check_exception(env); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6810 env->DeleteLocalRef(jstr); |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6811 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6812 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6813 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6814 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6815 * Gets a named user data item from a window handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6816 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6817 * window: Window handle to get data from. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6818 * dataname: A string pointer identifying which data to get. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6819 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6820 * Pointer to data or nullptr if no data is available. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6821 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6822 void * API dw_window_get_data(HWND window, const char *dataname) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6823 { |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6824 JNIEnv *env; |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6825 void *retval = nullptr; |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6826 |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6827 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6828 { |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6829 // Construct a String |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6830 jstring jstr = env->NewStringUTF(dataname); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6831 // First get the class that contains the method you need to call |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6832 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6833 // Get the method that you want to call |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6834 jmethodID windowGetData = env->GetMethodID(clazz, "windowGetData", |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6835 "(Landroid/view/View;Ljava/lang/String;)J"); |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6836 // Call the method on the object |
2518
c4e90a623437
Android: Fix not actually passing the data in dw_window_set_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
6837 retval = (void *)env->CallLongMethod(_dw_obj, windowGetData, window, jstr); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6838 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6839 retval = nullptr; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
6840 env->DeleteLocalRef(jstr); |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6841 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
6842 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6843 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6844 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6845 /* |
2532
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6846 * Compare two window handles. |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6847 * Parameters: |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6848 * window1: First window handle to compare. |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6849 * window2: Second window handle to compare. |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6850 * Returns: |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6851 * TRUE if the windows are the same object, FALSE if not. |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6852 */ |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6853 int API dw_window_compare(HWND window1, HWND window2) |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6854 { |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6855 JNIEnv *env; |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6856 void *retval = nullptr; |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6857 |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6858 if(window1 && window2 && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6859 { |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6860 if(env->IsSameObject(window1, window2)) |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6861 return TRUE; |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6862 } |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6863 return FALSE; |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6864 } |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6865 |
457c91634881
Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
6866 /* |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6867 * Add a callback to a timer event. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6868 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6869 * interval: Milliseconds to delay between calls. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6870 * sigfunc: The pointer to the function to be used as the callback. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6871 * data: User data to be passed to the handler function. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6872 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6873 * Timer ID for use with dw_timer_disconnect(), 0 on error. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6874 */ |
2584
2acc7ba5dea0
Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
6875 HTIMER API dw_timer_connect(int interval, void *sigfunc, void *data) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6876 { |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6877 JNIEnv *env; |
2584
2acc7ba5dea0
Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
6878 HTIMER retval = 0; |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6879 |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6880 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6881 { |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6882 // Use a long paramater |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6883 jlong longinterval = (jlong)interval; |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6884 // First get the class that contains the method you need to call |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6885 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6886 // Get the method that you want to call |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6887 jmethodID timerConnect = env->GetMethodID(clazz, "timerConnect", |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6888 "(JJJ)Ljava/util/Timer;"); |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6889 // Call the method on the object |
2584
2acc7ba5dea0
Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
6890 retval = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, |
2acc7ba5dea0
Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
6891 timerConnect, longinterval, (jlong)sigfunc, (jlong)data), _DW_REFERENCE_STRONG); |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6892 } |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6893 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6894 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6895 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6896 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6897 * Removes timer callback. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6898 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6899 * id: Timer ID returned by dw_timer_connect(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6900 */ |
2584
2acc7ba5dea0
Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
6901 void API dw_timer_disconnect(HTIMER timerid) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6902 { |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6903 JNIEnv *env; |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6904 |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6905 if(timerid && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6906 { |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6907 // First get the class that contains the method you need to call |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6908 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6909 // Get the method that you want to call |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6910 jmethodID timerDisconnect = env->GetMethodID(clazz, "timerDisconnect", |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6911 "(Ljava/util/Timer;)V"); |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6912 // Call the method on the object |
2584
2acc7ba5dea0
Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
6913 env->CallVoidMethod(_dw_obj, timerDisconnect, timerid); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
6914 _dw_jni_check_exception(env); |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
6915 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6916 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6917 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6918 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6919 * Add a callback to a window event. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6920 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6921 * window: Window handle of signal to be called back. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6922 * signame: A string pointer identifying which signal to be hooked. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6923 * sigfunc: The pointer to the function to be used as the callback. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6924 * data: User data to be passed to the handler function. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6925 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6926 void API dw_signal_connect(HWND window, const char *signame, void *sigfunc, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6927 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
6928 dw_signal_connect_data(window, signame, sigfunc, nullptr, data); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6929 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6930 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6931 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6932 * Add a callback to a window event with a closure callback. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6933 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6934 * window: Window handle of signal to be called back. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6935 * signame: A string pointer identifying which signal to be hooked. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6936 * sigfunc: The pointer to the function to be used as the callback. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6937 * discfunc: The pointer to the function called when this handler is removed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6938 * data: User data to be passed to the handler function. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6939 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6940 void API dw_signal_connect_data(HWND window, const char *signame, void *sigfunc, void *discfunc, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6941 { |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6942 ULONG message = 0, msgid = 0; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6943 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6944 if(window && signame && sigfunc) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6945 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6946 if((message = _dw_findsigmessage(signame)) != 0) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6947 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6948 _dw_new_signal(message, window, (int)msgid, sigfunc, discfunc, data); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6949 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6950 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6951 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6952 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6953 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6954 * Removes callbacks for a given window with given name. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6955 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6956 * window: Window handle of callback to be removed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6957 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6958 void API dw_signal_disconnect_by_name(HWND window, const char *signame) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6959 { |
2626
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
6960 DWSignalHandler *prev = nullptr, *tmp = DWRoot; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6961 ULONG message; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6962 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6963 if(!window || !signame || (message = _dw_findsigmessage(signame)) == 0) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6964 return; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6965 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6966 while(tmp) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6967 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6968 if(tmp->window == window && tmp->message == message) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6969 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6970 void (*discfunc)(HWND, void *) = (void (*)(HWND, void*))tmp->discfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6971 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6972 if(discfunc) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6973 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6974 discfunc(tmp->window, tmp->data); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6975 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6976 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6977 if(prev) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6978 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6979 prev->next = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6980 free(tmp); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6981 tmp = prev->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6982 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6983 else |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6984 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6985 DWRoot = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6986 free(tmp); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6987 tmp = DWRoot; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6988 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6989 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6990 else |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6991 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6992 prev = tmp; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6993 tmp = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6994 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
6995 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6996 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6997 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6998 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
6999 * Removes all callbacks for a given window. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7000 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7001 * window: Window handle of callback to be removed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7002 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7003 void API dw_signal_disconnect_by_window(HWND window) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7004 { |
2626
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
7005 DWSignalHandler *prev = nullptr, *tmp = DWRoot; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7006 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7007 while(tmp) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7008 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7009 if(tmp->window == window) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7010 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7011 void (*discfunc)(HWND, void *) = (void (*)(HWND, void*))tmp->discfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7012 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7013 if(discfunc) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7014 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7015 discfunc(tmp->window, tmp->data); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7016 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7017 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7018 if(prev) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7019 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7020 prev->next = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7021 free(tmp); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7022 tmp = prev->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7023 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7024 else |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7025 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7026 DWRoot = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7027 free(tmp); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7028 tmp = DWRoot; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7029 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7030 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7031 else |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7032 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7033 prev = tmp; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7034 tmp = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7035 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7036 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7037 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7038 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7039 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7040 * Removes all callbacks for a given window with specified data. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7041 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7042 * window: Window handle of callback to be removed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7043 * data: Pointer to the data to be compared against. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7044 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7045 void API dw_signal_disconnect_by_data(HWND window, void *data) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7046 { |
2626
401a3b9f21ba
Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
7047 DWSignalHandler *prev = nullptr, *tmp = DWRoot; |
2481
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7048 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7049 while(tmp) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7050 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7051 if(tmp->window == window && tmp->data == data) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7052 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7053 void (*discfunc)(HWND, void *) = (void (*)(HWND, void*))tmp->discfunction; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7054 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7055 if(discfunc) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7056 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7057 discfunc(tmp->window, tmp->data); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7058 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7059 |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7060 if(prev) |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7061 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7062 prev->next = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7063 free(tmp); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7064 tmp = prev->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7065 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7066 else |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7067 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7068 DWRoot = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7069 free(tmp); |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7070 tmp = DWRoot; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7071 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7072 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7073 else |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7074 { |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7075 prev = tmp; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7076 tmp = tmp->next; |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7077 } |
94f0d61d6953
Android: Initial commit of signal handlers, connecting buttons to the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
7078 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7079 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7080 |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7081 void _dw_strlwr(char *buf) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7082 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7083 int z, len = strlen(buf); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7084 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7085 for(z=0;z<len;z++) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7086 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7087 if(buf[z] >= 'A' && buf[z] <= 'Z') |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7088 buf[z] -= 'A' - 'a'; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7089 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7090 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7091 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7092 /* Open a shared library and return a handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7093 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7094 * name: Base name of the shared library. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7095 * handle: Pointer to a module handle, |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7096 * will be filled in with the handle. |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7097 */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7098 int API dw_module_load(const char *name, HMOD *handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7099 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7100 int len; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7101 char *newname; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7102 char errorbuf[1025] = {0}; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7103 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7104 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7105 if(!handle) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7106 return -1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7107 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7108 if((len = strlen(name)) == 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7109 return -1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7110 |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7111 /* Lenth + "lib" + ".so" + nullptr */ |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7112 newname = (char *)malloc(len + 7); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7113 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7114 if(!newname) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7115 return -1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7116 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7117 sprintf(newname, "lib%s.so", name); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7118 _dw_strlwr(newname); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7119 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7120 *handle = dlopen(newname, RTLD_NOW); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7121 if(*handle == nullptr) |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7122 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7123 strncpy(errorbuf, dlerror(), 1024); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7124 printf("%s\n", errorbuf); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7125 sprintf(newname, "lib%s.so", name); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7126 *handle = dlopen(newname, RTLD_NOW); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7127 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7128 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7129 free(newname); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7130 |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7131 return (nullptr == *handle) ? -1 : 0; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7132 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7133 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7134 /* Queries the address of a symbol within open handle. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7135 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7136 * handle: Module handle returned by dw_module_load() |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7137 * name: Name of the symbol you want the address of. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7138 * func: A pointer to a function pointer, to obtain |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7139 * the address. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7140 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7141 int API dw_module_symbol(HMOD handle, const char *name, void**func) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7142 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7143 if(!func || !name) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7144 return -1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7145 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7146 if(strlen(name) == 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7147 return -1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7148 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7149 *func = (void*)dlsym(handle, name); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7150 return (nullptr == *func); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7151 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7152 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7153 /* Frees the shared library previously opened. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7154 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7155 * handle: Module handle returned by dw_module_load() |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7156 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7157 int API dw_module_close(HMOD handle) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7158 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7159 if(handle) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7160 return dlclose(handle); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7161 return 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7162 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7163 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7164 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7165 * Returns the handle to an unnamed mutex semaphore. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7166 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7167 HMTX API dw_mutex_new(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7168 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7169 HMTX mutex = (HMTX)malloc(sizeof(pthread_mutex_t)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7170 |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7171 pthread_mutex_init(mutex, nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7172 return mutex; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7173 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7174 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7175 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7176 * Closes a semaphore created by dw_mutex_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7177 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7178 * mutex: The handle to the mutex returned by dw_mutex_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7179 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7180 void API dw_mutex_close(HMTX mutex) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7181 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7182 if(mutex) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7183 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7184 pthread_mutex_destroy(mutex); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7185 free(mutex); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7186 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7187 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7188 |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7189 /* Check if we are on the UI thread */ |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7190 int _dw_is_ui_thread(void) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7191 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7192 JNIEnv *env; |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7193 int retval = FALSE; |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7194 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7195 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7196 // First get the class that contains the method you need to call |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7197 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7198 // Get the method that you want to call |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7199 jmethodID isUIThread = env->GetMethodID(clazz, "isUIThread", |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7200 "()Z"); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7201 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7202 retval = env->CallBooleanMethod(_dw_obj, isUIThread); |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7203 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7204 retval = FALSE; |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7205 } |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7206 return retval; |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7207 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7208 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7209 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7210 * Tries to gain access to the semaphore, if it can't it blocks. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7211 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7212 * mutex: The handle to the mutex returned by dw_mutex_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7213 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7214 void API dw_mutex_lock(HMTX mutex) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7215 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7216 /* We need to handle locks from the main thread differently... |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7217 * since we can't stop message processing... otherwise we |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7218 * will deadlock... so try to acquire the lock and continue |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7219 * processing messages in between tries. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7220 */ |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7221 if(_dw_is_ui_thread()) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7222 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7223 while(pthread_mutex_trylock(mutex) != 0) |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7224 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7225 /* Process any pending events */ |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7226 dw_main_iteration(); |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
7227 sched_yield(); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7228 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7229 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7230 else |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7231 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7232 pthread_mutex_lock(mutex); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7233 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7234 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7235 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7236 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7237 * Tries to gain access to the semaphore. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7238 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7239 * mutex: The handle to the mutex returned by dw_mutex_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7240 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7241 * DW_ERROR_NONE on success, DW_ERROR_TIMEOUT if it is already locked. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7242 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7243 int API dw_mutex_trylock(HMTX mutex) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7244 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7245 if(pthread_mutex_trylock(mutex) == 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7246 return DW_ERROR_NONE; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7247 return DW_ERROR_TIMEOUT; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7248 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7249 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7250 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7251 * Reliquishes the access to the semaphore. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7252 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7253 * mutex: The handle to the mutex returned by dw_mutex_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7254 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7255 void API dw_mutex_unlock(HMTX mutex) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7256 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7257 pthread_mutex_unlock(mutex); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7258 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7259 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7260 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7261 * Returns the handle to an unnamed event semaphore. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7262 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7263 HEV API dw_event_new(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7264 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7265 HEV eve = (HEV)malloc(sizeof(struct _dw_unix_event)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7266 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7267 if(!eve) |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7268 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7269 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7270 /* We need to be careful here, mutexes on Linux are |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7271 * FAST by default but are error checking on other |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7272 * systems such as FreeBSD and OS/2, perhaps others. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7273 */ |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7274 pthread_mutex_init (&(eve->mutex), nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7275 pthread_mutex_lock (&(eve->mutex)); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7276 pthread_cond_init (&(eve->event), nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7277 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7278 pthread_mutex_unlock (&(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7279 eve->alive = 1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7280 eve->posted = 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7281 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7282 return eve; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7283 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7284 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7285 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7286 * Resets a semaphore created by dw_event_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7287 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7288 * eve: The handle to the event returned by dw_event_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7289 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7290 int API dw_event_reset (HEV eve) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7291 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7292 if(!eve) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7293 return DW_ERROR_NON_INIT; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7294 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7295 pthread_mutex_lock (&(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7296 pthread_cond_broadcast (&(eve->event)); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7297 pthread_cond_init (&(eve->event), nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7298 eve->posted = 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7299 pthread_mutex_unlock (&(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7300 return DW_ERROR_NONE; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7301 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7302 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7303 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7304 * Posts a semaphore created by dw_event_new(). Causing all threads |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7305 * waiting on this event in dw_event_wait to continue. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7306 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7307 * eve: The handle to the event returned by dw_event_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7308 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7309 int API dw_event_post (HEV eve) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7310 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7311 if(!eve) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7312 return DW_ERROR_NON_INIT; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7313 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7314 pthread_mutex_lock (&(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7315 pthread_cond_broadcast (&(eve->event)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7316 eve->posted = 1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7317 pthread_mutex_unlock (&(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7318 return DW_ERROR_NONE; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7319 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7320 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7321 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7322 * Waits on a semaphore created by dw_event_new(), until the |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7323 * event gets posted or until the timeout expires. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7324 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7325 * eve: The handle to the event returned by dw_event_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7326 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7327 int API dw_event_wait(HEV eve, unsigned long timeout) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7328 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7329 int rc; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7330 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7331 if(!eve) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7332 return DW_ERROR_NON_INIT; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7333 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7334 pthread_mutex_lock (&(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7335 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7336 if(eve->posted) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7337 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7338 pthread_mutex_unlock (&(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7339 return DW_ERROR_NONE; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7340 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7341 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7342 if(timeout != -1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7343 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7344 struct timeval now; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7345 struct timespec timeo; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7346 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
7347 gettimeofday(&now, nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7348 timeo.tv_sec = now.tv_sec + (timeout / 1000); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7349 timeo.tv_nsec = now.tv_usec * 1000; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7350 rc = pthread_cond_timedwait(&(eve->event), &(eve->mutex), &timeo); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7351 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7352 else |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7353 rc = pthread_cond_wait(&(eve->event), &(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7354 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7355 pthread_mutex_unlock (&(eve->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7356 if(!rc) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7357 return DW_ERROR_NONE; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7358 if(rc == ETIMEDOUT) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7359 return DW_ERROR_TIMEOUT; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7360 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7361 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7362 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7363 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7364 * Closes a semaphore created by dw_event_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7365 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7366 * eve: The handle to the event returned by dw_event_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7367 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7368 int API dw_event_close(HEV *eve) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7369 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7370 if(!eve || !(*eve)) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7371 return DW_ERROR_NON_INIT; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7372 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7373 pthread_mutex_lock (&((*eve)->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7374 pthread_cond_destroy (&((*eve)->event)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7375 pthread_mutex_unlock (&((*eve)->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7376 pthread_mutex_destroy (&((*eve)->mutex)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7377 free(*eve); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7378 *eve = nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7379 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7380 return DW_ERROR_NONE; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7381 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7382 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7383 struct _dw_seminfo { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7384 int fd; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7385 int waiting; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7386 }; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7387 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7388 static void _dw_handle_sem(int *tmpsock) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7389 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7390 fd_set rd; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7391 struct _dw_seminfo *array = (struct _dw_seminfo *)malloc(sizeof(struct _dw_seminfo)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7392 int listenfd = tmpsock[0]; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7393 int bytesread, connectcount = 1, maxfd, z, posted = 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7394 char command; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7395 sigset_t mask; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7396 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7397 sigfillset(&mask); /* Mask all allowed signals */ |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7398 pthread_sigmask(SIG_BLOCK, &mask, nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7399 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7400 /* problems */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7401 if(tmpsock[1] == -1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7402 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7403 free(array); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7404 return; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7405 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7406 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7407 array[0].fd = tmpsock[1]; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7408 array[0].waiting = 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7409 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7410 /* Free the memory allocated in dw_named_event_new. */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7411 free(tmpsock); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7412 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7413 while(1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7414 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7415 FD_ZERO(&rd); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7416 FD_SET(listenfd, &rd); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7417 int DW_UNUSED(result); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7418 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7419 maxfd = listenfd; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7420 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7421 /* Added any connections to the named event semaphore */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7422 for(z=0;z<connectcount;z++) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7423 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7424 if(array[z].fd > maxfd) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7425 maxfd = array[z].fd; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7426 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7427 FD_SET(array[z].fd, &rd); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7428 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7429 |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7430 if(select(maxfd+1, &rd, nullptr, nullptr, nullptr) == -1) |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7431 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7432 free(array); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7433 return; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7434 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7435 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7436 if(FD_ISSET(listenfd, &rd)) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7437 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7438 struct _dw_seminfo *newarray; |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
7439 int newfd = accept(listenfd, nullptr, nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7440 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7441 if(newfd > -1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7442 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7443 /* Add new connections to the set */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7444 newarray = (struct _dw_seminfo *)malloc(sizeof(struct _dw_seminfo)*(connectcount+1)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7445 memcpy(newarray, array, sizeof(struct _dw_seminfo)*(connectcount)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7446 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7447 newarray[connectcount].fd = newfd; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7448 newarray[connectcount].waiting = 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7449 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7450 connectcount++; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7451 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7452 /* Replace old array with new one */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7453 free(array); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7454 array = newarray; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7455 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7456 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7457 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7458 /* Handle any events posted to the semaphore */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7459 for(z=0;z<connectcount;z++) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7460 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7461 if(FD_ISSET(array[z].fd, &rd)) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7462 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7463 if((bytesread = read(array[z].fd, &command, 1)) < 1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7464 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7465 struct _dw_seminfo *newarray; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7466 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7467 /* Remove this connection from the set */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7468 newarray = (struct _dw_seminfo *)malloc(sizeof(struct _dw_seminfo)*(connectcount-1)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7469 if(!z) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7470 memcpy(newarray, &array[1], sizeof(struct _dw_seminfo)*(connectcount-1)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7471 else |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7472 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7473 memcpy(newarray, array, sizeof(struct _dw_seminfo)*z); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7474 if(z!=(connectcount-1)) |
2856
de1a0cd26691
Android: Forgot Android also used the same semaphore code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2852
diff
changeset
|
7475 memcpy(&newarray[z], &array[z+1], sizeof(struct _dw_seminfo)*(connectcount-(z+1))); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7476 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7477 connectcount--; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7478 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7479 /* Replace old array with new one */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7480 free(array); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7481 array = newarray; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7482 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7483 else if(bytesread == 1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7484 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7485 switch(command) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7486 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7487 case 0: |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7488 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7489 /* Reset */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7490 posted = 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7491 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7492 break; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7493 case 1: |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7494 /* Post */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7495 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7496 int s; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7497 char tmp = (char)0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7498 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7499 posted = 1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7500 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7501 for(s=0;s<connectcount;s++) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7502 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7503 /* The semaphore has been posted so |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7504 * we tell all the waiting threads to |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7505 * continue. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7506 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7507 if(array[s].waiting) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7508 result = write(array[s].fd, &tmp, 1); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7509 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7510 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7511 break; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7512 case 2: |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7513 /* Wait */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7514 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7515 char tmp = (char)0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7516 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7517 array[z].waiting = 1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7518 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7519 /* If we are posted exit immeditately */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7520 if(posted) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7521 result = write(array[z].fd, &tmp, 1); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7522 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7523 break; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7524 case 3: |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7525 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7526 /* Done Waiting */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7527 array[z].waiting = 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7528 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7529 break; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7530 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7531 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7532 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7533 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7534 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7535 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7536 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7537 /* Using domain sockets on unix for IPC */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7538 /* Create a named event semaphore which can be |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7539 * opened from other processes. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7540 * Parameters: |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7541 * eve: Pointer to an event handle to receive handle. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7542 * name: Name given to semaphore which can be opened |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7543 * by other processes. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7544 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7545 HEV API dw_named_event_new(const char *name) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7546 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
7547 struct sockaddr_un un = {0}; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7548 int ev, *tmpsock = (int *)malloc(sizeof(int)*2); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7549 DWTID dwthread; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7550 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7551 if(!tmpsock) |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7552 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7553 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7554 tmpsock[0] = socket(AF_UNIX, SOCK_STREAM, 0); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7555 ev = socket(AF_UNIX, SOCK_STREAM, 0); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7556 un.sun_family=AF_UNIX; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7557 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7558 strcpy(un.sun_path, "/tmp/.dw/"); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7559 strcat(un.sun_path, name); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7560 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7561 /* just to be safe, this should be changed |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7562 * to support multiple instances. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7563 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7564 remove(un.sun_path); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7565 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7566 bind(tmpsock[0], (struct sockaddr *)&un, sizeof(un)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7567 listen(tmpsock[0], 0); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7568 connect(ev, (struct sockaddr *)&un, sizeof(un)); |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
7569 tmpsock[1] = accept(tmpsock[0], nullptr, nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7570 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7571 if(tmpsock[0] < 0 || tmpsock[1] < 0 || ev < 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7572 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7573 if(tmpsock[0] > -1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7574 close(tmpsock[0]); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7575 if(tmpsock[1] > -1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7576 close(tmpsock[1]); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7577 if(ev > -1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7578 close(ev); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7579 free(tmpsock); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7580 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7581 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7582 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7583 /* Create a thread to handle this event semaphore */ |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7584 pthread_create(&dwthread, nullptr, (void *(*)(void *))_dw_handle_sem, (void *)tmpsock); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7585 return (HEV)DW_INT_TO_POINTER(ev); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7586 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7587 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7588 /* Open an already existing named event semaphore. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7589 * Parameters: |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7590 * eve: Pointer to an event handle to receive handle. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7591 * name: Name given to semaphore which can be opened |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7592 * by other processes. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7593 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7594 HEV API dw_named_event_get(const char *name) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7595 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7596 struct sockaddr_un un; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7597 int ev = socket(AF_UNIX, SOCK_STREAM, 0); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7598 if(ev < 0) |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7599 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7600 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7601 un.sun_family=AF_UNIX; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7602 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7603 strcpy(un.sun_path, "/tmp/.dw/"); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7604 strcat(un.sun_path, name); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7605 connect(ev, (struct sockaddr *)&un, sizeof(un)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7606 return (HEV)DW_INT_TO_POINTER(ev); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7607 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7608 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7609 /* Resets the event semaphore so threads who call wait |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7610 * on this semaphore will block. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7611 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7612 * eve: Handle to the semaphore obtained by |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7613 * an open or create call. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7614 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7615 int API dw_named_event_reset(HEV eve) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7616 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7617 /* signal reset */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7618 char tmp = (char)0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7619 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7620 if(DW_POINTER_TO_INT(eve) < 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7621 return DW_ERROR_NONE; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7622 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7623 if(write(DW_POINTER_TO_INT(eve), &tmp, 1) == 1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7624 return DW_ERROR_NONE; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7625 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7626 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7627 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7628 /* Sets the posted state of an event semaphore, any threads |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7629 * waiting on the semaphore will no longer block. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7630 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7631 * eve: Handle to the semaphore obtained by |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7632 * an open or create call. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7633 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7634 int API dw_named_event_post(HEV eve) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7635 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7636 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7637 /* signal post */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7638 char tmp = (char)1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7639 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7640 if(DW_POINTER_TO_INT(eve) < 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7641 return DW_ERROR_NONE; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7642 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7643 if(write(DW_POINTER_TO_INT(eve), &tmp, 1) == 1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7644 return DW_ERROR_NONE; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7645 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7646 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7647 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7648 /* Waits on the specified semaphore until it becomes |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7649 * posted, or returns immediately if it already is posted. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7650 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7651 * eve: Handle to the semaphore obtained by |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7652 * an open or create call. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7653 * timeout: Number of milliseconds before timing out |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7654 * or -1 if indefinite. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7655 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7656 int API dw_named_event_wait(HEV eve, unsigned long timeout) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7657 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7658 fd_set rd; |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7659 struct timeval tv, *useme = nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7660 int retval = 0; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7661 char tmp; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7662 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7663 if(DW_POINTER_TO_INT(eve) < 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7664 return DW_ERROR_NON_INIT; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7665 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7666 /* Set the timout or infinite */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7667 if(timeout != -1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7668 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7669 tv.tv_sec = timeout / 1000; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7670 tv.tv_usec = timeout % 1000; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7671 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7672 useme = &tv; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7673 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7674 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7675 FD_ZERO(&rd); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7676 FD_SET(DW_POINTER_TO_INT(eve), &rd); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7677 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7678 /* Signal wait */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7679 tmp = (char)2; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7680 retval = write(DW_POINTER_TO_INT(eve), &tmp, 1); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7681 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7682 if(retval == 1) |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7683 retval = select(DW_POINTER_TO_INT(eve)+1, &rd, nullptr, nullptr, useme); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7684 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7685 /* Signal done waiting. */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7686 tmp = (char)3; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7687 if(retval == 1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7688 retval = write(DW_POINTER_TO_INT(eve), &tmp, 1); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7689 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7690 if(retval == 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7691 return DW_ERROR_TIMEOUT; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7692 else if(retval == -1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7693 return DW_ERROR_INTERRUPT; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7694 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7695 /* Clear the entry from the pipe so |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7696 * we don't loop endlessly. :) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7697 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7698 if(read(DW_POINTER_TO_INT(eve), &tmp, 1) == 1) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7699 return DW_ERROR_NONE; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7700 return DW_ERROR_GENERAL; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7701 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7702 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7703 /* Release this semaphore, if there are no more open |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7704 * handles on this semaphore the semaphore will be destroyed. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7705 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7706 * eve: Handle to the semaphore obtained by |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7707 * an open or create call. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7708 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7709 int API dw_named_event_close(HEV eve) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7710 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7711 /* Finally close the domain socket, |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7712 * cleanup will continue in _dw_handle_sem. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7713 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7714 close(DW_POINTER_TO_INT(eve)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7715 return DW_ERROR_NONE; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7716 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7717 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7718 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7719 * Generally an internal function called from a newly created |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7720 * thread to setup the Dynamic Windows environment for the thread. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7721 * However it is exported so language bindings can call it when |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7722 * they create threads that require access to Dynamic Windows. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7723 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7724 void API _dw_init_thread(void) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7725 { |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
7726 JNIEnv *env; |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
7727 |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7728 _dw_jvm->AttachCurrentThread(&env, nullptr); |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
7729 pthread_setspecific(_dw_env_key, env); |
2572
bbe693293be5
Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2571
diff
changeset
|
7730 pthread_setspecific(_dw_fgcolor_key, nullptr); |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2633
diff
changeset
|
7731 pthread_setspecific(_dw_bgcolor_key, (void *)DW_RGB_TRANSPARENT); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7732 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7733 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7734 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7735 * Generally an internal function called from a terminating |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7736 * thread to cleanup the Dynamic Windows environment for the thread. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7737 * However it is exported so language bindings can call it when |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7738 * they exit threads that require access to Dynamic Windows. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7739 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7740 void API _dw_deinit_thread(void) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7741 { |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
7742 _dw_jvm->DetachCurrentThread(); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7743 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7744 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7745 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7746 * Setup thread independent color sets. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7747 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7748 void _dwthreadstart(void *data) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7749 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7750 void (*threadfunc)(void *) = nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7751 void **tmp = (void **)data; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7752 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7753 threadfunc = (void (*)(void *))tmp[0]; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7754 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7755 /* Initialize colors */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7756 _dw_init_thread(); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7757 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7758 threadfunc(tmp[1]); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7759 free(tmp); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7760 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7761 /* Free colors */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7762 _dw_deinit_thread(); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7763 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7764 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7765 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7766 * Allocates a shared memory region with a name. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7767 * Parameters: |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7768 * handle: A pointer to receive a SHM identifier. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7769 * dest: A pointer to a pointer to receive the memory address. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7770 * size: Size in bytes of the shared memory region to allocate. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7771 * name: A string pointer to a unique memory name. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7772 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7773 HSHM API dw_named_memory_new(void **dest, int size, const char *name) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7774 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7775 char namebuf[1025]; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7776 struct _dw_unix_shm *handle = (struct _dw_unix_shm *)malloc(sizeof(struct _dw_unix_shm)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7777 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7778 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7779 snprintf(namebuf, 1024, "/tmp/.dw/%s", name); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7780 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7781 if((handle->fd = open(namebuf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7782 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7783 free(handle); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7784 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7785 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7786 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7787 if(ftruncate(handle->fd, size)) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7788 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7789 close(handle->fd); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7790 free(handle); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7791 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7792 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7793 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7794 /* attach the shared memory segment to our process's address space. */ |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7795 *dest = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7796 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7797 if(*dest == MAP_FAILED) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7798 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7799 close(handle->fd); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7800 *dest = nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7801 free(handle); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7802 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7803 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7804 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7805 handle->size = size; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7806 handle->sid = getsid(0); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7807 handle->path = strdup(namebuf); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7808 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7809 return handle; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7810 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7811 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7812 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7813 * Aquires shared memory region with a name. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7814 * Parameters: |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7815 * dest: A pointer to a pointer to receive the memory address. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7816 * size: Size in bytes of the shared memory region to requested. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7817 * name: A string pointer to a unique memory name. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7818 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7819 HSHM API dw_named_memory_get(void **dest, int size, const char *name) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7820 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7821 char namebuf[1025]; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7822 struct _dw_unix_shm *handle = (struct _dw_unix_shm *)malloc(sizeof(struct _dw_unix_shm)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7823 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7824 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7825 snprintf(namebuf, 1024, "/tmp/.dw/%s", name); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7826 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7827 if((handle->fd = open(namebuf, O_RDWR)) < 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7828 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7829 free(handle); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7830 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7831 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7832 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7833 /* attach the shared memory segment to our process's address space. */ |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7834 *dest = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7835 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7836 if(*dest == MAP_FAILED) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7837 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7838 close(handle->fd); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7839 *dest = nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7840 free(handle); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7841 return nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7842 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7843 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7844 handle->size = size; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7845 handle->sid = -1; |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7846 handle->path = nullptr; |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7847 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7848 return handle; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7849 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7850 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7851 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7852 * Frees a shared memory region previously allocated. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7853 * Parameters: |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7854 * handle: Handle obtained from DB_named_memory_allocate. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7855 * ptr: The memory address aquired with DB_named_memory_allocate. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7856 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7857 int API dw_named_memory_free(HSHM handle, void *ptr) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7858 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7859 struct _dw_unix_shm *h = (struct _dw_unix_shm *)handle; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7860 int rc = munmap(ptr, h->size); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7861 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7862 close(h->fd); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7863 if(h->path) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7864 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7865 /* Only remove the actual file if we are the |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7866 * creator of the file. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7867 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7868 if(h->sid != -1 && h->sid == getsid(0)) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7869 remove(h->path); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7870 free(h->path); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7871 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7872 return rc; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7873 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7874 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7875 * Creates a new thread with a starting point of func. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7876 * Parameters: |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7877 * func: Function which will be run in the new thread. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7878 * data: Parameter(s) passed to the function. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7879 * stack: Stack size of new thread (OS/2 and Windows only). |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7880 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7881 DWTID API dw_thread_new(void *func, void *data, int stack) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7882 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7883 DWTID dwthread; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7884 void **tmp = (void **)malloc(sizeof(void *) * 2); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7885 int rc; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7886 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7887 tmp[0] = func; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7888 tmp[1] = data; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7889 |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7890 rc = pthread_create(&dwthread, nullptr, (void *(*)(void *))_dwthreadstart, (void *)tmp); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7891 if(rc == 0) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7892 return dwthread; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7893 return (DWTID)DW_ERROR_UNKNOWN; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7894 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7895 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7896 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7897 * Ends execution of current thread immediately. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7898 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7899 void API dw_thread_end(void) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7900 { |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
7901 pthread_exit(nullptr); |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7902 } |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7903 |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7904 /* |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7905 * Returns the current thread's ID. |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7906 */ |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7907 DWTID API dw_thread_id(void) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7908 { |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7909 return (DWTID)pthread_self(); |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7910 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7911 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7912 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7913 * Initializes the Dynamic Windows engine. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7914 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7915 * newthread: True if this is the only thread. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7916 * False if there is already a message loop running. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7917 * argc: Passed in from main() |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7918 * argv: Passed in from main() |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7919 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7920 * DW_ERROR_NONE (0) on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7921 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7922 int API dw_init(int newthread, int argc, char *argv[]) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7923 { |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7924 JNIEnv *env; |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7925 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7926 if(!_dw_app_id[0]) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7927 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7928 /* Generate an Application ID based on the PID if all else fails. */ |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7929 snprintf(_dw_app_id, _DW_APP_ID_SIZE, "%s.pid.%d", DW_APP_DOMAIN_DEFAULT, getpid()); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7930 } |
2633
3d20fcfd8583
Android: Fix startup failure when not calling dw_app_id_set().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2632
diff
changeset
|
7931 if(!_dw_app_name[0]) |
3d20fcfd8583
Android: Fix startup failure when not calling dw_app_id_set().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2632
diff
changeset
|
7932 { |
3d20fcfd8583
Android: Fix startup failure when not calling dw_app_id_set().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2632
diff
changeset
|
7933 const char *name = getprogname(); |
3d20fcfd8583
Android: Fix startup failure when not calling dw_app_id_set().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2632
diff
changeset
|
7934 |
3d20fcfd8583
Android: Fix startup failure when not calling dw_app_id_set().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2632
diff
changeset
|
7935 if(name) |
3d20fcfd8583
Android: Fix startup failure when not calling dw_app_id_set().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2632
diff
changeset
|
7936 strncpy(_dw_app_name, name, _DW_APP_ID_SIZE); |
3d20fcfd8583
Android: Fix startup failure when not calling dw_app_id_set().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2632
diff
changeset
|
7937 } |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7938 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7939 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7940 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7941 // Construct a String |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7942 jstring appid = env->NewStringUTF(_dw_app_id); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7943 jstring appname = env->NewStringUTF(_dw_app_name); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7944 // First get the class that contains the method you need to call |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7945 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7946 // Get the method that you want to call |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7947 jmethodID dwInit = env->GetMethodID(clazz, "dwInit", |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
7948 "(Ljava/lang/String;Ljava/lang/String;)I"); |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7949 // Call the method on the object |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
7950 _dw_android_api = env->CallIntMethod(_dw_obj, dwInit, appid, appname); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7951 if(_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7952 _dw_android_api = 0; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
7953 env->DeleteLocalRef(appid); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
7954 env->DeleteLocalRef(appname); |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
7955 } |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
7956 return DW_ERROR_NONE; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7957 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7958 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7959 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7960 * Cleanly terminates a DW session, should be signal handler safe. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7961 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7962 void API dw_shutdown(void) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7963 { |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7964 JNIEnv *env; |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7965 |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7966 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7967 { |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7968 // First get the class that contains the method you need to call |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7969 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7970 // Get the method that you want to call |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7971 jmethodID dwindowsShutdown = env->GetMethodID(clazz, "dwindowsShutdown", |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7972 "()V"); |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7973 // Call the method on the object |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7974 env->CallVoidMethod(_dw_obj, dwindowsShutdown); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
7975 _dw_jni_check_exception(env); |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
7976 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7977 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7978 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7979 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7980 * Execute and external program in a seperate session. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7981 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7982 * program: Program name with optional path. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7983 * type: Either DW_EXEC_CON or DW_EXEC_GUI. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7984 * params: An array of pointers to string arguements. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7985 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7986 * Process ID on success or DW_ERROR_UNKNOWN (-1) on error. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7987 */ |
2695
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7988 #if defined(__ANDROID__) && (__ANDROID_API__+0) < 28 |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7989 int API dw_exec(const char *program, int type, char **params) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
7990 { |
2695
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7991 int retval = DW_ERROR_UNKNOWN; |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7992 |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7993 /* Forking isn't recommended on Android... but it works... |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7994 * and prior to API 28 it is the only way to launch processes. |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7995 * Type is ignored, since this can only launch background processes. |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7996 */ |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7997 if((retval = fork()) == 0) |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7998 { |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
7999 int i; |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8000 |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8001 /* Close any forked file descriptors */ |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8002 for(i=3; i<256; i++) |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8003 close(i); |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8004 setsid(); |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8005 |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8006 execvp(program, params); |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8007 } |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8008 return retval; |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8009 } |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8010 #else |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8011 #include <spawn.h> |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8012 |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8013 int API dw_exec(const char *program, int type, char **params) |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8014 { |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8015 int retval = DW_ERROR_UNKNOWN; |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8016 pid_t pid; |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8017 |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8018 /* API 28 and later has posix_spawn*() so use that instead of |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8019 * fork/exec, however launched processes are still background |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8020 * processes so ignore the type parameter. |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8021 */ |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8022 if(posix_spawnp(&pid, program, NULL, NULL, params, NULL) == 0) |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8023 { |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8024 if(pid > 0) |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8025 retval = pid; |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8026 else |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8027 retval = DW_ERROR_NONE; |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8028 } |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8029 return retval; |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8030 } |
11aaf443d64b
Android: Implement dw_exec() using fork/exec on APIs prior to 28.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
8031 #endif |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8032 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8033 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8034 * Loads a web browser pointed at the given URL. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8035 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8036 * url: Uniform resource locator. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8037 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8038 * DW_ERROR_UNKNOWN (-1) on error; DW_ERROR_NONE (0) or a positive Process ID on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8039 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8040 int API dw_browse(const char *url) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8041 { |
2694
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8042 JNIEnv *env; |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8043 int retval = DW_ERROR_UNKNOWN; |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8044 |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8045 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8046 { |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8047 // Construct a string |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8048 jstring jstr = env->NewStringUTF(url); |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8049 // First get the class that contains the method you need to call |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8050 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8051 // Get the method that you want to call |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8052 jmethodID browseURL = env->GetMethodID(clazz, "browseURL", |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8053 "(Ljava/lang/String;)I"); |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8054 // Call the method on the object |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8055 retval = env->CallIntMethod(_dw_obj, browseURL, jstr); |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8056 if(_dw_jni_check_exception(env)) |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8057 retval = DW_ERROR_UNKNOWN; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
8058 env->DeleteLocalRef(jstr); |
2694
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8059 } |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
8060 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8061 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8062 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8063 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8064 * Creates a new print object. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8065 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8066 * jobname: Name of the print job to show in the queue. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8067 * flags: Flags to initially configure the print object. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8068 * pages: Number of pages to print. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8069 * drawfunc: The pointer to the function to be used as the callback. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8070 * drawdata: User data to be passed to the handler function. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8071 * Returns: |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
8072 * A handle to the print object or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8073 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8074 HPRINT API dw_print_new(const char *jobname, unsigned long flags, unsigned int pages, void *drawfunc, void *drawdata) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8075 { |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8076 DWPrint *print; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8077 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8078 if(!drawfunc || !(print = (DWPrint *)calloc(1, sizeof(DWPrint)))) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8079 return nullptr; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8080 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8081 if(!jobname) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8082 jobname = "Dynamic Windows Print Job"; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8083 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8084 print->drawfunc = (int (*)(HPRINT, HPIXMAP, int, void *))drawfunc; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8085 print->drawdata = drawdata; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8086 print->flags = flags; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8087 print->jobname = strdup(jobname); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8088 print->pages = (jint)pages; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8089 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8090 return print; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8091 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8092 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8093 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8094 * Runs the print job, causing the draw page callbacks to fire. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8095 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8096 * print: Handle to the print object returned by dw_print_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8097 * flags: Flags to run the print job. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8098 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8099 * DW_ERROR_UNKNOWN on error or DW_ERROR_NONE on success. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8100 */ |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8101 int API dw_print_run(HPRINT pr, unsigned long flags) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8102 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8103 JNIEnv *env; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8104 DWPrint *print = (DWPrint *)pr; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8105 int retval = DW_ERROR_UNKNOWN; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8106 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8107 if(print && print->drawfunc && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8108 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8109 // Construct a String |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8110 jstring jstr = env->NewStringUTF(print->jobname); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8111 // First get the class that contains the method you need to call |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8112 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8113 // Get the method that you want to call |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8114 jmethodID printRun = env->GetMethodID(clazz, "printRun", |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8115 "(JILjava/lang/String;II)Landroid/print/PrintJob;"); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8116 // Call the method on the object |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8117 print->printjob = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, printRun, (jlong)pr, (jint)print->flags, jstr, (jint)print->pages, (jint)flags), _DW_REFERENCE_WEAK); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8118 if(print->printjob) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8119 retval = DW_ERROR_NONE; |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
8120 env->DeleteLocalRef(jstr); |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8121 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8122 return retval; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8123 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8124 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8125 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8126 * Cancels the print job, typically called from a draw page callback. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8127 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8128 * print: Handle to the print object returned by dw_print_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8129 */ |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8130 void API dw_print_cancel(HPRINT pr) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8131 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8132 JNIEnv *env; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8133 DWPrint *print = (DWPrint *)pr; |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8134 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8135 if(print) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8136 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8137 if(print->printjob && (env = (JNIEnv *) pthread_getspecific(_dw_env_key))) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8138 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8139 // First get the class that contains the method you need to call |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8140 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8141 // Get the method that you want to call |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8142 jmethodID printCancel = env->GetMethodID(clazz, "printCancel", |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8143 "(Landroid/print/PrintJob;)V"); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8144 // Call the method on the object |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8145 env->CallVoidMethod(_dw_obj, printCancel, print->printjob); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8146 _dw_jni_check_exception(env); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8147 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8148 if(print->jobname) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8149 free(print->jobname); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8150 free(print); |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
8151 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8152 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8153 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8154 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8155 * Creates a new system notification if possible. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8156 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8157 * title: The short title of the notification. |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
8158 * imagepath: Path to an image to display or nullptr if none. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8159 * description: A longer description of the notification, |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
8160 * or nullptr if none is necessary. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8161 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8162 * A handle to the notification which can be used to attach a "clicked" event if desired, |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
8163 * or nullptr if it fails or notifications are not supported by the system. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8164 * Remarks: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8165 * This will create a system notification that will show in the notifaction panel |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8166 * on supported systems, which may be clicked to perform another task. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8167 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8168 HWND API dw_notification_new(const char *title, const char *imagepath, const char *description, ...) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8169 { |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8170 JNIEnv *env; |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8171 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8172 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8173 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8174 // Construct a String |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8175 jstring appid = env->NewStringUTF(_dw_app_id); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8176 jstring ntitle = env->NewStringUTF(title); |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
8177 jstring ndesc = nullptr; |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
8178 jstring image = nullptr; |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8179 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8180 if(description) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8181 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8182 va_list args; |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8183 char outbuf[1025] = {0}; |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8184 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8185 va_start(args, description); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8186 vsnprintf(outbuf, 1024, description, args); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8187 va_end(args); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8188 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8189 ndesc = env->NewStringUTF(outbuf); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8190 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8191 if(imagepath) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8192 image = env->NewStringUTF(imagepath); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8193 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8194 // First get the class that contains the method you need to call |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8195 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8196 // Get the method that you want to call |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8197 jmethodID notificationNew = env->GetMethodID(clazz, "notificationNew", |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8198 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroidx/core/app/NotificationCompat$Builder;"); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8199 // Call the method on the object |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
8200 jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, notificationNew, ntitle, image, ndesc, appid), _DW_REFERENCE_WEAK); |
2810
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
8201 env->DeleteLocalRef(appid); |
e0ac1ef1c85b
Android: JNI changes to address potential memory/object leaks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2802
diff
changeset
|
8202 env->DeleteLocalRef(ntitle); |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8203 return result; |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8204 } |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
8205 return nullptr; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8206 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8207 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8208 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8209 * Sends a notification created by dw_notification_new() after attaching signal handler. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8210 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8211 * notification: The handle to the notification returned by dw_notification_new(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8212 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8213 * DW_ERROR_NONE on success, DW_ERROR_UNKNOWN on error or not supported. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8214 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8215 int API dw_notification_send(HWND notification) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8216 { |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8217 JNIEnv *env; |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8218 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8219 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8220 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8221 // First get the class that contains the method you need to call |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8222 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8223 // Get the method that you want to call |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8224 jmethodID notificationNew = env->GetMethodID(clazz, "notificationSend", |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8225 "(Landroidx/core/app/NotificationCompat$Builder;)V"); |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8226 // Call the method on the object |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8227 env->CallVoidMethod(_dw_obj, notificationNew, notification); |
2557
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
8228 if(!_dw_jni_check_exception(env)) |
756331246f94
Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2556
diff
changeset
|
8229 return DW_ERROR_NONE; |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
8230 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8231 return DW_ERROR_UNKNOWN; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8232 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8233 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8234 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8235 * Converts a UTF-8 encoded string into a wide string. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8236 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8237 * utf8string: UTF-8 encoded source string. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8238 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8239 * Wide string that needs to be freed with dw_free() |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
8240 * or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8241 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8242 wchar_t * API dw_utf8_to_wchar(const char *utf8string) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8243 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8244 size_t buflen = strlen(utf8string) + 1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8245 wchar_t *temp = (wchar_t *)malloc(buflen * sizeof(wchar_t)); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8246 if(temp) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8247 mbstowcs(temp, utf8string, buflen); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8248 return temp; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8249 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8250 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8251 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8252 * Converts a wide string into a UTF-8 encoded string. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8253 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8254 * wstring: Wide source string. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8255 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8256 * UTF-8 encoded string that needs to be freed with dw_free() |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
8257 * or nullptr on failure. |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8258 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8259 char * API dw_wchar_to_utf8(const wchar_t *wstring) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8260 { |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8261 size_t bufflen = 8 * wcslen(wstring) + 1; |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8262 char *temp = (char *)malloc(bufflen); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8263 if(temp) |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8264 wcstombs(temp, wstring, bufflen); |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
8265 return temp; |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8266 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8267 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8268 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8269 * Gets the state of the requested library feature. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8270 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8271 * feature: The requested feature for example DW_FEATURE_DARK_MODE |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8272 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8273 * DW_FEATURE_UNSUPPORTED if the library or OS does not support the feature. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8274 * DW_FEATURE_DISABLED if the feature is supported but disabled. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8275 * DW_FEATURE_ENABLED if the feature is supported and enabled. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8276 * Other value greater than 1, same as enabled but with extra info. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8277 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8278 int API dw_feature_get(DWFEATURE feature) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8279 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8280 switch(feature) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8281 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8282 case DW_FEATURE_HTML: /* Supports the HTML Widget */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8283 case DW_FEATURE_HTML_RESULT: /* Supports the DW_SIGNAL_HTML_RESULT callback */ |
2984
ebb94fc2b19f
Android: Implement the DW_FEATURE_HTML_MESSAGE feature tests.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2983
diff
changeset
|
8284 case DW_FEATURE_HTML_MESSAGE: /* Supports the DW_SIGNAL_HTML_MESSAGE callback */ |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
8285 case DW_FEATURE_NOTIFICATION: /* Supports sending system notifications */ |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
8286 case DW_FEATURE_UTF8_UNICODE: /* Supports UTF8 encoded Unicode text */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8287 case DW_FEATURE_MLE_WORD_WRAP: /* Supports word wrapping in Multi-line Edit boxes */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8288 case DW_FEATURE_CONTAINER_STRIPE: /* Supports striped line display in container widgets */ |
2802
f910da0418f6
Android: Report tree widget supported in feature tests in 3.3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2801
diff
changeset
|
8289 case DW_FEATURE_TREE: /* Supports the Tree Widget */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8290 return DW_FEATURE_ENABLED; |
2834
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8291 case DW_FEATURE_CONTAINER_MODE: /* Supports alternate container view modes */ |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8292 return _dw_container_mode; |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8293 case DW_FEATURE_RENDER_SAFE: /* Supports render safe drawing mode, limited to expose */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8294 return _dw_render_safe_mode; |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8295 case DW_FEATURE_DARK_MODE: /* Supports Dark Mode user interface */ |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8296 { |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8297 /* Dark Mode on Android requires Android 10 (API 29) */ |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8298 if(_dw_android_api >= 29) { |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8299 return _dw_dark_mode_detected(); |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8300 } |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8301 return DW_FEATURE_UNSUPPORTED; |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8302 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8303 default: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8304 return DW_FEATURE_UNSUPPORTED; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8305 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8306 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8307 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8308 /* |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8309 * Sets the state of the requested library feature. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8310 * Parameters: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8311 * feature: The requested feature for example DW_FEATURE_DARK_MODE |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8312 * state: DW_FEATURE_DISABLED, DW_FEATURE_ENABLED or any value greater than 1. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8313 * Returns: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8314 * DW_FEATURE_UNSUPPORTED if the library or OS does not support the feature. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8315 * DW_ERROR_NONE if the feature is supported and successfully configured. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8316 * DW_ERROR_GENERAL if the feature is supported but could not be configured. |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8317 * Remarks: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8318 * These settings are typically used during dw_init() so issue before |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8319 * setting up the library with dw_init(). |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8320 */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8321 int API dw_feature_set(DWFEATURE feature, int state) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8322 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8323 switch(feature) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8324 { |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8325 /* These features are supported but not configurable */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8326 case DW_FEATURE_HTML: /* Supports the HTML Widget */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8327 case DW_FEATURE_HTML_RESULT: /* Supports the DW_SIGNAL_HTML_RESULT callback */ |
2984
ebb94fc2b19f
Android: Implement the DW_FEATURE_HTML_MESSAGE feature tests.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2983
diff
changeset
|
8328 case DW_FEATURE_HTML_MESSAGE: /* Supports the DW_SIGNAL_HTML_MESSAGE callback */ |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
8329 case DW_FEATURE_NOTIFICATION: /* Supports sending system notifications */ |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
8330 case DW_FEATURE_UTF8_UNICODE: /* Supports UTF8 encoded Unicode text */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8331 case DW_FEATURE_MLE_WORD_WRAP: /* Supports word wrapping in Multi-line Edit boxes */ |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8332 case DW_FEATURE_CONTAINER_STRIPE: /* Supports striped line display in container widgets */ |
2802
f910da0418f6
Android: Report tree widget supported in feature tests in 3.3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2801
diff
changeset
|
8333 case DW_FEATURE_TREE: /* Supports the Tree Widget */ |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8334 return DW_ERROR_GENERAL; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8335 /* These features are supported and configurable */ |
2993
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8336 case DW_FEATURE_RENDER_SAFE: /* Supports render safe drawing mode, limited to expose */ |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8337 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8338 if (state == DW_FEATURE_ENABLED || state == DW_FEATURE_DISABLED) |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8339 { |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8340 _dw_render_safe_mode = state; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8341 return DW_ERROR_NONE; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8342 } |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8343 return DW_ERROR_GENERAL; |
392f0b3dd502
Android: Add DW_FEATURE_RENDER_SAFE, initially just for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2985
diff
changeset
|
8344 } |
2834
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8345 case DW_FEATURE_CONTAINER_MODE: /* Supports alternate container view modes */ |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8346 { |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8347 if(state >= DW_CONTAINER_MODE_DEFAULT && state < DW_CONTAINER_MODE_MAX) |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8348 { |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8349 JNIEnv *env; |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8350 |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8351 if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8352 { |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8353 // First get the class that contains the method you need to call |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8354 jclass clazz = _dw_find_class(env, DW_CLASS_NAME); |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8355 // Get the method that you want to call |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8356 jmethodID setContainerMode = env->GetMethodID(clazz, "setContainerMode", |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8357 "(I)V"); |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8358 _dw_container_mode = state; |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8359 // Call the method on the object |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8360 env->CallVoidMethod(_dw_obj, setContainerMode, (jint)state); |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8361 _dw_jni_check_exception(env); |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8362 } |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8363 return DW_ERROR_NONE; |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8364 } |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8365 return DW_ERROR_GENERAL; |
0cbe8201db3c
Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2833
diff
changeset
|
8366 } |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8367 case DW_FEATURE_DARK_MODE: /* Supports Dark Mode user interface */ |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8368 { |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8369 /* Dark Mode on Android requires 10 (API 29) */ |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8370 if(_dw_android_api >= 29) { |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8371 /* While technically configurable.... |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8372 * for now just return DW_ERROR_GENERAL |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8373 */ |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8374 return DW_ERROR_GENERAL; |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8375 } |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8376 return DW_FEATURE_UNSUPPORTED; |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2548
diff
changeset
|
8377 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8378 default: |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8379 return DW_FEATURE_UNSUPPORTED; |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8380 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8381 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8382 |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8383 #ifdef __cplusplus |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
8384 } |
2982
e6fb2558e29e
Android: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2950
diff
changeset
|
8385 #endif |