diff --git a/android/src/br/com/bb/pw3270/PW3270Activity.java b/android/src/br/com/bb/pw3270/PW3270Activity.java index 1167558..427c3a9 100644 --- a/android/src/br/com/bb/pw3270/PW3270Activity.java +++ b/android/src/br/com/bb/pw3270/PW3270Activity.java @@ -7,6 +7,7 @@ import android.os.Bundle; // import android.widget.EditText; import android.util.Log; // import android.view.View; +import android.content.SharedPreferences; import android.content.res.*; import android.app.AlertDialog; import android.webkit.WebView; @@ -31,6 +32,15 @@ public class PW3270Activity extends Activity terminal() { + SharedPreferences settings = getSharedPreferences(TAG, 0); + hostname = settings.getString("hostname",hostname); + port = settings.getInt("port",port); + ssl = settings.getBoolean("ssl",ssl); + + setToggle("dstrace",settings.getBoolean("dstrace",true)); + setToggle("screentrace",settings.getBoolean("screentrace",true)); + setToggle("eventtrace",settings.getBoolean("eventtrace",true)); + } protected void updateProgramMessage(int id) diff --git a/android/src/br/com/bb/pw3270/lib3270.java b/android/src/br/com/bb/pw3270/lib3270.java index 94f7c9b..ca3e747 100644 --- a/android/src/br/com/bb/pw3270/lib3270.java +++ b/android/src/br/com/bb/pw3270/lib3270.java @@ -24,9 +24,9 @@ public class lib3270 DataOutputStream outData = null; DataInputStream inData = null; - private String hostname = "3270.df.bb"; - private int port = 8023; - private boolean ssl = false; + protected String hostname = "3270.df.bb"; + protected int port = 8023; + protected boolean ssl = false; static { @@ -36,9 +36,6 @@ public class lib3270 lib3270() { - setToggle("dstrace",true); - setToggle("screentrace",true); - setToggle("eventtrace",true); changed = false; mainloop = null; } @@ -150,6 +147,10 @@ public class lib3270 { // Connecta no host SocketFactory socketFactory; + + if(hostname == "") + return false; + if(ssl) { // Host é SSL diff --git a/src/lib3270/html.c b/src/lib3270/html.c index 8c4b1db..86dbd1c 100644 --- a/src/lib3270/html.c +++ b/src/lib3270/html.c @@ -110,8 +110,7 @@ } mode; char * text; - char * input; - char * block; + int block; int maxlength; unsigned short fg; unsigned short bg; @@ -189,11 +188,7 @@ snprintf(name,29,"F%04d",addr); - info->block = info->text+strlen(info->text); - -#ifdef DEBUG - append_string(info,"\n"); -#endif // DEBUG + info->block = strlen(info->text); append_string(info,"mode = mode; info->maxlength = 0; - info->input = info->text+strlen(info->text); } static void close_input(struct html_info *info) { - char buffer[80]; - char *ptr; - char *mark; + char buffer[80]; + int pos; if(info->mode == HTML_MODE_TEXT) return; + trace("maxlength=%d",info->maxlength); + if(info->maxlength < 1) { - *info->block = 0; + info->text[info->block] = 0; info->mode = HTML_MODE_TEXT; info->maxlength = 0; return; } - for(ptr=mark=info->input;*ptr;ptr++) - { - if(*ptr != ' ') - mark=ptr+1; - } - *mark = 0; + for(pos = strlen(info->text)-1;pos > 0 && info->text[pos] == ' '; pos--) + info->text[pos] = 0; snprintf(buffer,80,"\" maxlength=\"%d\" class=\"IW%03d\"",info->maxlength,info->maxlength); append_string(info,buffer); append_string(info,">"); -#ifdef DEBUG - append_string(info,"\n"); -#endif // DEBUG - - info->mode = HTML_MODE_TEXT; info->maxlength = 0; } @@ -266,30 +252,12 @@ baddr = 0; for(row=0;row < session->rows;row++) { - int cr = 0; - int len = 0; int col; -#ifdef DEBUG - { - char buffer[4096]; - snprintf(buffer,4095,"\n\t",row,session->rows); - append_string(&info,buffer); - } -#endif // DEBUG - for(col = 0; col < session->cols;col++) { - if( session->text[baddr+col].chr != ' ' || (session->text[baddr+col].attr & LIB3270_ATTR_CG)) - len = col; - } - - for(col = 0; col <= len || (col < session->cols && info.mode != HTML_MODE_TEXT);col++) - { if((option & LIB3270_HTML_OPTION_ALL) || (session->text[baddr+col].attr & LIB3270_ATTR_SELECTED)) { - cr++; - if((session->text[baddr+col].attr & LIB3270_ATTR_MARKER) && (option & LIB3270_HTML_OPTION_FORM) ) { int fa = (session->ea_buf[baddr+col].fa & FA_MASK); @@ -303,12 +271,10 @@ { // Input field unsigned char attr = get_field_attribute(session,baddr+col+1); - //char * text = lib3270_get_field_at(session,baddr+col+1); - open_input(&info,baddr+col+1,FA_IS_ZERO(attr) ? HTML_MODE_INPUT_PASSWORD : HTML_MODE_INPUT_TEXT); } - else if(col < len && session->text[baddr+col+1].chr == 'F') + else if(session->text[baddr+col+1].chr == 'F') { char *text = lib3270_get_field_at(session,baddr+col+1); @@ -336,8 +302,7 @@ append_string(&info,"\" />"); info.mode = HTML_MODE_INPUT_BUTTON; info.maxlength = 0; - info.input = info.text+strlen(info.text); - + info.block = strlen(info.text); } } lib3270_free(text); @@ -414,17 +379,16 @@ enum HTML_MODE mode = info.mode; close_input(&info); - - if(cr) - append_element(&info,HTML_ELEMENT_LINE_BREAK); - + append_element(&info,HTML_ELEMENT_LINE_BREAK); open_input(&info,baddr,mode); } - else if(cr) + else { append_element(&info,HTML_ELEMENT_LINE_BREAK); - +#if defined(DEBUG) || defined(ANDROID) + append_string(&info,"\n"); +#endif // DEBUG } } @@ -441,8 +405,8 @@ if(info.form) { - static const char * prefix = "
"; - static const char * suffix = "
"; + static const char * prefix = "
\n"; + static const char * suffix = "
\n"; char *text = info.text; info.text = lib3270_malloc(strlen(prefix)+strlen(suffix)+strlen(text)+4); @@ -454,7 +418,24 @@ lib3270_free(text); } - return lib3270_realloc(info.text,strlen(info.text)+2); + info.text = lib3270_realloc(info.text,strlen(info.text)+2); + +#if defined(DEBUG) || defined(ANDROID) + { + char *text = strdup(info.text); + char *save; + char *ptr; + + for(ptr=strtok_r(text,"\n",&save);ptr;ptr = strtok_r(NULL,"\n",&save)) + { + trace("%s",ptr); + } + + free(text); + } +#endif // DEBUG + + return info.text; } -- libgit2 0.21.2