Mercurial > dwindows
comparison android/DWindows.kt @ 2510:f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
Started enabling all notebook tabs in the test program... but a number of
controls still missing, so functionality is still spotty at this point.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 07 May 2021 09:35:14 +0000 |
parents | a149dabf6a1f |
children | 5f711e86a211 |
comparison
equal
deleted
inserted
replaced
2509:eaac1317b851 | 2510:f54051c3f2a5 |
---|---|
1 package org.dbsoft.dwindows | 1 package org.dbsoft.dwindows |
2 | 2 |
3 import android.content.ClipData | 3 import android.content.ClipData |
4 import android.content.ClipboardManager | 4 import android.content.ClipboardManager |
5 import android.content.DialogInterface | 5 import android.content.DialogInterface |
6 import android.content.Intent | |
7 import android.content.pm.ActivityInfo | 6 import android.content.pm.ActivityInfo |
8 import android.content.res.Configuration | 7 import android.content.res.Configuration |
9 import android.graphics.Bitmap | 8 import android.graphics.Bitmap |
10 import android.graphics.drawable.GradientDrawable | 9 import android.graphics.drawable.GradientDrawable |
11 import android.media.AudioManager | 10 import android.media.AudioManager |
13 import android.os.Bundle | 12 import android.os.Bundle |
14 import android.os.Handler | 13 import android.os.Handler |
15 import android.os.Looper | 14 import android.os.Looper |
16 import android.text.InputFilter | 15 import android.text.InputFilter |
17 import android.text.InputFilter.LengthFilter | 16 import android.text.InputFilter.LengthFilter |
17 import android.text.InputType | |
18 import android.text.method.PasswordTransformationMethod | 18 import android.text.method.PasswordTransformationMethod |
19 import android.util.Base64 | 19 import android.util.Base64 |
20 import android.util.Log | 20 import android.util.Log |
21 import android.view.Gravity | 21 import android.view.Gravity |
22 import android.view.View | 22 import android.view.View |
23 import android.view.ViewGroup | 23 import android.view.ViewGroup |
24 import android.view.inputmethod.EditorInfo | |
24 import android.webkit.WebView | 25 import android.webkit.WebView |
25 import android.webkit.WebViewClient | 26 import android.webkit.WebViewClient |
26 import android.widget.* | 27 import android.widget.* |
27 import android.widget.SeekBar.OnSeekBarChangeListener | 28 import android.widget.SeekBar.OnSeekBarChangeListener |
28 import androidx.appcompat.app.AlertDialog | 29 import androidx.appcompat.app.AlertDialog |
531 } | 532 } |
532 } | 533 } |
533 return textview | 534 return textview |
534 } | 535 } |
535 | 536 |
537 fun mleNew(cid: Int): EditText? | |
538 { | |
539 var mle: EditText? = null | |
540 | |
541 waitOnUiThread { | |
542 var dataArrayMap = SimpleArrayMap<String, Long>() | |
543 | |
544 mle = EditText(this) | |
545 mle!!.tag = dataArrayMap | |
546 mle!!.id = cid | |
547 mle!!.isSingleLine = false | |
548 mle!!.imeOptions = EditorInfo.IME_FLAG_NO_ENTER_ACTION | |
549 mle!!.inputType = (InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE) | |
550 mle!!.isVerticalScrollBarEnabled = true | |
551 mle!!.scrollBarStyle = View.SCROLLBARS_INSIDE_INSET | |
552 mle!!.setHorizontallyScrolling(true) | |
553 } | |
554 return mle | |
555 } | |
556 | |
557 fun mleSetWordWrap(mle: EditText, state: Int) | |
558 { | |
559 waitOnUiThread { | |
560 if (state != 0) { | |
561 mle.setHorizontallyScrolling(false) | |
562 } else { | |
563 mle.setHorizontallyScrolling(true) | |
564 } | |
565 } | |
566 } | |
567 | |
568 fun mleSetEditable(mle: EditText, state: Int) | |
569 { | |
570 waitOnUiThread { | |
571 if (state != 0) { | |
572 mle!!.inputType = (InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE) | |
573 } else { | |
574 mle!!.inputType = InputType.TYPE_NULL | |
575 } | |
576 } | |
577 } | |
578 | |
579 fun mleSetCursor(mle: EditText, point: Int) | |
580 { | |
581 waitOnUiThread { | |
582 mle.setSelection(point) | |
583 } | |
584 } | |
585 | |
586 fun mleClear(mle: EditText) | |
587 { | |
588 waitOnUiThread { | |
589 mle.setText("") | |
590 } | |
591 } | |
592 | |
593 fun mleImport(mle: EditText, text: String, startpoint: Int): Int | |
594 { | |
595 var retval: Int = startpoint | |
596 | |
597 waitOnUiThread { | |
598 val origtext = mle.text | |
599 val origlen = origtext.toString().length | |
600 | |
601 if(startpoint < 1) { | |
602 val newtext = text + origtext.toString() | |
603 | |
604 mle.setText(newtext) | |
605 retval = origlen + text.length | |
606 } else if(startpoint >= origlen) { | |
607 val newtext = origtext.toString() + text | |
608 | |
609 mle.setText(newtext) | |
610 retval = origlen + text.length | |
611 } else { | |
612 val newtext = origtext.substring(0, startpoint) + text + origtext.substring(startpoint) | |
613 | |
614 mle.setText(newtext) | |
615 retval = startpoint + text.length | |
616 } | |
617 mle.setSelection(retval) | |
618 } | |
619 return retval | |
620 } | |
621 | |
622 fun mleDelete(mle: EditText, startpoint: Int, length: Int) | |
623 { | |
624 waitOnUiThread { | |
625 val origtext = mle.text | |
626 val newtext = origtext.substring(0, startpoint) + origtext.substring(startpoint + length) | |
627 | |
628 mle.setText(newtext) | |
629 } | |
630 } | |
631 | |
536 fun notebookNew(cid: Int, top: Int): RelativeLayout? | 632 fun notebookNew(cid: Int, top: Int): RelativeLayout? |
537 { | 633 { |
538 var notebook: RelativeLayout? = null | 634 var notebook: RelativeLayout? = null |
539 | 635 |
540 waitOnUiThread { | 636 waitOnUiThread { |
776 | 872 |
777 override fun onStartTrackingTouch(seekBar: SeekBar) { | 873 override fun onStartTrackingTouch(seekBar: SeekBar) { |
778 } | 874 } |
779 | 875 |
780 override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { | 876 override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { |
781 eventHandler(slider, null, 14, null, null, slider!!.progress, 0, 0, 0) | 877 eventHandlerInt(slider as View, 14, slider!!.progress, 0, 0, 0) |
782 } | 878 } |
783 }) | 879 }) |
784 } | 880 } |
785 return slider | 881 return slider |
786 } | 882 } |