diff --git a/android/jni/main.cpp b/android/jni/main.cpp index df23f69..9a7cd98 100644 --- a/android/jni/main.cpp +++ b/android/jni/main.cpp @@ -127,6 +127,12 @@ static void ctlr_done(H3270 *session) post_message(4); } +void update_status(H3270 *session, LIB3270_MESSAGE id) +{ + __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "Status changed to %d",(int) id); + post_message(1,(int) id); +} + static int write_buffer(H3270 *session, unsigned const char *buf, int len) { int rc = -1; @@ -276,6 +282,7 @@ JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_init(JNIEnv *env, jclass ob session->changed = changed; session->erase = erase; session->ctlr_done = ctlr_done; + session->update_status = update_status; PW3270_JNI_END diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index fc674bc..743f409 100644 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -2,7 +2,7 @@ PW3270 - LIB3270_MESSAGE_NONE + X System X Aguarde Conectado diff --git a/android/src/br/com/bb/pw3270/PW3270Activity.java b/android/src/br/com/bb/pw3270/PW3270Activity.java index 427c3a9..a51d4bf 100644 --- a/android/src/br/com/bb/pw3270/PW3270Activity.java +++ b/android/src/br/com/bb/pw3270/PW3270Activity.java @@ -14,22 +14,24 @@ import android.webkit.WebView; import android.webkit.WebViewClient; import android.webkit.WebResourceResponse; import android.webkit.WebChromeClient; +import android.app.ProgressDialog; // import java.io.InputStream; // import android.app.Dialog; -public class PW3270Activity extends Activity +public class PW3270Activity extends Activity { private static final String TAG = "pw3270"; - private Resources res; - private WebView view; - private terminal host; - private Activity mainact; - + private Resources res; + private WebView view; + private terminal host; + private Activity mainact; + private ProgressDialog dlgProgress; + private class terminal extends lib3270 { - + terminal() { SharedPreferences settings = getSharedPreferences(TAG, 0); @@ -43,20 +45,47 @@ public class PW3270Activity extends Activity } + public void hideProgressDialog() + { + dlgProgress.hide(); + } + + public void showProgressDialog(String msg) + { + dlgProgress.setMessage(msg); + Log.v(TAG,msg); + dlgProgress.show(); + } + protected void updateProgramMessage(int id) { - /* - try + if(id == 0) { - // this.msgbox.setText(message[id]); - } catch(Exception e) { this.msgbox.setText("Estado inesperado"); } - */ + if(changed) + { + dlgProgress.setMessage("Aguarde..."); + changed = false; + view.reload(); + hideProgressDialog(); + } + } + else + { + String message[] = res.getStringArray(R.array.program_msg); + try + { + showProgressDialog(message[id]); + } catch(Exception e) + { + showProgressDialog("Aguarde..."); + } + } } protected void popupMessage(int type, String title, String text, String info) { AlertDialog d = new AlertDialog.Builder(mainact).create(); - + d.setTitle(title); d.setMessage(text); @@ -67,58 +96,56 @@ public class PW3270Activity extends Activity public String getscreencontents() { String text; - + try { text = new String(getHTML(),getEncoding()); } catch(Exception e) { text = ""; } - + return text; } - - protected void redraw() - { - view.reload(); - } - + }; - - /** Called when the activity is first created. */ @Override - public void onCreate(Bundle savedInstanceState) + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + res = getResources(); + dlgProgress = new ProgressDialog(this); + dlgProgress.setMessage("Aguarde..."); + dlgProgress.setCancelable(false); +// dlgProgress.show(); + // Reference: // http://developer.android.com/reference/android/webkit/WebView.html view = new WebView(this); - + view.setWebChromeClient(new WebChromeClient()); view.getSettings().setBuiltInZoomControls(true); - view.getSettings().setSupportZoom(true); + view.getSettings().setSupportZoom(true); view.getSettings().setUseWideViewPort(true); - view.getSettings().setLoadWithOverviewMode(true); - - view.setWebViewClient(new WebViewClient() + view.getSettings().setLoadWithOverviewMode(true); + + view.setWebViewClient(new WebViewClient() { - + @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { int id = R.raw.index; String mime = "text/html"; int pos = url.lastIndexOf("/"); - + if(pos >=0 ) url = url.substring(pos+1); - + Log.i(TAG,"Loading [" + url + "]"); - + if(url.equalsIgnoreCase("jsmain.js")) { id = R.raw.jsmain; @@ -129,23 +156,23 @@ public class PW3270Activity extends Activity id = R.raw.theme; } - + // http://developer.android.com/reference/android/webkit/WebResourceResponse.html return new WebResourceResponse(mime,"utf-8",getResources().openRawResource(id)); } - + }); - + view.getSettings().setJavaScriptEnabled(true); setContentView(view); view.loadUrl("file:index.html"); - + host = new terminal(); view.addJavascriptInterface(host, "pw3270"); host.connect(); - + } -} \ No newline at end of file +} diff --git a/android/src/br/com/bb/pw3270/lib3270.java b/android/src/br/com/bb/pw3270/lib3270.java index ca3e747..80579b4 100644 --- a/android/src/br/com/bb/pw3270/lib3270.java +++ b/android/src/br/com/bb/pw3270/lib3270.java @@ -17,7 +17,7 @@ public class lib3270 private NetworkThread mainloop; private static final String TAG = "lib3270"; - private boolean changed; + protected boolean changed; private boolean connected = false; private boolean refresh = true; @@ -147,10 +147,10 @@ public class lib3270 { // Connecta no host SocketFactory socketFactory; - + if(hostname == "") return false; - + if(ssl) { // Host é SSL @@ -295,8 +295,6 @@ public class lib3270 case 2: // Screen changed Log.d(TAG,"Screen changed"); changed = true; - if(refresh) - redraw(); break; case 3: // Popup @@ -311,11 +309,6 @@ public class lib3270 case 5: // ctlr_done Log.d(TAG,"ctlr_done"); - if(changed) - { - changed = false; - redraw(); - } break; case 6: // recv_data @@ -350,10 +343,6 @@ public class lib3270 Log.i(TAG,"Erase screen"); } - protected void redraw() - { - } - public void pfkey(int id) { Log.d(TAG,"PF"+id); diff --git a/src/lib3270/html.c b/src/lib3270/html.c index 86dbd1c..0456250 100644 --- a/src/lib3270/html.c +++ b/src/lib3270/html.c @@ -386,9 +386,11 @@ else { append_element(&info,HTML_ELEMENT_LINE_BREAK); +/* #if defined(DEBUG) || defined(ANDROID) append_string(&info,"\n"); #endif // DEBUG +*/ } } @@ -420,6 +422,7 @@ info.text = lib3270_realloc(info.text,strlen(info.text)+2); +/* #if defined(DEBUG) || defined(ANDROID) { char *text = strdup(info.text); @@ -434,6 +437,7 @@ free(text); } #endif // DEBUG +*/ return info.text; } -- libgit2 0.21.2