annotate android/DWindows.kt @ 2797:62837ceeec46

Android: Fix dw_tree_clear(), need to clear the roots too.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 16 Jul 2022 01:36:04 +0000
parents 0c534743b7a9
children a3d62de81ec0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2751
ee1cfa7d645e Update copyright dates for the new year 2022.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2736
diff changeset
1 // (C) 2021-2022 Brian Smith <brian@dbsoft.org>
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
2 // (C) 2019 Anton Popov (Color Picker)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
3 // (C) 2022 Amr Hesham (Tree View)
2484
cb5b67154399 Android: The DWindows class should be org.dbsoft.dwindows, remove dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2483
diff changeset
4 package org.dbsoft.dwindows
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6 import android.Manifest
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
7 import android.R
2608
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
8 import android.annotation.SuppressLint
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
9 import android.app.Activity
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
10 import android.app.Dialog
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
11 import android.app.NotificationChannel
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
12 import android.app.NotificationManager
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
13 import android.content.*
2480
878d36588aaa Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2479
diff changeset
14 import android.content.pm.ActivityInfo
2496
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
15 import android.content.res.Configuration
2643
28ca1e59e76f Android: Catch NotFoundException when loading resource...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2642
diff changeset
16 import android.content.res.Resources
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
17 import android.database.Cursor
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
18 import android.graphics.*
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
19 import android.graphics.drawable.BitmapDrawable
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
20 import android.graphics.drawable.Drawable
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
21 import android.graphics.drawable.GradientDrawable
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
22 import android.graphics.pdf.PdfDocument
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
23 import android.media.AudioManager
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
24 import android.media.ToneGenerator
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
25 import android.net.Uri
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
26 import android.os.*
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
27 import android.print.*
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
28 import android.print.pdf.PrintedPdfDocument
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
29 import android.provider.DocumentsContract
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
30 import android.provider.MediaStore
2790
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
31 import android.system.OsConstants
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
32 import android.text.InputFilter
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
33 import android.text.InputFilter.LengthFilter
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
34 import android.text.InputType
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
35 import android.text.method.PasswordTransformationMethod
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
36 import android.util.*
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
37 import android.util.Base64
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
38 import android.view.*
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
39 import android.view.View.OnTouchListener
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
40 import android.view.inputmethod.EditorInfo
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
41 import android.webkit.WebView
2505
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
42 import android.webkit.WebViewClient
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
43 import android.widget.*
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
44 import android.widget.AdapterView.OnItemClickListener
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
45 import android.widget.SeekBar.OnSeekBarChangeListener
2486
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
46 import androidx.appcompat.app.AlertDialog
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
47 import androidx.appcompat.app.AppCompatActivity
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
48 import androidx.appcompat.widget.AppCompatEditText
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
49 import androidx.collection.SimpleArrayMap
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
50 import androidx.constraintlayout.widget.ConstraintLayout
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
51 import androidx.constraintlayout.widget.ConstraintSet
2675
a7868380098f Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2670
diff changeset
52 import androidx.constraintlayout.widget.Placeholder
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
53 import androidx.core.app.NotificationCompat
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
54 import androidx.core.app.NotificationManagerCompat
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
55 import androidx.core.content.ContextCompat
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
56 import androidx.core.content.res.ResourcesCompat
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
57 import androidx.core.view.MenuCompat
2782
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
58 import androidx.recyclerview.widget.LinearLayoutManager
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
59 import androidx.recyclerview.widget.RecyclerView
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
60 import androidx.viewpager2.widget.ViewPager2
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
61 import com.google.android.material.tabs.TabLayout
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
62 import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
63 import com.google.android.material.tabs.TabLayoutMediator
2790
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
64 import java.io.*
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
65 import java.util.*
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
66 import java.util.concurrent.locks.ReentrantLock
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
67 import java.util.zip.ZipEntry
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
68 import java.util.zip.ZipFile
2713
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
69 import kotlin.math.*
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
70
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
71
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
72 // Tree View section
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
73 class DWTreeItem(title: String, icon: Drawable?, data: Long, parent: DWTreeItem?) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
74 private var title: String
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
75 private var parent: DWTreeItem?
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
76 private val children: LinkedList<DWTreeItem>
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
77 private var level: Int
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
78 private var isExpanded: Boolean
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
79 private var isSelected: Boolean
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
80 private var data: Long = 0
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
81 private var icon: Drawable? = null
2776
858155527b05 Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2775
diff changeset
82
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
83 fun addChild(child: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
84 child.setParent(this)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
85 child.setLevel(level + 1)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
86 children.add(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
87 updateNodeChildrenDepth(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
88 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
89
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
90 fun setTitle(title: String) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
91 this.title = title
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
92 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
93
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
94 fun getTitle(): String {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
95 return title
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
96 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
97
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
98 fun setIcon(icon: Drawable?) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
99 this.icon = icon
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
100 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
101
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
102 fun getIcon(): Drawable? {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
103 return icon
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
104 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
105
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
106 fun setData(data: Long) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
107 this.data = data
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
108 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
109
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
110 fun getData(): Long {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
111 return data
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
112 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
113
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
114 fun getParent(): DWTreeItem? {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
115 return parent
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
116 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
117
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
118 fun setParent(parent: DWTreeItem?) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
119 this.parent = parent
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
120 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
121
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
122 fun getChildren(): LinkedList<DWTreeItem> {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
123 return children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
124 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
125
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
126 fun setLevel(level: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
127 this.level = level
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
128 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
129
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
130 fun getLevel(): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
131 return level
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
132 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
133
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
134 fun setExpanded(expanded: Boolean) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
135 isExpanded = expanded
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
136 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
137
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
138 fun isExpanded(): Boolean {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
139 return isExpanded
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
140 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
141
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
142 fun setSelected(selected: Boolean) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
143 isSelected = selected
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
144 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
145
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
146 fun isSelected(): Boolean {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
147 return isSelected
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
148 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
149
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
150 private fun updateNodeChildrenDepth(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
151 if (node.getChildren().isEmpty()) return
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
152 for (child in node.getChildren()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
153 child.setLevel(node.getLevel() + 1)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
154 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
155 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
156
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
157 init {
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
158 this.title = title
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
159 this.icon = icon
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
160 this.data = data
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
161 this.parent = parent
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
162 children = LinkedList()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
163 level = 0
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
164 isExpanded = false
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
165 isSelected = false
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
166 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
167 }
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
168
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
169 class DWTreeItemView : LinearLayout, Checkable {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
170 private var mChecked = false
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
171 private var colorSelection = Color.DKGRAY
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
172 var expandCollapseView: ImageView = ImageView(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
173 var iconView: ImageView = ImageView(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
174 var textView: TextView = TextView(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
175
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
176 fun updateBackground() {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
177 if(mChecked) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
178 this.setBackgroundColor(colorSelection)
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
179 } else {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
180 this.setBackgroundColor(Color.TRANSPARENT)
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
181 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
182 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
183
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
184 override fun setChecked(b: Boolean) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
185 mChecked = b
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
186 updateBackground()
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
187 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
188
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
189 override fun isChecked(): Boolean {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
190 return mChecked
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
191 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
192
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
193 override fun toggle() {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
194 mChecked = !mChecked
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
195 updateBackground()
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
196 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
197
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
198 fun setup(context: Context?) {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
199 var params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
200 this.orientation = LinearLayout.HORIZONTAL
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
201 params.gravity = Gravity.CENTER
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
202 expandCollapseView.layoutParams = params
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
203 expandCollapseView.id = View.generateViewId()
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
204 this.addView(expandCollapseView)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
205 iconView.layoutParams = params
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
206 iconView.id = View.generateViewId()
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
207 this.addView(iconView)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
208 params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
209 params.gravity = Gravity.CENTER
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
210 textView.layoutParams = params
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
211 textView.id = View.generateViewId()
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
212 this.addView(textView)
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
213 colorSelection = context?.let { getPlatformSelectionColor(it) }!!
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
214 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
215
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
216 constructor(context: Context?) : super(context) {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
217 setup(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
218 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
219 constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
220 setup(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
221 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
222 constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle) {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
223 setup(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
224 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
225 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
226
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
227 class DWTreeItemManager {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
228 // Collection to save the current tree nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
229 private val rootsNodes: LinkedList<DWTreeItem>
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
230
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
231 // Get DWTreeItem from the current nodes by index
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
232 // @param index of node to get it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
233 // @return DWTreeItem from by index from current tree nodes if exists
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
234 operator fun get(index: Int): DWTreeItem {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
235 return rootsNodes[index]
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
236 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
237
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
238 // Add new node to the current tree nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
239 // @param node to add it to the current tree nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
240 // @return true of this node is added
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
241 fun addItem(node: DWTreeItem): Boolean {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
242 return rootsNodes.add(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
243 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
244
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
245 // Clear the current nodes and insert new nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
246 // @param newNodes to update the current nodes with them
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
247 fun updateItems(newNodes: List<DWTreeItem>?) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
248 rootsNodes.clear()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
249 rootsNodes.addAll(newNodes!!)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
250 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
251
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
252 // Delete one node from the visible nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
253 // @param node to delete it from the current nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
254 // @return true of this node is deleted
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
255 fun removeItem(node: DWTreeItem): Boolean {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
256 return rootsNodes.remove(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
257 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
258
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
259 // Clear the current nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
260 fun clearItems() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
261 rootsNodes.clear()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
262 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
263
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
264 // Get the current number of visible nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
265 // @return the size of visible nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
266 fun size(): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
267 return rootsNodes.size
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
268 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
269
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
270 // Collapsing node and all of his children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
271 // @param node The node to collapse it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
272 // @return the index of this node if it exists in the list
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
273 fun collapseItem(node: DWTreeItem): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
274 val position = rootsNodes.indexOf(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
275 if (position != -1 && node.isExpanded()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
276 node.setExpanded(false)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
277 val deletedParents: LinkedList<DWTreeItem> =
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
278 LinkedList(node.getChildren())
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
279 rootsNodes.removeAll(node.getChildren())
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
280 for (i in position + 1 until rootsNodes.size) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
281 val iNode: DWTreeItem = rootsNodes[i]
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
282 if (deletedParents.contains(iNode.getParent())) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
283 deletedParents.add(iNode)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
284 deletedParents.addAll(iNode.getChildren())
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
285 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
286 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
287 rootsNodes.removeAll(deletedParents)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
288 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
289 return position
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
290 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
291
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
292 // Expanding node and all of his children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
293 // @param node The node to expand it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
294 // @return the index of this node if it exists in the list
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
295 fun expandItem(node: DWTreeItem): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
296 val position = rootsNodes.indexOf(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
297 if (position != -1 && !node.isExpanded()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
298 node.setExpanded(true)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
299 rootsNodes.addAll(position + 1, node.getChildren())
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
300 for (child in node.getChildren()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
301 if (child.isExpanded()) updateExpandedItemChildren(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
302 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
303 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
304 return position
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
305 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
306
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
307 // Update the list for expanded node
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
308 // to expand any child of his children that is already expanded before
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
309 // @param node that just expanded now
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
310 private fun updateExpandedItemChildren(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
311 val position = rootsNodes.indexOf(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
312 if (position != -1 && node.isExpanded()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
313 rootsNodes.addAll(position + 1, node.getChildren())
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
314 for (child in node.getChildren()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
315 if (child.isExpanded()) updateExpandedItemChildren(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
316 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
317 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
318 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
319
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
320 // @param node The node to collapse the branch of it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
321 // @return the index of this node if it exists in the list
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
322 fun collapseItemBranch(node: DWTreeItem): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
323 val position = rootsNodes.indexOf(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
324 if (position != -1 && node.isExpanded()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
325 node.setExpanded(false)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
326 for (child in node.getChildren()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
327 if (!child.getChildren().isEmpty()) collapseItemBranch(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
328 rootsNodes.remove(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
329 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
330 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
331 return position
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
332 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
333
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
334 // Expanding node full branches
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
335 // @param node The node to expand the branch of it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
336 // @return the index of this node if it exists in the list
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
337 fun expandItemBranch(node: DWTreeItem): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
338 val position = rootsNodes.indexOf(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
339 if (position != -1 && !node.isExpanded()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
340 node.setExpanded(true)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
341 var index = position + 1
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
342 for (child in node.getChildren()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
343 val before: Int = rootsNodes.size
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
344 rootsNodes.add(index, child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
345 expandItemBranch(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
346 val after: Int = rootsNodes.size
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
347 val diff = after - before
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
348 index += diff
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
349 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
350 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
351 return position
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
352 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
353
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
354 // Expanding one node branch to until specific level
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
355 // @param node to expand branch of it until level
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
356 // @param level to expand node branches to it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
357 fun expandItemToLevel(node: DWTreeItem, level: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
358 if (node.getLevel() <= level) expandItem(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
359 for (child in node.getChildren()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
360 expandItemToLevel(child, level)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
361 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
362 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
363
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
364 //Expanding all tree nodes branches to until specific level
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
365 //@param level to expand all nodes branches to it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
366 fun expandItemsAtLevel(level: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
367 for (i in 0 until rootsNodes.size) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
368 val node: DWTreeItem = rootsNodes[i]
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
369 expandItemToLevel(node, level)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
370 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
371 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
372
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
373 // Collapsing all nodes in the tree with their children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
374 fun collapseAll() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
375 val treeItems: MutableList<DWTreeItem> = LinkedList()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
376 for (i in 0 until rootsNodes.size) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
377 val root: DWTreeItem = rootsNodes[i]
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
378 if (root.getLevel() === 0) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
379 collapseItemBranch(root)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
380 treeItems.add(root)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
381 } else {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
382 root.setExpanded(false)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
383 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
384 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
385 updateItems(treeItems)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
386 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
387
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
388 // Expanding all nodes in the tree with their children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
389 fun expandAll() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
390 for (i in 0 until rootsNodes.size) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
391 val root: DWTreeItem = rootsNodes[i]
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
392 expandItemBranch(root)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
393 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
394 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
395
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
396 // Simple constructor
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
397 init {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
398 rootsNodes = LinkedList()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
399 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
400 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
401
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
402 open class DWTreeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
403 // Return the current DWTreeItem padding value
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
404 // @return The current padding value
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
405
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
406 // Modify the current node padding value
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
407 // @param padding the new padding value
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
408
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
409 // The default padding value for the DWTreeItem item
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
410 var nodePadding = 50
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
411
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
412 // Bind method that provide padding and bind DWTreeItem to the view list item
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
413 // @param node the current DWTreeItem
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
414 fun bindTreeItem(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
415 val padding: Int = node.getLevel() * nodePadding
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
416 val treeItemView = itemView as DWTreeItemView
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
417
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
418 treeItemView.setPadding(
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
419 padding,
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
420 treeItemView.paddingTop,
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
421 treeItemView.paddingRight,
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
422 treeItemView.paddingBottom
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
423 )
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
424 treeItemView.textView.text = node.getTitle()
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
425 treeItemView.iconView.setImageDrawable(node.getIcon())
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
426 if(node.getChildren().size == 0) {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
427 treeItemView.expandCollapseView.setImageDrawable(null)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
428 } else {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
429 if(node.isExpanded()) {
2784
cccbb367bcd3 Android: Change the system resources used as expand/collapse for the tree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2783
diff changeset
430 treeItemView.expandCollapseView.setImageResource(R.drawable.ic_menu_more)
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
431 } else {
2784
cccbb367bcd3 Android: Change the system resources used as expand/collapse for the tree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2783
diff changeset
432 treeItemView.expandCollapseView.setImageResource(R.drawable.ic_menu_add)
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
433 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
434 }
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
435 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
436 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
437
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
438 interface DWTreeViewHolderFactory {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
439 // Provide a TreeViewHolder class depend on the current view
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
440 // @param view The list item view
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
441 // @param layout The layout xml file id for current view
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
442 // @return A TreeViewHolder instance
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
443 fun getTreeViewHolder(view: View?, layout: Int): DWTreeViewHolder
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
444 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
445
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
446 class DWTreeCustomViewHolder(itemView: View) : DWTreeViewHolder(itemView) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
447 fun bindTreeNode(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
448 super.bindTreeItem(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
449 // Here you can bind your node and check if it selected or not
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
450 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
451 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
452
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
453 class DWTreeViewAdapter : RecyclerView.Adapter<DWTreeViewHolder> {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
454 // Manager class for TreeItems to easily apply operations on them
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
455 // and to make it easy for testing and extending
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
456 private val treeItemManager: DWTreeItemManager
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
457
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
458 // A ViewHolder Factory to get DWTreeViewHolder object that mapped with layout
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
459 private val treeViewHolderFactory: DWTreeViewHolderFactory
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
460
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
461 // The current selected Tree Item
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
462 private var currentSelectedItem: DWTreeItem? = null
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
463
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
464 // Custom OnClickListener to be invoked when a DWTreeItem has been clicked.
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
465 private var treeItemClickListener: ((DWTreeItem?, View?) -> Boolean)? = null
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
466
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
467 // Custom OnLongClickListener to be invoked when a DWTreeItem has been clicked and hold.
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
468 private var treeItemLongClickListener: ((DWTreeItem?, View?) -> Boolean)? = null
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
469
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
470 // Custom OnListener to be invoked when a DWTreeItem has been expanded.
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
471 private var treeItemExpandListener: ((DWTreeItem?, View?) -> Boolean)? = null
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
472
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
473 // Simple constructor
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
474 // @param factory a View Holder Factory mapped with layout id's
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
475 constructor(factory: DWTreeViewHolderFactory) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
476 treeViewHolderFactory = factory
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
477 treeItemManager = DWTreeItemManager()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
478 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
479
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
480 // Constructor used to accept user custom DWTreeItemManager class
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
481 // @param factory a View Holder Factory mapped with layout id's
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
482 // @param manager a custom tree node manager class
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
483 constructor(factory: DWTreeViewHolderFactory, manager: DWTreeItemManager) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
484 treeViewHolderFactory = factory
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
485 treeItemManager = manager
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
486 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
487
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
488 override fun onCreateViewHolder(parent: ViewGroup, layoutId: Int): DWTreeViewHolder {
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
489 val view = DWTreeItemView(parent.context)
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
490 return treeViewHolderFactory.getTreeViewHolder(view, layoutId)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
491 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
492
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
493 override fun onBindViewHolder(holder: DWTreeViewHolder, position: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
494 val currentNode: DWTreeItem = treeItemManager.get(position)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
495 holder.bindTreeItem(currentNode)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
496 holder.itemView.setOnClickListener { v ->
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
497 // Handle node selection
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
498 currentNode.setSelected(true)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
499 currentSelectedItem?.setSelected(false)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
500 currentSelectedItem = currentNode
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
501
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
502 // Handle node expand and collapse event
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
503 if (!currentNode.getChildren().isEmpty()) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
504 val isNodeExpanded: Boolean = currentNode.isExpanded()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
505 if (isNodeExpanded) collapseNode(currentNode) else expandNode(currentNode)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
506 currentNode.setExpanded(!isNodeExpanded)
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
507 // Handle DWTreeItem expand listener event
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
508 if (!isNodeExpanded && treeItemExpandListener != null) treeItemExpandListener!!(
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
509 currentNode,
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
510 v
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
511 )
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
512 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
513 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
514
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
515 // Handle DWTreeItem click listener event
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
516 if (treeItemClickListener != null) treeItemClickListener!!(
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
517 currentNode,
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
518 v
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
519 )
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
520 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
521
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
522 // Handle DWTreeItem long click listener event
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
523 holder.itemView.setOnLongClickListener { v ->
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
524 if (treeItemLongClickListener != null) {
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
525 return@setOnLongClickListener treeItemLongClickListener!!(
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
526 currentNode,
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
527 v
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
528 )
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
529 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
530 true
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
531 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
532 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
533
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
534 override fun getItemViewType(position: Int): Int {
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
535 return 1
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
536 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
537
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
538 override fun getItemCount(): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
539 return treeItemManager.size()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
540 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
541
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
542 // Collapsing node and all of his children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
543 // @param node The node to collapse it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
544 fun collapseNode(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
545 val position: Int = treeItemManager.collapseItem(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
546 if (position != -1) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
547 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
548 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
549 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
550
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
551 // Expanding node and all of his children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
552 // @param node The node to expand it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
553 fun expandNode(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
554 val position: Int = treeItemManager.expandItem(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
555 if (position != -1) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
556 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
557 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
558 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
559
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
560 // Collapsing full node branches
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
561 // @param node The node to collapse it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
562 fun collapseNodeBranch(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
563 treeItemManager.collapseItemBranch(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
564 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
565 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
566
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
567 // Expanding node full branches
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
568 // @param node The node to expand it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
569 fun expandNodeBranch(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
570 treeItemManager.expandItemBranch(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
571 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
572 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
573
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
574 // Expanding one node branch to until specific level
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
575 // @param node to expand branch of it until level
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
576 // @param level to expand node branches to it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
577 fun expandNodeToLevel(node: DWTreeItem, level: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
578 treeItemManager.expandItemToLevel(node, level)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
579 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
580 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
581
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
582 // Expanding all tree nodes branches to until specific level
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
583 // @param level to expand all nodes branches to it
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
584 fun expandNodesAtLevel(level: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
585 treeItemManager.expandItemsAtLevel(level)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
586 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
587 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
588
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
589 // Collapsing all nodes in the tree with their children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
590 fun collapseAll() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
591 treeItemManager.collapseAll()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
592 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
593 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
594
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
595 // Expanding all nodes in the tree with their children
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
596 fun expandAll() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
597 treeItemManager.expandAll()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
598 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
599 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
600
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
601 // Update the list of tree nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
602 // @param treeItems The new tree nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
603 fun updateTreeItems(treeItems: List<DWTreeItem>) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
604 treeItemManager.updateItems(treeItems)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
605 notifyItemRangeInserted(0, treeItems.size)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
606 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
607
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
608 // Clear all the items from the tree
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
609 fun clear() {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
610 treeItemManager.clearItems()
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
611 notifyDataSetChanged()
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
612 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
613
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
614 // Register a callback to be invoked when this DWTreeItem is clicked
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
615 // @param listener The callback that will run
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
616 fun setTreeItemClickListener(listener: (DWTreeItem?, View?) -> Boolean) {
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
617 treeItemClickListener = listener
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
618 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
619
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
620 // Register a callback to be invoked when this DWTreeItem is clicked and held
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
621 // @param listener The callback that will run
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
622 fun setTreeItemLongClickListener(listener: (DWTreeItem?, View?) -> Boolean) {
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
623 treeItemLongClickListener = listener
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
624 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
625
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
626 // Register a callback to be invoked when this DWTreeItem is expanded
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
627 // @param listener The callback that will run
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
628 fun setTreeItemExpandListener(listener: (DWTreeItem?, View?) -> Boolean) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
629 treeItemExpandListener = listener
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
630 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
631
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
632 // @return The current selected DWTreeItem
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
633 val selectedNode: DWTreeItem?
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
634 get() = currentSelectedItem
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
635 }
2713
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
636
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
637 class DWTree(context: Context) : RecyclerView(context)
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
638 {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
639 var roots: MutableList<DWTreeItem> = ArrayList()
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
640
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
641 fun updateTree()
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
642 {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
643 val treeViewAdapter = this.adapter as DWTreeViewAdapter
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
644
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
645 treeViewAdapter.updateTreeItems(roots)
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
646 treeViewAdapter.notifyDataSetChanged()
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
647 }
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
648 }
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
649
2713
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
650 // Color Wheel section
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
651 private val HUE_COLORS = intArrayOf(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
652 Color.RED,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
653 Color.YELLOW,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
654 Color.GREEN,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
655 Color.CYAN,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
656 Color.BLUE,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
657 Color.MAGENTA,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
658 Color.RED
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
659 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
660
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
661 private val SATURATION_COLORS = intArrayOf(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
662 Color.WHITE,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
663 setAlpha(Color.WHITE, 0)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
664 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
665
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
666 open class ColorWheel @JvmOverloads constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
667 context: Context,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
668 attrs: AttributeSet? = null,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
669 defStyleAttr: Int = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
670 ) : View(context, attrs, defStyleAttr) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
671
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
672 private val hueGradient = GradientDrawable().apply {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
673 gradientType = GradientDrawable.SWEEP_GRADIENT
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
674 shape = GradientDrawable.OVAL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
675 colors = HUE_COLORS
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
676 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
677
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
678 private val saturationGradient = GradientDrawable().apply {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
679 gradientType = GradientDrawable.RADIAL_GRADIENT
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
680 shape = GradientDrawable.OVAL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
681 colors = SATURATION_COLORS
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
682 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
683
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
684 private val thumbDrawable = ThumbDrawable()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
685 private val hsvColor = HsvColor(value = 1f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
686
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
687 private var wheelCenterX = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
688 private var wheelCenterY = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
689 private var wheelRadius = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
690 private var downX = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
691 private var downY = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
692
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
693 var rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
694 get() = hsvColor.rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
695 set(rgb) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
696 hsvColor.rgb = rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
697 hsvColor.set(value = 1f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
698 fireColorListener()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
699 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
700 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
701
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
702 var thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
703 get() = thumbDrawable.radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
704 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
705 thumbDrawable.radius = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
706 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
707 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
708
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
709 var thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
710 get() = thumbDrawable.thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
711 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
712 thumbDrawable.thumbColor = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
713 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
714 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
715
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
716 var thumbStrokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
717 get() = thumbDrawable.strokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
718 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
719 thumbDrawable.strokeColor = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
720 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
721 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
722
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
723 var thumbColorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
724 get() = thumbDrawable.colorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
725 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
726 thumbDrawable.colorCircleScale = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
727 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
728 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
729
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
730 var colorChangeListener: ((Int) -> Unit)? = null
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
731
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
732 var interceptTouchEvent = true
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
733
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
734 init {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
735 thumbRadius = 13
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
736 thumbColor = Color.WHITE
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
737 thumbStrokeColor = Color.DKGRAY
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
738 thumbColorCircleScale = 0.7f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
739 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
740
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
741 fun setRgb(r: Int, g: Int, b: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
742 rgb = Color.rgb(r, g, b)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
743 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
744
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
745 override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
746 val minDimension = minOf(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
747 MeasureSpec.getSize(widthMeasureSpec),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
748 MeasureSpec.getSize(heightMeasureSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
749 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
750
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
751 setMeasuredDimension(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
752 resolveSize(minDimension, widthMeasureSpec),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
753 resolveSize(minDimension, heightMeasureSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
754 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
755 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
756
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
757 override fun onDraw(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
758 drawColorWheel(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
759 drawThumb(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
760 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
761
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
762 private fun drawColorWheel(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
763 val hSpace = width - paddingLeft - paddingRight
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
764 val vSpace = height - paddingTop - paddingBottom
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
765
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
766 wheelCenterX = paddingLeft + hSpace / 2
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
767 wheelCenterY = paddingTop + vSpace / 2
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
768 wheelRadius = maxOf(minOf(hSpace, vSpace) / 2, 0)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
769
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
770 val left = wheelCenterX - wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
771 val top = wheelCenterY - wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
772 val right = wheelCenterX + wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
773 val bottom = wheelCenterY + wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
774
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
775 hueGradient.setBounds(left, top, right, bottom)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
776 saturationGradient.setBounds(left, top, right, bottom)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
777 saturationGradient.gradientRadius = wheelRadius.toFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
778
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
779 hueGradient.draw(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
780 saturationGradient.draw(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
781 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
782
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
783 private fun drawThumb(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
784 val r = hsvColor.saturation * wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
785 val hueRadians = toRadians(hsvColor.hue)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
786 val x = cos(hueRadians) * r + wheelCenterX
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
787 val y = sin(hueRadians) * r + wheelCenterY
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
788
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
789 thumbDrawable.indicatorColor = hsvColor.rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
790 thumbDrawable.setCoordinates(x, y)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
791 thumbDrawable.draw(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
792 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
793
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
794 override fun onTouchEvent(event: MotionEvent): Boolean {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
795 when (event.actionMasked) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
796 MotionEvent.ACTION_DOWN -> onActionDown(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
797 MotionEvent.ACTION_MOVE -> updateColorOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
798 MotionEvent.ACTION_UP -> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
799 updateColorOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
800 if (isTap(event, downX, downY)) performClick()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
801 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
802 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
803
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
804 return true
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
805 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
806
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
807 private fun onActionDown(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
808 parent.requestDisallowInterceptTouchEvent(interceptTouchEvent)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
809 updateColorOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
810 downX = event.x
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
811 downY = event.y
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
812 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
813
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
814 override fun performClick() = super.performClick()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
815
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
816 private fun updateColorOnMotionEvent(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
817 calculateColor(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
818 fireColorListener()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
819 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
820 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
821
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
822 private fun calculateColor(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
823 val legX = event.x - wheelCenterX
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
824 val legY = event.y - wheelCenterY
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
825 val hypot = minOf(hypot(legX, legY), wheelRadius.toFloat())
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
826 val hue = (toDegrees(atan2(legY, legX)) + 360) % 360
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
827 val saturation = hypot / wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
828 hsvColor.set(hue, saturation, 1f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
829 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
830
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
831 private fun fireColorListener() {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
832 colorChangeListener?.invoke(hsvColor.rgb)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
833 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
834
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
835 override fun onSaveInstanceState(): Parcelable {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
836 val superState = super.onSaveInstanceState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
837 val thumbState = thumbDrawable.saveState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
838 return ColorWheelState(superState, this, thumbState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
839 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
840
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
841 override fun onRestoreInstanceState(state: Parcelable) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
842 if (state is ColorWheelState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
843 super.onRestoreInstanceState(state.superState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
844 readColorWheelState(state)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
845 } else {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
846 super.onRestoreInstanceState(state)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
847 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
848 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
849
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
850 private fun readColorWheelState(state: ColorWheelState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
851 thumbDrawable.restoreState(state.thumbState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
852 interceptTouchEvent = state.interceptTouchEvent
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
853 rgb = state.rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
854 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
855 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
856
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
857 internal class ColorWheelState : View.BaseSavedState {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
858
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
859 val thumbState: ThumbDrawableState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
860 val interceptTouchEvent: Boolean
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
861 val rgb: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
862
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
863 constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
864 superState: Parcelable?,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
865 view: ColorWheel,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
866 thumbState: ThumbDrawableState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
867 ) : super(superState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
868 this.thumbState = thumbState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
869 interceptTouchEvent = view.interceptTouchEvent
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
870 rgb = view.rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
871 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
872
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
873 constructor(source: Parcel) : super(source) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
874 thumbState = source.readThumbState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
875 interceptTouchEvent = source.readBooleanCompat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
876 rgb = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
877 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
878
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
879 override fun writeToParcel(out: Parcel, flags: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
880 super.writeToParcel(out, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
881 out.writeThumbState(thumbState, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
882 out.writeBooleanCompat(interceptTouchEvent)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
883 out.writeInt(rgb)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
884 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
885
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
886 companion object CREATOR : Parcelable.Creator<ColorWheelState> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
887
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
888 override fun createFromParcel(source: Parcel) = ColorWheelState(source)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
889
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
890 override fun newArray(size: Int) = arrayOfNulls<ColorWheelState>(size)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
891 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
892 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
893 internal fun Parcel.writeBooleanCompat(value: Boolean) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
894 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
895 this.writeBoolean(value)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
896 } else {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
897 this.writeInt(if (value) 1 else 0)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
898 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
899 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
900
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
901 internal fun Parcel.readBooleanCompat(): Boolean {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
902 return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
903 this.readBoolean()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
904 } else {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
905 this.readInt() == 1
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
906 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
907 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
908 private const val MAX_ALPHA = 255
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
909
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
910 open class GradientSeekBar @JvmOverloads constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
911 context: Context,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
912 attrs: AttributeSet? = null,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
913 defStyleAttr: Int = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
914 ) : View(context, attrs, defStyleAttr) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
915
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
916 private val gradientColors = IntArray(2)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
917 private val thumbDrawable = ThumbDrawable()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
918 private val gradientDrawable = GradientDrawable()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
919 private val argbEvaluator = android.animation.ArgbEvaluator()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
920
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
921 private lateinit var orientationStrategy: OrientationStrategy
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
922 private var downX = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
923 private var downY = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
924
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
925 var startColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
926 get() = gradientColors[0]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
927 set(color) { setColors(start = color) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
928
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
929 var endColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
930 get() = gradientColors[1]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
931 set(color) { setColors(end = color) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
932
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
933 var offset = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
934 set(offset) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
935 field = ensureOffsetWithinRange(offset)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
936 calculateArgb()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
937 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
938
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
939 var barSize = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
940 set(width) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
941 field = width
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
942 requestLayout()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
943 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
944
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
945 var cornersRadius = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
946 set(radius) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
947 field = radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
948 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
949 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
950
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
951 var orientation = Orientation.VERTICAL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
952 set(orientation) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
953 field = orientation
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
954 orientationStrategy = createOrientationStrategy()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
955 requestLayout()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
956 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
957
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
958 var thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
959 get() = thumbDrawable.thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
960 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
961 thumbDrawable.thumbColor = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
962 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
963 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
964
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
965 var thumbStrokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
966 get() = thumbDrawable.strokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
967 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
968 thumbDrawable.strokeColor = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
969 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
970 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
971
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
972 var thumbColorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
973 get() = thumbDrawable.colorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
974 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
975 thumbDrawable.colorCircleScale = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
976 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
977 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
978
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
979 var thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
980 get() = thumbDrawable.radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
981 set(radius) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
982 thumbDrawable.radius = radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
983 requestLayout()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
984 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
985
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
986 var argb = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
987 private set
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
988
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
989 var colorChangeListener: ((Float, Int) -> Unit)? = null
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
990
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
991 var interceptTouchEvent = true
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
992
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
993 init {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
994 thumbColor = Color.WHITE
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
995 thumbStrokeColor = Color.DKGRAY
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
996 thumbColorCircleScale = 0.7f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
997 thumbRadius = 13
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
998 barSize = 10
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
999 cornersRadius = 5.0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1000 offset = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1001 orientation = Orientation.VERTICAL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1002 setColors(Color.TRANSPARENT, Color.BLACK)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1003 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1004
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1005 private fun createOrientationStrategy(): OrientationStrategy {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1006 return when (orientation) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1007 Orientation.VERTICAL -> VerticalStrategy()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1008 Orientation.HORIZONTAL -> HorizontalStrategy()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1009 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1010 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1011
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1012 fun setColors(start: Int = startColor, end: Int = endColor) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1013 updateGradientColors(start, end)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1014 calculateArgb()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1015 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1016
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1017 private fun updateGradientColors(start: Int, end: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1018 gradientColors[0] = start
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1019 gradientColors[1] = end
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1020 gradientDrawable.colors = gradientColors
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1021 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1022
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1023 override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1024 val dimens = orientationStrategy.measure(this, widthMeasureSpec, heightMeasureSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1025 setMeasuredDimension(dimens.width(), dimens.height())
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1026 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1027
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1028 override fun onDraw(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1029 drawGradientRect(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1030 drawThumb(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1031 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1032
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1033 private fun drawGradientRect(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1034 gradientDrawable.orientation = orientationStrategy.gradientOrientation
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1035 gradientDrawable.bounds = orientationStrategy.getGradientBounds(this)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1036 gradientDrawable.cornerRadius = cornersRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1037 gradientDrawable.draw(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1038 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1039
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1040 private fun drawThumb(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1041 val coordinates = orientationStrategy.getThumbPosition(this, gradientDrawable.bounds)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1042 thumbDrawable.indicatorColor = argb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1043 thumbDrawable.setCoordinates(coordinates.x, coordinates.y)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1044 thumbDrawable.draw(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1045 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1046
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1047 override fun onTouchEvent(event: MotionEvent): Boolean {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1048 when (event.actionMasked) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1049 MotionEvent.ACTION_DOWN -> onActionDown(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1050 MotionEvent.ACTION_MOVE -> calculateOffsetOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1051 MotionEvent.ACTION_UP -> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1052 calculateOffsetOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1053 if (isTap(event, downX, downY)) performClick()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1054 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1055 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1056
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1057 return true
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1058 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1059
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1060 private fun onActionDown(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1061 parent.requestDisallowInterceptTouchEvent(interceptTouchEvent)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1062 calculateOffsetOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1063 downX = event.x
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1064 downY = event.y
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1065 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1066
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1067 override fun performClick() = super.performClick()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1068
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1069 private fun calculateOffsetOnMotionEvent(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1070 offset = orientationStrategy.getOffset(this, event, gradientDrawable.bounds)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1071 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1072
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1073 private fun calculateArgb() {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1074 argb = argbEvaluator.evaluate(offset, startColor, endColor) as Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1075 fireListener()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1076 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1077 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1078
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1079 private fun fireListener() {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1080 colorChangeListener?.invoke(offset, argb)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1081 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1082
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1083 override fun onSaveInstanceState(): Parcelable {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1084 val superState = super.onSaveInstanceState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1085 val thumbState = thumbDrawable.saveState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1086 return GradientSeekBarState(superState, this, thumbState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1087 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1088
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1089 override fun onRestoreInstanceState(state: Parcelable) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1090 if (state is GradientSeekBarState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1091 super.onRestoreInstanceState(state.superState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1092 readGradientSeekBarState(state)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1093 } else {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1094 super.onRestoreInstanceState(state)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1095 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1096 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1097
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1098 private fun readGradientSeekBarState(state: GradientSeekBarState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1099 updateGradientColors(state.startColor, state.endColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1100 offset = state.offset
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1101 barSize = state.barSize
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1102 cornersRadius = state.cornerRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1103 orientation = Orientation.values()[state.orientation]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1104 interceptTouchEvent = state.interceptTouchEvent
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1105 thumbDrawable.restoreState(state.thumbState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1106 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1107
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1108 private fun ensureOffsetWithinRange(offset: Float) = ensureWithinRange(offset, 0f, 1f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1109
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1110 enum class Orientation { VERTICAL, HORIZONTAL }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1111 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1112
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1113 val GradientSeekBar.currentColorAlpha get() = Color.alpha(argb)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1114
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1115 fun GradientSeekBar.setTransparentToColor(color: Int, respectAlpha: Boolean = true) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1116 if (respectAlpha) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1117 this.offset = Color.alpha(color) / MAX_ALPHA.toFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1118 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1119 this.setColors(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1120 setAlpha(color, 0),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1121 setAlpha(color, MAX_ALPHA)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1122 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1123 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1124
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1125 inline fun GradientSeekBar.setAlphaChangeListener(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1126 crossinline listener: (Float, Int, Int) -> Unit
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1127 ) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1128 this.colorChangeListener = { offset, color ->
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1129 listener(offset, color, this.currentColorAlpha)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1130 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1131 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1132
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1133 fun GradientSeekBar.setBlackToColor(color: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1134 this.setColors(Color.BLACK, color)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1135 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1136
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1137 internal class GradientSeekBarState : View.BaseSavedState {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1138
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1139 val startColor: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1140 val endColor: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1141 val offset: Float
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1142 val barSize: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1143 val cornerRadius: Float
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1144 val orientation: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1145 val interceptTouchEvent: Boolean
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1146 val thumbState: ThumbDrawableState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1147
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1148 constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1149 superState: Parcelable?,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1150 view: GradientSeekBar,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1151 thumbState: ThumbDrawableState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1152 ) : super(superState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1153 startColor = view.startColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1154 endColor = view.endColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1155 offset = view.offset
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1156 barSize = view.barSize
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1157 cornerRadius = view.cornersRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1158 orientation = view.orientation.ordinal
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1159 interceptTouchEvent = view.interceptTouchEvent
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1160 this.thumbState = thumbState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1161 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1162
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1163 constructor(source: Parcel) : super(source) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1164 startColor = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1165 endColor = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1166 offset = source.readFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1167 barSize = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1168 cornerRadius = source.readFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1169 orientation = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1170 interceptTouchEvent = source.readBooleanCompat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1171 thumbState = source.readThumbState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1172 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1173
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1174 override fun writeToParcel(out: Parcel, flags: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1175 super.writeToParcel(out, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1176 out.writeInt(startColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1177 out.writeInt(endColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1178 out.writeFloat(offset)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1179 out.writeInt(barSize)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1180 out.writeFloat(cornerRadius)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1181 out.writeInt(orientation)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1182 out.writeBooleanCompat(interceptTouchEvent)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1183 out.writeThumbState(thumbState, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1184 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1185
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1186 companion object CREATOR : Parcelable.Creator<GradientSeekBarState> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1187
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1188 override fun createFromParcel(source: Parcel) = GradientSeekBarState(source)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1189
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1190 override fun newArray(size: Int) = arrayOfNulls<GradientSeekBarState>(size)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1191 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1192 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1193
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1194 internal class HorizontalStrategy : OrientationStrategy {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1195
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1196 private val rect = Rect()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1197 private val point = PointF()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1198
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1199 override val gradientOrientation = GradientDrawable.Orientation.LEFT_RIGHT
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1200
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1201 override fun measure(view: GradientSeekBar, widthSpec: Int, heightSpec: Int): Rect {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1202 val widthSize = View.MeasureSpec.getSize(widthSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1203 val maxHeight = maxOf(view.barSize, view.thumbRadius * 2)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1204 val preferredWidth = widthSize + view.paddingLeft + view.paddingRight
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1205 val preferredHeight = maxHeight + view.paddingTop + view.paddingBottom
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1206 val finalWidth = View.resolveSize(preferredWidth, widthSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1207 val finalHeight = View.resolveSize(preferredHeight, heightSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1208 return rect.apply { set(0, 0, finalWidth, finalHeight) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1209 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1210
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1211 override fun getGradientBounds(view: GradientSeekBar): Rect {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1212 val availableHeight = view.height - view.paddingTop - view.paddingRight
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1213 val left = view.paddingLeft + view.thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1214 val right = view.width - view.paddingRight - view.thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1215 val top = view.paddingTop + (availableHeight - view.barSize) / 2
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1216 val bottom = top + view.barSize
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1217 return rect.apply { set(left, top, right, bottom) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1218 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1219
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1220 override fun getThumbPosition(view: GradientSeekBar, gradient: Rect): PointF {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1221 val x = (gradient.left + view.offset * gradient.width())
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1222 val y = view.height / 2f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1223 return point.apply { set(x, y) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1224 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1225
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1226 override fun getOffset(view: GradientSeekBar, event: MotionEvent, gradient: Rect): Float {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1227 val checkedX = ensureWithinRange(event.x.roundToInt(), gradient.left, gradient.right)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1228 val relativeX = (checkedX - gradient.left).toFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1229 return relativeX / gradient.width()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1230 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1231 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1232
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1233 internal fun View.isTap(lastEvent: MotionEvent, initialX: Float, initialY: Float): Boolean {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1234 val config = ViewConfiguration.get(context)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1235 val duration = lastEvent.eventTime - lastEvent.downTime
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1236 val distance = hypot(lastEvent.x - initialX, lastEvent.y - initialY)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1237 return duration < ViewConfiguration.getTapTimeout() && distance < config.scaledTouchSlop
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1238 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1239
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1240 internal const val PI = Math.PI.toFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1241
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1242 internal fun toRadians(degrees: Float) = degrees / 180f * PI
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1243
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1244 internal fun toDegrees(radians: Float) = radians * 180f / PI
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1245
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1246 internal fun <T> ensureWithinRange(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1247 value: T,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1248 start: T,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1249 end: T
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1250 ): T where T : Number, T : Comparable<T> = minOf(maxOf(value, start), end)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1251
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1252 internal fun setAlpha(argb: Int, alpha: Int) =
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1253 Color.argb(alpha, Color.red(argb), Color.green(argb), Color.blue(argb))
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1254
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1255 class HsvColor(hue: Float = 0f, saturation: Float = 0f, value: Float = 0f) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1256
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1257 private val hsv = floatArrayOf(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1258 ensureHue(hue),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1259 ensureSaturation(saturation),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1260 ensureValue(value)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1261 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1262
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1263 var hue
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1264 get() = hsv[0]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1265 set(hue) { hsv[0] = ensureHue(hue) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1266
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1267 var saturation
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1268 get() = hsv[1]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1269 set(saturation) { hsv[1] = ensureSaturation(saturation) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1270
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1271 var value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1272 get() = hsv[2]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1273 set(value) { hsv[2] = ensureValue(value) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1274
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1275 var rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1276 get() = Color.HSVToColor(hsv)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1277 set(rgb) { Color.colorToHSV(rgb, hsv) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1278
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1279 fun set(hue: Float = hsv[0], saturation: Float = hsv[1], value: Float = hsv[2]) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1280 hsv[0] = ensureHue(hue)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1281 hsv[1] = ensureSaturation(saturation)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1282 hsv[2] = ensureValue(value)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1283 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1284
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1285 private fun ensureHue(hue: Float) = ensureWithinRange(hue, 0f, 360f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1286
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1287 private fun ensureValue(value: Float) = ensureWithinRange(value, 0f, 1f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1288
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1289 private fun ensureSaturation(saturation: Float) = ensureValue(saturation)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1290 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1291
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1292 internal interface OrientationStrategy {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1293
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1294 val gradientOrientation: GradientDrawable.Orientation
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1295
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1296 fun measure(view: GradientSeekBar, widthSpec: Int, heightSpec: Int): Rect
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1297
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1298 fun getGradientBounds(view: GradientSeekBar): Rect
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1299
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1300 fun getThumbPosition(view: GradientSeekBar, gradient: Rect): PointF
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1301
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1302 fun getOffset(view: GradientSeekBar, event: MotionEvent, gradient: Rect): Float
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1303 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1304
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1305 internal class ThumbDrawableState private constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1306 val radius: Int,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1307 val thumbColor: Int,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1308 val strokeColor: Int,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1309 val colorCircleScale: Float
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1310 ) : Parcelable {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1311
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1312 constructor(thumbDrawable: ThumbDrawable) : this(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1313 thumbDrawable.radius,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1314 thumbDrawable.thumbColor,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1315 thumbDrawable.strokeColor,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1316 thumbDrawable.colorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1317 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1318
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1319 constructor(parcel: Parcel) : this(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1320 parcel.readInt(),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1321 parcel.readInt(),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1322 parcel.readInt(),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1323 parcel.readFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1324 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1325
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1326 override fun writeToParcel(parcel: Parcel, flags: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1327 parcel.writeInt(radius)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1328 parcel.writeInt(thumbColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1329 parcel.writeInt(strokeColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1330 parcel.writeFloat(colorCircleScale)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1331 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1332
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1333 override fun describeContents() = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1334
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1335 companion object {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1336
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1337 val EMPTY_STATE = ThumbDrawableState(0, 0, 0, 0f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1338
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1339 @JvmField
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1340 val CREATOR = object : Parcelable.Creator<ThumbDrawableState> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1341
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1342 override fun createFromParcel(parcel: Parcel) = ThumbDrawableState(parcel)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1343
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1344 override fun newArray(size: Int) = arrayOfNulls<ThumbDrawableState>(size)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1345 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1346 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1347 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1348
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1349 internal fun Parcel.writeThumbState(state: ThumbDrawableState, flags: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1350 this.writeParcelable(state, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1351 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1352
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1353 internal fun Parcel.readThumbState(): ThumbDrawableState {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1354 return this.readParcelable(ThumbDrawableState::class.java.classLoader)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1355 ?: ThumbDrawableState.EMPTY_STATE
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1356 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1357
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1358 internal class ThumbDrawable {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1359
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1360 private val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply { strokeWidth = 1f }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1361 private var x = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1362 private var y = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1363
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1364 var indicatorColor = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1365 var strokeColor = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1366 var thumbColor = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1367 var radius = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1368
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1369 var colorCircleScale = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1370 set(value) { field = ensureWithinRange(value, 0f, 1f) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1371
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1372 fun setCoordinates(x: Float, y: Float) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1373 this.x = x
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1374 this.y = y
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1375 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1376
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1377 fun draw(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1378 drawThumb(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1379 drawStroke(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1380 drawColorIndicator(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1381 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1382
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1383 private fun drawThumb(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1384 paint.color = thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1385 paint.style = Paint.Style.FILL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1386 canvas.drawCircle(x, y, radius.toFloat(), paint)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1387 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1388
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1389 private fun drawStroke(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1390 val strokeCircleRadius = radius - paint.strokeWidth / 2f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1391
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1392 paint.color = strokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1393 paint.style = Paint.Style.STROKE
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1394 canvas.drawCircle(x, y, strokeCircleRadius, paint)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1395 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1396
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1397 private fun drawColorIndicator(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1398 val colorIndicatorCircleRadius = radius * colorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1399
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1400 paint.color = indicatorColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1401 paint.style = Paint.Style.FILL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1402 canvas.drawCircle(x, y, colorIndicatorCircleRadius, paint)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1403 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1404
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1405 fun restoreState(state: ThumbDrawableState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1406 radius = state.radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1407 thumbColor = state.thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1408 strokeColor = state.strokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1409 colorCircleScale = state.colorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1410 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1411
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1412 fun saveState() = ThumbDrawableState(this)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1413 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1414
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1415 internal class VerticalStrategy : OrientationStrategy {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1416
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1417 private val rect = Rect()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1418 private val point = PointF()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1419
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1420 override val gradientOrientation = GradientDrawable.Orientation.BOTTOM_TOP
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1421
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1422 override fun measure(view: GradientSeekBar, widthSpec: Int, heightSpec: Int): Rect {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1423 val heightSize = View.MeasureSpec.getSize(heightSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1424 val maxWidth = maxOf(view.barSize, view.thumbRadius * 2)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1425 val preferredWidth = maxWidth + view.paddingLeft + view.paddingRight
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1426 val preferredHeight = heightSize + view.paddingTop + view.paddingBottom
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1427 val finalWidth = View.resolveSize(preferredWidth, widthSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1428 val finalHeight = View.resolveSize(preferredHeight, heightSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1429 return rect.apply { set(0, 0, finalWidth, finalHeight) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1430 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1431
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1432 override fun getGradientBounds(view: GradientSeekBar): Rect {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1433 val availableWidth = view.width - view.paddingLeft - view.paddingRight
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1434 val left = view.paddingLeft + (availableWidth - view.barSize) / 2
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1435 val right = left + view.barSize
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1436 val top = view.paddingTop + view.thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1437 val bottom = view.height - view.paddingBottom - view.thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1438 return rect.apply { set(left, top, right, bottom) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1439 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1440
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1441 override fun getThumbPosition(view: GradientSeekBar, gradient: Rect): PointF {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1442 val y = (gradient.top + (1f - view.offset) * gradient.height())
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1443 val x = view.width / 2f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1444 return point.apply { set(x, y) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1445 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1446
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1447 override fun getOffset(view: GradientSeekBar, event: MotionEvent, gradient: Rect): Float {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1448 val checkedY = ensureWithinRange(event.y.roundToInt(), gradient.top, gradient.bottom)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1449 val relativeY = (checkedY - gradient.top).toFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1450 return 1f - relativeY / gradient.height()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1451 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1452 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1453
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1454 // Main Dynamic Windows section
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1455 object DWEvent {
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1456 const val TIMER = 0
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1457 const val CONFIGURE = 1
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1458 const val KEY_PRESS = 2
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1459 const val BUTTON_PRESS = 3
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1460 const val BUTTON_RELEASE = 4
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1461 const val MOTION_NOTIFY = 5
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1462 const val DELETE = 6
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1463 const val EXPOSE = 7
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1464 const val CLICKED = 8
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1465 const val ITEM_ENTER = 9
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1466 const val ITEM_CONTEXT = 10
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1467 const val LIST_SELECT = 11
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1468 const val ITEM_SELECT = 12
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1469 const val SET_FOCUS = 13
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1470 const val VALUE_CHANGED = 14
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1471 const val SWITCH_PAGE = 15
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1472 const val TREE_EXPAND = 16
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1473 const val COLUMN_CLICK = 17
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1474 const val HTML_RESULT = 18
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1475 const val HTML_CHANGED = 19
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1476 }
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1477
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
1478 val DWImageExts = arrayOf("", ".png", ".webp", ".jpg", ".jpeg", ".gif")
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
1479
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
1480 class DWTabViewPagerAdapter : RecyclerView.Adapter<DWTabViewPagerAdapter.DWEventViewHolder>() {
2736
09775418c776 Android: Use "View" as the type for the viewList instead of LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2735
diff changeset
1481 val viewList = mutableListOf<View>()
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1482 val pageList = mutableListOf<Long>()
2692
231f9489a38a Android: Keep a list of tab titles in the ViewPager2 adapter and set titles in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2691
diff changeset
1483 val titleList = mutableListOf<String?>()
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1484 var currentPageID = 0L
2667
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
1485 var recyclerView: RecyclerView? = null
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
1486
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1487 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
1488 DWEventViewHolder(viewList.get(viewType))
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1489
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
1490 override fun getItemCount() = viewList.count()
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
1491 override fun getItemViewType(position: Int): Int {
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
1492 return position
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
1493 }
2667
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
1494 override fun onAttachedToRecyclerView(rv: RecyclerView) {
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
1495 recyclerView = rv
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
1496 }
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
1497 override fun onBindViewHolder(holder: DWEventViewHolder, position: Int) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1498 holder.setIsRecyclable(false)
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1499 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1500
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
1501 class DWEventViewHolder(var view: View) : RecyclerView.ViewHolder(view)
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1502 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1503
2505
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1504 private class DWWebViewClient : WebViewClient() {
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1505 //Implement shouldOverrideUrlLoading//
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
1506 @Deprecated("Deprecated in Java")
2505
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1507 override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1508 // We always want to load in our own WebView,
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1509 // to match the behavior on the other platforms
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1510 return false
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1511 }
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1512 override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1513 // Handle the DW_HTML_CHANGE_STARTED event
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1514 eventHandlerHTMLChanged(view, DWEvent.HTML_CHANGED, url, 1)
2505
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1515 }
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1516
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1517 override fun onPageFinished(view: WebView, url: String) {
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1518 // Handle the DW_HTML_CHANGE_COMPLETE event
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1519 eventHandlerHTMLChanged(view, DWEvent.HTML_CHANGED, url, 4)
2505
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1520 }
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1521
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1522 external fun eventHandlerHTMLChanged(obj1: View, message: Int, URI: String, status: Int)
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1523 }
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1524
2727
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1525 class DWPrintDocumentAdapter : PrintDocumentAdapter()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1526 {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1527 var context: Context? = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1528 var pages: Int = 0
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1529 var pdfDocument: PrintedPdfDocument? = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1530 var print: Long = 0
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1531
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1532 override fun onLayout(
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1533 oldAttributes: PrintAttributes?,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1534 newAttributes: PrintAttributes,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1535 cancellationSignal: CancellationSignal?,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1536 callback: LayoutResultCallback,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1537 extras: Bundle?
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1538 ) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1539 // Create a new PdfDocument with the requested page attributes
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1540 pdfDocument = context?.let { PrintedPdfDocument(it, newAttributes) }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1541
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1542 // Respond to cancellation request
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1543 if (cancellationSignal?.isCanceled == true) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1544 callback.onLayoutCancelled()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1545 return
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1546 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1547
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1548 if (pages > 0) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1549 // Return print information to print framework
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1550 PrintDocumentInfo.Builder("print_output.pdf")
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1551 .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1552 .setPageCount(pages)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1553 .build()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1554 .also { info ->
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1555 // Content layout reflow is complete
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1556 callback.onLayoutFinished(info, true)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1557 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1558 } else {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1559 // Otherwise report an error to the print framework
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1560 callback.onLayoutFailed("No pages to print.")
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1561 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1562 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1563
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1564 override fun onWrite(
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1565 pageRanges: Array<out PageRange>,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1566 destination: ParcelFileDescriptor,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1567 cancellationSignal: CancellationSignal?,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1568 callback: WriteResultCallback
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1569 ) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1570 var writtenPagesArray: Array<PdfDocument.Page> = emptyArray()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1571
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1572 // Iterate over each page of the document,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1573 // check if it's in the output range.
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1574 for (i in 0 until pages) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1575 pdfDocument?.startPage(i)?.also { page ->
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1576
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1577 // check for cancellation
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1578 if (cancellationSignal?.isCanceled == true) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1579 callback.onWriteCancelled()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1580 pdfDocument?.close()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1581 pdfDocument = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1582 return
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1583 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1584
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1585 // Draw page content for printing
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1586 var bitmap = Bitmap.createBitmap(page.canvas.width, page.canvas.height, Bitmap.Config.ARGB_8888)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1587 // Actual drawing is done in the JNI C code callback to the bitmap
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1588 eventHandlerPrintDraw(print, bitmap, i, page.canvas.width, page.canvas.height)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1589 // Copy from the bitmap canvas our C code drew on to the PDF page canvas
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1590 val rect = Rect(0, 0, page.canvas.width, page.canvas.height)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1591 page.canvas.drawBitmap(bitmap, rect, rect, null)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1592
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1593 // Rendering is complete, so page can be finalized.
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1594 pdfDocument?.finishPage(page)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1595
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1596 // Add the new page to the array
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1597 writtenPagesArray += page
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1598 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1599 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1600
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1601 // Write PDF document to file
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1602 try {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1603 pdfDocument?.writeTo(FileOutputStream(destination.fileDescriptor))
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1604 } catch (e: IOException) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1605 callback.onWriteFailed(e.toString())
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1606 return
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1607 } finally {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1608 pdfDocument?.close()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1609 pdfDocument = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1610 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1611 // Signal the print framework the document is complete
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1612 callback.onWriteFinished(pageRanges)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1613 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1614
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1615 override fun onFinish() {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1616 // Notify our C code so it can cleanup
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1617 eventHandlerPrintFinish(print)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1618 super.onFinish()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1619 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1620
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1621 external fun eventHandlerPrintDraw(print: Long, bitmap: Bitmap, page: Int, width: Int, height: Int)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1622 external fun eventHandlerPrintFinish(print: Long)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1623 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1624
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1625 class DWSlider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1626 @JvmOverloads constructor(context: Context): FrameLayout(context) {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1627 val slider: SeekBar = SeekBar(context)
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1628
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1629 init {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1630 slider.layoutParams = LayoutParams(LayoutParams.MATCH_PARENT,
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1631 LayoutParams.WRAP_CONTENT, Gravity.CENTER)
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1632 addView(slider)
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1633 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1634
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1635 @Synchronized
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1636 override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1637 if(slider.rotation == 90F || slider.rotation == 270F) {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1638 val layoutHeight = MeasureSpec.getSize(heightMeasureSpec)
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1639 // set slider width to layout heigth
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1640 slider.layoutParams.width = layoutHeight
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1641 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1642 super.onMeasure(widthMeasureSpec, heightMeasureSpec)
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1643 if(slider.rotation == 90F || slider.rotation == 270F) {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1644 // update layout width to the rotated height of the slider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1645 // otherwise the layout remains quadratic
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1646 setMeasuredDimension(slider.measuredHeight, measuredHeight)
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1647 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1648 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1649 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1650
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1651 class DWSpinButton(context: Context) : AppCompatEditText(context), OnTouchListener {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1652 var value: Long = 0
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1653 var minimum: Long = 0
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1654 var maximum: Long = 65535
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1655
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1656 init {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1657 setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_media_previous, 0, R.drawable.ic_media_next, 0)
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1658 setOnTouchListener(this)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1659 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1660
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1661 override fun onTouch(v: View, event: MotionEvent): Boolean {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1662 val DRAWABLE_RIGHT = 2
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1663 val DRAWABLE_LEFT = 0
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1664
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1665 if (event.action == MotionEvent.ACTION_UP) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1666 if (event.x >= v.width - (v as EditText)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1667 .compoundDrawables[DRAWABLE_RIGHT].bounds.width()
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1668 ) {
2527
eec926265888 Android: Use toLongOrNull() whenever converting from string to long...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2526
diff changeset
1669 val newvalue = this.text.toString().toLongOrNull()
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1670
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1671 if(newvalue != null) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1672 value = newvalue + 1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1673 } else {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1674 value += 1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1675 }
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1676 if(value > maximum) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1677 value = maximum
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1678 }
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1679 if(value < minimum) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1680 value = minimum
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1681 }
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1682 setText(value.toString())
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1683 eventHandlerInt(DWEvent.VALUE_CHANGED, value.toInt(), 0, 0, 0)
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1684 return true
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1685 } else if (event.x <= v.compoundDrawables[DRAWABLE_LEFT].bounds.width()) {
2527
eec926265888 Android: Use toLongOrNull() whenever converting from string to long...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2526
diff changeset
1686 val newvalue = this.text.toString().toLongOrNull()
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1687
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1688 if(newvalue != null) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1689 value = newvalue - 1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1690 } else {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1691 value -= 1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1692 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1693 if(value > maximum) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1694 value = maximum
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1695 }
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1696 if(value < minimum) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1697 value = minimum
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1698 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1699 setText(value.toString())
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1700 eventHandlerInt(DWEvent.VALUE_CHANGED, value.toInt(), 0, 0, 0)
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1701 return true
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1702 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1703 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1704 return false
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1705 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1706
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1707 external fun eventHandlerInt(
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1708 message: Int,
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1709 inta: Int,
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1710 intb: Int,
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1711 intc: Int,
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1712 intd: Int
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1713 )
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1714 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1715
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1716 class DWComboBox(context: Context) : AppCompatEditText(context), OnTouchListener, OnItemClickListener {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1717 var lpw: ListPopupWindow? = null
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1718 var list = mutableListOf<String>()
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1719 var selected: Int = -1
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1720
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1721 init {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1722 setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.arrow_down_float, 0)
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1723 setOnTouchListener(this)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1724 lpw = ListPopupWindow(context)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1725 lpw!!.setAdapter(
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1726 ArrayAdapter(
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1727 context,
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1728 R.layout.simple_list_item_1, list
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1729 )
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1730 )
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1731 lpw!!.anchorView = this
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1732 lpw!!.isModal = true
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1733 lpw!!.setOnItemClickListener(this)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1734 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1735
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1736 override fun onItemClick(parent: AdapterView<*>?, view: View, position: Int, id: Long) {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1737 val item = list[position]
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1738 selected = position
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1739 setText(item)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1740 lpw!!.dismiss()
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1741 eventHandlerInt(DWEvent.LIST_SELECT, position, 0, 0, 0)
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1742 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1743
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1744 override fun onTouch(v: View, event: MotionEvent): Boolean {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1745 val DRAWABLE_RIGHT = 2
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1746
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1747 if (event.action == MotionEvent.ACTION_UP) {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1748 if (event.x >= v.width - (v as EditText)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1749 .compoundDrawables[DRAWABLE_RIGHT].bounds.width()
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1750 ) {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1751 lpw!!.show()
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1752 return true
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1753 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1754 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1755 return false
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1756 }
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1757
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1758 external fun eventHandlerInt(
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1759 message: Int,
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1760 inta: Int,
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1761 intb: Int,
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1762 intc: Int,
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1763 intd: Int
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1764 )
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1765 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1766
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1767 class DWListBox(context: Context) : ListView(context), OnItemClickListener {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1768 var list = mutableListOf<String>()
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1769 var multiple = mutableListOf<Int>()
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1770 var selected: Int = -1
2677
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
1771 var colorFore: Int? = null
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
1772 var colorBack: Int? = null
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1773 var colorSelected: Int = Color.DKGRAY
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1774
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1775 init {
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1776 adapter = object : ArrayAdapter<String>(
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1777 context,
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1778 R.layout.simple_list_item_1, list
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1779 ) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1780 override fun getView(pos: Int, view: View?, parent: ViewGroup): View {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1781 val thisview = super.getView(pos, view, parent)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1782 val textview = thisview as TextView
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1783 if (colorFore != null) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1784 textview.setTextColor(colorFore!!)
2677
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
1785 }
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1786 if (colorBack != null) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1787 textview.setBackgroundColor(colorBack!!)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1788 }
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1789 return thisview
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1790 }
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1791 }
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
1792 colorSelected = getPlatformSelectionColor(context)
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
1793 onItemClickListener = this
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1794 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1795
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1796 override fun onItemClick(parent: AdapterView<*>?, view: View, position: Int, id: Long) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1797 selected = position
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1798 if(this.choiceMode == ListView.CHOICE_MODE_MULTIPLE) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1799 if(multiple.contains(position)) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1800 multiple.remove(position)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1801 view.setBackgroundColor(Color.TRANSPARENT)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1802 } else {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1803 multiple.add(position)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1804 view.setBackgroundColor(colorSelected)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1805 }
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1806 }
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1807 eventHandlerInt(DWEvent.LIST_SELECT, position, 0, 0, 0)
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1808 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1809
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1810 external fun eventHandlerInt(
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1811 message: Int,
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1812 inta: Int,
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1813 intb: Int,
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1814 intc: Int,
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1815 intd: Int
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1816 )
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1817 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1818
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1819 class DWRender(context: Context) : View(context) {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1820 var cachedCanvas: Canvas? = null
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
1821 var typeface: Typeface? = null
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
1822 var fontsize: Float? = null
2608
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
1823 var evx: Float = 0f
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
1824 var evy: Float = 0f
2611
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
1825 var button: Int = 1
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1826
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1827 override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1828 super.onSizeChanged(width, height, oldWidth, oldHeight)
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1829 // Send DW_SIGNAL_CONFIGURE
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1830 eventHandlerInt(DWEvent.CONFIGURE, width, height, 0, 0)
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1831 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1832
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1833 override fun onDraw(canvas: Canvas) {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1834 super.onDraw(canvas)
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1835 cachedCanvas = canvas
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1836 // Send DW_SIGNAL_EXPOSE
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1837 eventHandlerInt(DWEvent.EXPOSE, 0, 0, this.width, this.height)
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1838 cachedCanvas = null
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1839 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1840
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1841 external fun eventHandlerInt(
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1842 message: Int,
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1843 inta: Int,
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1844 intb: Int,
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1845 intc: Int,
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1846 intd: Int
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1847 )
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1848 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1849
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1850 class DWFileChooser(private val activity: Activity) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1851 private val list: ListView = ListView(activity)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1852 private val dialog: Dialog = Dialog(activity)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1853 private var currentPath: File? = null
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1854
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1855 // filter on file extension
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1856 private var extension: String? = null
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1857 fun setExtension(extension: String?) {
2708
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
1858 this.extension = extension?.toLowerCase(Locale.ROOT)
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1859 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1860
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1861 // file selection event handling
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1862 interface FileSelectedListener {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1863 fun fileSelected(file: File?)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1864 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1865
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1866 fun setFileListener(fileListener: FileSelectedListener?): DWFileChooser {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1867 this.fileListener = fileListener
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1868 return this
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1869 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1870
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1871 private var fileListener: FileSelectedListener? = null
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1872 fun showDialog() {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1873 dialog.show()
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1874 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1875
2527
eec926265888 Android: Use toLongOrNull() whenever converting from string to long...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2526
diff changeset
1876 /*
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1877 * Sort, filter and display the files for the given path.
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1878 */
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1879 private fun refresh(path: File?) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1880 currentPath = path
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1881 if (path != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1882 if (path.exists()) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1883 val dirs = path.listFiles { file -> file.isDirectory && file.canRead() }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1884 val files = path.listFiles { file ->
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1885 if (!file.isDirectory) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1886 if (!file.canRead()) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1887 false
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1888 } else if (extension == null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1889 true
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1890 } else {
2708
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
1891 file.name.toLowerCase(Locale.ROOT).endsWith(extension!!)
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1892 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1893 } else {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1894 false
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1895 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1896 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1897
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1898 // convert to an array
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1899 var i = 0
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1900 val fileList: Array<String?>
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1901 var filecount = 0
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1902 var dircount = 0
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1903 if(files != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1904 filecount = files.size
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1905 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1906 if(dirs != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1907 dircount = dirs.size
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1908 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1909 if (path.parentFile == null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1910 fileList = arrayOfNulls(dircount + filecount)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1911 } else {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1912 fileList = arrayOfNulls(dircount + filecount + 1)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1913 fileList[i++] = PARENT_DIR
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1914 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1915 if(dirs != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1916 Arrays.sort(dirs)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1917 for (dir in dirs) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1918 fileList[i++] = dir.name
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1919 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1920 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1921 if(files != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1922 Arrays.sort(files)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1923 for (file in files) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1924 fileList[i++] = file.name
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1925 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1926 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1927
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1928 // refresh the user interface
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1929 dialog.setTitle(currentPath!!.path)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1930 list.adapter = object : ArrayAdapter<Any?>(
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1931 activity,
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1932 R.layout.simple_list_item_1, fileList
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1933 ) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1934 override fun getView(pos: Int, view: View?, parent: ViewGroup): View {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1935 val thisview = super.getView(pos, view, parent)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1936 (thisview as TextView).isSingleLine = true
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1937 return thisview
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1938 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1939 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1940 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1941 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1942 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1943
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1944 /**
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1945 * Convert a relative filename into an actual File object.
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1946 */
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1947 private fun getChosenFile(fileChosen: String): File? {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1948 return if (fileChosen == PARENT_DIR) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1949 currentPath!!.parentFile
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1950 } else {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1951 File(currentPath, fileChosen)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1952 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1953 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1954
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1955 companion object {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1956 private const val PARENT_DIR = ".."
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1957 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1958
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1959 init {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1960 list.onItemClickListener =
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1961 OnItemClickListener { parent, view, which, id ->
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1962 val fileChosen = list.getItemAtPosition(which) as String
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1963 val chosenFile: File? = getChosenFile(fileChosen)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1964 if (chosenFile != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1965 if (chosenFile.isDirectory) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1966 refresh(chosenFile)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1967 } else {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1968 if (fileListener != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1969 fileListener!!.fileSelected(chosenFile)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1970 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1971 dialog.dismiss()
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1972 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1973 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1974 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1975 dialog.setContentView(list)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1976 dialog.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1977 refresh(Environment.getExternalStorageDirectory())
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1978 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1979 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1980
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1981 // On Android we can't pre-create submenus...
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1982 // So create our own placeholder classes, and create the actual menus
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1983 // on demand when required by Android
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1984 class DWMenuItem
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1985 {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1986 var title: String? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1987 var menu: DWMenu? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1988 var submenu: DWMenu? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1989 var checked: Boolean = false
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1990 var check: Boolean = false
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
1991 var enabled: Boolean = true
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1992 var menuitem: MenuItem? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1993 var submenuitem: SubMenu? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1994 var id: Int = 0
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1995 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1996
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1997 class DWMenu {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1998 var menu: Menu? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
1999 var children = mutableListOf<DWMenuItem>()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2000 var id: Int = 0
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2001
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2002 fun createMenu(newmenu: Menu?, recreate: Boolean) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2003 var refresh = recreate
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2004
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2005 if(newmenu != null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2006 if(newmenu != menu) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2007 menu = newmenu
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2008 refresh = true
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2009 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2010 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2011 if(menu != null) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
2012 var group = 0
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2013
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2014 if(refresh) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2015 menu!!.clear()
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2016 }
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2017
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2018 // Enable group dividers for separators
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
2019 MenuCompat.setGroupDividerEnabled(menu!!, true)
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2020
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2021 for (menuitem in children) {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2022 // Submenus on Android can't have submenus, so stop at depth 1
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2023 if (menuitem.submenu != null && menu !is SubMenu) {
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2024 if(menuitem.submenuitem == null || refresh) {
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2025 menuitem.submenuitem = menu?.addSubMenu(group, menuitem.id, 0, menuitem.title)
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2026 }
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2027 menuitem.submenu!!.createMenu(menuitem.submenuitem, refresh)
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2028 } else if(menuitem.submenu == null) {
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2029 if(menuitem.title!!.isEmpty()) {
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2030 group += 1
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2031 } else if(menuitem.menuitem == null || refresh) {
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2032 menuitem.menuitem = menu?.add(group, menuitem.id, 0, menuitem.title)
2545
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2033 menuitem.menuitem!!.isCheckable = menuitem.check
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2034 menuitem.menuitem!!.isChecked = menuitem.checked
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2035 menuitem.menuitem!!.isEnabled = menuitem.enabled
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
2036 menuitem.menuitem!!.setOnMenuItemClickListener { item: MenuItem? ->
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
2037 eventHandlerSimple(menuitem, DWEvent.CLICKED)
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2038 true
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
2039 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2040 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2041 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2042 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2043 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2044 }
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2045
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2046 external fun eventHandlerSimple(item: DWMenuItem, message: Int)
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2047 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2048
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2049 // Class for storing container data
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2050 class DWContainerModel {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2051 var columns = mutableListOf<String?>()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2052 var types = mutableListOf<Int>()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2053 var data = mutableListOf<Any?>()
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2054 var rowdata = mutableListOf<Long>()
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2055 var rowtitle = mutableListOf<String?>()
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
2056 var querypos: Int = -1
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2057
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2058 fun numberOfColumns(): Int
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2059 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2060 return columns.size
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2061 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2062
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2063 fun numberOfRows(): Int
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2064 {
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2065 if(columns.size > 0) {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2066 return data.size / columns.size
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2067 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2068 return 0
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2069 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2070
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2071 fun getColumnType(column: Int): Int
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2072 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2073 if(column < types.size) {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2074 return types[column]
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2075 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2076 return -1
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2077 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2078
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2079 fun getRowAndColumn(row: Int, column: Int): Any?
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2080 {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2081 val index: Int = (row * columns.size) + column
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2082
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2083 if(index > -1 && index < data.size) {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2084 return data[index]
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2085 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2086 return null
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2087 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2088
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2089 fun setRowAndColumn(row: Int, column: Int, obj: Any?)
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2090 {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2091 val index: Int = (row * columns.size) + column
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2092
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2093 if(index > -1 && index < data.size && column < types.size) {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2094 // Verify the data matches the column type
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2095 if((((types[column] and 1) != 0) && (obj is Drawable)) ||
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2096 (((types[column] and (1 shl 1)) != 0) && (obj is String)) ||
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2097 (((types[column] and (1 shl 2)) != 0) && (obj is Int))) {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2098 data[index] = obj
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2099 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2100 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2101 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2102
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2103 fun changeRowData(row: Int, rdata: Long)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2104 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2105 if(row > -1 && row < rowdata.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2106 rowdata[row] = rdata
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2107 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2108 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2109
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2110 fun getRowData(row: Int): Long
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2111 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2112 if(row > -1 && row < rowdata.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2113 return rowdata[row]
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2114 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2115 return 0
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2116 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2117
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2118 fun changeRowTitle(row: Int, title: String?)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2119 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2120 if(row > -1 && row < rowtitle.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2121 rowtitle[row] = title
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2122 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2123 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2124
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2125 fun getRowTitle(row: Int): String?
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2126 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2127 if(row > -1 && row < rowtitle.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2128 return rowtitle[row]
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2129 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2130 return null
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2131 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2132
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2133 fun addColumn(title: String?, type: Int)
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2134 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2135 columns.add(title)
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2136 types.add(type)
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2137 // If we change the columns we have to invalidate the data
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2138 data.clear()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2139 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2140
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2141 fun deleteRows(count: Int)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2142 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2143 if(count < rowdata.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2144 for(i in 0 until count) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2145 for(j in 0 until columns.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2146 data.removeAt(0)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2147 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2148 rowdata.removeAt(0)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2149 rowtitle.removeAt(0)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2150 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2151 } else {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2152 data.clear()
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2153 rowdata.clear()
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2154 rowtitle.clear()
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2155 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2156 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2157
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2158 fun deleteRowByTitle(title: String?)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2159 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2160 for(i in 0 until rowtitle.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2161 if(rowtitle[i] != null && rowtitle[i] == title) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2162 for(j in 0 until columns.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2163 data.removeAt(i * columns.size)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2164 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2165 rowdata.removeAt(i)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2166 rowtitle.removeAt(i)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2167 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2168 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2169 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2170
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2171 fun deleteRowByData(rdata: Long)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2172 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2173 for(i in 0 until rowdata.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2174 if(rowdata[i] == rdata) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2175 for(j in 0 until columns.size) {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2176 data.removeAt(i * columns.size)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2177 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2178 rowdata.removeAt(i)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2179 rowtitle.removeAt(i)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2180 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2181 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2182 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2183
2709
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2184 fun positionByTitle(title: String?): Int
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2185 {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2186 for(i in 0 until rowtitle.size) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2187 if(rowtitle[i] != null && rowtitle[i] == title) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2188 return i
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2189 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2190 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2191 return -1
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2192 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2193
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2194 fun positionByData(rdata: Long): Int
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2195 {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2196 for(i in 0 until rowdata.size) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2197 if (rowdata[i] == rdata) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2198 return i
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2199 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2200 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2201 return -1
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2202 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
2203
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2204 fun addRows(count: Int): Long
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2205 {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2206 val startRow: Long = numberOfRows().toLong()
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2207
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2208 for(i in 0 until count)
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2209 {
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2210 for(j in 0 until columns.size)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2211 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2212 // Fill in with nulls to be set later
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2213 data.add(null)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2214 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2215 rowdata.add(0)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2216 rowtitle.add(null)
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2217 }
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2218 return startRow
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2219 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2220
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2221 fun clear()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2222 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2223 data.clear()
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2224 rowdata.clear()
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2225 rowtitle.clear()
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2226 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2227 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2228
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2229 class DWContainerRow : LinearLayout, Checkable {
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2230 private var mChecked = false
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2231 private var colorSelection = Color.DKGRAY
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2232
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2233 constructor(context: Context?) : super(context) {
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2234 colorSelection = context?.let { getPlatformSelectionColor(it) }!!
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2235 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2236 constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2237 colorSelection = context?.let { getPlatformSelectionColor(it) }!!
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2238 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2239 constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle) {
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2240 colorSelection = context?.let { getPlatformSelectionColor(it) }!!
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2241 }
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2242
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2243 fun updateBackground() {
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2244 if(mChecked) {
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2245 this.setBackgroundColor(colorSelection)
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2246 } else {
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2247 this.setBackgroundColor(Color.TRANSPARENT)
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2248 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2249 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2250
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2251 override fun setChecked(b: Boolean) {
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2252 mChecked = b
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2253 updateBackground()
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2254 }
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2255
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2256 override fun isChecked(): Boolean {
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2257 return mChecked
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2258 }
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2259
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2260 override fun toggle() {
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2261 mChecked = !mChecked
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2262 updateBackground()
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2263 }
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2264 }
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2265
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2266 class DWContainerAdapter(c: Context) : BaseAdapter()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2267 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2268 private var context = c
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2269 var model = DWContainerModel()
2563
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
2270 var selectedItem: Int = -1
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2271 var simpleMode: Boolean = true
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2272 var oddColor: Int? = null
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2273 var evenColor: Int? = null
2677
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2274 var foreColor: Int? = null
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2275 var backColor: Int? = null
2613
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
2276 var lastClick: Long = 0
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
2277 var lastClickRow: Int = -1
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2278
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2279 override fun getCount(): Int {
2567
19d82c1f135f Android: Fix incorrect display of first container entry with the new layout code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2565
diff changeset
2280 return model.numberOfRows()
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2281 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2282
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2283 override fun getItem(position: Int): Any? {
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2284 return model.getRowAndColumn(position, 0)
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2285 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2286
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2287 override fun getItemId(position: Int): Long {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2288 return position.toLong()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2289 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2290
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2291 override fun getView(position: Int, view: View?, parent: ViewGroup): View {
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2292 var rowView: DWContainerRow? = view as DWContainerRow?
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2293 var displayColumns = model.numberOfColumns()
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2294
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2295 // In simple mode, limit the columns to 1 or 2
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2296 if(simpleMode == true) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2297 // If column 1 is bitmap and column 2 is text...
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2298 if(displayColumns > 1 && (model.getColumnType(0) and 1) != 0 &&
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2299 (model.getColumnType(1) and (1 shl 1)) != 0) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2300 displayColumns = 2
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2301 } else {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2302 displayColumns = 1
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2303 }
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2304 }
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2305
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2306 // If the view passed in is null we need to create the layout
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2307 if(rowView == null) {
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2308 rowView = DWContainerRow(context)
2568
b536b7b21682 Android: Switch to using LinearLayout for Container row layout...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2567
diff changeset
2309 rowView.orientation = LinearLayout.HORIZONTAL
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2310
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2311 for(i in 0 until displayColumns) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2312 val content = model.getRowAndColumn(position, i)
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2313
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2314 // Image
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2315 if((model.getColumnType(i) and 1) != 0) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2316 val imageview = ImageView(context)
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2317 val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2318 LinearLayout.LayoutParams.WRAP_CONTENT)
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2319 params.gravity = Gravity.CENTER
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2320 imageview.layoutParams = params
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2321 imageview.id = View.generateViewId()
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2322 if (content is Drawable) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2323 imageview.setImageDrawable(content)
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2324 }
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2325 rowView.addView(imageview)
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2326 } else {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2327 // Everything else id displayed as text
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2328 val textview = TextView(context)
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2329 val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2330 LinearLayout.LayoutParams.WRAP_CONTENT)
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2331 params.gravity = Gravity.CENTER
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2332 textview.layoutParams = params
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2333 textview.id = View.generateViewId()
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2334 if (content is String) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2335 textview.text = content
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2336 } else if(content is Int) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2337 textview.text = content.toString()
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2338 }
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2339 rowView.addView(textview)
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2340 }
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2341 }
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2342 // TODO: Add code to optionally add other columns
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2343 } else {
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2344 // Otherwise we just need to update the existing layout
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2345
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2346 for(i in 0 until displayColumns) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2347 val content = model.getRowAndColumn(position, i)
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2348
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2349 // Image
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2350 if((model.getColumnType(i) and 1) != 0) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2351 val imageview = rowView.getChildAt(i)
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2352
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2353 if (imageview is ImageView && content is Drawable) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2354 imageview.setImageDrawable(content)
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2355 }
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2356 } else {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2357 // Text
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2358 val textview = rowView.getChildAt(i)
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2359
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2360 if (textview is TextView) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2361 if (content is String) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2362 textview.text = content
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2363 } else if (content is Int) {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2364 textview.text = content.toString()
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2365 }
2677
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2366 if(foreColor != null) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2367 textview.setTextColor(foreColor!!)
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2368 }
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2369 }
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2370 }
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2371 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2372 }
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2373 // Handle row stripe
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2374 if (position % 2 == 0) {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2375 if(evenColor != null) {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2376 rowView.setBackgroundColor(evenColor!!)
2677
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2377 } else if(backColor != null) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2378 rowView.setBackgroundColor(backColor!!)
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2379 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2380 } else {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2381 if(oddColor != null) {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2382 rowView.setBackgroundColor(oddColor!!)
2677
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2383 } else if(backColor != null) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2384 rowView.setBackgroundColor(backColor!!)
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2385 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2386 }
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2387 return rowView
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2388 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2389 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2390
2702
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
2391 private class DWMLE(c: Context): AppCompatEditText(c) {
2701
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2392 protected override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2393 if(!isHorizontalScrollBarEnabled) {
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2394 this.maxWidth = w
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2395 } else {
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2396 this.maxWidth = -1
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2397 }
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2398 super.onSizeChanged(w, h, oldw, oldh)
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2399 }
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2400 }
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2401
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2402 fun getPlatformSelectionColor(context: Context): Int {
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2403 val bitmap = BitmapFactory.decodeResource(context.resources, R.drawable.list_selector_background)
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2404 var redBucket: Float = 0f
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2405 var greenBucket: Float = 0f
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2406 var blueBucket: Float = 0f
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2407 var pixelCount: Float = 0f
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2408
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2409 if(bitmap != null) {
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2410 for (y in 0 until bitmap.height) {
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2411 for (x in 0 until bitmap.width) {
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2412 val c = bitmap.getPixel(x, y)
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2413 pixelCount++
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2414 redBucket += Color.red(c)
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2415 greenBucket += Color.green(c)
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2416 blueBucket += Color.blue(c)
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2417 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2418 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2419
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2420 return Color.rgb(
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2421 (redBucket / pixelCount).toInt(),
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2422 (greenBucket / pixelCount).toInt(),
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2423 (blueBucket / pixelCount).toInt()
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2424 )
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2425 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2426 return Color.GRAY
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2427 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2428
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2429 class DWindows : AppCompatActivity() {
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2430 var windowLayout: ViewPager2? = null
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2431 var threadLock = ReentrantLock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2432 var threadCond = threadLock.newCondition()
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
2433 var notificationID: Int = 0
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2434 var darkMode: Int = -1
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2435 var lastClickView: View? = null
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2436 var colorSelection: Int = Color.DKGRAY
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
2437 private var appID: String? = null
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
2438 private var paint = Paint()
2637
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
2439 private var bgcolor: Int? = null
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
2440 private var fileURI: Uri? = null
2595
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
2441 private var fileLock = ReentrantLock()
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
2442 private var fileCond = fileLock.newCondition()
2722
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
2443 private var colorLock = ReentrantLock()
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
2444 private var colorCond = colorLock.newCondition()
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
2445 private var colorChosen: Int = 0
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2446 // Lists of data for our Windows
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2447 private var windowTitles = mutableListOf<String?>()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2448 private var windowMenuBars = mutableListOf<DWMenu?>()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2449 private var windowStyles = mutableListOf<Int>()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2450 private var windowDefault = mutableListOf<View?>()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2451
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2452 // Our version of runOnUiThread that waits for execution
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2453 fun waitOnUiThread(runnable: Runnable)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2454 {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2455 if(Looper.myLooper() == Looper.getMainLooper()) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2456 runnable.run()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2457 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2458 threadLock.lock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2459 val ourRunnable = Runnable {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2460 threadLock.lock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2461 runnable.run()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2462 threadCond.signal()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2463 threadLock.unlock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2464 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2465 runOnUiThread(ourRunnable)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2466 threadCond.await()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2467 threadLock.unlock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2468 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2469 }
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2470
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2471 // Returns true if the filename is a resource ID (non-zero number)
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2472 // with a image file extension in our DWImageExts list
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2473 private fun isDWResource(filename: String): Boolean {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2474 val length = filename.length
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2475
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2476 for (ext in DWImageExts) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2477 if (ext.isNotEmpty() && filename.endsWith(ext)) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2478 val filebody: String = filename.substring(7, length - ext.length)
2659
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2479 try {
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2480 if (filebody.toInt() > 0) {
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2481 return true
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2482 }
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2483 } catch(e: NumberFormatException) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2484 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2485 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2486 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2487 return false
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2488 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2489
2659
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2490 // Extracts assets/ in the APK to the application cache directory
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2491 private fun extractAssets() {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2492 var zipFile: ZipFile? = null
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2493 val targetDir = cacheDir
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2494
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2495 try {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2496 zipFile = ZipFile(this.applicationInfo.sourceDir)
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2497 val e: Enumeration<out ZipEntry?> = zipFile.entries()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2498 while (e.hasMoreElements()) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2499 val entry: ZipEntry? = e.nextElement()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2500 if (entry == null || entry.isDirectory || !entry.name.startsWith("assets/") ||
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2501 isDWResource(entry.name)) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2502 continue
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2503 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2504 val targetFile = File(targetDir, entry.name.substring("assets/".length))
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2505 targetFile.parentFile!!.mkdirs()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2506 val tempBuffer = ByteArray(entry.size.toInt())
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2507 var ais: BufferedInputStream? = null
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2508 var aos: FileOutputStream? = null
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2509 try {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2510 ais = BufferedInputStream(zipFile.getInputStream(entry))
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2511 aos = FileOutputStream(targetFile)
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2512 ais.read(tempBuffer)
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2513 aos.write(tempBuffer)
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2514 } catch (e: IOException) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2515 } finally {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2516 ais?.close()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2517 aos?.close()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2518 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2519 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2520 } catch (e: IOException) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2521 } finally {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2522 zipFile?.close()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2523 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2524 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2525
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2526 // We only want to call this once when the app starts up
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2527 // By default Android will call onCreate for rotation and other
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2528 // changes. This is incompatible with Dynamic Windows...
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2529 // Make sure the following is in your AndroidManifest.xml
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2530 // android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2531 override fun onCreate(savedInstanceState: Bundle?) {
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2532 super.onCreate(savedInstanceState)
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2533
2480
878d36588aaa Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2479
diff changeset
2534 // Turn on rotation
878d36588aaa Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2479
diff changeset
2535 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR)
878d36588aaa Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2479
diff changeset
2536
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2537 // Get the Android app path
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2538 val m = packageManager
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2539 var s = packageName
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2540 val p = m.getPackageInfo(s!!, 0)
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2541 s = p.applicationInfo.dataDir
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2542 val c = cacheDir.path
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2543
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2544 // Extract any non-resource assets to the cache directory
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2545 // So that our C code can access them as files, like on
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2546 // other Dynamic Windows platforms
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2547 extractAssets()
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
2548
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2549 // Setup our ViewPager2 as our activty window container
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2550 windowLayout = ViewPager2(this)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2551 windowLayout!!.id = View.generateViewId()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2552 windowLayout!!.adapter = DWTabViewPagerAdapter()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2553 windowLayout!!.isUserInputEnabled = false
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2554 windowLayout!!.layoutParams =
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2555 ViewGroup.LayoutParams(
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2556 ViewGroup.LayoutParams.MATCH_PARENT,
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2557 ViewGroup.LayoutParams.MATCH_PARENT
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2558 )
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2559
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2560 colorSelection = getPlatformSelectionColor(this)
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2561
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2562 // Initialize the Dynamic Windows code...
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2563 // This will start a new thread that calls the app's dwmain()
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2564 dwindowsInit(s, c, this.getPackageName())
2496
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2565 }
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2566
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2567 override fun onConfigurationChanged(newConfig: Configuration) {
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2568 super.onConfigurationChanged(newConfig)
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2569
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2570 val currentNightMode = newConfig.uiMode and Configuration.UI_MODE_NIGHT_MASK
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2571 when (currentNightMode) {
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2572 Configuration.UI_MODE_NIGHT_NO -> { darkMode = 0 } // Night mode is not active, we're using the light theme
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2573 Configuration.UI_MODE_NIGHT_YES -> { darkMode = 1 } // Night mode is active, we're using dark theme
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2574 }
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2575
2499
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
2576 // Send a DW_SIGNAL_CONFIGURE on orientation change
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
2577 if(windowLayout != null) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2578 val width: Int = windowLayout!!.width
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2579 val height: Int = windowLayout!!.height
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2580 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
2685
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2581 val index = windowLayout!!.currentItem
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2582 val count = adapter.viewList.count()
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2583
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2584 if(count > 0 && index < count) {
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2585 val window = adapter.viewList[index]
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2586
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2587 eventHandlerInt(window, DWEvent.CONFIGURE, width, height, 0, 0)
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2588 }
2496
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2589 }
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2590 }
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2591
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
2592 override fun onCreateOptionsMenu(menu: Menu): Boolean {
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2593 if(windowLayout != null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2594 val index = windowLayout!!.currentItem
2685
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2595 val count = windowMenuBars.count()
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2596
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2597 if (count > 0 && index < count) {
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2598 var menuBar = windowMenuBars[index]
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2599
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2600 if(menuBar == null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2601 menuBar = DWMenu()
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2602 windowMenuBars[index] = menuBar
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2603 }
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
2604 menuBar.menu = menu
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2605 return super.onCreateOptionsMenu(menu)
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2606 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2607 }
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2608 return false
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2609 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2610
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
2611 override fun onPrepareOptionsMenu(menu: Menu): Boolean {
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2612 if(windowLayout != null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2613 val index = windowLayout!!.currentItem
2685
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2614 val count = windowMenuBars.count()
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2615
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2616 if (count > 0 && index < count) {
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2617 var menuBar = windowMenuBars[index]
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2618
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2619 if(menuBar != null) {
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
2620 menuBar.createMenu(menu, true)
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2621 } else {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2622 menuBar = DWMenu()
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
2623 menuBar.createMenu(menu, true)
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2624 windowMenuBars[index] = menuBar
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2625 }
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2626 return super.onPrepareOptionsMenu(menu)
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2627 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2628 }
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2629 return false
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2630 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2631
2668
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2632 override fun onBackPressed() {
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2633 if(windowLayout != null) {
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2634 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2635 val index = windowLayout!!.currentItem
2685
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2636 val count = windowStyles.count()
2668
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2637
2670
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
2638 // If the current window has a close button...
2685
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2639 if (count > 1 && index > 0 && index < count && (windowStyles[index] and 1) == 1) {
2670
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
2640 // Send the DW_SIGNAL_DELETE to the event handler
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
2641 eventHandlerSimple(adapter.viewList[index], DWEvent.DELETE)
2668
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2642 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2643 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2644 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2645
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
2646 // These are the Android calls to actually create the UI...
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
2647 // forwarded from the C Dynamic Windows API
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
2648
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2649 fun darkModeDetected(): Int
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2650 {
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2651 return darkMode
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2652 }
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2653
2694
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2654 fun browseURL(url: String): Int {
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2655 var retval: Int = -1 // DW_ERROR_UNKNOWN
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2656
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2657 waitOnUiThread {
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2658 val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2659 try {
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2660 retval = 0 // DW_ERROR_NONE
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2661 startActivity(browserIntent)
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2662 } catch (e: ActivityNotFoundException) {
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2663 retval = -1 // DW_ERROR_UNKNOWN
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2664 }
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2665 }
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2666 return retval
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2667 }
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2668
2607
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2669 fun menuPopup(menu: DWMenu, parent: View, x: Int, y: Int)
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2670 {
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2671 var anchor: View? = parent
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2672
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2673 // If lastClickView is valid, use that instead of parent
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2674 if(lastClickView != null) {
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2675 anchor = lastClickView
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2676 }
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2677
2607
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2678 runOnUiThread {
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2679 val popup = PopupMenu(this, anchor)
2607
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2680
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2681 menu.createMenu(popup.menu, false)
2607
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2682 popup.show()
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2683 }
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2684 }
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2685
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2686 fun menuBarNew(location: View): DWMenu?
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2687 {
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2688 var menuBar: DWMenu? = null
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2689
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2690 if(windowLayout != null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2691 waitOnUiThread {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2692 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2693 val index = adapter.viewList.indexOf(location)
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2694
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2695 if (index != -1) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2696 menuBar = DWMenu()
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2697 windowMenuBars[index] = menuBar
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2698 }
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2699 }
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2700 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2701 return menuBar
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2702 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2703
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2704 fun menuNew(cid: Int): DWMenu
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2705 {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2706 val menu = DWMenu()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2707 menu.id = cid
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2708 return menu
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2709 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2710
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2711 fun menuAppendItem(menu: DWMenu, title: String, cid: Int, flags: Int, end: Int, check: Int, submenu: DWMenu?): DWMenuItem
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2712 {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2713 val menuitem = DWMenuItem()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2714 menuitem.id = cid
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2715 menuitem.title = title
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2716 menuitem.check = check != 0
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2717 if(submenu != null) {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2718 menuitem.submenu = submenu
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2719 }
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2720 if((flags and (1 shl 1)) != 0) {
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2721 menuitem.enabled = false
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2722 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2723 if((flags and (1 shl 2)) != 0) {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2724 menuitem.checked = true
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2725 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2726 if(end == 0) {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2727 menu.children.add(0, menuitem)
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2728 } else {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2729 menu.children.add(menuitem)
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2730 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2731 return menuitem
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2732 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2733
2545
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2734 fun menuDestroy(menu: DWMenu)
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2735 {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2736 menu.children.clear()
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2737 runOnUiThread {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2738 menu.menu!!.clear()
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2739 invalidateOptionsMenu()
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2740 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2741 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2742
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2743 fun menuDeleteItem(menu: DWMenu, cid: Int)
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2744 {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2745 for(menuitem in menu.children) {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2746 if(menuitem.id == cid) {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2747 menu.children.remove(menuitem)
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2748 runOnUiThread {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2749 menu.menu!!.removeItem(menuitem.id)
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2750 invalidateOptionsMenu()
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2751 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2752 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2753 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2754 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2755
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2756 fun menuSetState(menu: DWMenu, cid: Int, state: Int)
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2757 {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2758 for(menuitem in menu.children) {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2759 if(menuitem.id == cid) {
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2760 // Handle DW_MIS_ENABLED/DISABLED
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2761 if((state and (1 or (1 shl 1))) != 0) {
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2762 var enabled = false
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2763
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2764 // Handle DW_MIS_ENABLED
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2765 if ((state and 1) != 0) {
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2766 enabled = true
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2767 }
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2768 menuitem.enabled = enabled
2642
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2769 if(menuitem.menuitem != null) {
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2770 runOnUiThread {
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2771 menuitem.menuitem!!.isEnabled = enabled
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2772 invalidateOptionsMenu()
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2773 }
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2774 }
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2775 }
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2776
2545
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2777 // Handle DW_MIS_CHECKED/UNCHECKED
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2778 if((state and ((1 shl 2) or (1 shl 3))) != 0) {
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2779 var checked = false
2545
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2780
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2781 // Handle DW_MIS_CHECKED
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2782 if ((state and (1 shl 2)) != 0) {
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2783 checked = true
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2784 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2785 menuitem.checked = checked
2642
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2786 if(menuitem.menuitem != null) {
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2787 runOnUiThread {
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2788 menuitem.menuitem!!.isChecked = checked
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2789 invalidateOptionsMenu()
3edc64443b71 Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2637
diff changeset
2790 }
2545
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2791 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2792 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2793 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2794 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2795 }
f803f3b164cf Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2544
diff changeset
2796
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2797 fun windowNew(title: String, style: Int): LinearLayout? {
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2798 var window: LinearLayout? = null
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2799
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2800 if(windowLayout != null) {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2801 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2802 val dataArrayMap = SimpleArrayMap<String, Long>()
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2803 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2804
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2805 setContentView(windowLayout)
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2806
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2807 window = LinearLayout(this)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2808 window!!.visibility = View.GONE
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2809 window!!.tag = dataArrayMap
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2810 window!!.layoutParams =
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2811 LinearLayout.LayoutParams(
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2812 LinearLayout.LayoutParams.MATCH_PARENT,
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2813 LinearLayout.LayoutParams.MATCH_PARENT
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2814 )
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2815
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2816 // Update our window list
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2817 adapter.viewList.add(window!!)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2818 windowTitles.add(title)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2819 windowMenuBars.add(null)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2820 windowStyles.add(style)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2821 windowDefault.add(null)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2822
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2823 // If this is our first/only window...
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2824 // We can set stuff immediately
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2825 if (adapter.viewList.count() == 1) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2826 this.title = title
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2827 windowLayout!!.setCurrentItem(0, false)
2670
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
2828 if((windowStyles[0] and 2) != 2) {
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
2829 supportActionBar?.hide()
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
2830 }
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2831 }
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
2832 adapter.notifyDataSetChanged()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2833 }
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2834 }
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2835 return window
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2836 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2837
2582
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2838 fun windowSetFocus(window: View)
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2839 {
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2840 waitOnUiThread {
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2841 window.requestFocus()
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2842 }
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2843 }
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2844
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2845 fun windowDefault(window: View, default: View)
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2846 {
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2847 if(windowLayout != null) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2848 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2849 val index = adapter.viewList.indexOf(window)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2850
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2851 if (index != -1) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2852 windowDefault[index] = default
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2853 }
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2854 }
2582
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2855 }
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2856
2790
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
2857 fun windowSetStyle(window: Any, style: Int, mask: Int)
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
2858 {
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
2859 // TODO: Need to handle menu items and others
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2860 waitOnUiThread {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2861 if (window is TextView && window !is EditText) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2862 val ourmask = (Gravity.HORIZONTAL_GRAVITY_MASK or Gravity.VERTICAL_GRAVITY_MASK) and mask
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2863
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2864 if (ourmask != 0) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2865 // Gravity with the masked parts zeroed out
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2866 val newgravity = style and ourmask
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2867
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2868 window.gravity = newgravity
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2869 }
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2870 }
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2871 }
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2872 }
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2873
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2874 fun windowFromId(window: View, cid: Int): View {
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2875 return window.findViewById(cid)
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2876 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2877
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2878 fun windowSetData(window: View, name: String, data: Long) {
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2879 if (window.tag != null) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2880 val dataArrayMap: SimpleArrayMap<String, Long> = window.tag as SimpleArrayMap<String, Long>
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2881
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2882 if (data != 0L) {
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2883 dataArrayMap.put(name, data)
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2884 } else {
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2885 dataArrayMap.remove(name)
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2886 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2887 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2888 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2889
2686
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2890 fun windowGetPreferredSize(window: View): Long
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2891 {
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2892 var retval: Long = 0
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2893
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2894 waitOnUiThread {
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2895 window.measure(0, 0)
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2896 val width = window.measuredWidth
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2897 val height = window.measuredHeight
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2898 retval = width.toLong() or (height.toLong() shl 32)
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2899 if(window is SeekBar) {
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2900 val slider = window as SeekBar
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2901
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2902 // If the widget is rotated, swap width and height
2687
42ff9d95e87b Android: Fix the logic error, had height and width reversed in bitfields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2686
diff changeset
2903 if(slider.rotation == 270F || slider.rotation == 90F) {
2686
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2904 retval = height.toLong() or (width.toLong() shl 32)
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2905 }
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2906 }
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2907 }
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2908 return retval
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2909 }
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
2910
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2911 fun windowGetData(window: View, name: String): Long {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
2912 var retval = 0L
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2913
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2914 if (window.tag != null) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2915 val dataArrayMap: SimpleArrayMap<String, Long> = window.tag as SimpleArrayMap<String, Long>
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2916
2557
756331246f94 Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2556
diff changeset
2917 if(dataArrayMap.containsKey(name)) {
756331246f94 Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2556
diff changeset
2918 retval = dataArrayMap.get(name)!!
756331246f94 Android: Implement Java exception handling, make sure all return values from JNI are sane.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2556
diff changeset
2919 }
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2920 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2921 return retval
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2922 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2923
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2924 fun windowSetEnabled(window: View, state: Boolean) {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2925 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2926 window.setEnabled(state)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2927 }
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
2928 }
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2929
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2930 fun typefaceFromFontName(fontname: String?): Typeface?
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2931 {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2932 if(fontname != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2933 val bold: Boolean = fontname.contains(" Bold")
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2934 val italic: Boolean = fontname.contains(" Italic")
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2935 val font = fontname.substringAfter('.')
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2936 var fontFamily = font
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
2937 val typeface: Typeface?
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2938
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2939 if (bold) {
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2940 fontFamily = font.substringBefore(" Bold")
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2941 } else if (italic) {
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2942 fontFamily = font.substringBefore(" Italic")
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2943 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2944
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2945 var style: Int = Typeface.NORMAL
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2946 if (bold && italic) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2947 style = Typeface.BOLD_ITALIC
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2948 } else if (bold) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2949 style = Typeface.BOLD
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2950 } else if (italic) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2951 style = Typeface.ITALIC
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2952 }
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2953 typeface = Typeface.create(fontFamily, style)
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2954
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2955 return typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2956 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2957 return Typeface.DEFAULT
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2958 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2959
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2960 fun windowSetFont(window: View, fontname: String?) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
2961 val typeface: Typeface? = typefaceFromFontName(fontname)
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2962 var size: Float? = null
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2963
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2964 if(fontname != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2965 size = fontname.substringBefore('.').toFloatOrNull()
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2966 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2967
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2968 if(typeface != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2969 waitOnUiThread {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2970 if (window is TextView) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2971 val textview: TextView = window
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2972 textview.typeface = typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2973 if(size != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2974 textview.textSize = size
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2975 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2976 } else if (window is Button) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2977 val button: Button = window
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2978 button.typeface = typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2979 if(size != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2980 button.textSize = size
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2981 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2982 } else if(window is DWRender) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2983 val render: DWRender = window
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2984 render.typeface = typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2985 if(size != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2986 render.fontsize = size
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2987 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2988 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2989 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2990 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2991 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
2992
2582
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2993 fun windowGetFont(window: View): String?
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2994 {
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2995 var fontname: String? = null
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2996
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2997 waitOnUiThread {
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2998 var typeface: Typeface? = null
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
2999 var fontsize: Float? = null
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3000
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3001 if(window is DWRender) {
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3002 typeface = window.typeface
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3003 fontsize = window.fontsize
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3004 } else if(window is TextView) {
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3005 typeface = window.typeface
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3006 fontsize = window.textSize
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3007 } else if(window is Button) {
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3008 typeface = window.typeface
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3009 fontsize = window.textSize
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3010 }
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3011
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3012 if(typeface != null && fontsize != null) {
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3013 val isize = fontsize.toInt()
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3014 val name = typeface.toString()
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3015
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3016 fontname = "$isize.$name"
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3017 }
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3018 }
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3019 return null
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3020 }
01fca1937806 Android: Implement dw_window_set_focus(), dw_window_default() and dw_window_get_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2581
diff changeset
3021
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3022 fun windowSetColor(window: View, fore: Int, falpha: Int, fred: Int, fgreen: Int, fblue: Int,
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3023 back: Int, balpha: Int, bred: Int, bgreen: Int, bblue: Int) {
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3024 var colorfore: Int = Color.rgb(fred, fgreen, fblue)
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3025 var colorback: Int = Color.rgb(bred, bgreen, bblue)
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3026
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3027 // DW_CLR_DEFAULT on background sets it transparent...
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3028 // so the background drawable shows through
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3029 if(back == 16) {
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3030 colorback = Color.TRANSPARENT
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3031 }
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3032
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3033 waitOnUiThread {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3034 if (window is TextView) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3035 val textview: TextView = window
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3036
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3037 // Handle DW_CLR_DEFAULT
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3038 if(fore == 16) {
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3039 val value = TypedValue()
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3040 this.theme.resolveAttribute(R.attr.editTextColor, value, true)
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3041 colorfore = value.data
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3042 }
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3043 textview.setTextColor(colorfore)
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3044 textview.setBackgroundColor(colorback)
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3045 } else if (window is Button) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3046 val button: Button = window
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3047
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3048 // Handle DW_CLR_DEFAULT
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3049 if(fore == 16) {
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3050 val value = TypedValue()
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3051 this.theme.resolveAttribute(R.attr.colorButtonNormal, value, true)
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3052 colorfore = value.data
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3053 }
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3054 button.setTextColor(colorfore)
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3055 button.setBackgroundColor(colorback)
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3056 } else if(window is LinearLayout) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3057 val box: LinearLayout = window
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3058
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3059 box.setBackgroundColor(colorback)
2677
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3060 } else if(window is DWListBox) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3061 val listbox = window as DWListBox
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3062
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3063 // Handle DW_CLR_DEFAULT
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3064 if(fore == 16) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3065 val value = TypedValue()
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3066 this.theme.resolveAttribute(R.attr.editTextColor, value, true)
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3067 colorfore = value.data
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3068 }
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3069
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3070 listbox.colorFore = colorfore
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3071 listbox.colorBack = colorback
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3072
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3073 listbox.setBackgroundColor(colorback)
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3074 } else if(window is ListView) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3075 val cont = window as ListView
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3076 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3077
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3078 // Handle DW_CLR_DEFAULT
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3079 if(fore == 16) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3080 val value = TypedValue()
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3081 this.theme.resolveAttribute(R.attr.editTextColor, value, true)
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3082 colorfore = value.data
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3083 }
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3084
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3085 adapter.foreColor = colorfore
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3086 adapter.backColor = colorback
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3087
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3088 cont.setBackgroundColor(colorback)
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3089 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3090 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3091 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3092
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3093 fun windowSetText(window: View, text: String) {
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3094 if(windowLayout != null) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3095 waitOnUiThread {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3096 if (window is TextView) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3097 val textview: TextView = window
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3098 textview.text = text
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3099 } else if (window is Button) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3100 val button: Button = window
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3101 button.text = text
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3102 } else if (window is LinearLayout) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3103 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3104 val index = adapter.viewList.indexOf(window)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3105
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3106 if(index != -1) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3107 windowTitles[index] = text
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3108 if(index == windowLayout!!.currentItem) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3109 this.title = text
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3110 }
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3111 }
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3112 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3113 }
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3114 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3115 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3116
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3117 fun windowGetText(window: View): String? {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3118 var text: String? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3119
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3120 if(windowLayout != null) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3121 waitOnUiThread {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3122 if (window is TextView) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3123 val textview: TextView = window
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3124 text = textview.text.toString()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3125 } else if (window is Button) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3126 val button: Button = window
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3127 text = button.text.toString()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3128 } else if (window is LinearLayout) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3129 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3130 val index = adapter.viewList.indexOf(window)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3131
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3132 if(index != -1) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3133 text = windowTitles[index]
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3134 }
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3135 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3136 }
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3137 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3138 return text
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3139 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3140
2667
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3141 private fun windowSwitchWindow(index: Int)
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3142 {
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3143 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3144
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3145 if (index != -1) {
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3146 val window = adapter.viewList[index] as View
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3147
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3148 // Only allow a window to become active if it is shown
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3149 if(window.visibility == View.VISIBLE) {
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3150 // Update the action bar title
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3151 this.title = windowTitles[index]
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3152 // Switch the visible view in the pager
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3153 if(adapter.recyclerView != null) {
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3154 adapter.recyclerView!!.scrollToPosition(index)
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3155 }
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3156 // This is how I prefered to do it, but it doesn't work...
2669
2ad924c6493d Android: Still need to call setCurrentItem() on ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2668
diff changeset
3157 // So using RecyclerView.scrollToPosition() also
2ad924c6493d Android: Still need to call setCurrentItem() on ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2668
diff changeset
3158 windowLayout!!.setCurrentItem(index, true)
2667
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3159
2670
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3160 // Hide or show the actionbar based on the titlebar flag
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3161 if((windowStyles[index] and 2) == 2) {
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3162 supportActionBar?.show()
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3163 } else {
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3164 supportActionBar?.hide()
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3165 }
2667
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3166 // If the new view has a default item, focus it
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3167 if(windowDefault[index] != null) {
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3168 windowDefault[index]?.requestFocus()
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3169 }
2668
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3170 // Add or remove a back button depending on the visible window
2670
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3171 if(index > 0 && (windowStyles[index] and 1) == 1) {
2668
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3172 this.actionBar?.setDisplayHomeAsUpEnabled(true)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3173 } else {
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3174 this.actionBar?.setDisplayHomeAsUpEnabled(false)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3175 }
2667
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3176 // Invalidate the menu, so it gets updated for the new window
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3177 invalidateOptionsMenu()
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3178 }
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3179 }
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3180 }
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3181
2503
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3182 fun windowHideShow(window: View, state: Int)
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3183 {
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3184 if(windowLayout != null) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3185 waitOnUiThread {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3186 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3187 val index = adapter.viewList.indexOf(window)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3188
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3189 if(state == 0) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3190 window.visibility = View.GONE
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3191 } else {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3192 window.visibility = View.VISIBLE
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3193 }
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
3194 adapter.notifyDataSetChanged()
2667
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3195 windowSwitchWindow(index)
2503
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3196 }
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3197 }
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3198 }
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3199
2796
0c534743b7a9 Android: Allow passing a menu window handle to dw_window_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2795
diff changeset
3200 fun windowDestroy(window: Any): Int {
2668
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3201 var retval: Int = 1 // DW_ERROR_GENERAL
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3202
2796
0c534743b7a9 Android: Allow passing a menu window handle to dw_window_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2795
diff changeset
3203 if(window is DWMenu) {
0c534743b7a9 Android: Allow passing a menu window handle to dw_window_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2795
diff changeset
3204 menuDestroy(window as DWMenu)
0c534743b7a9 Android: Allow passing a menu window handle to dw_window_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2795
diff changeset
3205 retval = 0 // DW_ERROR_NONE
0c534743b7a9 Android: Allow passing a menu window handle to dw_window_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2795
diff changeset
3206 } else if(windowLayout != null && window is View) {
2668
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3207 waitOnUiThread {
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3208 val adapter: DWTabViewPagerAdapter = windowLayout!!.adapter as DWTabViewPagerAdapter
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3209 val index = adapter.viewList.indexOf(window)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3210
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3211 // We need to have at least 1 window...
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3212 // so only destroy secondary windows
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3213 if(index > 0) {
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3214 val newindex = index - 1
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3215 val newwindow = adapter.viewList[newindex]
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3216
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3217 // Make sure the previous window is visible...
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3218 // not sure if we should search the list for a visible
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3219 // window or force it visible. Forcing visible for now.
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3220 if(newwindow.visibility != View.VISIBLE) {
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3221 newwindow.visibility = View.VISIBLE
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3222 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3223 // Switch to the previous window
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3224 windowSwitchWindow(newindex)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3225
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3226 // Update our window list
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3227 adapter.viewList.removeAt(index)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3228 windowTitles.removeAt(index)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3229 windowMenuBars.removeAt(index)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3230 windowStyles.removeAt(index)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3231 windowDefault.removeAt(index)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3232
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
3233 adapter.notifyDataSetChanged()
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
3234
2668
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3235 retval = 0 // DW_ERROR_NONE
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3236 } else {
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3237 // If we are removing an individual widget,
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3238 // find the parent layout and remove it.
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3239 if(window.parent is ViewGroup) {
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3240 val group = window.parent as ViewGroup
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3241
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3242 group.removeView(window)
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3243 retval = 0 // DW_ERROR_NONE
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3244 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3245 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3246 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3247 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3248 return retval
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3249 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3250
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3251 fun clipboardGetText(): String {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3252 val cm: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3253 val clipdata = cm.primaryClip
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3254
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3255 if (clipdata != null && clipdata.itemCount > 0) {
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3256 return clipdata.getItemAt(0).coerceToText(this).toString()
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3257 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3258 return ""
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3259 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3260
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3261 fun clipboardSetText(text: String) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3262 val cm: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3263 val clipdata = ClipData.newPlainText("text", text)
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3264
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3265 cm.setPrimaryClip(clipdata)
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3266 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3267
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3268 fun boxNew(type: Int, pad: Int): LinearLayout? {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3269 var box: LinearLayout? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3270 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3271 box = LinearLayout(this)
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3272 val dataArrayMap = SimpleArrayMap<String, Long>()
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3273
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3274 box!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3275 box!!.layoutParams =
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3276 LinearLayout.LayoutParams(
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3277 LinearLayout.LayoutParams.WRAP_CONTENT,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3278 LinearLayout.LayoutParams.WRAP_CONTENT
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3279 )
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3280 if (type > 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3281 box!!.orientation = LinearLayout.VERTICAL
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3282 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3283 box!!.orientation = LinearLayout.HORIZONTAL
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3284 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3285 box!!.setPadding(pad, pad, pad, pad)
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3286 }
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3287 return box
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3288 }
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3289
2689
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3290 fun groupBoxNew(type: Int, pad: Int, title: String?): LinearLayout? {
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3291 var box: LinearLayout? = null
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3292 waitOnUiThread {
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3293 box = RadioGroup(this)
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3294 val dataArrayMap = SimpleArrayMap<String, Long>()
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3295
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3296 box!!.tag = dataArrayMap
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3297 box!!.layoutParams =
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3298 LinearLayout.LayoutParams(
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3299 LinearLayout.LayoutParams.WRAP_CONTENT,
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3300 LinearLayout.LayoutParams.WRAP_CONTENT
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3301 )
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3302 if (type > 0) {
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3303 box!!.orientation = LinearLayout.VERTICAL
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3304 } else {
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3305 box!!.orientation = LinearLayout.HORIZONTAL
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3306 }
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3307 box!!.setPadding(pad, pad, pad, pad)
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3308 }
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3309 return box
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3310 }
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3311
2706
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3312 fun scrollBoxNew(type: Int, pad: Int): ScrollView? {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3313 var scrollBox: ScrollView? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3314
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3315 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3316 val box = LinearLayout(this)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3317 scrollBox = ScrollView(this)
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3318 val dataArrayMap = SimpleArrayMap<String, Long>()
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3319
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3320 scrollBox!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3321 box.layoutParams =
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3322 LinearLayout.LayoutParams(
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3323 LinearLayout.LayoutParams.MATCH_PARENT,
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3324 LinearLayout.LayoutParams.MATCH_PARENT
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3325 )
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3326 if (type > 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3327 box.orientation = LinearLayout.VERTICAL
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3328 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3329 box.orientation = LinearLayout.HORIZONTAL
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3330 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3331 box.setPadding(pad, pad, pad, pad)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3332 // Add a pointer back to the ScrollView
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3333 box.tag = scrollBox
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3334 scrollBox!!.addView(box)
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3335 }
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3336 return scrollBox
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3337 }
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3338
2706
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3339 fun scrollBoxGetPos(scrollBox: ScrollView, orient: Int): Int {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3340 var retval: Int = -1
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3341
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3342 waitOnUiThread {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3343 // DW_VERT 1
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3344 if(orient == 1) {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3345 retval = scrollBox.scrollY
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3346 } else {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3347 retval = scrollBox.scrollX
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3348 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3349 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3350 return retval
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3351 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3352
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3353 fun scrollBoxGetRange(scrollBox: ScrollView, orient: Int): Int {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3354 var retval: Int = -1
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3355
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3356 waitOnUiThread {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3357 // DW_VERT 1
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3358 if(orient == 1) {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3359 retval = scrollBox.getChildAt(0).height
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3360 } else {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3361 retval = scrollBox.getChildAt(0).width
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3362 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3363 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3364 return retval
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3365 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3366
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3367 // Update the layoutParams of a box after a change
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3368 private fun boxUpdate(box: LinearLayout)
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3369 {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3370 val parent = box.parent
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3371
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3372 if(parent is LinearLayout) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3373 val params = box.layoutParams as LinearLayout.LayoutParams
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3374
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3375 if(parent.orientation == LinearLayout.VERTICAL) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3376 if(params.height == 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3377 box.measure(0, 0)
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3378 val calch = box.measuredHeight
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3379
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3380 if(calch > 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3381 params.weight = calch.toFloat()
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3382 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3383 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3384 } else {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3385 if(params.width == 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3386 box.measure(0, 0)
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3387 val calcw = box.measuredWidth
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3388
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3389 if(calcw > 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3390 params.weight = calcw.toFloat()
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3391 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3392 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3393 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3394 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3395 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3396
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3397 fun boxPack(
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3398 boxview: View,
2675
a7868380098f Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2670
diff changeset
3399 packitem: View?,
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3400 index: Int,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3401 width: Int,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3402 height: Int,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3403 hsize: Int,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3404 vsize: Int,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3405 pad: Int
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3406 ) {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3407 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3408 var w: Int = LinearLayout.LayoutParams.WRAP_CONTENT
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3409 var h: Int = LinearLayout.LayoutParams.WRAP_CONTENT
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3410 var box: LinearLayout? = null
2675
a7868380098f Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2670
diff changeset
3411 var item: View? = packitem
a7868380098f Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2670
diff changeset
3412
a7868380098f Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2670
diff changeset
3413 // We can't pack nothing, so create an empty placeholder to pack
a7868380098f Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2670
diff changeset
3414 if(item == null) {
2688
c359cbd0b20f Android: Revert the change from Placeholder to View since it didn't solve the problem.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2687
diff changeset
3415 item = Placeholder(this)
c359cbd0b20f Android: Revert the change from Placeholder to View since it didn't solve the problem.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2687
diff changeset
3416 item.emptyVisibility = View.VISIBLE
2675
a7868380098f Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2670
diff changeset
3417 }
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3418
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3419 // Handle scrollboxes by pulling the LinearLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3420 // out of the ScrollView to pack into
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3421 if (boxview is LinearLayout) {
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
3422 box = boxview
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3423 } else if (boxview is ScrollView) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3424 val sv: ScrollView = boxview
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3425
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3426 if (sv.getChildAt(0) is LinearLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3427 box = sv.getChildAt(0) as LinearLayout
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3428 }
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3429 }
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3430
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3431 if (box != null) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
3432 var weight = 1F
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3433
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3434 // If it is a box, match parent based on direction
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3435 if ((item is LinearLayout) || (item is ScrollView)) {
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3436 item.measure(0, 0)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3437 if (box.orientation == LinearLayout.VERTICAL) {
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3438 if (hsize != 0) {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3439 w = LinearLayout.LayoutParams.MATCH_PARENT
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3440 }
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3441 if (vsize != 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3442 val calch = item.measuredHeight
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3443
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3444 if(calch > 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3445 weight = calch.toFloat()
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3446 } else {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3447 weight = 1F
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3448 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3449 h = 0
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3450 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3451 } else {
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3452 if (vsize != 0) {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3453 h = LinearLayout.LayoutParams.MATCH_PARENT
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3454 }
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3455 if (hsize != 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3456 val calcw = item.measuredWidth
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3457
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3458 if(calcw > 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3459 weight = calcw.toFloat()
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3460 } else {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3461 weight = 1F
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3462 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3463 w = 0
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3464 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3465 }
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3466 // If it isn't a box... set or calculate the size as needed
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3467 } else {
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3468 if(width != -1 || height != -1) {
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3469 item.measure(0, 0)
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3470 }
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3471 if(hsize == 0) {
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3472 if (width > 0) {
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3473 w = width
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3474 }
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3475 } else {
2575
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3476 if (box.orientation == LinearLayout.VERTICAL) {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3477 w = LinearLayout.LayoutParams.MATCH_PARENT
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3478 } else {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3479 if (width > 0) {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3480 weight = width.toFloat()
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3481 } else if (width == -1) {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3482 val newwidth = item.getMeasuredWidth()
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3483
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3484 if (newwidth > 0) {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3485 weight = newwidth.toFloat()
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3486 }
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3487 }
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3488 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3489 }
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3490 if(vsize == 0) {
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3491 if (height > 0) {
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3492 h = height
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3493 }
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3494 } else {
2575
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3495 if (box.orientation == LinearLayout.HORIZONTAL) {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3496 h = LinearLayout.LayoutParams.MATCH_PARENT
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3497 } else {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3498 if (height > 0) {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3499 weight = height.toFloat()
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3500 } else if (height == -1) {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3501 val newheight = item.getMeasuredHeight()
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3502
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3503 if (newheight > 0) {
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3504 weight = newheight.toFloat()
5beaaa4e9b03 Android: Improve the layout, if an item expands in the opposite direction of the box...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2574
diff changeset
3505 }
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3506 }
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3507 }
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3508 }
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3509 }
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3510
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3511 val params: LinearLayout.LayoutParams = LinearLayout.LayoutParams(w, h)
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3512
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3513 // Handle expandable items by giving them a weight...
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3514 // in the direction of the box.
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3515 if (box.orientation == LinearLayout.VERTICAL) {
2681
c1482518b643 Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2677
diff changeset
3516 if (vsize != 0 && weight > 0F) {
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3517 params.weight = weight
2681
c1482518b643 Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2677
diff changeset
3518 params.height = 0
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3519 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3520 } else {
2681
c1482518b643 Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2677
diff changeset
3521 if (hsize != 0 && weight > 0F) {
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3522 params.weight = weight
2681
c1482518b643 Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2677
diff changeset
3523 params.width = 0
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3524 }
2480
878d36588aaa Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2479
diff changeset
3525 }
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3526 // Gravity needs to match the expandable settings
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3527 val grav: Int = Gravity.CLIP_HORIZONTAL or Gravity.CLIP_VERTICAL
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3528 if (hsize != 0 && vsize != 0) {
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3529 params.gravity = Gravity.FILL or grav
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3530 } else if (hsize != 0) {
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3531 params.gravity = Gravity.FILL_HORIZONTAL or grav
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3532 } else if (vsize != 0) {
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3533 params.gravity = Gravity.FILL_VERTICAL or grav
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3534 }
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3535 // Finally add the padding
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3536 if (pad > 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3537 params.setMargins(pad, pad, pad, pad)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3538 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3539 item.layoutParams = params
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3540 box.addView(item, index)
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3541 boxUpdate(box)
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3542 }
2478
b0230e378667 Android: Improvements to boxPack to handle more parameters...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2477
diff changeset
3543 }
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3544 }
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3545
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3546 fun boxUnpack(item: View) {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3547 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3548 val box: LinearLayout = item.parent as LinearLayout
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3549 box.removeView(item)
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3550 boxUpdate(box)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3551 }
2477
3fbf8783122d Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2476
diff changeset
3552 }
3fbf8783122d Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2476
diff changeset
3553
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3554 fun boxUnpackAtIndex(box: LinearLayout, index: Int): View? {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3555 var item: View? = null
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3556
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3557 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3558 item = box.getChildAt(index)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3559 box.removeView(item)
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3560 boxUpdate(box)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3561 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3562 return item
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3563 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3564
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3565 fun buttonNew(text: String, cid: Int): Button? {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3566 var button: Button? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3567 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3568 button = Button(this)
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3569 val dataArrayMap = SimpleArrayMap<String, Long>()
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3570
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3571 button!!.tag = dataArrayMap
2590
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
3572 button!!.isAllCaps = false
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3573 button!!.text = text
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3574 button!!.id = cid
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3575 button!!.setOnClickListener {
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
3576 lastClickView = button!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
3577 eventHandlerSimple(button!!, DWEvent.CLICKED)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3578 }
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
3579 }
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3580 return button
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3581 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3582
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3583 fun bitmapButtonNew(text: String, resid: Int): ImageButton? {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3584 var button: ImageButton? = null
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3585 waitOnUiThread {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3586 button = ImageButton(this)
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3587 val dataArrayMap = SimpleArrayMap<String, Long>()
2653
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3588 var filename: String? = null
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3589
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3590 button!!.tag = dataArrayMap
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3591 button!!.id = resid
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3592 button!!.setOnClickListener {
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
3593 lastClickView = button!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
3594 eventHandlerSimple(button!!, DWEvent.CLICKED)
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3595 }
2653
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3596
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3597 if(resid > 0 && resid < 65536) {
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3598 filename = resid.toString()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
3599 } else {
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
3600 button!!.setImageResource(resid)
2653
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3601 }
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3602
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3603 if(filename != null) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
3604 for (ext in DWImageExts) {
2653
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3605 // Try to load the image, and protect against exceptions
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3606 try {
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3607 val f = this.assets.open(filename + ext)
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3608 val b = BitmapFactory.decodeStream(f)
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3609
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3610 if (b != null) {
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3611 button!!.setImageBitmap(b)
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3612 break
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3613 }
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3614 } catch (e: IOException) {
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3615 }
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3616 }
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3617 }
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3618 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3619 return button
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3620 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3621
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3622 fun bitmapButtonNewFromFile(text: String, cid: Int, filename: String): ImageButton? {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3623 var button: ImageButton? = null
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3624 waitOnUiThread {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3625 button = ImageButton(this)
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3626 val dataArrayMap = SimpleArrayMap<String, Long>()
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3627
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3628 button!!.tag = dataArrayMap
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3629 button!!.id = cid
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3630 button!!.setOnClickListener {
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
3631 lastClickView = button!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
3632 eventHandlerSimple(button!!, DWEvent.CLICKED)
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3633 }
2564
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3634
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
3635 for (ext in DWImageExts) {
2564
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3636 // Try to load the image, and protect against exceptions
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3637 try {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3638 val f = this.assets.open(filename + ext)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3639 val b = BitmapFactory.decodeStream(f)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3640
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3641 if(b != null) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3642 button!!.setImageBitmap(b)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3643 break
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3644 }
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3645 } catch (e: IOException) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3646 }
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3647 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3648 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3649 return button
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3650 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3651
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3652 fun bitmapButtonNewFromData(text: String, cid: Int, data: ByteArray, length: Int): ImageButton? {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3653 var button: ImageButton? = null
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3654 waitOnUiThread {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3655 button = ImageButton(this)
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3656 val dataArrayMap = SimpleArrayMap<String, Long>()
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3657 val b = BitmapFactory.decodeByteArray(data,0, length)
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3658
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3659 button!!.tag = dataArrayMap
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3660 button!!.id = cid
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3661 button!!.setOnClickListener {
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
3662 lastClickView = button!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
3663 eventHandlerSimple(button!!, DWEvent.CLICKED)
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3664 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3665 button!!.setImageBitmap(b)
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3666 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3667 return button
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3668 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3669
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3670 fun entryfieldNew(text: String, cid: Int, password: Int): EditText? {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3671 var entryfield: EditText? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3672
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3673 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3674 val dataArrayMap = SimpleArrayMap<String, Long>()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3675 entryfield = EditText(this)
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3676
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3677 entryfield!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3678 entryfield!!.id = cid
2554
4c75fb6089a9 Android: Need to set isSingleLine for entryfields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2553
diff changeset
3679 entryfield!!.isSingleLine = true
2702
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3680 entryfield!!.inputType = (InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3681 if (password > 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3682 entryfield!!.transformationMethod = PasswordTransformationMethod.getInstance()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3683 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3684 entryfield!!.setText(text)
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3685 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3686 return entryfield
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3687 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3688
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3689 fun entryfieldSetLimit(entryfield: EditText, limit: Long) {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3690 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3691 entryfield.filters = arrayOf<InputFilter>(LengthFilter(limit.toInt()))
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3692 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3693 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3694
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3695 fun radioButtonNew(text: String, cid: Int): RadioButton? {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3696 var radiobutton: RadioButton? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3697
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3698 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3699 val dataArrayMap = SimpleArrayMap<String, Long>()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3700 radiobutton = RadioButton(this)
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3701
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3702 radiobutton!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3703 radiobutton!!.id = cid
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3704 radiobutton!!.text = text
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3705 radiobutton!!.setOnClickListener {
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
3706 lastClickView = radiobutton!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
3707 eventHandlerSimple(radiobutton!!, DWEvent.CLICKED)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3708 }
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
3709 }
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3710 return radiobutton
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3711 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3712
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3713 fun checkboxNew(text: String, cid: Int): CheckBox? {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3714 var checkbox: CheckBox? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3715
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3716 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3717 val dataArrayMap = SimpleArrayMap<String, Long>()
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3718
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3719 checkbox = CheckBox(this)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3720 checkbox!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3721 checkbox!!.id = cid
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3722 checkbox!!.text = text
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3723 checkbox!!.setOnClickListener {
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
3724 lastClickView = checkbox!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
3725 eventHandlerSimple(checkbox!!, DWEvent.CLICKED)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3726 }
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
3727 }
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3728 return checkbox
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3729 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3730
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3731 fun checkOrRadioSetChecked(control: View, state: Int)
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3732 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3733 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3734 if (control is CheckBox) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3735 val checkbox: CheckBox = control
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3736 checkbox.isChecked = state != 0
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3737 } else if (control is RadioButton) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3738 val radiobutton: RadioButton = control
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3739 radiobutton.isChecked = state != 0
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3740 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3741 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3742 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3743
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3744 fun checkOrRadioGetChecked(control: View): Boolean
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3745 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
3746 var retval = false
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3747
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3748 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3749 if (control is CheckBox) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3750 val checkbox: CheckBox = control
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3751 retval = checkbox.isChecked
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3752 } else if (control is RadioButton) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3753 val radiobutton: RadioButton = control
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3754 retval = radiobutton.isChecked
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3755 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3756 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3757 return retval
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3758 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3759
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3760 fun textNew(text: String, cid: Int, status: Int): TextView? {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3761 var textview: TextView? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3762
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3763 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3764 val dataArrayMap = SimpleArrayMap<String, Long>()
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3765
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3766 textview = TextView(this)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3767 textview!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3768 textview!!.id = cid
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3769 textview!!.text = text
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3770 if (status != 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3771 val border = GradientDrawable()
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
3772
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3773 // Set a black border on white background...
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3774 // might need to change this to invisible...
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3775 // or the color from windowSetColor
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3776 border.setColor(-0x1)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3777 border.setStroke(1, -0x1000000)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3778 textview!!.background = border
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3779 }
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
3780 }
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3781 return textview
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3782 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3783
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3784 fun mleNew(cid: Int): EditText?
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3785 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3786 var mle: EditText? = null
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3787
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3788 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3789 val dataArrayMap = SimpleArrayMap<String, Long>()
2702
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3790 val inputType = (InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE)
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3791
2701
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
3792 mle = DWMLE(this)
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3793 mle!!.tag = dataArrayMap
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3794 mle!!.id = cid
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3795 mle!!.isSingleLine = false
2676
a43cf048ff17 Android: Fix what I thought was a MLE layout issue... but it turns out the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2675
diff changeset
3796 mle!!.maxLines = Integer.MAX_VALUE
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3797 mle!!.imeOptions = EditorInfo.IME_FLAG_NO_ENTER_ACTION
2702
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3798 mle!!.inputType = (inputType or InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS)
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3799 mle!!.isVerticalScrollBarEnabled = true
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3800 mle!!.scrollBarStyle = View.SCROLLBARS_INSIDE_INSET
2703
321e2cf1282a Android: Via testing, MLE is set to word wrap by default on most platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2702
diff changeset
3801 mle!!.setHorizontallyScrolling(false)
321e2cf1282a Android: Via testing, MLE is set to word wrap by default on most platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2702
diff changeset
3802 mle!!.isHorizontalScrollBarEnabled = false
2581
9dea42f27b0a Android: MLE should have TOP/LEFT gravity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2580
diff changeset
3803 mle!!.gravity = Gravity.TOP or Gravity.LEFT
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3804 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3805 return mle
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3806 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3807
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
3808 fun mleSetVisible(mle: EditText, line: Int)
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
3809 {
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
3810 waitOnUiThread {
2716
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
3811 val layout = mle.layout
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
3812
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
3813 if(layout != null) {
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
3814 val y: Int = layout.getLineTop(line)
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
3815
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
3816 mle.scrollTo(0, y)
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
3817 }
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
3818 }
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
3819 }
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
3820
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3821 fun mleSetWordWrap(mle: EditText, state: Int)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3822 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3823 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3824 if (state != 0) {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3825 mle.setHorizontallyScrolling(false)
2676
a43cf048ff17 Android: Fix what I thought was a MLE layout issue... but it turns out the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2675
diff changeset
3826 mle.isHorizontalScrollBarEnabled = false
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3827 } else {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3828 mle.setHorizontallyScrolling(true)
2676
a43cf048ff17 Android: Fix what I thought was a MLE layout issue... but it turns out the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2675
diff changeset
3829 mle.isHorizontalScrollBarEnabled = true
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3830 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3831 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3832 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3833
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3834 fun mleSetEditable(mle: EditText, state: Int)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3835 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3836 waitOnUiThread {
2676
a43cf048ff17 Android: Fix what I thought was a MLE layout issue... but it turns out the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2675
diff changeset
3837 mle.isFocusable = state != 0
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3838 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3839 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3840
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3841 fun mleSetCursor(mle: EditText, point: Int)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3842 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3843 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3844 mle.setSelection(point)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3845 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3846 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3847
2702
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3848 fun mleSetAutoComplete(mle: EditText, state: Int)
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3849 {
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3850 waitOnUiThread {
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3851 val inputType = (InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE)
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3852
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3853 // DW_MLE_COMPLETE_TEXT 1
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3854 if((state and 1) == 1) {
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3855 mle.inputType = (inputType or InputType.TYPE_TEXT_FLAG_AUTO_CORRECT)
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3856 } else {
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3857 mle.inputType = (inputType or InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS)
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3858 }
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3859 }
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3860 }
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
3861
2708
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3862 fun mleSearch(mle: EditText, text: String, point: Int, flags: Int): Int
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3863 {
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3864 var retval: Int = -1
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3865 var ignorecase: Boolean = true
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3866
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3867 // DW_MLE_CASESENSITIVE 1
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3868 if(flags == 1) {
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3869 ignorecase = false
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3870 }
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3871
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3872 waitOnUiThread {
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3873 retval = mle.text.indexOf(text, point, ignorecase)
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3874
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3875 if(retval > -1) {
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3876 mle.setSelection(retval, retval + text.length)
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3877 }
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3878 }
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3879 return retval
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3880 }
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
3881
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3882 fun mleClear(mle: EditText)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3883 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3884 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3885 mle.setText("")
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3886 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3887 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3888
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3889 fun mleImport(mle: EditText, text: String, startpoint: Int): Int
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3890 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3891 var retval: Int = startpoint
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3892
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3893 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3894 val origtext = mle.text
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3895 val origlen = origtext.toString().length
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3896
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3897 if(startpoint < 1) {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3898 val newtext = text + origtext.toString()
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3899
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3900 mle.setText(newtext)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3901 retval = origlen + text.length
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3902 } else if(startpoint >= origlen) {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3903 val newtext = origtext.toString() + text
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3904
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3905 mle.setText(newtext)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3906 retval = origlen + text.length
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3907 } else {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3908 val newtext = origtext.substring(0, startpoint) + text + origtext.substring(startpoint)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3909
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3910 mle.setText(newtext)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3911 retval = startpoint + text.length
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3912 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3913 mle.setSelection(retval)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3914 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3915 return retval
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3916 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3917
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3918 fun mleDelete(mle: EditText, startpoint: Int, length: Int)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3919 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3920 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3921 val origtext = mle.text
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3922 val newtext = origtext.substring(0, startpoint) + origtext.substring(startpoint + length)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3923
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3924 mle.setText(newtext)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3925 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3926 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
3927
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3928 fun notebookNew(cid: Int, top: Int): RelativeLayout?
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3929 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3930 var notebook: RelativeLayout? = null
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3931
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3932 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3933 val pager = ViewPager2(this)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3934 val tabs = TabLayout(this)
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3935 val w: Int = RelativeLayout.LayoutParams.MATCH_PARENT
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3936 val h: Int = RelativeLayout.LayoutParams.WRAP_CONTENT
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3937 val dataArrayMap = SimpleArrayMap<String, Long>()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3938
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3939 notebook = RelativeLayout(this)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3940 notebook!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3941 notebook!!.id = cid
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3942 tabs.id = View.generateViewId()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3943 pager.id = View.generateViewId()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3944 pager.adapter = DWTabViewPagerAdapter()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3945 TabLayoutMediator(tabs, pager) { tab, position ->
2692
231f9489a38a Android: Keep a list of tab titles in the ViewPager2 adapter and set titles in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2691
diff changeset
3946 val adapter = pager.adapter as DWTabViewPagerAdapter
231f9489a38a Android: Keep a list of tab titles in the ViewPager2 adapter and set titles in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2691
diff changeset
3947 tab.text = adapter.titleList[position]
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3948 }.attach()
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3949
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3950 var params: RelativeLayout.LayoutParams = RelativeLayout.LayoutParams(w, h)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3951 if (top != 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3952 params.addRule(RelativeLayout.ALIGN_PARENT_TOP)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3953 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3954 params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3955 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3956 tabs.tabGravity = TabLayout.GRAVITY_FILL
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3957 tabs.tabMode = TabLayout.MODE_FIXED
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3958 notebook!!.addView(tabs, params)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3959 params = RelativeLayout.LayoutParams(w, w)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3960 if (top != 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3961 params.addRule(RelativeLayout.BELOW, tabs.id)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3962 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3963 params.addRule(RelativeLayout.ABOVE, tabs.id)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3964 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3965 notebook!!.addView(pager, params)
2550
a8d90e2896bc Android: For the moment disable swiping to change notebook pages.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2547
diff changeset
3966 // TODO: Not sure if we want this all the time...
a8d90e2896bc Android: For the moment disable swiping to change notebook pages.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2547
diff changeset
3967 // Might want to make a flag for this
a8d90e2896bc Android: For the moment disable swiping to change notebook pages.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2547
diff changeset
3968 pager.isUserInputEnabled = false
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3969 tabs.addOnTabSelectedListener(object : OnTabSelectedListener {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3970 override fun onTabSelected(tab: TabLayout.Tab) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3971 val adapter = pager.adapter as DWTabViewPagerAdapter
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3972
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3973 pager.currentItem = tab.position
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
3974 eventHandlerNotebook(notebook!!, DWEvent.SWITCH_PAGE, adapter.pageList[tab.position])
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3975 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3976
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3977 override fun onTabUnselected(tab: TabLayout.Tab) {}
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3978 override fun onTabReselected(tab: TabLayout.Tab) {}
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3979 })
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
3980 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
3981 return notebook
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
3982 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
3983
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
3984 fun notebookPageNew(notebook: RelativeLayout, flags: Long, front: Int): Long
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
3985 {
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
3986 var pageID = 0L
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
3987
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3988 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3989 var pager: ViewPager2? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3990 var tabs: TabLayout? = null
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
3991
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3992 if (notebook.getChildAt(0) is ViewPager2 && notebook.getChildAt(1) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3993 pager = notebook.getChildAt(0) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3994 tabs = notebook.getChildAt(1) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3995 } else if (notebook.getChildAt(1) is ViewPager2 && notebook.getChildAt(0) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3996 pager = notebook.getChildAt(1) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3997 tabs = notebook.getChildAt(0) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3998 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3999
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4000 if (pager != null && tabs != null) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4001 val adapter: DWTabViewPagerAdapter = pager.adapter as DWTabViewPagerAdapter
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4002 val tab = tabs.newTab()
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4003
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4004 // Increment our page ID... making sure no duplicates exist
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4005 do {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4006 adapter.currentPageID += 1
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4007 } while (adapter.currentPageID == 0L || adapter.pageList.contains(adapter.currentPageID))
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4008 pageID = adapter.currentPageID
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4009 // Temporarily add a black tab with an empty layout/box
2682
856d3c8b559f Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2681
diff changeset
4010 val placeholder = LinearLayout(this)
856d3c8b559f Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2681
diff changeset
4011 placeholder.layoutParams = LinearLayout.LayoutParams(
856d3c8b559f Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2681
diff changeset
4012 LinearLayout.LayoutParams.MATCH_PARENT,
856d3c8b559f Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2681
diff changeset
4013 LinearLayout.LayoutParams.MATCH_PARENT
856d3c8b559f Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2681
diff changeset
4014 )
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4015 if (front != 0) {
2682
856d3c8b559f Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2681
diff changeset
4016 adapter.viewList.add(0, placeholder)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4017 adapter.pageList.add(0, pageID)
2692
231f9489a38a Android: Keep a list of tab titles in the ViewPager2 adapter and set titles in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2691
diff changeset
4018 adapter.titleList.add(0, null)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4019 tabs.addTab(tab, 0)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4020 } else {
2682
856d3c8b559f Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2681
diff changeset
4021 adapter.viewList.add(placeholder)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4022 adapter.pageList.add(pageID)
2692
231f9489a38a Android: Keep a list of tab titles in the ViewPager2 adapter and set titles in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2691
diff changeset
4023 adapter.titleList.add(null)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4024 tabs.addTab(tab)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4025 }
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4026 adapter.notifyDataSetChanged()
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4027 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4028 }
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4029 return pageID
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4030 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4031
2590
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4032 fun notebookCapsOff(view: View?) {
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4033 if (view !is ViewGroup) {
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4034 return
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4035 }
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4036 for (i in 0 until view.childCount) {
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4037 val child = view.getChildAt(i)
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4038 if (child is TextView) {
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4039 child.isAllCaps = false
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4040 } else {
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4041 notebookCapsOff(child)
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4042 }
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4043 }
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4044 }
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4045
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4046 fun notebookPageDestroy(notebook: RelativeLayout, pageID: Long)
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4047 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4048 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4049 var pager: ViewPager2? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4050 var tabs: TabLayout? = null
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4051
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4052 if (notebook.getChildAt(0) is ViewPager2 && notebook.getChildAt(1) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4053 pager = notebook.getChildAt(0) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4054 tabs = notebook.getChildAt(1) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4055 } else if (notebook.getChildAt(1) is ViewPager2 && notebook.getChildAt(0) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4056 pager = notebook.getChildAt(1) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4057 tabs = notebook.getChildAt(0) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4058 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4059
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4060 if (pager != null && tabs != null) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4061 val adapter: DWTabViewPagerAdapter = pager.adapter as DWTabViewPagerAdapter
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4062 val index = adapter.pageList.indexOf(pageID)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4063 val tab = tabs.getTabAt(index)
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4064
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4065 if (tab != null) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4066 adapter.viewList.removeAt(index)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4067 adapter.pageList.removeAt(index)
2692
231f9489a38a Android: Keep a list of tab titles in the ViewPager2 adapter and set titles in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2691
diff changeset
4068 adapter.titleList.removeAt(index)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4069 tabs.removeTab(tab)
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4070 adapter.notifyDataSetChanged()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4071 }
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4072 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4073 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4074 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4075
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4076 fun notebookPageSetText(notebook: RelativeLayout, pageID: Long, text: String)
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4077 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4078 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4079 var pager: ViewPager2? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4080 var tabs: TabLayout? = null
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4081
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4082 if (notebook.getChildAt(0) is ViewPager2 && notebook.getChildAt(1) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4083 pager = notebook.getChildAt(0) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4084 tabs = notebook.getChildAt(1) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4085 } else if (notebook.getChildAt(1) is ViewPager2 && notebook.getChildAt(0) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4086 pager = notebook.getChildAt(1) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4087 tabs = notebook.getChildAt(0) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4088 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4089
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4090 if (pager != null && tabs != null) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4091 val adapter: DWTabViewPagerAdapter = pager.adapter as DWTabViewPagerAdapter
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4092 val index = adapter.pageList.indexOf(pageID)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4093 val tab = tabs.getTabAt(index)
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4094
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4095 if (tab != null) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4096 tab.text = text
2692
231f9489a38a Android: Keep a list of tab titles in the ViewPager2 adapter and set titles in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2691
diff changeset
4097 adapter.titleList[index] = text
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4098 }
2590
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4099
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4100 notebookCapsOff(tabs)
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4101 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4102 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4103 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4104
2736
09775418c776 Android: Use "View" as the type for the viewList instead of LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2735
diff changeset
4105 fun notebookPagePack(notebook: RelativeLayout, pageID: Long, box: View)
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4106 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4107 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4108 var pager: ViewPager2? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4109 var tabs: TabLayout? = null
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4110
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4111 if (notebook.getChildAt(0) is ViewPager2 && notebook.getChildAt(1) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4112 pager = notebook.getChildAt(0) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4113 tabs = notebook.getChildAt(1) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4114 } else if (notebook.getChildAt(1) is ViewPager2 && notebook.getChildAt(0) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4115 pager = notebook.getChildAt(1) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4116 tabs = notebook.getChildAt(0) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4117 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4118
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4119 if (pager != null && tabs != null) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4120 val adapter: DWTabViewPagerAdapter = pager.adapter as DWTabViewPagerAdapter
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4121 val index = adapter.pageList.indexOf(pageID)
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4122
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4123 // Make sure the box is MATCH_PARENT
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4124 box.layoutParams = LinearLayout.LayoutParams(
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4125 LinearLayout.LayoutParams.MATCH_PARENT,
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4126 LinearLayout.LayoutParams.MATCH_PARENT
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4127 )
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4128
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4129 adapter.viewList[index] = box
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4130 adapter.notifyDataSetChanged()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4131 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4132 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4133 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4134
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4135 fun notebookPageGet(notebook: RelativeLayout): Long
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4136 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4137 var retval = 0L
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4138
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4139 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4140 var pager: ViewPager2? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4141 var tabs: TabLayout? = null
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4142
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4143 if (notebook.getChildAt(0) is ViewPager2 && notebook.getChildAt(1) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4144 pager = notebook.getChildAt(0) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4145 tabs = notebook.getChildAt(1) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4146 } else if (notebook.getChildAt(1) is ViewPager2 && notebook.getChildAt(0) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4147 pager = notebook.getChildAt(1) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4148 tabs = notebook.getChildAt(0) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4149 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4150
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4151 if (pager != null && tabs != null) {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4152 val adapter: DWTabViewPagerAdapter = pager.adapter as DWTabViewPagerAdapter
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4153 retval = adapter.pageList.get(tabs.selectedTabPosition)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4154 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4155 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4156 return retval
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4157 }
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4158
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4159 fun notebookPageSet(notebook: RelativeLayout, pageID: Long)
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4160 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4161 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4162 var pager: ViewPager2? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4163 var tabs: TabLayout? = null
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4164
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4165 if (notebook.getChildAt(0) is ViewPager2 && notebook.getChildAt(1) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4166 pager = notebook.getChildAt(0) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4167 tabs = notebook.getChildAt(1) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4168 } else if (notebook.getChildAt(1) is ViewPager2 && notebook.getChildAt(0) is TabLayout) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4169 pager = notebook.getChildAt(1) as ViewPager2
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4170 tabs = notebook.getChildAt(0) as TabLayout
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4171 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4172
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4173 if (pager != null && tabs != null) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4174 val adapter: DWTabViewPagerAdapter = pager.adapter as DWTabViewPagerAdapter
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4175 val index = adapter.pageList.indexOf(pageID)
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4176
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4177 if (index > -1 && index < adapter.pageList.count()) {
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4178 tabs.setScrollPosition(index, 0F, true)
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4179 pager.setCurrentItem(index, true)
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4180 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4181 }
2493
bca7e0ab0ccc Android: Work on the notebook control, doesn't work yet but everything filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2492
diff changeset
4182 }
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
4183 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
4184
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4185 fun splitBarNew(type: Int, topleft: View?, bottomright: View?, cid: Int): ConstraintLayout?
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4186 {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4187 var splitbar: ConstraintLayout? = null
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4188
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4189 waitOnUiThread {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4190 splitbar = ConstraintLayout(this)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4191 if(splitbar != null) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4192 val constraintSet = ConstraintSet()
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4193 val dataArrayMap = SimpleArrayMap<String, Long>()
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4194
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4195 constraintSet.clone(splitbar)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4196
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4197 splitbar!!.tag = dataArrayMap
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4198 splitbar!!.id = cid
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4199
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4200 // Add the special data to the array map
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4201 dataArrayMap.put("_dw_type", type.toLong())
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4202 dataArrayMap.put("_dw_percent", 50000000L)
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4203
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4204 // Place the top/left item
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4205 if(topleft != null) {
2651
7700c8022af3 Android: Unset ID is -1 on Android not 0, so generate a View ID if < 1 not just 0.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2650
diff changeset
4206 if(topleft.id < 1) {
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4207 topleft.id = View.generateViewId()
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4208 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4209 splitbar!!.addView(topleft)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4210 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4211 topleft.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4212 ConstraintLayout.LayoutParams.TOP,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4213 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4214 ConstraintLayout.LayoutParams.TOP
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4215 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4216 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4217 topleft.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4218 ConstraintLayout.LayoutParams.LEFT,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4219 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4220 ConstraintLayout.LayoutParams.LEFT
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4221 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4222
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4223 if (type == 0) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4224 // Horizontal
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4225 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4226 topleft.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4227 ConstraintLayout.LayoutParams.BOTTOM,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4228 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4229 ConstraintLayout.LayoutParams.BOTTOM
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4230 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4231 constraintSet.constrainPercentWidth(topleft.id, 0.5F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4232 } else {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4233 // Vertical
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4234 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4235 topleft.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4236 ConstraintLayout.LayoutParams.RIGHT,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4237 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4238 ConstraintLayout.LayoutParams.RIGHT
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4239 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4240 constraintSet.constrainPercentHeight(topleft.id, 0.5F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4241 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4242 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4243
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4244 // Place the bottom/right item
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4245 if(bottomright != null) {
2651
7700c8022af3 Android: Unset ID is -1 on Android not 0, so generate a View ID if < 1 not just 0.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2650
diff changeset
4246 if (bottomright.id < 1) {
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4247 bottomright.id = View.generateViewId()
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4248 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4249 splitbar!!.addView(bottomright)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4250 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4251 bottomright.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4252 ConstraintLayout.LayoutParams.BOTTOM,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4253 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4254 ConstraintLayout.LayoutParams.BOTTOM
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4255 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4256 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4257 bottomright.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4258 ConstraintLayout.LayoutParams.RIGHT,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4259 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4260 ConstraintLayout.LayoutParams.RIGHT
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4261 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4262
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4263 if (type == 0) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4264 // Horizontal
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4265 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4266 bottomright.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4267 ConstraintLayout.LayoutParams.TOP,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4268 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4269 ConstraintLayout.LayoutParams.TOP
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4270 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4271 constraintSet.constrainPercentWidth(bottomright.id, 0.5F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4272 } else {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4273 // Vertical
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4274 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4275 bottomright.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4276 ConstraintLayout.LayoutParams.LEFT,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4277 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4278 ConstraintLayout.LayoutParams.LEFT
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4279 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4280 constraintSet.constrainPercentHeight(bottomright.id, 0.5F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4281 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4282 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4283
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4284 // finally, apply the constraint set to layout
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4285 constraintSet.applyTo(splitbar)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4286 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4287 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4288 return splitbar
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4289 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4290
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4291 fun splitBarGet(splitbar: ConstraintLayout): Float {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4292 var position: Float = 50.0F
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4293
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4294 waitOnUiThread {
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4295 val dataArrayMap: SimpleArrayMap<String, Long> = splitbar.tag as SimpleArrayMap<String, Long>
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4296 var percent: Long = 50000000L
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4297
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4298 if(dataArrayMap.containsKey("_dw_percent")) {
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4299 percent = dataArrayMap.get("_dw_percent")!!
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4300 }
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4301
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4302 position = percent.toFloat() / 1000000.0F
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4303 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4304 return position
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4305 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4306
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4307 fun splitBarSet(splitbar: ConstraintLayout, position: Float) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4308 waitOnUiThread {
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4309 val dataArrayMap: SimpleArrayMap<String, Long> = splitbar.tag as SimpleArrayMap<String, Long>
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
4310 val percent: Float = position * 1000000.0F
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4311
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4312 if(percent > 0F) {
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4313 val topleft: View? = splitbar.getChildAt(0)
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4314 val bottomright: View? = splitbar.getChildAt(1)
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4315 val constraintSet = ConstraintSet()
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4316 var type: Long = 0L
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4317
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4318 if (dataArrayMap.containsKey("_dw_type")) {
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4319 type = dataArrayMap.get("_dw_type")!!
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4320 }
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4321 dataArrayMap.put("_dw_percent", percent.toLong())
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4322
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4323 constraintSet.clone(splitbar)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4324 if (topleft != null) {
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4325 if (type == 1L) {
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4326 constraintSet.constrainPercentHeight(topleft.id, position / 100.0F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4327 } else {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4328 constraintSet.constrainPercentWidth(topleft.id, position / 100.0F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4329 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4330 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4331 if (bottomright != null) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4332 val altper: Float = (100.0F - position) / 100.0F
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4333 if (type == 1L) {
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4334 constraintSet.constrainPercentHeight(bottomright.id, altper)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4335 } else {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4336 constraintSet.constrainPercentWidth(bottomright.id, altper)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4337 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4338 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4339 constraintSet.applyTo(splitbar)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4340 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4341 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4342 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4343
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4344 fun scrollBarNew(vertical: Int, cid: Int): DWSlider?
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4345 {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4346 var scrollbar: DWSlider? = null
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4347
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4348 waitOnUiThread {
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4349 val dataArrayMap = SimpleArrayMap<String, Long>()
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4350
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4351 scrollbar = DWSlider(this)
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4352 scrollbar!!.tag = dataArrayMap
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4353 scrollbar!!.id = cid
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4354 scrollbar!!.slider.max = 1
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4355 scrollbar!!.slider.progressTintList = null
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4356 scrollbar!!.slider.progressBackgroundTintList = null
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4357 if (vertical != 0) {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4358 scrollbar!!.slider.rotation = 90F
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4359 }
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4360 scrollbar!!.slider.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4361 override fun onStopTrackingTouch(seekBar: SeekBar) {
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4362 }
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4363
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4364 override fun onStartTrackingTouch(seekBar: SeekBar) {
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4365 }
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4366
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4367 override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4368 eventHandlerInt(scrollbar as View, DWEvent.VALUE_CHANGED, scrollbar!!.slider.progress, 0, 0, 0)
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4369 }
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4370 })
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4371 }
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4372 return scrollbar
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4373 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4374
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4375 fun sliderNew(vertical: Int, increments: Int, cid: Int): DWSlider?
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4376 {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4377 var slider: DWSlider? = null
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4378
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4379 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4380 val dataArrayMap = SimpleArrayMap<String, Long>()
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4381
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4382 slider = DWSlider(this)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4383 slider!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4384 slider!!.id = cid
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4385 slider!!.slider.max = increments
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4386 if (vertical != 0) {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4387 slider!!.slider.rotation = 90F
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4388 }
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4389 slider!!.slider.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4390 override fun onStopTrackingTouch(seekBar: SeekBar) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4391 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4392
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4393 override fun onStartTrackingTouch(seekBar: SeekBar) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4394 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4395
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4396 override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4397 eventHandlerInt(slider as View, DWEvent.VALUE_CHANGED, slider!!.slider.progress, 0, 0, 0)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4398 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4399 })
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4400 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4401 return slider
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4402 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4403
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4404 fun percentNew(cid: Int): ProgressBar?
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4405 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4406 var percent: ProgressBar? = null
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4407
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4408 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4409 val dataArrayMap = SimpleArrayMap<String, Long>()
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4410
2574
5b13bb267364 Android: Percent widget should be using horizontal ProgressBar.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2573
diff changeset
4411 percent = ProgressBar(this,null, R.attr.progressBarStyleHorizontal)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4412 percent!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4413 percent!!.id = cid
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4414 percent!!.max = 100
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4415 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4416 return percent
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4417 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4418
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4419 fun percentGetPos(percent: View): Int
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4420 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4421 var retval = 0
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4422
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4423 waitOnUiThread {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4424 var progress: ProgressBar
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4425
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4426 if(percent is ProgressBar) {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4427 progress = percent as ProgressBar
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4428 } else {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4429 val slider = percent as DWSlider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4430 progress = slider.slider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4431 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4432 retval = progress.progress
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4433 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4434 return retval
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4435 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4436
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4437 fun percentSetPos(percent: View, position: Int)
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4438 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4439 waitOnUiThread {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4440 var progress: ProgressBar
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4441
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4442 if(percent is ProgressBar) {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4443 progress = percent as ProgressBar
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4444 } else {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4445 val slider = percent as DWSlider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4446 progress = slider.slider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4447 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4448 progress.progress = position
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4449 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4450 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4451
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4452 fun percentSetRange(percent: View, range: Int)
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4453 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4454 waitOnUiThread {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4455 var progress: ProgressBar
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4456
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4457 if(percent is ProgressBar) {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4458 progress = percent as ProgressBar
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4459 } else {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4460 val slider = percent as DWSlider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4461 progress = slider.slider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4462 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4463 progress.max = range
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4464 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4465 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4466
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4467 fun htmlNew(cid: Int): WebView?
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4468 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4469 var html: WebView? = null
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4470
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4471 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4472 val dataArrayMap = SimpleArrayMap<String, Long>()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4473
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4474 html = WebView(this)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4475 html!!.tag = dataArrayMap
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4476 html!!.id = cid
2505
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
4477 // Configure a few settings to make it behave as we expect
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
4478 html!!.webViewClient = DWWebViewClient()
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
4479 html!!.settings.javaScriptEnabled = true
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4480 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4481 return html
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4482 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4483
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4484 fun htmlLoadURL(html: WebView, url: String)
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4485 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4486 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4487 html.loadUrl(url)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4488 }
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4489 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4490
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4491 fun htmlRaw(html: WebView, data: String)
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4492 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4493 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4494 val encodedHtml: String = Base64.encodeToString(data.toByteArray(), Base64.NO_PADDING)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4495 html.loadData(encodedHtml, "text/html", "base64")
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4496 }
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4497 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4498
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4499 fun htmlJavascriptRun(html: WebView, javascript: String, data: Long)
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4500 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4501 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4502 html.evaluateJavascript(javascript) { value ->
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4503 // Execute onReceiveValue's code
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
4504 eventHandlerHTMLResult(html, DWEvent.HTML_RESULT, value, data)
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4505 }
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4506 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4507 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4508
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4509 fun htmlAction(html: WebView, action: Int)
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4510 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4511 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4512 when (action) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4513 0 -> html.goBack()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4514 1 -> html.goForward()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4515 2 -> html.loadUrl("http://dwindows.netlabs.org")
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4516 4 -> html.reload()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4517 5 -> html.stopLoading()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4518 }
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4519 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4520 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4521
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4522 fun spinButtonNew(text: String, cid: Int): DWSpinButton?
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4523 {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4524 var spinbutton: DWSpinButton? = null
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4525
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4526 waitOnUiThread {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4527 val dataArrayMap = SimpleArrayMap<String, Long>()
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4528 val newval = text.toLongOrNull()
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4529
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4530 spinbutton = DWSpinButton(this)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4531 spinbutton!!.tag = dataArrayMap
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4532 spinbutton!!.id = cid
2702
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
4533 spinbutton!!.inputType = (InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS)
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4534 spinbutton!!.setText(text)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4535 if(newval != null) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4536 spinbutton!!.value = newval
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4537 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4538 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4539 return spinbutton
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4540 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4541
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4542 fun spinButtonSetPos(spinbutton: DWSpinButton, position: Long)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4543 {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4544 waitOnUiThread {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4545 spinbutton.value = position
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4546 spinbutton.setText(position.toString())
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4547 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4548 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4549
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4550 fun spinButtonSetLimits(spinbutton: DWSpinButton, upper: Long, lower: Long)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4551 {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4552 waitOnUiThread {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4553 spinbutton.maximum = upper
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4554 spinbutton.minimum = lower
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4555 if(spinbutton.value > upper) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4556 spinbutton.value = upper
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4557 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4558 if(spinbutton.value < lower) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4559 spinbutton.value = lower
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4560 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4561 spinbutton.setText(spinbutton.value.toString())
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4562 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4563 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4564
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4565 fun spinButtonGetPos(spinbutton: DWSpinButton): Long
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4566 {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4567 var retval: Long = 0
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4568
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4569 waitOnUiThread {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4570 val newvalue = spinbutton.text.toString().toLongOrNull()
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4571
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4572 if(newvalue == null) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4573 retval = spinbutton.value
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4574 } else {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4575 retval = newvalue
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4576 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4577 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4578 return retval
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4579 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4580
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4581 fun comboBoxNew(text: String, cid: Int): DWComboBox?
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4582 {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4583 var combobox: DWComboBox? = null
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4584
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4585 waitOnUiThread {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4586 val dataArrayMap = SimpleArrayMap<String, Long>()
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4587
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4588 combobox = DWComboBox(this)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4589 combobox!!.tag = dataArrayMap
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4590 combobox!!.id = cid
2702
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
4591 combobox!!.inputType = (InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS)
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
4592 combobox!!.setText(text)
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4593 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4594 return combobox
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4595 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4596
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4597 fun treeNew(cid: Int): DWTree?
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4598 {
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4599 var tree: DWTree? = null
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4600
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4601 waitOnUiThread {
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4602 tree = DWTree(this)
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4603 if(tree != null) {
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4604 val dataArrayMap = SimpleArrayMap<String, Long>()
2774
94af460bb954 Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2773
diff changeset
4605 val factory = object : DWTreeViewHolderFactory {
94af460bb954 Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2773
diff changeset
4606 override fun getTreeViewHolder(view: View?, layout: Int): DWTreeViewHolder {
94af460bb954 Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2773
diff changeset
4607 return DWTreeCustomViewHolder(view!!)
94af460bb954 Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2773
diff changeset
4608 }
94af460bb954 Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2773
diff changeset
4609 }
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4610 val treeViewAdapter = DWTreeViewAdapter(factory)
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4611 tree!!.tag = dataArrayMap
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4612 tree!!.id = cid
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4613 tree!!.adapter = treeViewAdapter
2782
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4614 tree!!.layoutManager = LinearLayoutManager(this)
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4615 treeViewAdapter.setTreeItemLongClickListener { treeitem: DWTreeItem?, view: View? ->
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4616 if(treeitem != null) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4617 eventHandlerTree(tree!!, DWEvent.ITEM_CONTEXT, treeitem,
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4618 treeitem.getTitle(), treeitem.getData())
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4619 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4620 true
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4621 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4622 treeViewAdapter.setTreeItemClickListener { treeitem: DWTreeItem?, view: View? ->
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4623 if(treeitem != null) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4624 eventHandlerTree(tree!!, DWEvent.ITEM_SELECT, treeitem,
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4625 treeitem.getTitle(), treeitem.getData())
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4626 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4627 true
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4628 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4629 treeViewAdapter.setTreeItemExpandListener { treeitem: DWTreeItem?, view: View? ->
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4630 if(treeitem != null) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4631 eventHandlerTreeItem(tree!!, DWEvent.TREE_EXPAND, treeitem)
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4632 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4633 true
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4634 }
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4635 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4636 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4637 return tree
2774
94af460bb954 Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2773
diff changeset
4638 }
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4639
2776
858155527b05 Android: Minor tree changes... mostly testing my system to push changes to GitHub.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2775
diff changeset
4640 fun treeInsertAfter(tree: DWTree, item: DWTreeItem?, title: String, icon: Drawable, parent: DWTreeItem?, itemdata: Long): DWTreeItem?
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4641 {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4642 var treeitem: DWTreeItem? = null
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4643
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4644 waitOnUiThread {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4645 var treeViewAdapter = tree.adapter as DWTreeViewAdapter
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4646
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4647 treeitem = DWTreeItem(title, icon, itemdata, parent)
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4648 if(parent == null) {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4649 tree.roots.add(treeitem!!)
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4650 } else {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4651 parent.addChild(treeitem!!)
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4652 }
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
4653 tree.updateTree()
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4654 }
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4655 return treeitem
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4656 }
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4657
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4658 fun treeGetTitle(tree: DWTree, item: DWTreeItem): String?
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4659 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4660 var retval: String? = null
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4661
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4662 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4663 retval = item.getTitle()
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4664 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4665 return retval
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4666 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4667
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4668 fun treeGetParent(tree: DWTree, item: DWTreeItem): DWTreeItem?
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4669 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4670 var retval: DWTreeItem? = null
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4671
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4672 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4673 retval = item.getParent()
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4674 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4675 return retval
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4676 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4677
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4678 fun treeItemChange(tree: DWTree, item: DWTreeItem, title: String?, icon: Drawable?)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4679 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4680 waitOnUiThread {
2782
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4681 var changed = false
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4682
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4683 if(title != null) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4684 item.setTitle(title)
2782
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4685 changed = true
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4686 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4687 if(icon != null) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4688 item.setIcon(icon)
2782
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4689 changed = true
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4690 }
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4691 if(changed == true) {
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4692 var treeViewAdapter = tree.adapter as DWTreeViewAdapter
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4693 treeViewAdapter.notifyDataSetChanged()
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4694 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4695 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4696 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4697
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4698 fun treeItemSetData(tree: DWTree, item: DWTreeItem, data: Long)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4699 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4700 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4701 item.setData(data)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4702 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4703 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4704
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4705 fun treeItemGetData(tree: DWTree, item: DWTreeItem): Long
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4706 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4707 var retval: Long = 0
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4708
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4709 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4710 retval = item.getData()
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4711 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4712 return retval
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4713 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4714
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4715 fun treeItemSelect(tree: DWTree, item: DWTreeItem)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4716 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4717 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4718 item.setSelected(true)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4719 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4720 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4721
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4722 fun treeItemExpand(tree: DWTree, item: DWTreeItem, state: Int)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4723 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4724 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4725 val treeViewAdapter = tree.adapter as DWTreeViewAdapter
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4726
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4727 if(state != 0) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4728 treeViewAdapter.expandNode(item)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4729 } else {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4730 treeViewAdapter.collapseNode(item)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4731 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4732 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4733 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4734
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4735 fun treeItemDelete(tree: DWTree, item: DWTreeItem)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4736 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4737 // TODO: Implement this
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4738 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4739
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4740 fun treeClear(tree: DWTree)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4741 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4742 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4743 val treeViewAdapter = tree.adapter as DWTreeViewAdapter
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4744 treeViewAdapter.clear()
2797
62837ceeec46 Android: Fix dw_tree_clear(), need to clear the roots too.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2796
diff changeset
4745 tree.roots.clear()
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4746 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4747 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4748
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4749 fun containerNew(cid: Int, multi: Int): ListView?
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4750 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4751 var cont: ListView? = null
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4752
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4753 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4754 val dataArrayMap = SimpleArrayMap<String, Long>()
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4755 val adapter = DWContainerAdapter(this)
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4756
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4757 cont = ListView(this)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4758 cont!!.tag = dataArrayMap
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4759 cont!!.id = cid
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4760 cont!!.adapter = adapter
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4761 if(multi != 0) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4762 cont!!.choiceMode = ListView.CHOICE_MODE_MULTIPLE
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4763 }
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4764 cont!!.setOnItemClickListener { parent, view, position, id ->
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4765 val title = adapter.model.getRowTitle(position)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4766 val data = adapter.model.getRowData(position)
2613
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4767 val now = System.currentTimeMillis()
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
4768 val rowView: DWContainerRow = view as DWContainerRow
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4769
2563
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4770 view.isSelected = !view.isSelected
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4771 rowView.toggle()
2563
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4772 adapter.selectedItem = position
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
4773 lastClickView = cont!!
2613
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4774 // If we are single select or we got a double tap...
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4775 // Generate an ENTER event
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4776 if(cont!!.choiceMode != ListView.CHOICE_MODE_MULTIPLE ||
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4777 (position == adapter.lastClickRow &&
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4778 (now - adapter.lastClick) < ViewConfiguration.getDoubleTapTimeout())) {
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
4779 eventHandlerContainer(cont!!, DWEvent.ITEM_ENTER, title, 0, 0, data)
2613
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4780 } else {
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4781 // If we are mutiple select, generate a SELECT event
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
4782 eventHandlerContainer(cont!!, DWEvent.ITEM_SELECT, title, 0, 0, data)
2613
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4783 }
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4784 adapter.lastClick = now
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
4785 adapter.lastClickRow = position
2563
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4786 }
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4787 cont!!.setOnContextClickListener {
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4788 if(adapter.selectedItem > -1 && adapter.selectedItem < adapter.model.numberOfRows()) {
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4789 val title = adapter.model.getRowTitle(adapter.selectedItem)
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4790 val data = adapter.model.getRowData(adapter.selectedItem)
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4791
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
4792 lastClickView = cont!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
4793 eventHandlerContainer(cont!!, DWEvent.ITEM_CONTEXT, title, 0, 0, data)
2563
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4794 }
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
4795 true
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4796 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4797 cont!!.setOnItemLongClickListener { parent, view, position, id ->
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4798 val title = adapter.model.getRowTitle(position)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4799 val data = adapter.model.getRowData(position)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4800
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
4801 lastClickView = cont!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
4802 eventHandlerContainer(cont!!, DWEvent.ITEM_CONTEXT, title, 0, 0, data)
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4803 true
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4804 }
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4805 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4806 return cont
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4807 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4808
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4809 fun containerSetStripe(cont: ListView, oddcolor: Long, evencolor: Long)
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4810 {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4811 waitOnUiThread {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4812 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4813
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4814 if(oddcolor == -1L) {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4815 adapter.oddColor = null
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4816 } else if(evencolor == -2L) {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4817 if(darkMode == 1) {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4818 adapter.oddColor = Color.rgb(100, 100, 100)
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4819 } else {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4820 adapter.oddColor = Color.rgb(230, 230, 230)
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4821 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4822 } else {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4823 adapter.oddColor = colorFromDW(oddcolor)
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4824 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4825 if(evencolor == -1L || evencolor == -2L) {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4826 adapter.evenColor = null
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4827 } else {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4828 adapter.evenColor = colorFromDW(evencolor)
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4829 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4830 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4831 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
4832
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4833 // Create a new SparseBooleanArray with only the true or false contents
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4834 private fun onlyBooleanArray(array: SparseBooleanArray, bool: Boolean): SparseBooleanArray
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4835 {
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4836 val newArray = SparseBooleanArray()
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4837
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4838 for (i in 0 until array.size()) {
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4839 if (array.valueAt(i) == bool) {
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4840 newArray.put(array.keyAt(i), bool)
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4841 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4842 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4843 return newArray
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4844 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4845
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4846 fun containerGetTitleStart(cont: ListView, flags: Int): String?
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4847 {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4848 var retval: String? = null
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4849
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4850 waitOnUiThread {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4851 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4852
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4853 // Handle DW_CRA_SELECTED
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4854 if((flags and 1) != 0) {
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4855 val checked: SparseBooleanArray = onlyBooleanArray(cont.checkedItemPositions, true)
2755
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4856
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4857 if(checked.size() > 0) {
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4858 val position = checked.keyAt(0)
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4859
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4860 adapter.model.querypos = position
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4861 retval = adapter.model.getRowTitle(position)
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4862 } else {
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4863 adapter.model.querypos = -1
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4864 }
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4865 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4866 if(adapter.model.rowdata.size == 0) {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4867 adapter.model.querypos = -1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4868 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4869 retval = adapter.model.getRowTitle(0)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4870 adapter.model.querypos = 0
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4871 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4872 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4873 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4874 return retval
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4875 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4876
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4877 fun containerGetTitleNext(cont: ListView, flags: Int): String?
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4878 {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4879 var retval: String? = null
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4880
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4881 waitOnUiThread {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4882 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4883
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4884 if(adapter.model.querypos != -1) {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4885 // Handle DW_CRA_SELECTED
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4886 if ((flags and 1) != 0) {
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4887 val checked: SparseBooleanArray = onlyBooleanArray(cont.checkedItemPositions, true)
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4888
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4889 // Otherwise loop until we find our current place
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4890 for (i in 0 until checked.size()) {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4891 // Item position in adapter
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4892 val position: Int = checked.keyAt(i)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4893
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4894 if (adapter.model.querypos == position && (i + 1) < checked.size()) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4895 val newpos = checked.keyAt(i + 1)
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4896
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4897 adapter.model.querypos = newpos
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4898 retval = adapter.model.getRowTitle(newpos)
2755
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4899 break
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4900 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4901 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4902 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4903 if (adapter.model.rowtitle.size > adapter.model.querypos) {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4904 adapter.model.querypos += 1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4905 retval = adapter.model.getRowTitle(adapter.model.querypos)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4906 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4907 adapter.model.querypos = -1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4908 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4909 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4910 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4911 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4912 return retval
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4913 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4914
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4915 fun containerGetDataStart(cont: ListView, flags: Int): Long
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4916 {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4917 var retval: Long = 0
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4918
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4919 waitOnUiThread {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4920 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4921
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4922 // Handle DW_CRA_SELECTED
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4923 if((flags and 1) != 0) {
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4924 val checked: SparseBooleanArray = onlyBooleanArray(cont.checkedItemPositions, true)
2755
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4925
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4926 if(checked.size() > 0) {
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4927 val position = checked.keyAt(0)
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4928
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4929 adapter.model.querypos = position
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4930 retval = adapter.model.getRowData(position)
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4931 } else {
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4932 adapter.model.querypos = -1
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4933 }
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4934 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4935 if(adapter.model.rowdata.size == 0) {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4936 adapter.model.querypos = -1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4937 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4938 retval = adapter.model.getRowData(0)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4939 adapter.model.querypos = 0
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4940 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4941 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4942 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4943 return retval
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4944 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4945
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4946 fun containerGetDataNext(cont: ListView, flags: Int): Long
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4947 {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4948 var retval: Long = 0
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4949
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4950 waitOnUiThread {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4951 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4952
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4953 if(adapter.model.querypos != -1) {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4954 // Handle DW_CRA_SELECTED
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4955 if ((flags and 1) != 0) {
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
4956 val checked: SparseBooleanArray = onlyBooleanArray(cont.checkedItemPositions, true)
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4957
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4958 // Otherwise loop until we find our current place
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4959 for (i in 0 until checked.size()) {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4960 // Item position in adapter
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4961 val position: Int = checked.keyAt(i)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4962
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4963 if (adapter.model.querypos == position && (i + 1) < checked.size()) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4964 val newpos = checked.keyAt(i + 1)
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4965
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4966 adapter.model.querypos = newpos
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4967 retval = adapter.model.getRowData(newpos)
2755
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
4968 break
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4969 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4970 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4971 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4972 if (adapter.model.rowdata.size > adapter.model.querypos) {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4973 adapter.model.querypos += 1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4974 retval = adapter.model.getRowData(adapter.model.querypos)
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4975 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4976 adapter.model.querypos = -1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4977 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4978 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4979 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4980 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4981 return retval
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4982 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
4983
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4984 fun containerAddColumn(cont: ListView, title: String, flags: Int)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4985 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4986 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4987 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4988
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4989 adapter.model.addColumn(title, flags)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4990 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4991 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4992
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4993 fun containerAlloc(cont: ListView, rowcount: Int): ListView
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4994 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4995 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4996 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4997 val rowStart = adapter.model.addRows(rowcount)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4998
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4999 windowSetData(cont, "_dw_rowstart", rowStart)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5000 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5001 return cont
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5002 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5003
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5004 fun containerChangeItemString(cont: ListView, column: Int, row: Int, text: String)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5005 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5006 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5007 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5008
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5009 adapter.model.setRowAndColumn(row, column, text)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5010 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5011 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5012
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5013 fun containerChangeItemIcon(cont: ListView, column: Int, row: Int, icon: Drawable)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5014 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5015 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5016 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5017
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5018 adapter.model.setRowAndColumn(row, column, icon)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5019 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5020 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5021
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5022 fun containerChangeItemInt(cont: ListView, column: Int, row: Int, num: Int)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5023 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5024 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5025 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5026
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5027 adapter.model.setRowAndColumn(row, column, num)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5028 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5029 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5030
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5031 fun containerChangeRowData(cont: ListView, row: Int, data: Long)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5032 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5033 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5034 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5035
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5036 adapter.model.changeRowData(row, data)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5037 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5038 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5039
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5040 fun containerChangeRowTitle(cont: ListView, row: Int, title: String?)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5041 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5042 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5043 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5044
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5045 adapter.model.changeRowTitle(row, title)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5046 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5047 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5048
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5049 fun containerRefresh(cont: ListView)
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5050 {
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5051 waitOnUiThread {
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5052 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5053
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5054 adapter.notifyDataSetChanged()
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5055 }
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5056 }
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5057
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5058 fun containerGetColumnType(cont: ListView, column: Int): Int
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5059 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5060 var type = 0
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5061
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5062 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5063 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5064
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5065 type = adapter.model.getColumnType(column)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5066 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5067 return type
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5068 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5069
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5070 fun containerDelete(cont: ListView, rowcount: Int)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5071 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5072 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5073 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5074
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5075 adapter.model.deleteRows(rowcount)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5076 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5077 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5078
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5079 fun containerRowDeleteByTitle(cont: ListView, title: String?)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5080 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5081 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5082 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5083
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5084 adapter.model.deleteRowByTitle(title)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5085 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5086 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5087
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5088 fun containerRowDeleteByData(cont: ListView, data: Long)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5089 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5090 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5091 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5092
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5093 adapter.model.deleteRowByData(data)
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5094 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5095 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5096
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5097 fun containerClear(cont: ListView)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5098 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5099 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5100 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5101
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5102 adapter.model.clear()
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5103 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5104 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5105
2709
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5106 fun containerScroll(cont: ListView, direction: Int, rows: Int)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5107 {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5108 waitOnUiThread {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5109 // DW_SCROLL_UP 0
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5110 if(direction == 0) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5111 cont.smoothScrollByOffset(-rows)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5112 // DW_SCROLL_DOWN 1
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5113 } else if(direction == 1) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5114 cont.smoothScrollByOffset(rows)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5115 // DW_SCROLL_TOP 2
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5116 } else if(direction == 2) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5117 cont.setSelection(0)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5118 cont.smoothScrollToPosition(0)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5119 // DW_SCROLL_BOTTOM 3
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5120 } else if(direction == 3) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5121 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5122 val pos = adapter.model.rowdata.size
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5123
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5124 if(pos > 0) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5125 cont.setSelection(pos - 1)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5126 cont.smoothScrollToPosition(pos - 1)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5127 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5128 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5129 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5130 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5131
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5132 fun containerCursor(cont: ListView, title: String?)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5133 {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5134 waitOnUiThread {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5135 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5136 val pos = adapter.model.positionByTitle(title)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5137
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5138 if(pos > -1) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5139 cont.setSelection(pos)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5140 cont.smoothScrollToPosition(pos)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5141 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5142
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5143 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5144 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5145
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5146 fun containerCursorByData(cont: ListView, rdata: Long)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5147 {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5148 waitOnUiThread {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5149 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5150 val pos = adapter.model.positionByData(rdata)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5151
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5152 if(pos > -1) {
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5153 cont.setSelection(pos)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5154 cont.smoothScrollToPosition(pos)
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5155 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5156
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5157 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5158 }
3cb5aa73dace Android: Implement dw_container_scroll(), dw_container_cursor() and dw_container_cursor_by_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2708
diff changeset
5159
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5160 fun listBoxNew(cid: Int, multi: Int): DWListBox?
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5161 {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5162 var listbox: DWListBox? = null
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5163
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5164 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5165 val dataArrayMap = SimpleArrayMap<String, Long>()
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5166
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5167 listbox = DWListBox(this)
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5168 listbox!!.tag = dataArrayMap
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5169 listbox!!.id = cid
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5170 if(multi != 0) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5171 listbox!!.choiceMode = ListView.CHOICE_MODE_MULTIPLE
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5172 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5173 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5174 return listbox
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5175 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5176
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5177 fun listOrComboBoxAppend(window: View, text: String)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5178 {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5179 waitOnUiThread {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5180 if(window is DWComboBox) {
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5181 val combobox = window
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5182
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5183 combobox.list.add(text)
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5184 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5185 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5186
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5187 listbox.list.add(text)
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5188 listbox.multiple.clear()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5189 val adapter = listbox.adapter as ArrayAdapter<String>
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5190 adapter.notifyDataSetChanged()
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5191 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5192 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5193 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5194
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5195 fun listOrComboBoxInsert(window: View, text: String, pos: Int)
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5196 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5197 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5198 if(window is DWComboBox) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5199 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5200
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5201 combobox.list.add(pos, text)
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5202 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5203 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5204
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5205 listbox.list.add(pos, text)
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5206 listbox.multiple.clear()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5207 val adapter = listbox.adapter as ArrayAdapter<String>
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5208 adapter.notifyDataSetChanged()
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5209 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5210 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5211 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5212
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5213 fun listOrComboBoxClear(window: View)
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5214 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5215 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5216 if(window is DWComboBox) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5217 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5218
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5219 combobox.list.clear()
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5220 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5221 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5222
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5223 listbox.list.clear()
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5224 listbox.multiple.clear()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5225 val adapter = listbox.adapter as ArrayAdapter<String>
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5226 adapter.notifyDataSetChanged()
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5227 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5228 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5229 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5230
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5231 fun listOrComboBoxCount(window: View): Int
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5232 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5233 var retval = 0
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5234
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5235 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5236 if(window is DWComboBox) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5237 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5238
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5239 retval = combobox.list.count()
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5240 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5241 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5242
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5243 retval = listbox.list.count()
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5244 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5245 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5246 return retval
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5247 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5248
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5249 fun listOrComboBoxSetText(window: View, index: Int, text: String)
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5250 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5251 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5252 if(window is DWComboBox) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5253 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5254
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5255 if(index > -1 && index < combobox.list.count())
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5256 combobox.list[index] = text
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5257 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5258 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5259
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5260 if(index > -1 && index < listbox.list.count()) {
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5261 listbox.list[index] = text
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5262 val adapter = listbox.adapter as ArrayAdapter<String>
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5263 adapter.notifyDataSetChanged()
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5264 }
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5265 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5266 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5267 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5268
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5269 fun listOrComboBoxGetText(window: View, index: Int): String?
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5270 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5271 var retval: String? = null
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5272
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5273 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5274 if(window is DWComboBox) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5275 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5276
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5277 if(index > -1 && index < combobox.list.count())
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5278 retval = combobox.list[index]
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5279 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5280 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5281
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5282 if(index > -1 && index < listbox.list.count())
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5283 retval = listbox.list[index]
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5284 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5285 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5286 return retval
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5287 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5288
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5289 fun listOrComboBoxGetSelected(window: View): Int
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5290 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5291 var retval: Int = -1
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5292
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5293 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5294 if(window is DWComboBox) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5295 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5296
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5297 retval = combobox.selected
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5298 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5299 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5300
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5301 retval = listbox.selected
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5302 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5303 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5304 return retval
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5305 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5306
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5307 fun listOrComboBoxSelect(window: View, index: Int, state: Int)
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5308 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5309 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5310 if(window is DWComboBox) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5311 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5312
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5313 if(index < combobox.list.count() && state != 0) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5314 combobox.selected = index
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5315 combobox.setText(combobox.list[index])
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5316 }
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5317 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5318 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5319
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5320 if(index < listbox.list.count()) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5321 if(state != 0) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5322 listbox.selected = index
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5323 listbox.setItemChecked(index, true)
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5324 } else {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5325 listbox.setItemChecked(index, false)
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5326 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5327 }
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5328 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5329 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5330 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5331
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5332 fun listOrComboBoxDelete(window: View, index: Int)
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5333 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5334 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5335 if(window is DWComboBox) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5336 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5337
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5338 if(index < combobox.list.count()) {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5339 combobox.list.removeAt(index)
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5340 }
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5341 } else if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5342 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5343
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5344 if(index < listbox.list.count()) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5345 listbox.list.removeAt(index)
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5346 listbox.multiple.clear()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5347 val adapter = listbox.adapter as ArrayAdapter<String>
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5348 adapter.notifyDataSetChanged()
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5349 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5350 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5351 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5352 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5353
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5354 fun listBoxSetTop(window: View, top: Int)
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5355 {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5356 waitOnUiThread {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5357 if(window is DWListBox) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5358 val listbox = window
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5359
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5360 if(top < listbox.list.count()) {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5361 listbox.smoothScrollToPosition(top)
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5362 }
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5363 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5364 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5365 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5366
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5367 fun listBoxSelectedMulti(window: View, where: Int): Int
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5368 {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5369 var retval: Int = -1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5370
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5371 waitOnUiThread {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5372 if(window is DWListBox) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5373 val listbox = window
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5374
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5375 // If we are starting over....
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5376 if(where == -1 && listbox.multiple.count() > 0) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5377 retval = listbox.multiple[0]
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5378 } else {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5379 // Otherwise loop until we find our current place
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5380 for (i in 0 until listbox.multiple.count()) {
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5381 // Item position in adapter
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5382 val position: Int = listbox.multiple[i]
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5383 // If we are at our current point... check to see
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5384 // if there is another one, and return it...
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5385 // otherwise we will return -1 to indicated we are done.
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5386 if (where == position && (i+1) < listbox.multiple.count()) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
5387 retval = listbox.multiple[i+1]
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5388 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5389 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5390 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5391 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5392 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5393 return retval
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5394 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5395
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5396 fun calendarNew(cid: Int): CalendarView?
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5397 {
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5398 var calendar: CalendarView? = null
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5399
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5400 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5401 val dataArrayMap = SimpleArrayMap<String, Long>()
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5402
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5403 calendar = CalendarView(this)
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5404 calendar!!.tag = dataArrayMap
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5405 calendar!!.id = cid
2524
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5406 calendar!!.setOnDateChangeListener { calendar, year, month, day ->
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5407 val c: Calendar = Calendar.getInstance()
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5408 c.set(year, month, day)
2524
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5409 calendar.date = c.timeInMillis
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5410 }
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5411 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5412
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5413 return calendar
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5414 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5415
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5416 fun calendarSetDate(calendar: CalendarView, date: Long)
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5417 {
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5418 waitOnUiThread {
2524
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5419 // Convert from seconds to milliseconds
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5420 calendar.setDate(date * 1000, true, true)
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5421 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5422 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5423
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5424 fun calendarGetDate(calendar: CalendarView): Long
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5425 {
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5426 var date: Long = 0
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5427
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5428 waitOnUiThread {
2524
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5429 // Convert from milliseconds to seconds
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5430 date = calendar.date / 1000
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5431 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5432 return date
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5433 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5434
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5435 fun bitmapNew(cid: Int): ImageView?
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5436 {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5437 var imageview: ImageView? = null
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5438
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5439 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5440 val dataArrayMap = SimpleArrayMap<String, Long>()
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5441
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5442 imageview = ImageView(this)
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5443 imageview!!.tag = dataArrayMap
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5444 imageview!!.id = cid
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5445 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5446
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5447 return imageview
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5448 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5449
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5450 fun windowSetBitmap(window: View, resID: Int, file: String?)
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5451 {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5452 waitOnUiThread {
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5453 var filename: String? = file
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5454
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5455 if(resID > 0 && resID < 65536) {
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5456 filename = resID.toString()
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5457 } else if(resID != 0) {
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5458 if (window is ImageButton) {
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5459 val button = window
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5460
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5461 button.setImageResource(resID)
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5462 } else if (window is ImageView) {
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5463 val imageview = window
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5464
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5465 imageview.setImageResource(resID)
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5466 }
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5467 }
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5468 if(filename != null) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
5469 for (ext in DWImageExts) {
2564
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5470 // Try to load the image, and protect against exceptions
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5471 try {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5472 val f = this.assets.open(filename + ext)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5473 val b = BitmapFactory.decodeStream(f)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5474
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5475 if(b != null) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5476 if (window is ImageButton) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5477 val button = window
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5478
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5479 button.setImageBitmap(b)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5480 } else if (window is ImageView) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5481 val imageview = window
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5482
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5483 imageview.setImageBitmap(b)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5484 }
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5485 break
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5486 }
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5487 } catch (e: IOException) {
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5488 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5489 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5490 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5491 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5492 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5493
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5494 fun windowSetBitmapFromData(window: View, resID: Int, data: ByteArray?, length: Int)
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5495 {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5496 waitOnUiThread {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5497 if(resID != 0) {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5498 if (window is ImageButton) {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5499 val button = window
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5500
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5501 button.setImageResource(resID)
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5502 } else if (window is ImageView) {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5503 val imageview = window
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5504
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5505 imageview.setImageResource(resID)
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5506 }
2655
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5507 }
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5508 if(data != null) {
2528
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5509 val b = BitmapFactory.decodeByteArray(data, 0, length)
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5510
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5511 if (window is ImageButton) {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5512 val button = window
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5513
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5514 button.setImageBitmap(b)
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5515 } else if (window is ImageView) {
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5516 val imageview = window
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5517
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5518 imageview.setImageBitmap(b)
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5519 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5520 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5521 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5522 }
03f6870bcfcc Android: Implement dw_bitmap_new(), dw_dwindow_set_bitmap() and dw_window_set_bitmap_from_data().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2527
diff changeset
5523
2652
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5524 fun iconNew(file: String?, data: ByteArray?, length: Int, resID: Int): Drawable?
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5525 {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5526 var icon: Drawable? = null
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5527
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5528 waitOnUiThread {
2655
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5529 var filename: String? = null
2652
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5530
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5531 // Handle Dynamic Windows resource IDs
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5532 if(resID > 0 && resID < 65536) {
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5533 filename = resID.toString()
2655
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5534 // Handle Android resource IDs
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5535 } else if(resID != 0) {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5536 try {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5537 icon = ResourcesCompat.getDrawable(resources, resID, null)
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5538 } catch (e: Resources.NotFoundException) {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5539 }
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5540 // Handle bitmap data
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5541 } else if(data != null) {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5542 icon = BitmapDrawable(resources, BitmapFactory.decodeByteArray(data, 0, length))
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5543 } else {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5544 filename = file
2652
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5545 }
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5546 // Handle filename or DW resource IDs
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5547 // these will be located in the assets folder
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5548 if(filename != null) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
5549 for (ext in DWImageExts) {
2564
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5550 // Try to load the image, and protect against exceptions
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5551 try {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5552 val f = this.assets.open(filename + ext)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5553 icon = Drawable.createFromStream(f, null)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5554 } catch (e: IOException) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5555 }
2652
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5556 if (icon != null) {
2564
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5557 break
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5558 }
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5559 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5560 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5561 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5562 return icon
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5563 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5564
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5565 fun pixmapNew(width: Int, height: Int, file: String?, data: ByteArray?, length: Int, resID: Int): Bitmap?
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5566 {
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5567 var pixmap: Bitmap? = null
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5568
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5569 waitOnUiThread {
2655
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5570 var filename: String? = null
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5571
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5572 if(width > 0 && height > 0) {
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5573 pixmap = Bitmap.createBitmap(null, width, height, Bitmap.Config.ARGB_8888)
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5574 } else if(resID > 0 && resID < 65536) {
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5575 filename = resID.toString()
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5576 } else if(resID != 0) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5577 pixmap = BitmapFactory.decodeResource(resources, resID)
2655
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5578 } else if(data != null) {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5579 pixmap = BitmapFactory.decodeByteArray(data, 0, length)
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5580 } else {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5581 filename = file
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5582 }
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5583 if(filename != null) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
5584 for (ext in DWImageExts) {
2564
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5585 // Try to load the image, and protect against exceptions
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5586 try {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5587 val f = this.assets.open(filename + ext)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5588 pixmap = BitmapFactory.decodeStream(f)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5589 } catch (e: IOException) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5590 }
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5591 if(pixmap != null) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5592 break
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5593 }
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5594 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5595 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5596 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5597 return pixmap
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5598 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5599
2727
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5600 fun printRun(print: Long, flags: Int, jobname: String, pages: Int, runflags: Int): PrintJob?
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5601 {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5602 var retval: PrintJob? = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5603
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5604 waitOnUiThread {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5605 // Get a PrintManager instance
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5606 val printManager = this.getSystemService(Context.PRINT_SERVICE) as PrintManager
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5607 // Setup our print adapter
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5608 val printAdapter = DWPrintDocumentAdapter()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5609 printAdapter.context = this
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5610 printAdapter.pages = pages
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5611 printAdapter.print = print
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5612 // Start a print job, passing in a PrintDocumentAdapter implementation
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5613 // to handle the generation of a print document
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5614 retval = printManager.print(jobname, printAdapter, null)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5615 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5616 return retval
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5617 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5618
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5619 fun printCancel(printjob: PrintJob)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5620 {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5621 waitOnUiThread {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5622 // Get a PrintManager instance
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5623 val printManager = this.getSystemService(Context.PRINT_SERVICE) as PrintManager
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5624 // Remove the job we earlier added from the queue
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5625 printManager.printJobs.remove(printjob)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5626 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5627 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5628
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5629 fun pixmapGetDimensions(pixmap: Bitmap): Long
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5630 {
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5631 var dimensions: Long = 0
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5632
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5633 waitOnUiThread {
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5634 dimensions = pixmap.width.toLong() or (pixmap.height.toLong() shl 32)
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5635 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5636 return dimensions
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5637 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5638
2542
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5639 fun screenGetDimensions(): Long
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5640 {
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5641 val dm = resources.displayMetrics
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5642 return dm.widthPixels.toLong() or (dm.heightPixels.toLong() shl 32)
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5643 }
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5644
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5645 fun renderNew(cid: Int): DWRender?
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5646 {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5647 var render: DWRender? = null
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5648
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5649 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5650 val dataArrayMap = SimpleArrayMap<String, Long>()
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5651
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5652 render = DWRender(this)
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5653 render!!.tag = dataArrayMap
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5654 render!!.id = cid
2608
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5655 render!!.setOnTouchListener(object : View.OnTouchListener {
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5656 @SuppressLint("ClickableViewAccessibility")
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5657 override fun onTouch(v: View, event: MotionEvent): Boolean {
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5658 when (event.action) {
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5659 MotionEvent.ACTION_DOWN -> {
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5660 render!!.evx = event.x
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5661 render!!.evy = event.y
2611
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5662 // Event will be generated in the onClickListener or
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5663 // onLongClickListener below, just save the location
2608
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5664 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5665 MotionEvent.ACTION_UP -> {
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5666 render!!.evx = event.x
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5667 render!!.evy = event.y
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
5668 lastClickView = render!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
5669 eventHandlerInt(render!!, DWEvent.BUTTON_RELEASE, event.x.toInt(), event.y.toInt(), render!!.button, 0)
2611
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5670 }
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5671 MotionEvent.ACTION_MOVE -> {
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5672 render!!.evx = event.x
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5673 render!!.evy = event.y
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
5674 lastClickView = render!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
5675 eventHandlerInt(render!!, DWEvent.MOTION_NOTIFY, event.x.toInt(), event.y.toInt(), 1, 0)
2608
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5676 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5677 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5678 return false
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5679 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5680 })
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5681 render!!.setOnLongClickListener{
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5682 // Long click functions as button 2
2611
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5683 render!!.button = 2
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
5684 lastClickView = render!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
5685 eventHandlerInt(render!!, DWEvent.BUTTON_PRESS, render!!.evx.toInt(), render!!.evy.toInt(), 2, 0)
2608
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5686 true
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5687 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5688 render!!.setOnClickListener{
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5689 // Normal click functions as button 1
2611
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5690 render!!.button = 1
2614
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
5691 lastClickView = render!!
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
5692 eventHandlerInt(render!!, DWEvent.BUTTON_PRESS, render!!.evx.toInt(), render!!.evy.toInt(), 1, 0)
2608
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5693 }
2596
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
5694 render!!.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
5695 if (event.action == KeyEvent.ACTION_DOWN) {
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
5696 eventHandlerKey(render!!, DWEvent.KEY_PRESS, keyCode, event.unicodeChar, event.modifiers, event.characters)
2596
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
5697 }
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
5698 false
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
5699 })
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5700 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5701 return render
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5702 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5703
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5704 fun renderRedraw(render: DWRender)
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5705 {
2539
822f814a54f4 Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2538
diff changeset
5706 runOnUiThread {
822f814a54f4 Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2538
diff changeset
5707 render.invalidate()
822f814a54f4 Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2538
diff changeset
5708 }
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5709 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5710
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5711 fun pixmapBitBlt(dstr: DWRender?, dstp: Bitmap?, dstx: Int, dsty: Int, dstw: Int, dsth: Int,
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5712 srcr: DWRender?, srcp: Bitmap?, srcy: Int, srcx: Int, srcw: Int, srch: Int): Int
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5713 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5714 val dst = Rect(dstx, dsty, dstx + dstw, dsty + dsth)
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5715 val src = Rect(srcx, srcy, srcx + srcw, srcy + srch)
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5716 var retval = 1
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5717
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5718 if(srcw == -1) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5719 src.right = srcx + dstw
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5720 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5721 if(srch == -1) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5722 src.bottom = srcy + dsth
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5723 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5724
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5725 waitOnUiThread {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5726 var canvas: Canvas? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5727 var bitmap: Bitmap? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5728
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5729 if(dstr != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5730 canvas = dstr.cachedCanvas
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5731 } else if(dstp != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5732 canvas = Canvas(dstp)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5733 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5734
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5735 if(srcp != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5736 bitmap = srcp
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5737 } else if(srcr != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5738 bitmap = Bitmap.createBitmap(srcr.layoutParams.width,
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5739 srcr.layoutParams.height, Bitmap.Config.ARGB_8888)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5740 val c = Canvas(bitmap)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5741 srcr.layout(srcr.left, srcr.top, srcr.right, srcr.bottom)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5742 srcr.draw(c)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5743 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5744
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5745 if(canvas != null && bitmap != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5746 canvas.drawBitmap(bitmap, src, dst, null)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5747 retval = 0
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5748 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5749 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5750 return retval
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5751 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5752
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5753 fun drawPoint(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, fgColor: Long, bgColor: Long)
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5754 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5755 waitOnUiThread {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5756 var canvas: Canvas? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5757
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5758 if(render != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5759 canvas = render.cachedCanvas
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5760 } else if(bitmap != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5761 canvas = Canvas(bitmap)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5762 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5763
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5764 if(canvas != null) {
2572
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5765 colorsSet(fgColor, bgColor)
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5766 canvas.drawPoint(x.toFloat(), y.toFloat(), Paint())
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5767 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5768 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5769 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5770
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5771 fun drawLine(render: DWRender?, bitmap: Bitmap?, x1: Int, y1: Int, x2: Int, y2: Int, fgColor: Long, bgColor: Long)
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5772 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5773 waitOnUiThread {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5774 var canvas: Canvas? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5775
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5776 if(render != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5777 canvas = render.cachedCanvas
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5778 } else if(bitmap != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5779 canvas = Canvas(bitmap)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5780 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5781
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5782 if(canvas != null) {
2572
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5783 colorsSet(fgColor, bgColor)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5784 paint.flags = 0
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5785 paint.style = Paint.Style.STROKE
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5786 canvas.drawLine(x1.toFloat(), y1.toFloat(), x2.toFloat(), y2.toFloat(), paint)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5787 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5788 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5789 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5790
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5791 fun fontTextExtentsGet(render: DWRender?, bitmap: Bitmap?, text:String, typeface: Typeface?, fontsize: Int, window: View?): Long
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5792 {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5793 var dimensions: Long = 0
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5794
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5795 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5796 val rect = Rect()
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5797
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5798 if (render != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5799 if (render.typeface != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5800 paint.typeface = render.typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5801 if (render.fontsize != null && render.fontsize!! > 0F) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5802 paint.textSize = render.fontsize!!
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5803 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5804 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5805 } else if (bitmap != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5806 if (typeface != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5807 paint.typeface = typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5808 if (fontsize > 0) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5809 paint.textSize = fontsize.toFloat()
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5810 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5811 } else if (window != null && window is DWRender) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5812 val secondary: DWRender = window
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5813
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5814 if (secondary.typeface != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5815 paint.typeface = secondary.typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5816 if (secondary.fontsize != null && secondary.fontsize!! > 0F) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5817 paint.textSize = secondary.fontsize!!
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5818 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5819 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5820 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5821 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5822 paint.getTextBounds(text, 0, text.length, rect)
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5823 val textheight = rect.bottom - rect.top
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5824 val textwidth = rect.right - rect.left
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5825 dimensions = textwidth.toLong() or (textheight.toLong() shl 32)
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5826 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5827 return dimensions
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5828 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5829
2572
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5830 fun drawText(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, text:String, typeface: Typeface?,
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5831 fontsize: Int, window: View?, fgColor: Long, bgColor: Long)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5832 {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5833 waitOnUiThread {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5834 var canvas: Canvas? = null
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5835
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5836 if(render != null && render.cachedCanvas != null) {
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5837 canvas = render.cachedCanvas
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5838 if(render.typeface != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5839 paint.typeface = render.typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5840 if(render.fontsize != null && render.fontsize!! > 0F) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5841 paint.textSize = render.fontsize!!
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5842 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5843 }
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5844 } else if(bitmap != null) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5845 canvas = Canvas(bitmap)
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5846 if(typeface != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5847 paint.typeface = typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5848 if(fontsize > 0) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5849 paint.textSize = fontsize.toFloat()
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5850 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5851 } else if(window != null && window is DWRender) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5852 val secondary: DWRender = window
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5853
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5854 if(secondary.typeface != null) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5855 paint.typeface = secondary.typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5856 if(secondary.fontsize != null && secondary.fontsize!! > 0F) {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5857 paint.textSize = secondary.fontsize!!
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5858 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5859 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
5860 }
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5861 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5862
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5863 if(canvas != null) {
2572
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5864 colorsSet(fgColor, bgColor)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5865 // Save the old color for later...
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5866 val rect = Rect()
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5867 paint.flags = 0
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5868 paint.style = Paint.Style.FILL_AND_STROKE
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5869 paint.textAlign = Paint.Align.LEFT
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5870 paint.getTextBounds(text, 0, text.length, rect)
2538
1b3b40c89cd0 Android: Move the text to below the point, not above it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2537
diff changeset
5871 val textheight = rect.bottom - rect.top
2637
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5872 if(bgcolor != null) {
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5873 val oldcolor = paint.color
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5874 // Prepare to draw the background rect
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5875 paint.color = bgcolor as Int
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5876 rect.top += y + textheight
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5877 rect.bottom += y + textheight
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5878 rect.left += x
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5879 rect.right += x
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5880 canvas.drawRect(rect, paint)
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5881 // Restore the color and prepare to draw text
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5882 paint.color = oldcolor
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
5883 }
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5884 paint.style = Paint.Style.STROKE
2538
1b3b40c89cd0 Android: Move the text to below the point, not above it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2537
diff changeset
5885 canvas.drawText(text, x.toFloat(), y.toFloat() + textheight.toFloat(), paint)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5886 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5887 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5888 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5889
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5890 fun drawRect(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, width: Int, height: Int, fgColor: Long, bgColor: Long)
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5891 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5892 waitOnUiThread {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5893 var canvas: Canvas? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5894
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5895 if(render != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5896 canvas = render.cachedCanvas
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5897 } else if(bitmap != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5898 canvas = Canvas(bitmap)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5899 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5900
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5901 if(canvas != null) {
2572
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5902 colorsSet(fgColor, bgColor)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5903 paint.flags = 0
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5904 paint.style = Paint.Style.FILL_AND_STROKE
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5905 canvas.drawRect(x.toFloat(), y.toFloat(), x.toFloat() + width.toFloat(), y.toFloat() + height.toFloat(), paint)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5906 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5907 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5908 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
5909
2572
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5910 fun drawPolygon(render: DWRender?, bitmap: Bitmap?, flags: Int, npoints: Int,
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5911 x: IntArray, y: IntArray, fgColor: Long, bgColor: Long)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5912 {
2537
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
5913 // Create a path with all our points
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
5914 val path = Path()
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5915
2537
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
5916 path.moveTo(x[0].toFloat(), y[0].toFloat())
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
5917 for (i in 1 until npoints) {
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
5918 path.lineTo(x[i].toFloat(), y[i].toFloat())
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5919 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5920
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5921 waitOnUiThread {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5922 var canvas: Canvas? = null
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5923
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5924 if(render != null) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5925 canvas = render.cachedCanvas
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5926 } else if(bitmap != null) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5927 canvas = Canvas(bitmap)
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5928 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5929
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5930 if(canvas != null) {
2572
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5931 colorsSet(fgColor, bgColor)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5932 // Handle the DW_DRAW_NOAA flag
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5933 if((flags and (1 shl 2)) == 0) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5934 paint.flags = Paint.ANTI_ALIAS_FLAG
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5935 } else {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5936 paint.flags = 0
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5937 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5938 // Handle the DW_DRAW_FILL flag
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5939 if((flags and 1) == 1) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5940 paint.style = Paint.Style.FILL_AND_STROKE
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5941 } else {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5942 paint.style = Paint.Style.STROKE
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5943 }
2537
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
5944 canvas.drawPath(path, paint)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5945 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5946 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5947 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5948
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5949 fun drawArc(render: DWRender?, bitmap: Bitmap?, flags: Int, xorigin: Int, yorigin: Int,
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5950 x1: Int, y1: Int, x2: Int, y2: Int, fgColor: Long, bgColor: Long)
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5951 {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5952 waitOnUiThread {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5953 var canvas: Canvas? = null
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5954
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5955 if(render != null) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5956 canvas = render.cachedCanvas
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5957 } else if(bitmap != null) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5958 canvas = Canvas(bitmap)
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5959 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5960
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5961 if(canvas != null) {
2572
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5962 colorsSet(fgColor, bgColor)
bbe693293be5 Android: New color handling system, save the color in the C API and pass
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2568
diff changeset
5963
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5964 // Handle the DW_DRAW_NOAA flag
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5965 if((flags and (1 shl 2)) == 0) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5966 paint.flags = Paint.ANTI_ALIAS_FLAG
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5967 } else {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5968 paint.flags = 0
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5969 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5970 // Handle the DW_DRAW_FILL flag
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5971 if((flags and 1) == 1) {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5972 paint.style = Paint.Style.FILL_AND_STROKE
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5973 } else {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5974 paint.style = Paint.Style.STROKE
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
5975 }
2536
d172ab2eddb6 Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2535
diff changeset
5976 // Handle the DW_DRAW_FULL flag
d172ab2eddb6 Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2535
diff changeset
5977 if((flags and (1 shl 1)) != 0) {
2576
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5978 var left: Float = x1.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5979 var top: Float = y1.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5980 var right: Float = x2.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5981 var bottom: Float = y2.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5982
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5983 if(x2 < x1) {
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5984 left = x2.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5985 right = x1.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5986 }
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5987 if(y2 < y1) {
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5988 top = y2.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5989 bottom = y1.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5990 }
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5991
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5992 canvas.drawOval(left, top, right, bottom, paint)
2536
d172ab2eddb6 Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2535
diff changeset
5993 } else {
2576
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5994 var a1: Double = Math.atan2((y1 - yorigin).toDouble(), (x1 - xorigin).toDouble())
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5995 var a2: Double = Math.atan2((y2 - yorigin).toDouble(), (x2 - xorigin).toDouble())
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5996 val dx = (xorigin - x1).toDouble()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5997 val dy = (yorigin - y1).toDouble()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5998 val r: Double = Math.sqrt(dx * dx + dy * dy)
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
5999 val left = (xorigin-r).toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6000 val top = (yorigin-r).toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6001 val rect = RectF(left, top, (left + (r*2)).toFloat(), (top + (r*2)).toFloat())
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6002
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6003 // Convert to degrees
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6004 a1 *= 180.0 / Math.PI
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6005 a2 *= 180.0 / Math.PI
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6006 val sweep = Math.abs(a1 - a2)
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6007
2536
d172ab2eddb6 Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2535
diff changeset
6008 canvas.drawArc(rect, a1.toFloat(), sweep.toFloat(), false, paint)
d172ab2eddb6 Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2535
diff changeset
6009 }
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6010 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6011 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6012 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6013
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6014 fun colorFromDW(color: Long): Int
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6015 {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6016 val red: Int = (color and 0x000000FF).toInt()
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6017 val green: Int = ((color and 0x0000FF00) shr 8).toInt()
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6018 val blue: Int = ((color and 0x00FF0000) shr 16).toInt()
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6019
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6020 return Color.rgb(red, green, blue)
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6021 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6022
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6023 fun colorsSet(fgColor: Long, bgColor: Long)
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6024 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6025 waitOnUiThread {
2580
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6026 paint.color = colorFromDW(fgColor)
2637
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6027 if(bgColor != -1L) {
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6028 this.bgcolor = colorFromDW(bgColor)
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6029 } else {
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6030 this.bgcolor = null
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6031 }
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6032 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6033 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6034
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6035 fun timerConnect(interval: Long, sigfunc: Long, data: Long): Timer
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6036 {
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6037 // creating timer task, timer
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6038 val t = Timer()
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6039 val tt: TimerTask = object : TimerTask() {
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6040 override fun run() {
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6041 if(eventHandlerTimer(sigfunc, data) == 0) {
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6042 t.cancel()
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6043 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6044 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6045 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6046 t.scheduleAtFixedRate(tt, interval, interval)
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6047 return t
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6048 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6049
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6050 fun timerDisconnect(timer: Timer)
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6051 {
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6052 timer.cancel()
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6053 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6054
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6055 fun doBeep(duration: Int)
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6056 {
2491
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6057 val toneGen = ToneGenerator(AudioManager.STREAM_ALARM, 100)
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6058 toneGen.startTone(ToneGenerator.TONE_CDMA_PIP, duration)
2491
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6059 val handler = Handler(Looper.getMainLooper())
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6060 handler.postDelayed({
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6061 toneGen.release()
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6062 }, (duration + 50).toLong())
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
6063 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
6064
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
6065 fun debugMessage(text: String)
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
6066 {
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
6067 Log.d(appID, text)
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
6068 }
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
6069
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6070 @Deprecated("Deprecated in Java")
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6071 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6072 super.onActivityResult(requestCode, resultCode, data)
2595
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6073 if(requestCode == 100) {
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6074 fileLock.lock()
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6075 if(resultCode == Activity.RESULT_OK) {
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6076 fileURI = data!!.data
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6077 } else {
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6078 fileURI = null
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6079 }
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6080 fileCond.signal()
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6081 fileLock.unlock()
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6082 }
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6083 }
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6084
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6085 fun getDataColumn(context: Context, uri: Uri?, selection: String?, selectionArgs: Array<String?>?): String? {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6086 var cursor: Cursor? = null
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6087 val column = "_data"
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6088 val projection = arrayOf(column)
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6089
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6090 try {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6091 cursor = context.contentResolver.query(
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6092 uri!!, projection, selection, selectionArgs,
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6093 null
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6094 )
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6095 if (cursor != null && cursor.moveToFirst()) {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6096 val index = cursor.getColumnIndexOrThrow(column)
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6097 return cursor.getString(index)
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6098 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6099 } finally {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6100 cursor?.close()
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6101 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6102 return null
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6103 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6104
2790
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6105 fun fileOpen(filename: String, mode: Int): Int
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6106 {
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6107 var retval: Int = -1
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6108 var uri = Uri.parse(filename)
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6109 var smode: String = "r"
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6110 var fd: ParcelFileDescriptor? = null
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6111
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6112 if((mode and OsConstants.O_WRONLY) == OsConstants.O_WRONLY) {
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6113 smode = "w"
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6114 } else if((mode and OsConstants.O_RDWR) == OsConstants.O_RDWR) {
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6115 smode = "rw"
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6116 }
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6117 try {
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6118 fd = contentResolver.openFileDescriptor(uri, smode)
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6119 } catch (e: FileNotFoundException) {
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6120 fd = null
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6121 }
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6122 if (fd != null) {
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6123 retval = fd.fd
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6124 }
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6125 return retval
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6126 }
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6127
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6128 // Defpath does not seem to be supported on Android using the ACTION_GET_CONTENT Intent
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6129 fun fileBrowseNew(title: String, defpath: String?, ext: String?, flags: Int): String?
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6130 {
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6131 var retval: String? = null
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6132 var permission = Manifest.permission.WRITE_EXTERNAL_STORAGE
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6133 var permissions: Int = -1
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6134
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6135 // Handle requesting permissions if necessary
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6136 permissions = ContextCompat.checkSelfPermission(this, permission)
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6137 if(permissions == -1) //PERMISSION_DENIED
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6138 {
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6139 // You can directly ask for the permission.
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6140 requestPermissions(arrayOf(permission), 100)
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6141 }
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6142
2595
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6143 // This can't be called from the main thread
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6144 if(Looper.getMainLooper() != Looper.myLooper()) {
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6145 var success = true
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6146
2595
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6147 fileLock.lock()
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6148 waitOnUiThread {
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6149 val fileintent = Intent(Intent.ACTION_GET_CONTENT)
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6150 // TODO: Filtering requires MIME types, not extensions
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6151 fileintent.type = "*/*"
2595
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6152 fileintent.addCategory(Intent.CATEGORY_OPENABLE)
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6153 try {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6154 startActivityForResult(fileintent, 100)
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6155 } catch (e: ActivityNotFoundException) {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6156 success = false
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6157 }
2595
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6158 }
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6159
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6160 if(success) {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6161 // Wait until the intent finishes.
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6162 fileCond.await()
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6163 fileLock.unlock()
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6164
2790
20d39af27aa4 Android: Add a new function for Android dw_file_open() which will open the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2789
diff changeset
6165 // Save the URI string for later use
2795
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6166 retval = fileURI.toString()
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6167
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6168 // If DW_DIRECTORY_OPEN or DW_FILE_PATH ... use the path not URI
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6169 if((flags and 65535) == 2 || ((flags shr 16) and 1) == 1) {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6170 if (DocumentsContract.isDocumentUri(this, fileURI)) {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6171 // ExternalStorageProvider
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6172 if (fileURI?.authority == "com.android.externalstorage.documents") {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6173 val docId = DocumentsContract.getDocumentId(fileURI)
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6174 val split = docId.split(":").toTypedArray()
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6175 retval = Environment.getExternalStorageDirectory()
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6176 .toString() + "/" + split[1]
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6177 } else if (fileURI?.authority == "com.android.providers.downloads.documents") {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6178 val id = DocumentsContract.getDocumentId(fileURI)
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6179 val contentUri = ContentUris.withAppendedId(
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6180 Uri.parse("content://downloads/public_downloads"),
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6181 java.lang.Long.valueOf(id)
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6182 )
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6183 retval = getDataColumn(this, contentUri, null, null)
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6184 } else if (fileURI?.authority == "com.android.providers.media.documents") {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6185 val docId = DocumentsContract.getDocumentId(fileURI)
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6186 val split = docId.split(":").toTypedArray()
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6187 val type = split[0]
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6188 var contentUri: Uri? = null
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6189 if ("image" == type) {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6190 contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6191 } else if ("video" == type) {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6192 contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6193 } else if ("audio" == type) {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6194 contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6195 }
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6196 val selection = "_id=?"
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6197 val selectionArgs = arrayOf<String?>(
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6198 split[1]
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6199 )
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6200 retval = getDataColumn(this, contentUri, selection, selectionArgs)
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6201 }
2795
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6202 } else if (fileURI?.scheme == "content") {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6203 retval = getDataColumn(this, fileURI, null, null)
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6204 }
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6205 // File
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6206 else if (fileURI?.scheme == "file") {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6207 retval = fileURI?.path
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6208 }
2795
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6209
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6210 // If we are opening a directory DW_DIRECTORY_OPEN
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6211 if (retval != null && (flags and 65535) == 2) {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6212 val split = retval.split("/")
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6213 val filename = split.last()
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6214
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6215 if (filename != null) {
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6216 val pathlen = retval.length
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6217 val filelen = filename.length
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6218
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6219 retval = retval.substring(0, pathlen - filelen - 1)
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6220 }
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6221 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6222 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6223 } else {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6224 // If we failed to start the intent... use old dialog
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6225 fileLock.unlock()
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6226 retval = fileBrowse(title, defpath, ext, flags)
2595
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6227 }
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6228 }
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6229 return retval
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6230 }
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6231
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6232 fun fileBrowse(title: String, defpath: String?, ext: String?, flags: Int): String?
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6233 {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6234 var retval: String? = null
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6235
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6236 waitOnUiThread {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6237 val fc = DWFileChooser(this)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6238 fc.setFileListener(object: DWFileChooser.FileSelectedListener {
2594
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6239 override fun fileSelected(file: File?) {
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6240 // do something with the file
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6241 retval = file!!.absolutePath
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6242 throw java.lang.RuntimeException()
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6243 }
2c15b3d41fe4 Android: Add preliminary new file browser that uses the system ACTION_GET_CONTENT Intent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2590
diff changeset
6244 })
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6245 if(ext != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6246 fc.setExtension(ext)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6247 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6248 fc.showDialog()
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6249 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6250
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6251 // loop till a runtime exception is triggered.
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6252 try {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6253 Looper.loop()
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6254 } catch (e2: RuntimeException) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6255 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6256
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6257 return retval
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6258 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6259
2735
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6260 // No reverse evaluate function to get the offset from a color in a range...
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6261 // So we do a hacky while loop to test offsets in the range to see if we can
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6262 // find the color and return the offset... return -1F on failure
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6263 fun colorSliderOffset(chosenColor: Int, startColor: Int, endColor: Int): Float
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6264 {
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6265 val argbEvaluator = android.animation.ArgbEvaluator()
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6266 var testOffset = 0F
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6267
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6268 while(testOffset <= 1F) {
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6269 val testColor = argbEvaluator.evaluate(testOffset, startColor, endColor) as Int
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6270
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6271 if(testColor == chosenColor) {
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6272 return testOffset
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6273 }
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6274 testOffset += 0.001F
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6275 }
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6276 return -1F
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6277 }
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6278
2714
26bb1e4a97d0 Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2713
diff changeset
6279 fun colorChoose(color: Int, alpha: Int, red: Int, green: Int, blue: Int): Int
26bb1e4a97d0 Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2713
diff changeset
6280 {
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6281 var retval: Int = color
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6282
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6283 // This can't be called from the main thread
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6284 if(Looper.getMainLooper() != Looper.myLooper()) {
2722
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6285 colorLock.lock()
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6286 waitOnUiThread {
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6287 val dialog = Dialog(this)
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6288 val colorWheel = ColorWheel(this, null, 0)
2733
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6289 val gradientBar = GradientSeekBar(this, null, 0)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6290 val display = View(this)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6291 val layout = RelativeLayout(this)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6292 val w = RelativeLayout.LayoutParams.MATCH_PARENT
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6293 val h = RelativeLayout.LayoutParams.WRAP_CONTENT
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6294 val margin = 10
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6295
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6296 colorWheel.id = View.generateViewId()
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6297 gradientBar.id = View.generateViewId()
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6298 display.id = View.generateViewId()
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6299 gradientBar.orientation = GradientSeekBar.Orientation.HORIZONTAL
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6300
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6301 var params: RelativeLayout.LayoutParams = RelativeLayout.LayoutParams(w, 100)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6302 params.addRule(RelativeLayout.ALIGN_PARENT_TOP)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6303 params.setMargins(margin,margin,margin,margin)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6304 layout.addView(display, params)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6305 params = RelativeLayout.LayoutParams(w, w)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6306 params.setMargins(margin,margin,margin,margin)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6307 params.addRule(RelativeLayout.BELOW, display.id)
2734
cd3c7740e352 Android: Attempt at some Color Chooser improvements... Fix layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2733
diff changeset
6308 params.addRule(RelativeLayout.ABOVE, gradientBar.id)
2733
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6309 layout.addView(colorWheel, params)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6310 params = RelativeLayout.LayoutParams(w, h)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6311 params.setMargins(margin,margin,margin,margin)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6312 params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6313 layout.addView(gradientBar, params)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6314
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6315 dialog.setContentView(layout)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6316 colorChosen = Color.rgb(red, green, blue)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6317 colorWheel.rgb = colorChosen
2734
cd3c7740e352 Android: Attempt at some Color Chooser improvements... Fix layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2733
diff changeset
6318 gradientBar.setBlackToColor(colorWheel.rgb)
2735
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6319 val testOffset = colorSliderOffset(colorChosen, gradientBar.startColor, gradientBar.endColor)
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6320 if(testOffset < 0F) {
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6321 // If our test method didn't work... convert to HSV
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6322 // and use the brightness value as the slider offset
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6323 var hsv = FloatArray(3)
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6324 Color.colorToHSV(colorChosen, hsv)
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6325 gradientBar.offset = hsv[2]
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6326 } else {
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6327 gradientBar.offset = testOffset
970cbcdb68f9 Android: This is kind of a hacky solution, but use a while loop to figure out...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2734
diff changeset
6328 }
2733
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6329 display.setBackgroundColor(colorChosen)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6330 colorWheel.colorChangeListener = { rgb: Int ->
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6331 gradientBar.setBlackToColor(rgb)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6332 display.setBackgroundColor(gradientBar.argb)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6333 colorChosen = gradientBar.argb
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6334 }
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6335 gradientBar.colorChangeListener = { offset: Float, argb: Int ->
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6336 display.setBackgroundColor(argb)
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6337 colorChosen = argb
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6338 }
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6339 dialog.window?.setLayout(
2733
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6340 ViewGroup.LayoutParams.MATCH_PARENT,
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6341 ViewGroup.LayoutParams.MATCH_PARENT
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6342 )
2722
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6343 dialog.setOnDismissListener {
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6344 colorLock.lock()
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6345 colorCond.signal()
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6346 colorLock.unlock()
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6347 }
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6348 dialog.show()
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6349 }
2722
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6350 colorCond.await()
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6351 retval = colorChosen
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6352 colorLock.unlock()
2714
26bb1e4a97d0 Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2713
diff changeset
6353 }
26bb1e4a97d0 Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2713
diff changeset
6354 return retval
26bb1e4a97d0 Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2713
diff changeset
6355 }
26bb1e4a97d0 Android: Add glue to bring up the color wheel when calling dw_color_choose().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2713
diff changeset
6356
2486
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6357 fun messageBox(title: String, body: String, flags: Int): Int
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6358 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6359 var retval = 0
2486
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6360
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6361 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6362 // make a text input dialog and show it
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
6363 val alert = AlertDialog.Builder(this)
2486
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6364
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6365 alert.setTitle(title)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6366 alert.setMessage(body)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6367 if ((flags and (1 shl 3)) != 0) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6368 alert.setPositiveButton("Yes"
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6369 )
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6370 //R.string.yes,
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6371 { _: DialogInterface, _: Int ->
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6372 retval = 1
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6373 throw java.lang.RuntimeException()
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6374 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6375 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6376 if ((flags and ((1 shl 1) or (1 shl 2))) != 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6377 alert.setNegativeButton(
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6378 R.string.ok
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6379 ) { _: DialogInterface, _: Int ->
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6380 retval = 0
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6381 throw java.lang.RuntimeException()
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6382 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6383 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6384 if ((flags and ((1 shl 3) or (1 shl 4))) != 0) {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6385 alert.setNegativeButton("No"
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6386 )
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6387 //R.string.no,
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6388 { _: DialogInterface, _: Int ->
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6389 retval = 0
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6390 throw java.lang.RuntimeException()
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6391 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6392 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6393 if ((flags and ((1 shl 2) or (1 shl 4))) != 0) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6394 alert.setNeutralButton(
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6395 R.string.cancel
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6396 ) { _: DialogInterface, _: Int ->
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6397 retval = 2
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6398 throw java.lang.RuntimeException()
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6399 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6400 }
2573
ea75e295025b Android: Make message boxes modal (not cancelable).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2572
diff changeset
6401 alert.setCancelable(false)
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6402 alert.show()
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6403
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6404 // loop till a runtime exception is triggered.
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6405 try {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6406 Looper.loop()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6407 } catch (e2: RuntimeException) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6408 }
2486
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6409 }
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6410 return retval
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6411 }
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6412
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6413 fun isUIThread(): Boolean
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6414 {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6415 if(Looper.getMainLooper() == Looper.myLooper()) {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6416 return true
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6417 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6418 return false
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6419 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6420
2514
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6421 fun mainSleep(milliseconds: Int)
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6422 {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6423 // If we are on the main UI thread... add an idle handler
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6424 // Then loop until we throw an exception when the time expires
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6425 // in the idle handler, if we are already thrown... remove the handler
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6426 if(Looper.getMainLooper() == Looper.myLooper()) {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6427 val starttime = System.currentTimeMillis()
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6428
2637
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6429 // Waiting for Idle to check for sleep expiration
2514
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6430 Looper.myQueue().addIdleHandler(object : MessageQueue.IdleHandler {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6431 var thrown: Boolean = false
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6432
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6433 override fun queueIdle(): Boolean {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6434 if(System.currentTimeMillis() - starttime >= milliseconds) {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6435 if (thrown == false) {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6436 thrown = true
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6437 throw java.lang.RuntimeException()
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6438 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6439 return false
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6440 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6441 return true
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6442 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6443 })
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6444
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6445 // loop till a runtime exception is triggered.
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6446 try {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6447 Looper.loop()
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6448 } catch (e2: RuntimeException) {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6449 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6450 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6451 else
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6452 {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6453 // If we are in a different thread just sleep
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6454 Thread.sleep(milliseconds.toLong())
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6455 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6456 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6457
2487
83f8f4f58a98 Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2486
diff changeset
6458 fun dwindowsExit(exitcode: Int)
83f8f4f58a98 Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2486
diff changeset
6459 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6460 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6461 this.finishAffinity()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6462 System.exit(exitcode)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6463 }
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
6464 }
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
6465
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
6466 fun dwindowsShutdown()
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
6467 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6468 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6469 this.finishAffinity()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6470 }
2487
83f8f4f58a98 Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2486
diff changeset
6471 }
83f8f4f58a98 Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2486
diff changeset
6472
2542
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6473 fun dwInit(appid: String, appname: String): Int
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6474 {
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
6475 appID = appid
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
6476
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6477 waitOnUiThread {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6478 // Create the notification channel in dw_init()
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6479 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6480 // Create the NotificationChannel
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6481 val importance = NotificationManager.IMPORTANCE_DEFAULT
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6482 val mChannel = NotificationChannel(appid, appname, importance)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6483 // Register the channel with the system; you can't change the importance
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6484 // or other notification behaviors after this
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6485 val notificationManager =
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6486 getSystemService(NOTIFICATION_SERVICE) as NotificationManager
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6487 notificationManager.createNotificationChannel(mChannel)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6488 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6489 }
2542
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6490 return Build.VERSION.SDK_INT
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6491 }
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6492
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6493 fun dwMain()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6494 {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6495 runOnUiThread {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6496 // Trigger the options menu to update when dw_main() is called
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6497 invalidateOptionsMenu()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6498 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6499 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6500
2542
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6501 fun androidGetRelease(): String
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6502 {
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6503 return Build.VERSION.RELEASE
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6504 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6505
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6506 fun notificationNew(title: String, imagepath: String, text: String, appid: String): NotificationCompat.Builder?
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6507 {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6508 var builder: NotificationCompat.Builder? = null
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6509
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6510 waitOnUiThread {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6511 builder = NotificationCompat.Builder(this, appid)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6512 .setContentTitle(title)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6513 .setContentText(text)
2715
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6514 .setSmallIcon(R.mipmap.sym_def_app_icon)
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6515 .setPriority(NotificationCompat.PRIORITY_DEFAULT)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6516 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6517 return builder
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6518 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6519
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6520 fun notificationSend(builder: NotificationCompat.Builder)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6521 {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6522 waitOnUiThread {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6523 notificationID += 1
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6524 with(NotificationManagerCompat.from(this)) {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6525 // notificationId is a unique int for each notification that you must define
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6526 notify(notificationID, builder.build())
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6527 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6528 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6529 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6530
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
6531 /*
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6532 * Native methods that are implemented by the 'dwindows' native library,
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6533 * which is packaged with this application.
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6534 */
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
6535 external fun dwindowsInit(dataDir: String, cacheDir: String, appid: String)
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
6536 external fun eventHandler(
2499
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6537 obj1: View?,
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
6538 obj2: View?,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
6539 message: Int,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
6540 str1: String?,
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
6541 str2: String?,
2499
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6542 inta: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6543 intb: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6544 intc: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6545 intd: Int
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
6546 ): Int
2499
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6547 external fun eventHandlerInt(
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6548 obj1: View,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6549 message: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6550 inta: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6551 intb: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6552 intc: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6553 intd: Int
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6554 )
2483
9f7af6d8c6a4 Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2482
diff changeset
6555 external fun eventHandlerSimple(obj1: View, message: Int)
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
6556 external fun eventHandlerNotebook(obj1: View, message: Int, pageID: Long)
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6557 external fun eventHandlerTimer(sigfunc: Long, data: Long): Int
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
6558 external fun eventHandlerHTMLResult(obj1: View, message: Int, result: String, data: Long)
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
6559 external fun eventHandlerContainer(obj1: View, message: Int, title: String?, x: Int, y: Int, data: Long)
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
6560 external fun eventHandlerTree(obj1: View, message: Int, item: DWTreeItem?, title: String?, data: Long)
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
6561 external fun eventHandlerTreeItem(obj1: View, message: Int, item: DWTreeItem?)
2596
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
6562 external fun eventHandlerKey(obj1: View, message: Int, character: Int, vk: Int, modifiers: Int, str: String)
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6563
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6564 companion object
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6565 {
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6566 // Used to load the 'dwindows' library on application startup.
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6567 init
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6568 {
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6569 System.loadLibrary("dwindows")
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6570 }
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6571 }
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6572 }