Commit 20980a6e21ee9923ace6faa9f9a9cd3c5d610fc2
1 parent
eb180443
Exists in
master
and in
5 other branches
Iniciando a implementação da caixa de diálogo modal durante comunicação com o host
Showing
5 changed files
with
82 additions
and
55 deletions
Show diff stats
android/jni/main.cpp
@@ -127,6 +127,12 @@ static void ctlr_done(H3270 *session) | @@ -127,6 +127,12 @@ static void ctlr_done(H3270 *session) | ||
127 | post_message(4); | 127 | post_message(4); |
128 | } | 128 | } |
129 | 129 | ||
130 | +void update_status(H3270 *session, LIB3270_MESSAGE id) | ||
131 | +{ | ||
132 | + __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "Status changed to %d",(int) id); | ||
133 | + post_message(1,(int) id); | ||
134 | +} | ||
135 | + | ||
130 | static int write_buffer(H3270 *session, unsigned const char *buf, int len) | 136 | static int write_buffer(H3270 *session, unsigned const char *buf, int len) |
131 | { | 137 | { |
132 | int rc = -1; | 138 | int rc = -1; |
@@ -276,6 +282,7 @@ JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_init(JNIEnv *env, jclass ob | @@ -276,6 +282,7 @@ JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_init(JNIEnv *env, jclass ob | ||
276 | session->changed = changed; | 282 | session->changed = changed; |
277 | session->erase = erase; | 283 | session->erase = erase; |
278 | session->ctlr_done = ctlr_done; | 284 | session->ctlr_done = ctlr_done; |
285 | + session->update_status = update_status; | ||
279 | 286 | ||
280 | PW3270_JNI_END | 287 | PW3270_JNI_END |
281 | 288 |
android/res/values/strings.xml
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | <resources> | 2 | <resources> |
3 | <string name="app_name">PW3270</string> | 3 | <string name="app_name">PW3270</string> |
4 | <string-array name="program_msg"> | 4 | <string-array name="program_msg"> |
5 | - <item>LIB3270_MESSAGE_NONE</item> | 5 | + <item></item> |
6 | <item>X System</item> | 6 | <item>X System</item> |
7 | <item>X Aguarde</item> | 7 | <item>X Aguarde</item> |
8 | <item>Conectado</item> | 8 | <item>Conectado</item> |
android/src/br/com/bb/pw3270/PW3270Activity.java
@@ -14,22 +14,24 @@ import android.webkit.WebView; | @@ -14,22 +14,24 @@ import android.webkit.WebView; | ||
14 | import android.webkit.WebViewClient; | 14 | import android.webkit.WebViewClient; |
15 | import android.webkit.WebResourceResponse; | 15 | import android.webkit.WebResourceResponse; |
16 | import android.webkit.WebChromeClient; | 16 | import android.webkit.WebChromeClient; |
17 | +import android.app.ProgressDialog; | ||
17 | // import java.io.InputStream; | 18 | // import java.io.InputStream; |
18 | 19 | ||
19 | // import android.app.Dialog; | 20 | // import android.app.Dialog; |
20 | 21 | ||
21 | -public class PW3270Activity extends Activity | 22 | +public class PW3270Activity extends Activity |
22 | { | 23 | { |
23 | private static final String TAG = "pw3270"; | 24 | private static final String TAG = "pw3270"; |
24 | 25 | ||
25 | - private Resources res; | ||
26 | - private WebView view; | ||
27 | - private terminal host; | ||
28 | - private Activity mainact; | ||
29 | - | 26 | + private Resources res; |
27 | + private WebView view; | ||
28 | + private terminal host; | ||
29 | + private Activity mainact; | ||
30 | + private ProgressDialog dlgProgress; | ||
31 | + | ||
30 | private class terminal extends lib3270 | 32 | private class terminal extends lib3270 |
31 | { | 33 | { |
32 | - | 34 | + |
33 | terminal() | 35 | terminal() |
34 | { | 36 | { |
35 | SharedPreferences settings = getSharedPreferences(TAG, 0); | 37 | SharedPreferences settings = getSharedPreferences(TAG, 0); |
@@ -43,20 +45,47 @@ public class PW3270Activity extends Activity | @@ -43,20 +45,47 @@ public class PW3270Activity extends Activity | ||
43 | 45 | ||
44 | } | 46 | } |
45 | 47 | ||
48 | + public void hideProgressDialog() | ||
49 | + { | ||
50 | + dlgProgress.hide(); | ||
51 | + } | ||
52 | + | ||
53 | + public void showProgressDialog(String msg) | ||
54 | + { | ||
55 | + dlgProgress.setMessage(msg); | ||
56 | + Log.v(TAG,msg); | ||
57 | + dlgProgress.show(); | ||
58 | + } | ||
59 | + | ||
46 | protected void updateProgramMessage(int id) | 60 | protected void updateProgramMessage(int id) |
47 | { | 61 | { |
48 | - /* | ||
49 | - try | 62 | + if(id == 0) |
50 | { | 63 | { |
51 | - // this.msgbox.setText(message[id]); | ||
52 | - } catch(Exception e) { this.msgbox.setText("Estado inesperado"); } | ||
53 | - */ | 64 | + if(changed) |
65 | + { | ||
66 | + dlgProgress.setMessage("Aguarde..."); | ||
67 | + changed = false; | ||
68 | + view.reload(); | ||
69 | + hideProgressDialog(); | ||
70 | + } | ||
71 | + } | ||
72 | + else | ||
73 | + { | ||
74 | + String message[] = res.getStringArray(R.array.program_msg); | ||
75 | + try | ||
76 | + { | ||
77 | + showProgressDialog(message[id]); | ||
78 | + } catch(Exception e) | ||
79 | + { | ||
80 | + showProgressDialog("Aguarde..."); | ||
81 | + } | ||
82 | + } | ||
54 | } | 83 | } |
55 | 84 | ||
56 | protected void popupMessage(int type, String title, String text, String info) | 85 | protected void popupMessage(int type, String title, String text, String info) |
57 | { | 86 | { |
58 | AlertDialog d = new AlertDialog.Builder(mainact).create(); | 87 | AlertDialog d = new AlertDialog.Builder(mainact).create(); |
59 | - | 88 | + |
60 | d.setTitle(title); | 89 | d.setTitle(title); |
61 | d.setMessage(text); | 90 | d.setMessage(text); |
62 | 91 | ||
@@ -67,58 +96,56 @@ public class PW3270Activity extends Activity | @@ -67,58 +96,56 @@ public class PW3270Activity extends Activity | ||
67 | public String getscreencontents() | 96 | public String getscreencontents() |
68 | { | 97 | { |
69 | String text; | 98 | String text; |
70 | - | 99 | + |
71 | try | 100 | try |
72 | { | 101 | { |
73 | text = new String(getHTML(),getEncoding()); | 102 | text = new String(getHTML(),getEncoding()); |
74 | } catch(Exception e) { text = ""; } | 103 | } catch(Exception e) { text = ""; } |
75 | - | 104 | + |
76 | return text; | 105 | return text; |
77 | } | 106 | } |
78 | - | ||
79 | - protected void redraw() | ||
80 | - { | ||
81 | - view.reload(); | ||
82 | - } | ||
83 | - | 107 | + |
84 | }; | 108 | }; |
85 | 109 | ||
86 | - | ||
87 | - | ||
88 | /** Called when the activity is first created. */ | 110 | /** Called when the activity is first created. */ |
89 | @Override | 111 | @Override |
90 | - public void onCreate(Bundle savedInstanceState) | 112 | + public void onCreate(Bundle savedInstanceState) |
91 | { | 113 | { |
92 | super.onCreate(savedInstanceState); | 114 | super.onCreate(savedInstanceState); |
93 | - | 115 | + |
94 | res = getResources(); | 116 | res = getResources(); |
95 | 117 | ||
118 | + dlgProgress = new ProgressDialog(this); | ||
119 | + dlgProgress.setMessage("Aguarde..."); | ||
120 | + dlgProgress.setCancelable(false); | ||
121 | +// dlgProgress.show(); | ||
122 | + | ||
96 | // Reference: | 123 | // Reference: |
97 | // http://developer.android.com/reference/android/webkit/WebView.html | 124 | // http://developer.android.com/reference/android/webkit/WebView.html |
98 | view = new WebView(this); | 125 | view = new WebView(this); |
99 | - | 126 | + |
100 | view.setWebChromeClient(new WebChromeClient()); | 127 | view.setWebChromeClient(new WebChromeClient()); |
101 | 128 | ||
102 | view.getSettings().setBuiltInZoomControls(true); | 129 | view.getSettings().setBuiltInZoomControls(true); |
103 | - view.getSettings().setSupportZoom(true); | 130 | + view.getSettings().setSupportZoom(true); |
104 | view.getSettings().setUseWideViewPort(true); | 131 | view.getSettings().setUseWideViewPort(true); |
105 | - view.getSettings().setLoadWithOverviewMode(true); | ||
106 | - | ||
107 | - view.setWebViewClient(new WebViewClient() | 132 | + view.getSettings().setLoadWithOverviewMode(true); |
133 | + | ||
134 | + view.setWebViewClient(new WebViewClient() | ||
108 | { | 135 | { |
109 | - | 136 | + |
110 | @Override | 137 | @Override |
111 | public WebResourceResponse shouldInterceptRequest(WebView view, String url) | 138 | public WebResourceResponse shouldInterceptRequest(WebView view, String url) |
112 | { | 139 | { |
113 | int id = R.raw.index; | 140 | int id = R.raw.index; |
114 | String mime = "text/html"; | 141 | String mime = "text/html"; |
115 | int pos = url.lastIndexOf("/"); | 142 | int pos = url.lastIndexOf("/"); |
116 | - | 143 | + |
117 | if(pos >=0 ) | 144 | if(pos >=0 ) |
118 | url = url.substring(pos+1); | 145 | url = url.substring(pos+1); |
119 | - | 146 | + |
120 | Log.i(TAG,"Loading [" + url + "]"); | 147 | Log.i(TAG,"Loading [" + url + "]"); |
121 | - | 148 | + |
122 | if(url.equalsIgnoreCase("jsmain.js")) | 149 | if(url.equalsIgnoreCase("jsmain.js")) |
123 | { | 150 | { |
124 | id = R.raw.jsmain; | 151 | id = R.raw.jsmain; |
@@ -129,23 +156,23 @@ public class PW3270Activity extends Activity | @@ -129,23 +156,23 @@ public class PW3270Activity extends Activity | ||
129 | id = R.raw.theme; | 156 | id = R.raw.theme; |
130 | } | 157 | } |
131 | 158 | ||
132 | - | 159 | + |
133 | // http://developer.android.com/reference/android/webkit/WebResourceResponse.html | 160 | // http://developer.android.com/reference/android/webkit/WebResourceResponse.html |
134 | return new WebResourceResponse(mime,"utf-8",getResources().openRawResource(id)); | 161 | return new WebResourceResponse(mime,"utf-8",getResources().openRawResource(id)); |
135 | } | 162 | } |
136 | - | 163 | + |
137 | }); | 164 | }); |
138 | - | 165 | + |
139 | view.getSettings().setJavaScriptEnabled(true); | 166 | view.getSettings().setJavaScriptEnabled(true); |
140 | 167 | ||
141 | setContentView(view); | 168 | setContentView(view); |
142 | view.loadUrl("file:index.html"); | 169 | view.loadUrl("file:index.html"); |
143 | - | 170 | + |
144 | host = new terminal(); | 171 | host = new terminal(); |
145 | view.addJavascriptInterface(host, "pw3270"); | 172 | view.addJavascriptInterface(host, "pw3270"); |
146 | host.connect(); | 173 | host.connect(); |
147 | - | 174 | + |
148 | 175 | ||
149 | } | 176 | } |
150 | 177 | ||
151 | -} | ||
152 | \ No newline at end of file | 178 | \ No newline at end of file |
179 | +} |
android/src/br/com/bb/pw3270/lib3270.java
@@ -17,7 +17,7 @@ public class lib3270 | @@ -17,7 +17,7 @@ public class lib3270 | ||
17 | private NetworkThread mainloop; | 17 | private NetworkThread mainloop; |
18 | private static final String TAG = "lib3270"; | 18 | private static final String TAG = "lib3270"; |
19 | 19 | ||
20 | - private boolean changed; | 20 | + protected boolean changed; |
21 | private boolean connected = false; | 21 | private boolean connected = false; |
22 | private boolean refresh = true; | 22 | private boolean refresh = true; |
23 | 23 | ||
@@ -147,10 +147,10 @@ public class lib3270 | @@ -147,10 +147,10 @@ public class lib3270 | ||
147 | { | 147 | { |
148 | // Connecta no host | 148 | // Connecta no host |
149 | SocketFactory socketFactory; | 149 | SocketFactory socketFactory; |
150 | - | 150 | + |
151 | if(hostname == "") | 151 | if(hostname == "") |
152 | return false; | 152 | return false; |
153 | - | 153 | + |
154 | if(ssl) | 154 | if(ssl) |
155 | { | 155 | { |
156 | // Host é SSL | 156 | // Host é SSL |
@@ -295,8 +295,6 @@ public class lib3270 | @@ -295,8 +295,6 @@ public class lib3270 | ||
295 | case 2: // Screen changed | 295 | case 2: // Screen changed |
296 | Log.d(TAG,"Screen changed"); | 296 | Log.d(TAG,"Screen changed"); |
297 | changed = true; | 297 | changed = true; |
298 | - if(refresh) | ||
299 | - redraw(); | ||
300 | break; | 298 | break; |
301 | 299 | ||
302 | case 3: // Popup | 300 | case 3: // Popup |
@@ -311,11 +309,6 @@ public class lib3270 | @@ -311,11 +309,6 @@ public class lib3270 | ||
311 | 309 | ||
312 | case 5: // ctlr_done | 310 | case 5: // ctlr_done |
313 | Log.d(TAG,"ctlr_done"); | 311 | Log.d(TAG,"ctlr_done"); |
314 | - if(changed) | ||
315 | - { | ||
316 | - changed = false; | ||
317 | - redraw(); | ||
318 | - } | ||
319 | break; | 312 | break; |
320 | 313 | ||
321 | case 6: // recv_data | 314 | case 6: // recv_data |
@@ -350,10 +343,6 @@ public class lib3270 | @@ -350,10 +343,6 @@ public class lib3270 | ||
350 | Log.i(TAG,"Erase screen"); | 343 | Log.i(TAG,"Erase screen"); |
351 | } | 344 | } |
352 | 345 | ||
353 | - protected void redraw() | ||
354 | - { | ||
355 | - } | ||
356 | - | ||
357 | public void pfkey(int id) | 346 | public void pfkey(int id) |
358 | { | 347 | { |
359 | Log.d(TAG,"PF"+id); | 348 | Log.d(TAG,"PF"+id); |
src/lib3270/html.c
@@ -386,9 +386,11 @@ | @@ -386,9 +386,11 @@ | ||
386 | else | 386 | else |
387 | { | 387 | { |
388 | append_element(&info,HTML_ELEMENT_LINE_BREAK); | 388 | append_element(&info,HTML_ELEMENT_LINE_BREAK); |
389 | +/* | ||
389 | #if defined(DEBUG) || defined(ANDROID) | 390 | #if defined(DEBUG) || defined(ANDROID) |
390 | append_string(&info,"\n"); | 391 | append_string(&info,"\n"); |
391 | #endif // DEBUG | 392 | #endif // DEBUG |
393 | +*/ | ||
392 | } | 394 | } |
393 | 395 | ||
394 | } | 396 | } |
@@ -420,6 +422,7 @@ | @@ -420,6 +422,7 @@ | ||
420 | 422 | ||
421 | info.text = lib3270_realloc(info.text,strlen(info.text)+2); | 423 | info.text = lib3270_realloc(info.text,strlen(info.text)+2); |
422 | 424 | ||
425 | +/* | ||
423 | #if defined(DEBUG) || defined(ANDROID) | 426 | #if defined(DEBUG) || defined(ANDROID) |
424 | { | 427 | { |
425 | char *text = strdup(info.text); | 428 | char *text = strdup(info.text); |
@@ -434,6 +437,7 @@ | @@ -434,6 +437,7 @@ | ||
434 | free(text); | 437 | free(text); |
435 | } | 438 | } |
436 | #endif // DEBUG | 439 | #endif // DEBUG |
440 | +*/ | ||
437 | 441 | ||
438 | return info.text; | 442 | return info.text; |
439 | } | 443 | } |