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 }