Commit 20980a6e21ee9923ace6faa9f9a9cd3c5d610fc2

Authored by perry.werneck@gmail.com
1 parent eb180443

Iniciando a implementação da caixa de diálogo modal durante comunicação com o host

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