annotate android/DWindows.kt @ 2846:e6edeb2b63bc

Android: Fix container problems after a clear().
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 18 Oct 2022 02:38:51 +0000
parents 64c528d38fb8
children ca3cc0e1c563
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
2833
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
35 import android.text.format.DateFormat
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
36 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
37 import android.util.*
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
38 import android.util.Base64
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
39 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
40 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
41 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
42 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
43 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
44 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
45 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
46 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
47 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
48 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
49 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
50 import androidx.collection.SimpleArrayMap
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
51 import androidx.constraintlayout.widget.ConstraintLayout
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
52 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
53 import androidx.constraintlayout.widget.Placeholder
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
54 import androidx.core.app.NotificationCompat
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
55 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
56 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
57 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
58 import androidx.core.view.MenuCompat
2842
22dd09e90112 Android: Improve appearance of the container row by adding a 4 point margin.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2841
diff changeset
59 import androidx.core.view.setMargins
2782
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
60 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
61 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
62 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
63 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
64 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
65 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
66 import java.io.*
2833
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
67 import java.text.ParseException
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
68 import java.text.SimpleDateFormat
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
69 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
70 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
71 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
72 import java.util.zip.ZipFile
2713
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
73 import kotlin.math.*
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
74
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
75
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
76 // 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
77 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
78 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
79 private var parent: DWTreeItem?
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
80 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
81 private var level: Int
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
82 private var isExpanded: Boolean
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
83 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
84 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
85 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
86
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
87 fun addChild(child: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
88 child.setParent(this)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
89 child.setLevel(level + 1)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
90 children.add(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
91 updateNodeChildrenDepth(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
92 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
93
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
94 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
95 this.title = 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 getTitle(): String {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
99 return title
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 setIcon(icon: Drawable?) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
103 this.icon = 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 getIcon(): Drawable? {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
107 return icon
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 setData(data: Long) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
111 this.data = 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 getData(): Long {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
115 return data
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
116 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
117
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
118 fun getParent(): DWTreeItem? {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
119 return parent
2773
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 setParent(parent: DWTreeItem?) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
123 this.parent = parent
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 getChildren(): LinkedList<DWTreeItem> {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
127 return children
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 setLevel(level: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
131 this.level = 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 getLevel(): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
135 return level
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 setExpanded(expanded: Boolean) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
139 isExpanded = expanded
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 isExpanded(): Boolean {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
143 return isExpanded
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 setSelected(selected: Boolean) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
147 isSelected = selected
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 fun isSelected(): Boolean {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
151 return isSelected
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
152 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
153
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
154 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
155 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
156 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
157 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
158 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
159 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
160
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
161 init {
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
162 this.title = title
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
163 this.icon = icon
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
164 this.data = data
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
165 this.parent = parent
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
166 children = LinkedList()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
167 level = 0
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
168 isExpanded = false
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
169 isSelected = false
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
170 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
171 }
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
172
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
173 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
174 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
175 private var colorSelection = Color.DKGRAY
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
176 var expandCollapseView: ImageView = ImageView(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
177 var iconView: ImageView = ImageView(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
178 var textView: TextView = TextView(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
179
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
180 fun updateBackground() {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
181 if(mChecked) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
182 this.setBackgroundColor(colorSelection)
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
183 } else {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
184 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
185 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
186 }
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 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
189 mChecked = b
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
190 updateBackground()
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 isChecked(): Boolean {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
194 return mChecked
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
195 }
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 override fun toggle() {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
198 mChecked = !mChecked
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
199 updateBackground()
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
200 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
201
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
202 fun setup(context: Context?) {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
203 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
204 this.orientation = LinearLayout.HORIZONTAL
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
205 params.gravity = Gravity.CENTER
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
206 expandCollapseView.layoutParams = params
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
207 expandCollapseView.id = View.generateViewId()
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
208 this.addView(expandCollapseView)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
209 iconView.layoutParams = params
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
210 iconView.id = View.generateViewId()
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
211 this.addView(iconView)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
212 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
213 params.gravity = Gravity.CENTER
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
214 textView.layoutParams = params
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
215 textView.id = View.generateViewId()
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
216 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
217 colorSelection = context?.let { getPlatformSelectionColor(it) }!!
2781
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
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
220 constructor(context: Context?) : super(context) {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
221 setup(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
222 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
223 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
224 setup(context)
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 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
227 setup(context)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
228 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
229 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
230
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
231 class DWTreeItemManager {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
232 // 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
233 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
234
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
235 // 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
236 // @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
237 // @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
238 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
239 return rootsNodes[index]
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
240 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
241
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
242 // 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
243 // @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
244 // @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
245 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
246 return rootsNodes.add(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
247 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
248
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
249 // 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
250 // @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
251 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
252 rootsNodes.clear()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
253 rootsNodes.addAll(newNodes!!)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
254 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
255
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
256 // 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
257 // @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
258 // @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
259 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
260 return rootsNodes.remove(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
261 }
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 // Clear the current nodes
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
264 fun clearItems() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
265 rootsNodes.clear()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
266 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
267
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
268 // 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
269 // @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
270 fun size(): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
271 return rootsNodes.size
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
272 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
273
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
274 // 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
275 // @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
276 // @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
277 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
278 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
279 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
280 node.setExpanded(false)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
281 val deletedParents: LinkedList<DWTreeItem> =
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
282 LinkedList(node.getChildren())
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
283 rootsNodes.removeAll(node.getChildren())
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
284 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
285 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
286 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
287 deletedParents.add(iNode)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
288 deletedParents.addAll(iNode.getChildren())
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
289 }
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 rootsNodes.removeAll(deletedParents)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
292 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
293 return position
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
294 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
295
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
296 // 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
297 // @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
298 // @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
299 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
300 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
301 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
302 node.setExpanded(true)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
303 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
304 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
305 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
306 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
307 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
308 return position
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
309 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
310
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
311 // 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
312 // 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
313 // @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
314 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
315 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
316 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
317 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
318 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
319 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
320 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
321 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
322 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
323
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
324 // @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
325 // @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
326 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
327 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
328 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
329 node.setExpanded(false)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
330 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
331 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
332 rootsNodes.remove(child)
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 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
335 return position
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
336 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
337
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
338 // Expanding node full branches
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
339 // @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
340 // @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
341 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
342 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
343 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
344 node.setExpanded(true)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
345 var index = position + 1
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
346 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
347 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
348 rootsNodes.add(index, child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
349 expandItemBranch(child)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
350 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
351 val diff = after - before
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
352 index += diff
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 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
355 return position
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
356 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
357
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
358 // 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
359 // @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
360 // @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
361 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
362 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
363 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
364 expandItemToLevel(child, level)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
365 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
366 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
367
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
368 //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
369 //@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
370 fun expandItemsAtLevel(level: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
371 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
372 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
373 expandItemToLevel(node, level)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
374 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
375 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
376
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
377 // 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
378 fun collapseAll() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
379 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
380 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
381 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
382 if (root.getLevel() === 0) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
383 collapseItemBranch(root)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
384 treeItems.add(root)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
385 } else {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
386 root.setExpanded(false)
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 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
389 updateItems(treeItems)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
390 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
391
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
392 // 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
393 fun expandAll() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
394 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
395 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
396 expandItemBranch(root)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
397 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
398 }
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 // Simple constructor
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
401 init {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
402 rootsNodes = LinkedList()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
403 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
404 }
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 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
407 // 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
408 // @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
409
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
410 // 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
411 // @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
412
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
413 // 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
414 var nodePadding = 50
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
415
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
416 // 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
417 // @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
418 fun bindTreeItem(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
419 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
420 val treeItemView = itemView as DWTreeItemView
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
421
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
422 treeItemView.setPadding(
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
423 padding,
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
424 treeItemView.paddingTop,
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
425 treeItemView.paddingRight,
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
426 treeItemView.paddingBottom
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
427 )
2781
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
428 treeItemView.textView.text = node.getTitle()
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
429 treeItemView.iconView.setImageDrawable(node.getIcon())
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
430 if(node.getChildren().size == 0) {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
431 treeItemView.expandCollapseView.setImageDrawable(null)
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
432 } else {
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
433 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
434 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
435 } 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
436 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
437 }
c28602443759 Android: Add DWTreeItemView class based on LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2777
diff changeset
438 }
2798
a3d62de81ec0 Android: Changes to highlight the selected node of the tree widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2797
diff changeset
439 treeItemView.isChecked = node.isSelected()
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
440 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
441 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
442
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
443 interface DWTreeViewHolderFactory {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
444 // 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
445 // @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
446 // @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
447 // @return A TreeViewHolder instance
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
448 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
449 }
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 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
452 fun bindTreeNode(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
453 super.bindTreeItem(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
454 // 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
455 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
456 }
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 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
459 // 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
460 // 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
461 private val treeItemManager: DWTreeItemManager
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
462
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
463 // 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
464 private val treeViewHolderFactory: DWTreeViewHolderFactory
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
465
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
466 // 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
467 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
468
2798
a3d62de81ec0 Android: Changes to highlight the selected node of the tree widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2797
diff changeset
469 // The current selected Tree Item
a3d62de81ec0 Android: Changes to highlight the selected node of the tree widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2797
diff changeset
470 private var currentSelectedItemView: DWTreeItemView? = null
a3d62de81ec0 Android: Changes to highlight the selected node of the tree widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2797
diff changeset
471
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
472 // 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
473 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
474
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
475 // 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
476 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
477
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
478 // 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
479 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
480
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
481 // Simple constructor
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
482 // @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
483 constructor(factory: DWTreeViewHolderFactory) {
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 = DWTreeItemManager()
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 // 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
489 // @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
490 // @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
491 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
492 treeViewHolderFactory = factory
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
493 treeItemManager = manager
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
494 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
495
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
496 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
497 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
498 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
499 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
500
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
501 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
502 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
503 holder.bindTreeItem(currentNode)
2799
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
504 val treeItemView = holder.itemView as DWTreeItemView
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
505
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
506 // Handle touch on the expand/collapse image
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
507 treeItemView.expandCollapseView.setOnClickListener { v ->
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
508 // Handle node expand and collapse event
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
509 if (!currentNode.getChildren().isEmpty()) {
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
510 val isNodeExpanded: Boolean = currentNode.isExpanded()
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
511 if (isNodeExpanded) collapseNode(currentNode) else expandNode(currentNode)
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
512 currentNode.setExpanded(!isNodeExpanded)
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
513
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
514 notifyDataSetChanged()
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
515
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
516 // Handle DWTreeItem expand listener event
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
517 if (!isNodeExpanded && treeItemExpandListener != null) treeItemExpandListener!!(
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
518 currentNode,
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
519 v
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
520 )
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
521 }
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
522 }
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
523 // Handle node selection
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
524 holder.itemView.setOnClickListener { v ->
2799
fd7c6ff72383 Android: Separate handling of expand/collapse when touched on the expandCollpaseView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2798
diff changeset
525 // If touched anywhere else, change the selection
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
526 currentNode.setSelected(true)
2798
a3d62de81ec0 Android: Changes to highlight the selected node of the tree widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2797
diff changeset
527 treeItemView.isChecked = true
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
528 currentSelectedItem?.setSelected(false)
2798
a3d62de81ec0 Android: Changes to highlight the selected node of the tree widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2797
diff changeset
529 currentSelectedItemView?.isChecked = false
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
530 currentSelectedItem = currentNode
2798
a3d62de81ec0 Android: Changes to highlight the selected node of the tree widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2797
diff changeset
531 currentSelectedItemView = treeItemView
2773
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 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
534
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
535 // 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
536 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
537 currentNode,
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
538 v
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
539 )
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 // 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
543 holder.itemView.setOnLongClickListener { v ->
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
544 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
545 return@setOnLongClickListener treeItemLongClickListener!!(
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
546 currentNode,
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
547 v
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 true
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
551 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
552 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
553
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
554 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
555 return 1
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
556 }
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 override fun getItemCount(): Int {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
559 return treeItemManager.size()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
560 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
561
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
562 // 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
563 // @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
564 fun collapseNode(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
565 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
566 if (position != -1) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
567 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
568 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
569 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
570
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
571 // 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
572 // @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
573 fun expandNode(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
574 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
575 if (position != -1) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
576 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
577 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
578 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
579
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
580 // Collapsing full node branches
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
581 // @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
582 fun collapseNodeBranch(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
583 treeItemManager.collapseItemBranch(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
584 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
585 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
586
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
587 // Expanding node full branches
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
588 // @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
589 fun expandNodeBranch(node: DWTreeItem) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
590 treeItemManager.expandItemBranch(node)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
591 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
592 }
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 // 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
595 // @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
596 // @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
597 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
598 treeItemManager.expandItemToLevel(node, level)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
599 notifyDataSetChanged()
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
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
602 // 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
603 // @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
604 fun expandNodesAtLevel(level: Int) {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
605 treeItemManager.expandItemsAtLevel(level)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
606 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
607 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
608
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
609 // 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
610 fun collapseAll() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
611 treeItemManager.collapseAll()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
612 notifyDataSetChanged()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
613 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
614
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
615 // 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
616 fun expandAll() {
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
617 treeItemManager.expandAll()
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
618 notifyDataSetChanged()
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
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
621 // 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
622 // @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
623 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
624 treeItemManager.updateItems(treeItems)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
625 notifyItemRangeInserted(0, treeItems.size)
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
626 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
627
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
628 // 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
629 fun clear() {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
630 treeItemManager.clearItems()
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
631 notifyDataSetChanged()
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
632 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
633
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
634 // 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
635 // @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
636 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
637 treeItemClickListener = listener
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
638 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
639
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
640 // 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
641 // @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
642 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
643 treeItemLongClickListener = listener
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
644 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
645
2785
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
646 // 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
647 // @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
648 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
649 treeItemExpandListener = listener
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
650 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
651
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
652 // @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
653 val selectedNode: DWTreeItem?
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
654 get() = currentSelectedItem
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
655 }
2713
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
656
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
657 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
658 {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
659 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
660
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
661 fun updateTree()
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
662 {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
663 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
664
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
665 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
666 treeViewAdapter.notifyDataSetChanged()
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
667 }
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
668 }
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
669
2713
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
670 // Color Wheel section
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
671 private val HUE_COLORS = intArrayOf(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
672 Color.RED,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
673 Color.YELLOW,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
674 Color.GREEN,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
675 Color.CYAN,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
676 Color.BLUE,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
677 Color.MAGENTA,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
678 Color.RED
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
679 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
680
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
681 private val SATURATION_COLORS = intArrayOf(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
682 Color.WHITE,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
683 setAlpha(Color.WHITE, 0)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
684 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
685
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
686 open class ColorWheel @JvmOverloads constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
687 context: Context,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
688 attrs: AttributeSet? = null,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
689 defStyleAttr: Int = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
690 ) : View(context, attrs, defStyleAttr) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
691
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
692 private val hueGradient = GradientDrawable().apply {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
693 gradientType = GradientDrawable.SWEEP_GRADIENT
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
694 shape = GradientDrawable.OVAL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
695 colors = HUE_COLORS
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
696 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
697
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
698 private val saturationGradient = GradientDrawable().apply {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
699 gradientType = GradientDrawable.RADIAL_GRADIENT
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
700 shape = GradientDrawable.OVAL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
701 colors = SATURATION_COLORS
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
702 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
703
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
704 private val thumbDrawable = ThumbDrawable()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
705 private val hsvColor = HsvColor(value = 1f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
706
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
707 private var wheelCenterX = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
708 private var wheelCenterY = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
709 private var wheelRadius = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
710 private var downX = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
711 private var downY = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
712
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
713 var rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
714 get() = hsvColor.rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
715 set(rgb) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
716 hsvColor.rgb = rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
717 hsvColor.set(value = 1f)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
718 fireColorListener()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
719 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
720 }
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 var thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
723 get() = thumbDrawable.radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
724 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
725 thumbDrawable.radius = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
726 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
727 }
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 var thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
730 get() = thumbDrawable.thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
731 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
732 thumbDrawable.thumbColor = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
733 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
734 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
735
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
736 var thumbStrokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
737 get() = thumbDrawable.strokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
738 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
739 thumbDrawable.strokeColor = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
740 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
741 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
742
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
743 var thumbColorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
744 get() = thumbDrawable.colorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
745 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
746 thumbDrawable.colorCircleScale = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
747 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
748 }
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 var colorChangeListener: ((Int) -> Unit)? = null
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
751
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
752 var interceptTouchEvent = true
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
753
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
754 init {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
755 thumbRadius = 13
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
756 thumbColor = Color.WHITE
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
757 thumbStrokeColor = Color.DKGRAY
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
758 thumbColorCircleScale = 0.7f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
759 }
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 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
762 rgb = Color.rgb(r, g, b)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
763 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
764
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
765 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
766 val minDimension = minOf(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
767 MeasureSpec.getSize(widthMeasureSpec),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
768 MeasureSpec.getSize(heightMeasureSpec)
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
771 setMeasuredDimension(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
772 resolveSize(minDimension, widthMeasureSpec),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
773 resolveSize(minDimension, heightMeasureSpec)
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 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
776
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
777 override fun onDraw(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
778 drawColorWheel(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
779 drawThumb(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
780 }
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 private fun drawColorWheel(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
783 val hSpace = width - paddingLeft - paddingRight
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
784 val vSpace = height - paddingTop - paddingBottom
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
785
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
786 wheelCenterX = paddingLeft + hSpace / 2
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
787 wheelCenterY = paddingTop + vSpace / 2
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
788 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
789
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
790 val left = wheelCenterX - wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
791 val top = wheelCenterY - wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
792 val right = wheelCenterX + wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
793 val bottom = wheelCenterY + wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
794
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
795 hueGradient.setBounds(left, top, right, bottom)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
796 saturationGradient.setBounds(left, top, right, bottom)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
797 saturationGradient.gradientRadius = wheelRadius.toFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
798
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
799 hueGradient.draw(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
800 saturationGradient.draw(canvas)
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 private fun drawThumb(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
804 val r = hsvColor.saturation * wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
805 val hueRadians = toRadians(hsvColor.hue)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
806 val x = cos(hueRadians) * r + wheelCenterX
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
807 val y = sin(hueRadians) * r + wheelCenterY
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
808
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
809 thumbDrawable.indicatorColor = hsvColor.rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
810 thumbDrawable.setCoordinates(x, y)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
811 thumbDrawable.draw(canvas)
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 onTouchEvent(event: MotionEvent): Boolean {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
815 when (event.actionMasked) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
816 MotionEvent.ACTION_DOWN -> onActionDown(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
817 MotionEvent.ACTION_MOVE -> updateColorOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
818 MotionEvent.ACTION_UP -> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
819 updateColorOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
820 if (isTap(event, downX, downY)) performClick()
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 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
823
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
824 return true
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
825 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
826
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
827 private fun onActionDown(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
828 parent.requestDisallowInterceptTouchEvent(interceptTouchEvent)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
829 updateColorOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
830 downX = event.x
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
831 downY = event.y
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
832 }
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 override fun performClick() = super.performClick()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
835
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
836 private fun updateColorOnMotionEvent(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
837 calculateColor(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
838 fireColorListener()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
839 invalidate()
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
842 private fun calculateColor(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
843 val legX = event.x - wheelCenterX
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
844 val legY = event.y - wheelCenterY
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
845 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
846 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
847 val saturation = hypot / wheelRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
848 hsvColor.set(hue, saturation, 1f)
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
851 private fun fireColorListener() {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
852 colorChangeListener?.invoke(hsvColor.rgb)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
853 }
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 override fun onSaveInstanceState(): Parcelable {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
856 val superState = super.onSaveInstanceState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
857 val thumbState = thumbDrawable.saveState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
858 return ColorWheelState(superState, this, thumbState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
859 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
860
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
861 override fun onRestoreInstanceState(state: Parcelable) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
862 if (state is ColorWheelState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
863 super.onRestoreInstanceState(state.superState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
864 readColorWheelState(state)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
865 } else {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
866 super.onRestoreInstanceState(state)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
867 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
868 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
869
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
870 private fun readColorWheelState(state: ColorWheelState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
871 thumbDrawable.restoreState(state.thumbState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
872 interceptTouchEvent = state.interceptTouchEvent
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
873 rgb = state.rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
874 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
875 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
876
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
877 internal class ColorWheelState : View.BaseSavedState {
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 val thumbState: ThumbDrawableState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
880 val interceptTouchEvent: Boolean
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
881 val rgb: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
882
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
883 constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
884 superState: Parcelable?,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
885 view: ColorWheel,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
886 thumbState: ThumbDrawableState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
887 ) : super(superState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
888 this.thumbState = thumbState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
889 interceptTouchEvent = view.interceptTouchEvent
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
890 rgb = view.rgb
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 constructor(source: Parcel) : super(source) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
894 thumbState = source.readThumbState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
895 interceptTouchEvent = source.readBooleanCompat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
896 rgb = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
897 }
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 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
900 super.writeToParcel(out, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
901 out.writeThumbState(thumbState, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
902 out.writeBooleanCompat(interceptTouchEvent)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
903 out.writeInt(rgb)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
904 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
905
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
906 companion object CREATOR : Parcelable.Creator<ColorWheelState> {
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 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
909
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
910 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
911 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
912 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
913 internal fun Parcel.writeBooleanCompat(value: Boolean) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
914 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
915 this.writeBoolean(value)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
916 } else {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
917 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
918 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
919 }
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 internal fun Parcel.readBooleanCompat(): Boolean {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
922 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
923 this.readBoolean()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
924 } else {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
925 this.readInt() == 1
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
926 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
927 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
928 private const val MAX_ALPHA = 255
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
929
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
930 open class GradientSeekBar @JvmOverloads constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
931 context: Context,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
932 attrs: AttributeSet? = null,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
933 defStyleAttr: Int = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
934 ) : View(context, attrs, defStyleAttr) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
935
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
936 private val gradientColors = IntArray(2)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
937 private val thumbDrawable = ThumbDrawable()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
938 private val gradientDrawable = GradientDrawable()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
939 private val argbEvaluator = android.animation.ArgbEvaluator()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
940
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
941 private lateinit var orientationStrategy: OrientationStrategy
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
942 private var downX = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
943 private var downY = 0f
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 startColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
946 get() = gradientColors[0]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
947 set(color) { setColors(start = color) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
948
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
949 var endColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
950 get() = gradientColors[1]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
951 set(color) { setColors(end = color) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
952
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
953 var offset = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
954 set(offset) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
955 field = ensureOffsetWithinRange(offset)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
956 calculateArgb()
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
959 var barSize = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
960 set(width) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
961 field = width
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
962 requestLayout()
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 cornersRadius = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
966 set(radius) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
967 field = radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
968 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
969 }
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 var orientation = Orientation.VERTICAL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
972 set(orientation) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
973 field = orientation
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
974 orientationStrategy = createOrientationStrategy()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
975 requestLayout()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
976 }
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 var thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
979 get() = thumbDrawable.thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
980 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
981 thumbDrawable.thumbColor = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
982 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
983 }
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 var thumbStrokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
986 get() = thumbDrawable.strokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
987 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
988 thumbDrawable.strokeColor = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
989 invalidate()
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
992 var thumbColorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
993 get() = thumbDrawable.colorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
994 set(value) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
995 thumbDrawable.colorCircleScale = value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
996 invalidate()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
997 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
998
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
999 var thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1000 get() = thumbDrawable.radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1001 set(radius) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1002 thumbDrawable.radius = radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1003 requestLayout()
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1006 var argb = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1007 private set
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1008
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1009 var colorChangeListener: ((Float, Int) -> Unit)? = null
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 var interceptTouchEvent = true
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1012
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1013 init {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1014 thumbColor = Color.WHITE
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1015 thumbStrokeColor = Color.DKGRAY
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1016 thumbColorCircleScale = 0.7f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1017 thumbRadius = 13
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1018 barSize = 10
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1019 cornersRadius = 5.0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1020 offset = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1021 orientation = Orientation.VERTICAL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1022 setColors(Color.TRANSPARENT, Color.BLACK)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1023 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1024
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1025 private fun createOrientationStrategy(): OrientationStrategy {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1026 return when (orientation) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1027 Orientation.VERTICAL -> VerticalStrategy()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1028 Orientation.HORIZONTAL -> HorizontalStrategy()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1029 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1030 }
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 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
1033 updateGradientColors(start, end)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1034 calculateArgb()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1035 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1036
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1037 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
1038 gradientColors[0] = start
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1039 gradientColors[1] = end
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1040 gradientDrawable.colors = gradientColors
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1041 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1042
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1043 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
1044 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
1045 setMeasuredDimension(dimens.width(), dimens.height())
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1048 override fun onDraw(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1049 drawGradientRect(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1050 drawThumb(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1051 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1052
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1053 private fun drawGradientRect(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1054 gradientDrawable.orientation = orientationStrategy.gradientOrientation
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1055 gradientDrawable.bounds = orientationStrategy.getGradientBounds(this)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1056 gradientDrawable.cornerRadius = cornersRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1057 gradientDrawable.draw(canvas)
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 drawThumb(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1061 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
1062 thumbDrawable.indicatorColor = argb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1063 thumbDrawable.setCoordinates(coordinates.x, coordinates.y)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1064 thumbDrawable.draw(canvas)
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 onTouchEvent(event: MotionEvent): Boolean {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1068 when (event.actionMasked) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1069 MotionEvent.ACTION_DOWN -> onActionDown(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1070 MotionEvent.ACTION_MOVE -> calculateOffsetOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1071 MotionEvent.ACTION_UP -> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1072 calculateOffsetOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1073 if (isTap(event, downX, downY)) performClick()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1074 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1075 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1076
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1077 return true
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1080 private fun onActionDown(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1081 parent.requestDisallowInterceptTouchEvent(interceptTouchEvent)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1082 calculateOffsetOnMotionEvent(event)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1083 downX = event.x
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1084 downY = event.y
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1085 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1086
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1087 override fun performClick() = super.performClick()
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 private fun calculateOffsetOnMotionEvent(event: MotionEvent) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1090 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
1091 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1092
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1093 private fun calculateArgb() {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1094 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
1095 fireListener()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1096 invalidate()
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1099 private fun fireListener() {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1100 colorChangeListener?.invoke(offset, argb)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1101 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1102
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1103 override fun onSaveInstanceState(): Parcelable {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1104 val superState = super.onSaveInstanceState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1105 val thumbState = thumbDrawable.saveState()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1106 return GradientSeekBarState(superState, this, thumbState)
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1109 override fun onRestoreInstanceState(state: Parcelable) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1110 if (state is GradientSeekBarState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1111 super.onRestoreInstanceState(state.superState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1112 readGradientSeekBarState(state)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1113 } else {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1114 super.onRestoreInstanceState(state)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1115 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1116 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1117
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1118 private fun readGradientSeekBarState(state: GradientSeekBarState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1119 updateGradientColors(state.startColor, state.endColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1120 offset = state.offset
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1121 barSize = state.barSize
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1122 cornersRadius = state.cornerRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1123 orientation = Orientation.values()[state.orientation]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1124 interceptTouchEvent = state.interceptTouchEvent
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1125 thumbDrawable.restoreState(state.thumbState)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1126 }
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 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
1129
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1130 enum class Orientation { VERTICAL, HORIZONTAL }
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 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
1134
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1135 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
1136 if (respectAlpha) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1137 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
1138 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1139 this.setColors(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1140 setAlpha(color, 0),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1141 setAlpha(color, MAX_ALPHA)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1142 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1143 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1144
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1145 inline fun GradientSeekBar.setAlphaChangeListener(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1146 crossinline listener: (Float, Int, Int) -> Unit
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 this.colorChangeListener = { offset, color ->
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1149 listener(offset, color, this.currentColorAlpha)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1150 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1151 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1152
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1153 fun GradientSeekBar.setBlackToColor(color: Int) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1154 this.setColors(Color.BLACK, color)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1155 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1156
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1157 internal class GradientSeekBarState : View.BaseSavedState {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1158
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1159 val startColor: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1160 val endColor: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1161 val offset: Float
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1162 val barSize: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1163 val cornerRadius: Float
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1164 val orientation: Int
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1165 val interceptTouchEvent: Boolean
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1166 val thumbState: ThumbDrawableState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1167
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1168 constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1169 superState: Parcelable?,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1170 view: GradientSeekBar,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1171 thumbState: ThumbDrawableState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1172 ) : super(superState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1173 startColor = view.startColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1174 endColor = view.endColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1175 offset = view.offset
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1176 barSize = view.barSize
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1177 cornerRadius = view.cornersRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1178 orientation = view.orientation.ordinal
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1179 interceptTouchEvent = view.interceptTouchEvent
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1180 this.thumbState = thumbState
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1181 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1182
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1183 constructor(source: Parcel) : super(source) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1184 startColor = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1185 endColor = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1186 offset = source.readFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1187 barSize = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1188 cornerRadius = source.readFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1189 orientation = source.readInt()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1190 interceptTouchEvent = source.readBooleanCompat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1191 thumbState = source.readThumbState()
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 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
1195 super.writeToParcel(out, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1196 out.writeInt(startColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1197 out.writeInt(endColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1198 out.writeFloat(offset)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1199 out.writeInt(barSize)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1200 out.writeFloat(cornerRadius)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1201 out.writeInt(orientation)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1202 out.writeBooleanCompat(interceptTouchEvent)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1203 out.writeThumbState(thumbState, flags)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1204 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1205
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1206 companion object CREATOR : Parcelable.Creator<GradientSeekBarState> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1207
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1208 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
1209
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1210 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
1211 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1212 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1213
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1214 internal class HorizontalStrategy : OrientationStrategy {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1215
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1216 private val rect = Rect()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1217 private val point = PointF()
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 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
1220
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1221 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
1222 val widthSize = View.MeasureSpec.getSize(widthSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1223 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
1224 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
1225 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
1226 val finalWidth = View.resolveSize(preferredWidth, widthSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1227 val finalHeight = View.resolveSize(preferredHeight, heightSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1228 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
1229 }
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 override fun getGradientBounds(view: GradientSeekBar): Rect {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1232 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
1233 val left = view.paddingLeft + view.thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1234 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
1235 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
1236 val bottom = top + view.barSize
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1237 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
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 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
1241 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
1242 val y = view.height / 2f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1243 return point.apply { set(x, y) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1244 }
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 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
1247 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
1248 val relativeX = (checkedX - gradient.left).toFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1249 return relativeX / gradient.width()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1250 }
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1253 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
1254 val config = ViewConfiguration.get(context)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1255 val duration = lastEvent.eventTime - lastEvent.downTime
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1256 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
1257 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
1258 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1259
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1260 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
1261
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1262 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
1263
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1264 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
1265
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1266 internal fun <T> ensureWithinRange(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1267 value: T,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1268 start: T,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1269 end: T
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1270 ): 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
1271
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1272 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
1273 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
1274
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1275 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
1276
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1277 private val hsv = floatArrayOf(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1278 ensureHue(hue),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1279 ensureSaturation(saturation),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1280 ensureValue(value)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1281 )
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1282
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1283 var hue
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1284 get() = hsv[0]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1285 set(hue) { hsv[0] = ensureHue(hue) }
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 var saturation
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1288 get() = hsv[1]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1289 set(saturation) { hsv[1] = ensureSaturation(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 var value
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1292 get() = hsv[2]
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1293 set(value) { hsv[2] = ensureValue(value) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1294
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1295 var rgb
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1296 get() = Color.HSVToColor(hsv)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1297 set(rgb) { Color.colorToHSV(rgb, hsv) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1298
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1299 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
1300 hsv[0] = ensureHue(hue)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1301 hsv[1] = ensureSaturation(saturation)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1302 hsv[2] = ensureValue(value)
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 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
1306
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1307 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
1308
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1309 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
1310 }
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 internal interface OrientationStrategy {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1313
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1314 val gradientOrientation: GradientDrawable.Orientation
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1315
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1316 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
1317
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1318 fun getGradientBounds(view: GradientSeekBar): Rect
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1319
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1320 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
1321
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1322 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
1323 }
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 internal class ThumbDrawableState private constructor(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1326 val radius: Int,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1327 val thumbColor: Int,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1328 val strokeColor: Int,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1329 val colorCircleScale: Float
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1330 ) : Parcelable {
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 constructor(thumbDrawable: ThumbDrawable) : this(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1333 thumbDrawable.radius,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1334 thumbDrawable.thumbColor,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1335 thumbDrawable.strokeColor,
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1336 thumbDrawable.colorCircleScale
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1337 )
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 constructor(parcel: Parcel) : this(
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1340 parcel.readInt(),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1341 parcel.readInt(),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1342 parcel.readInt(),
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1343 parcel.readFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1344 )
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 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
1347 parcel.writeInt(radius)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1348 parcel.writeInt(thumbColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1349 parcel.writeInt(strokeColor)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1350 parcel.writeFloat(colorCircleScale)
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 override fun describeContents() = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1354
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1355 companion object {
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 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
1358
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1359 @JvmField
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1360 val CREATOR = object : Parcelable.Creator<ThumbDrawableState> {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1361
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1362 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
1363
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1364 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
1365 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1366 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1367 }
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 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
1370 this.writeParcelable(state, flags)
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1373 internal fun Parcel.readThumbState(): ThumbDrawableState {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1374 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
1375 ?: ThumbDrawableState.EMPTY_STATE
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
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1378 internal class ThumbDrawable {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1379
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1380 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
1381 private var x = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1382 private var y = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1383
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1384 var indicatorColor = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1385 var strokeColor = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1386 var thumbColor = 0
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1387 var radius = 0
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 var colorCircleScale = 0f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1390 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
1391
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1392 fun setCoordinates(x: Float, y: Float) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1393 this.x = x
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1394 this.y = y
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 fun draw(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1398 drawThumb(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1399 drawStroke(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1400 drawColorIndicator(canvas)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1401 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1402
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1403 private fun drawThumb(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1404 paint.color = thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1405 paint.style = Paint.Style.FILL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1406 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
1407 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1408
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1409 private fun drawStroke(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1410 val strokeCircleRadius = radius - paint.strokeWidth / 2f
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 paint.color = strokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1413 paint.style = Paint.Style.STROKE
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1414 canvas.drawCircle(x, y, strokeCircleRadius, paint)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1415 }
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 fun drawColorIndicator(canvas: Canvas) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1418 val colorIndicatorCircleRadius = radius * colorCircleScale
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 paint.color = indicatorColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1421 paint.style = Paint.Style.FILL
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1422 canvas.drawCircle(x, y, colorIndicatorCircleRadius, paint)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1423 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1424
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1425 fun restoreState(state: ThumbDrawableState) {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1426 radius = state.radius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1427 thumbColor = state.thumbColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1428 strokeColor = state.strokeColor
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1429 colorCircleScale = state.colorCircleScale
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 fun saveState() = ThumbDrawableState(this)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1433 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1434
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1435 internal class VerticalStrategy : OrientationStrategy {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1436
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1437 private val rect = Rect()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1438 private val point = PointF()
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 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
1441
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1442 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
1443 val heightSize = View.MeasureSpec.getSize(heightSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1444 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
1445 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
1446 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
1447 val finalWidth = View.resolveSize(preferredWidth, widthSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1448 val finalHeight = View.resolveSize(preferredHeight, heightSpec)
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1449 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
1450 }
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 override fun getGradientBounds(view: GradientSeekBar): Rect {
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1453 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
1454 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
1455 val right = left + view.barSize
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1456 val top = view.paddingTop + view.thumbRadius
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1457 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
1458 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
1459 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1460
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1461 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
1462 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
1463 val x = view.width / 2f
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1464 return point.apply { set(x, y) }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1465 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1466
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1467 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
1468 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
1469 val relativeY = (checkedY - gradient.top).toFloat()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1470 return 1f - relativeY / gradient.height()
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1471 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1472 }
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1473
6594bb323ab5 Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2709
diff changeset
1474 // 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
1475 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
1476 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
1477 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
1478 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
1479 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
1480 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
1481 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
1482 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
1483 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
1484 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
1485 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
1486 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
1487 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
1488 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
1489 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
1490 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
1491 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
1492 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
1493 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
1494 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
1495 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
1496 }
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1497
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
1498 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
1499
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
1500 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
1501 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
1502 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
1503 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
1504 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
1505 var recyclerView: RecyclerView? = null
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
1506
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1507 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
1508 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
1509
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
1510 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
1511 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
1512 return position
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
1513 }
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
1514 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
1515 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
1516 }
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
1517 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
1518 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
1519 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1520
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
1521 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
1522 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
1523
2505
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1524 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
1525 //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
1526 @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
1527 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
1528 // 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
1529 // 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
1530 return false
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1531 }
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1532 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
1533 // 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
1534 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
1535 }
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1536
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1537 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
1538 // 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
1539 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
1540 }
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1541
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1542 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
1543 }
a149dabf6a1f Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2503
diff changeset
1544
2727
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1545 class DWPrintDocumentAdapter : PrintDocumentAdapter()
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 var context: Context? = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1548 var pages: Int = 0
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1549 var pdfDocument: PrintedPdfDocument? = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1550 var print: Long = 0
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1551
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1552 override fun onLayout(
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1553 oldAttributes: PrintAttributes?,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1554 newAttributes: PrintAttributes,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1555 cancellationSignal: CancellationSignal?,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1556 callback: LayoutResultCallback,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1557 extras: Bundle?
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1558 ) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1559 // 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
1560 pdfDocument = context?.let { PrintedPdfDocument(it, newAttributes) }
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 // Respond to cancellation request
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1563 if (cancellationSignal?.isCanceled == true) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1564 callback.onLayoutCancelled()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1565 return
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1566 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1567
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1568 if (pages > 0) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1569 // Return print information to print framework
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1570 PrintDocumentInfo.Builder("print_output.pdf")
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1571 .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1572 .setPageCount(pages)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1573 .build()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1574 .also { info ->
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1575 // Content layout reflow is complete
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1576 callback.onLayoutFinished(info, true)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1577 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1578 } else {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1579 // 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
1580 callback.onLayoutFailed("No pages to print.")
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1581 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1582 }
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 override fun onWrite(
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1585 pageRanges: Array<out PageRange>,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1586 destination: ParcelFileDescriptor,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1587 cancellationSignal: CancellationSignal?,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1588 callback: WriteResultCallback
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1589 ) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1590 var writtenPagesArray: Array<PdfDocument.Page> = emptyArray()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1591
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1592 // Iterate over each page of the document,
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1593 // 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
1594 for (i in 0 until pages) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1595 pdfDocument?.startPage(i)?.also { page ->
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1596
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1597 // check for cancellation
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1598 if (cancellationSignal?.isCanceled == true) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1599 callback.onWriteCancelled()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1600 pdfDocument?.close()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1601 pdfDocument = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1602 return
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1603 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1604
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1605 // Draw page content for printing
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1606 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
1607 // 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
1608 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
1609 // 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
1610 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
1611 page.canvas.drawBitmap(bitmap, rect, rect, null)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1612
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1613 // 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
1614 pdfDocument?.finishPage(page)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1615
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1616 // Add the new page to the array
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1617 writtenPagesArray += page
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1618 }
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 // Write PDF document to file
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1622 try {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1623 pdfDocument?.writeTo(FileOutputStream(destination.fileDescriptor))
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1624 } catch (e: IOException) {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1625 callback.onWriteFailed(e.toString())
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1626 return
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1627 } finally {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1628 pdfDocument?.close()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1629 pdfDocument = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1630 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1631 // 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
1632 callback.onWriteFinished(pageRanges)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1633 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1634
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1635 override fun onFinish() {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1636 // 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
1637 eventHandlerPrintFinish(print)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1638 super.onFinish()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1639 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1640
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1641 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
1642 external fun eventHandlerPrintFinish(print: Long)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1643 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
1644
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1645 class DWSlider
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1646 @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
1647 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
1648
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1649 init {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1650 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
1651 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
1652 addView(slider)
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1653 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1654
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1655 @Synchronized
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1656 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
1657 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
1658 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
1659 // 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
1660 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
1661 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1662 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
1663 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
1664 // 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
1665 // 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
1666 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
1667 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1668 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1669 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
1670
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1671 class DWSpinButton(context: Context) : AppCompatEditText(context), OnTouchListener {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1672 var value: Long = 0
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1673 var minimum: Long = 0
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1674 var maximum: Long = 65535
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1675
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1676 init {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1677 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
1678 setOnTouchListener(this)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1679 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1680
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1681 override fun onTouch(v: View, event: MotionEvent): Boolean {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1682 val DRAWABLE_RIGHT = 2
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1683 val DRAWABLE_LEFT = 0
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1684
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1685 if (event.action == MotionEvent.ACTION_UP) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1686 if (event.x >= v.width - (v as EditText)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1687 .compoundDrawables[DRAWABLE_RIGHT].bounds.width()
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1688 ) {
2527
eec926265888 Android: Use toLongOrNull() whenever converting from string to long...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2526
diff changeset
1689 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
1690
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1691 if(newvalue != null) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1692 value = newvalue + 1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1693 } else {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1694 value += 1
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 > maximum) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1697 value = maximum
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1698 }
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1699 if(value < minimum) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1700 value = minimum
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1701 }
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1702 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
1703 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
1704 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
1705 } 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
1706 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
1707
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1708 if(newvalue != null) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1709 value = newvalue - 1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1710 } else {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1711 value -= 1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1712 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1713 if(value > maximum) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1714 value = maximum
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
1715 }
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1716 if(value < minimum) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1717 value = minimum
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1718 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1719 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
1720 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
1721 return true
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1722 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1723 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1724 return false
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1725 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1726
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1727 external fun eventHandlerInt(
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1728 message: Int,
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1729 inta: Int,
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1730 intb: Int,
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1731 intc: Int,
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1732 intd: Int
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1733 )
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1734 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1735
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1736 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
1737 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
1738 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
1739 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
1740
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1741 init {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1742 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
1743 setOnTouchListener(this)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1744 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
1745 lpw!!.setAdapter(
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1746 ArrayAdapter(
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1747 context,
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1748 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
1749 )
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!!.anchorView = this
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1752 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
1753 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
1754 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1755
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1756 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
1757 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
1758 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
1759 setText(item)
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1760 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
1761 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
1762 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1763
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1764 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
1765 val DRAWABLE_RIGHT = 2
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
1766
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1767 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
1768 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
1769 .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
1770 ) {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1771 lpw!!.show()
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1772 return true
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1773 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1774 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1775 return false
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1776 }
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1777
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1778 external fun eventHandlerInt(
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1779 message: Int,
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1780 inta: Int,
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1781 intb: Int,
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1782 intc: Int,
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1783 intd: Int
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
1784 )
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1785 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
1786
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1787 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
1788 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
1789 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
1790 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
1791 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
1792 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
1793 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
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 init {
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1796 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
1797 context,
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
1798 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
1799 ) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1800 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
1801 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
1802 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
1803 if (colorFore != null) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1804 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
1805 }
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1806 if (colorBack != null) {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1807 textview.setBackgroundColor(colorBack!!)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1808 }
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1809 return thisview
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1810 }
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1811 }
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
1812 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
1813 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
1814 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1815
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1816 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
1817 selected = position
2753
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1818 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
1819 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
1820 multiple.remove(position)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1821 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
1822 } else {
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1823 multiple.add(position)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1824 view.setBackgroundColor(colorSelected)
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1825 }
2ac361d3a837 Android: Rewrite listbox multiple selection... keep track of the selection
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2752
diff changeset
1826 }
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
1827 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
1828 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1829
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1830 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
1831 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
1832 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
1833 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
1834 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
1835 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
1836 )
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1837 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
1838
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1839 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
1840 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
1841 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
1842 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
1843 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
1844 var evy: Float = 0f
2611
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
1845 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
1846
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1847 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
1848 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
1849 // 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
1850 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
1851 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1852
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1853 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
1854 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
1855 cachedCanvas = canvas
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1856 // 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
1857 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
1858 cachedCanvas = null
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1859 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1860
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1861 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
1862 message: Int,
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1863 inta: Int,
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1864 intb: Int,
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1865 intc: Int,
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1866 intd: Int
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1867 )
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1868 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
1869
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1870 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
1871 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
1872 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
1873 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
1874
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1875 // 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
1876 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
1877 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
1878 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
1879 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1880
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1881 // 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
1882 interface FileSelectedListener {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1883 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
1884 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1885
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1886 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
1887 this.fileListener = fileListener
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1888 return this
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1889 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1890
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1891 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
1892 fun showDialog() {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1893 dialog.show()
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1894 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1895
2527
eec926265888 Android: Use toLongOrNull() whenever converting from string to long...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2526
diff changeset
1896 /*
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1897 * 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
1898 */
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1899 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
1900 currentPath = path
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1901 if (path != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1902 if (path.exists()) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1903 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
1904 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
1905 if (!file.isDirectory) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1906 if (!file.canRead()) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1907 false
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1908 } 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
1909 true
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1910 } else {
2708
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
1911 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
1912 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1913 } else {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1914 false
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1915 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1916 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1917
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1918 // 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
1919 var i = 0
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1920 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
1921 var filecount = 0
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1922 var dircount = 0
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1923 if(files != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1924 filecount = files.size
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 if(dirs != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1927 dircount = dirs.size
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1928 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1929 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
1930 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
1931 } else {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1932 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
1933 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
1934 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1935 if(dirs != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1936 Arrays.sort(dirs)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1937 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
1938 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
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 if(files != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1942 Arrays.sort(files)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1943 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
1944 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
1945 }
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
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1948 // 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
1949 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
1950 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
1951 activity,
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1952 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
1953 ) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1954 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
1955 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
1956 (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
1957 return thisview
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 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1960 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1961 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1962 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1963
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1964 /**
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1965 * 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
1966 */
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1967 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
1968 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
1969 currentPath!!.parentFile
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1970 } else {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1971 File(currentPath, fileChosen)
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 companion object {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1976 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
1977 }
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 init {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1980 list.onItemClickListener =
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1981 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
1982 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
1983 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
1984 if (chosenFile != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1985 if (chosenFile.isDirectory) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1986 refresh(chosenFile)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1987 } else {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1988 if (fileListener != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1989 fileListener!!.fileSelected(chosenFile)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1990 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1991 dialog.dismiss()
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1992 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1993 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1994 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1995 dialog.setContentView(list)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1996 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
1997 refresh(Environment.getExternalStorageDirectory())
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1998 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
1999 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
2000
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2001 // 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
2002 // 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
2003 // 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
2004 class DWMenuItem
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2005 {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2006 var title: String? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2007 var menu: DWMenu? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2008 var submenu: DWMenu? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2009 var checked: Boolean = false
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2010 var check: Boolean = false
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2011 var enabled: Boolean = true
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2012 var menuitem: MenuItem? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2013 var submenuitem: SubMenu? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2014 var id: Int = 0
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2015 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2016
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2017 class DWMenu {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2018 var menu: Menu? = null
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2019 var children = mutableListOf<DWMenuItem>()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2020 var id: Int = 0
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2021
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2022 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
2023 var refresh = recreate
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2024
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2025 if(newmenu != null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2026 if(newmenu != menu) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2027 menu = newmenu
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2028 refresh = true
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2029 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2030 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2031 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
2032 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
2033
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2034 if(refresh) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2035 menu!!.clear()
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2036 }
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2037
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 // 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
2039 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
2040
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2041 for (menuitem in children) {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2042 // 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
2043 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
2044 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
2045 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
2046 }
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2047 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
2048 } 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
2049 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
2050 group += 1
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2051 } 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
2052 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
2053 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
2054 menuitem.menuitem!!.isChecked = menuitem.checked
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2055 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
2056 menuitem.menuitem!!.setOnMenuItemClickListener { item: MenuItem? ->
2806
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2057 // Toggle the check automatically
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2058 if(menuitem.menuitem!!.isCheckable) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2059 menuitem.menuitem!!.isChecked = !menuitem.menuitem!!.isChecked
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2060 menuitem.checked = menuitem.menuitem!!.isChecked
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2061 }
2620
dcd71b04cc46 Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2614
diff changeset
2062 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
2063 true
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
2064 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2065 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2066 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2067 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2068 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2069 }
2544
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2070
dbfcc0e357d6 Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2543
diff changeset
2071 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
2072 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2073
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2074 // Class for storing container data
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2075 class DWContainerModel {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2076 var columns = mutableListOf<String?>()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2077 var types = mutableListOf<Int>()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2078 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
2079 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
2080 var rowtitle = mutableListOf<String?>()
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2081 var selected = mutableListOf<Boolean>()
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
2082 var querypos: Int = -1
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2083
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2084 fun numberOfColumns(): Int
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 columns.size
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 numberOfRows(): Int
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2090 {
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2091 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
2092 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
2093 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2094 return 0
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2095 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2096
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2097 fun getColumnType(column: Int): Int
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2098 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2099 if(column < types.size) {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2100 return types[column]
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 return -1
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2103 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2104
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2105 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
2106 {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2107 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
2108
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2109 if(index > -1 && index < data.size) {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2110 return data[index]
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2111 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2112 return null
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2113 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2114
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2115 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
2116 {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2117 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
2118
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2119 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
2120 // 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
2121 if((((types[column] and 1) != 0) && (obj is Drawable)) ||
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2122 (((types[column] and (1 shl 2)) != 0) && (obj is Int || obj is Long))) {
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2123 data[index] = obj
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2124 }
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2125 // If it isn't one of those special types, image or numeric...use string
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2126 else if(((types[column] and 1) == 0) && ((types[column] and (1 shl 2)) == 0)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2127 && obj is String) {
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2128 data[index] = obj
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2129 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2130 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2131 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2132
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2133 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
2134 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2135 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
2136 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
2137 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2138 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2139
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2140 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
2141 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2142 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
2143 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
2144 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2145 return 0
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2146 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2147
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2148 fun changeRowSelected(row: Int, rselected: Boolean)
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2149 {
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2150 if(row > -1 && row < selected.size) {
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2151 selected[row] = rselected
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2152 }
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2153 }
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2154
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2155 fun getRowSelected(row: Int): Boolean
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2156 {
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2157 if(row > -1 && row < selected.size) {
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2158 return selected[row]
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2159 }
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2160 return false
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2161 }
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2162
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2163 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
2164 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2165 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
2166 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
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 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
2171 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2172 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
2173 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
2174 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2175 return null
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2176 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2177
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2178 fun addColumn(title: String?, type: Int)
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2179 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2180 columns.add(title)
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2181 types.add(type)
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2182 // 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
2183 data.clear()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2184 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2185
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2186 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
2187 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2188 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
2189 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
2190 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
2191 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
2192 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2193 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
2194 rowtitle.removeAt(0)
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2195 selected.removeAt(0)
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2196 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2197 } else {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2198 data.clear()
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2199 rowdata.clear()
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2200 rowtitle.clear()
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2201 selected.clear()
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2202 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2203 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2204
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2205 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
2206 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2207 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
2208 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
2209 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
2210 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
2211 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2212 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
2213 rowtitle.removeAt(i)
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2214 selected.removeAt(i)
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2215 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2216 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2217 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2218
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2219 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
2220 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2221 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
2222 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
2223 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
2224 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
2225 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2226 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
2227 rowtitle.removeAt(i)
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2228 selected.removeAt(i)
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2229 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2230 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2231 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2232
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
2233 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
2234 {
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
2235 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
2236 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
2237 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
2238 }
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
2239 }
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
2240 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
2241 }
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
2242
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
2243 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
2244 {
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
2245 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
2246 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
2247 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
2248 }
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
2249 }
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
2250 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
2251 }
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
2252
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2253 fun addRows(count: Int): Long
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2254 {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2255 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
2256
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2257 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
2258 {
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2259 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
2260 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2261 // 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
2262 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
2263 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2264 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
2265 rowtitle.add(null)
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2266 selected.add(false)
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2267 }
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
2268 return startRow
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2269 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2270
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2271 fun clear()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2272 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2273 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
2274 rowdata.clear()
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
2275 rowtitle.clear()
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2276 selected.clear()
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2277 }
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
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2280 class DWContainerRow : RelativeLayout, Checkable {
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2281 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
2282 private var colorSelection = Color.DKGRAY
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2283 var position: Int = -1
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2284 var imageview: ImageView = ImageView(context)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2285 var text: TextView = TextView(context)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2286 var stack: LinearLayout = LinearLayout(context)
2846
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2287 var parent: ListView? = null
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2288
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2289 fun setup(context: Context?) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2290 val wrap = RelativeLayout.LayoutParams.WRAP_CONTENT
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2291 val match = RelativeLayout.LayoutParams.MATCH_PARENT
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2292 var lp = RelativeLayout.LayoutParams(wrap, wrap)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2293 imageview.id = View.generateViewId()
2842
22dd09e90112 Android: Improve appearance of the container row by adding a 4 point margin.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2841
diff changeset
2294 lp.setMargins(4)
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2295 this.addView(imageview, lp)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2296 lp = RelativeLayout.LayoutParams(match, wrap)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2297 text.id = View.generateViewId()
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2298 lp.addRule(RelativeLayout.RIGHT_OF, imageview.id);
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2299 this.addView(text, lp)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2300 lp = RelativeLayout.LayoutParams(match, wrap)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2301 stack.id = View.generateViewId()
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2302 stack.orientation = LinearLayout.HORIZONTAL
2843
bacac2eb1677 Android: Fix container rows not being selectable in DW_CONTAINER_MODE_MULTI
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2842
diff changeset
2303 stack.descendantFocusability = LinearLayout.FOCUS_BLOCK_DESCENDANTS
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2304 lp.addRule(RelativeLayout.BELOW, imageview.id);
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2305 lp.addRule(RelativeLayout.BELOW, text.id);
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2306 this.addView(stack, lp)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2307 }
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2308
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2309 constructor(context: Context?) : super(context) {
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2310 setup(context)
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2311 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
2312 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2313 constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2314 setup(context)
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2315 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
2316 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2317 constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle) {
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2318 setup(context)
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2319 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
2320 }
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2321
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2322 fun updateBackground() {
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2323 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
2324 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
2325 } else {
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2326 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
2327 }
2846
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2328 if(parent is ListView && position != -1) {
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2329 val cont = this.parent as ListView
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2330 val adapter = cont.adapter as DWContainerAdapter
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2331
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2332 adapter.model.changeRowSelected(position, mChecked)
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2333 }
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2334 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2335
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2336 override fun setChecked(b: Boolean) {
2846
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2337 if(b != mChecked) {
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2338 mChecked = b
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2339 updateBackground()
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2340 }
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2341 }
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2342
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2343 override fun isChecked(): Boolean {
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2344 return mChecked
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2345 }
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2346
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2347 override fun toggle() {
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2348 mChecked = !mChecked
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
2349 updateBackground()
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2350 }
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2351 }
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2352
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2353 class DWContainerAdapter(c: Context) : BaseAdapter()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2354 {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2355 private var context = c
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2356 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
2357 var selectedItem: Int = -1
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2358 var contMode: Int = 0
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
2359 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
2360 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
2361 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
2362 var backColor: Int? = null
2613
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
2363 var lastClick: Long = 0
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
2364 var lastClickRow: Int = -1
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2365
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2366 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
2367 return model.numberOfRows()
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2368 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2369
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2370 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
2371 return model.getRowAndColumn(position, 0)
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2372 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2373
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2374 override fun getItemId(position: Int): Long {
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2375 return position.toLong()
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2376 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2377
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2378 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
2379 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
2380 var displayColumns = model.numberOfColumns()
2835
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2381 var isFilesystem: Boolean = false
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2382 var extraColumns: Int = 1
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2383
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2384 // If column 1 is bitmap and column 2 is text...
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2385 if(displayColumns > 1 && (model.getColumnType(0) and 1) != 0 &&
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2386 (model.getColumnType(1) and (1 shl 1)) != 0) {
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2387 // We are a filesystem style container...
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2388 isFilesystem = true
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2389 extraColumns = 2
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2390 }
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2391
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2392 // In default mode (0), limit the columns to 1 or 2
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2393 if(contMode == 0) {
2835
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2394 // depending on if we are filesystem style or not
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2395 displayColumns = extraColumns
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2396 }
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2397
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2398 // 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
2399 if(rowView == null) {
2752
d355c6abbba6 Android: Add a DWContainerRow class implmenting LinearLayout and Checkable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
2400 rowView = DWContainerRow(context)
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2401
2846
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2402 // Save variables for later use
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2403 rowView.position = position
2846
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2404 rowView.parent = parent as ListView
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2405
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2406 // Handle DW_CONTAINER_MODE_MULTI by setting the orientation vertical
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2407 if(contMode == 2) {
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2408 rowView.stack.orientation = LinearLayout.VERTICAL
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2409 rowView.stack.gravity = Gravity.LEFT
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2410 }
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2411
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2412 // If there are extra columns and we are not in default mode...
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2413 // Add the columns to the stack (LinearLayout)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2414 for(i in extraColumns until displayColumns) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2415 var content = model.getRowAndColumn(position, i)
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2416
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2417 // Image
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2418 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
2419 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
2420 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
2421 LinearLayout.LayoutParams.WRAP_CONTENT)
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2422 if(contMode == 2)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2423 params.gravity = Gravity.LEFT
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2424 else
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2425 params.gravity = Gravity.CENTER
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
2426 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
2427 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
2428 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
2429 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
2430 }
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2431 rowView.stack.addView(imageview)
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2432 } else {
2835
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2433 // Everything else is displayed as text
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2434 var textview: TextView? = null
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2435
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2436 // Special case for DW_CONTAINER_MODE_MULTI
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2437 if(contMode == 2) {
2835
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2438 // textview will be a text button instead
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2439 textview = Button(context)
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2440 } else {
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2441 textview = TextView(context)
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2442 }
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2443 var hsize = LinearLayout.LayoutParams.WRAP_CONTENT
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2444 if(contMode == 0)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2445 hsize = LinearLayout.LayoutParams.MATCH_PARENT
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2446 val params = LinearLayout.LayoutParams(hsize, LinearLayout.LayoutParams.WRAP_CONTENT)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2447 if(contMode == 2)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2448 params.gravity = Gravity.LEFT
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2449 else
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2450 params.gravity = Gravity.CENTER
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2451 // Multi-line (vertical) mode does not require horizontal margins
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2452 if(contMode != 2)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2453 params.setMargins(5, 0, 5, 0)
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
2454 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
2455 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
2456 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
2457 textview.text = content
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2458 } else if(content is Long || content is Int) {
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2459 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
2460 }
2835
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2461 textview.setOnClickListener {
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2462 var columnClicked: Int = i
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2463 if(isFilesystem) {
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2464 columnClicked = i - 1
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2465 }
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2466 eventHandlerInt(parent, DWEvent.COLUMN_CLICK, columnClicked, 0, 0, 0)
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2467 }
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2468 rowView.stack.addView(textview)
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2469 }
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2470 }
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2471 } else {
2846
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2472 // Update the position and parent
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2473 rowView.position = position
2846
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
2474 rowView.parent = parent as ListView
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2475
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2476 // Refresh the selected state from the model
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2477 rowView.isChecked = model.getRowSelected(position)
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2478
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2479 // Otherwise we just need to update the existing layout
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2480 for(i in extraColumns until displayColumns) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2481 var content = model.getRowAndColumn(position, i)
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2482
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2483 // Image
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2484 if((model.getColumnType(i) and 1) != 0) {
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2485 val imageview = rowView.stack.getChildAt(i - extraColumns)
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2486
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2487 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
2488 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
2489 }
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2490 } else {
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2491 // Text
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2492 val textview = rowView.stack.getChildAt(i - extraColumns)
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2493
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2494 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
2495 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
2496 textview.text = content
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2497 } else if (content is Long || content is Int) {
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2498 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
2499 }
2677
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2500 if(foreColor != null) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2501 textview.setTextColor(foreColor!!)
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
2502 }
2565
5463801a888f Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2564
diff changeset
2503 }
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
2504 }
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2505 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2506 }
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2507
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2508 // Check the main column content, image or text
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2509 var content = model.getRowAndColumn(position, 0)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2510
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2511 // Setup the built-in Image and Text based on if we are fileystem mode or not
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2512 if(isFilesystem) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2513 if(content is Drawable) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2514 rowView.imageview.setImageDrawable(content)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2515 }
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2516 content = model.getRowAndColumn(position, 1)
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2517 if (content is String) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2518 rowView.text.text = content
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2519 } else if(content is Long || content is Int) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2520 rowView.text.text = content.toString()
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2521 }
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2522 } else {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2523 if(content is Drawable) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2524 rowView.imageview.setImageDrawable(content)
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2525 rowView.text.text = ""
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2526 } else if (content is String) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2527 rowView.text.text = content
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2528 rowView.imageview.setImageDrawable(null)
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2529 } else if(content is Long || content is Int) {
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2530 rowView.text.text = content.toString()
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
2531 rowView.imageview.setImageDrawable(null)
2841
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2532 }
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2533 }
3e88b961f801 Android: Rewrite DWContainerRow using RelativeLayout and a LinearLayout stack.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2835
diff changeset
2534
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
2535 // 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
2536 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
2537 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
2538 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
2539 } 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
2540 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
2541 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2542 } 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
2543 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
2544 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
2545 } 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
2546 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
2547 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
2548 }
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2549 return rowView
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2550 }
2835
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2551 external fun eventHandlerInt(
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2552 obj1: View,
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2553 message: Int,
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2554 inta: Int,
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2555 intb: Int,
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2556 intc: Int,
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2557 intd: Int
1f0017a07771 Android: Implement DW_SIGNAL_COLUMN_CLICK for containers in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2834
diff changeset
2558 )
2555
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2559 }
d7d163d70763 Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2554
diff changeset
2560
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
2561 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
2562 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
2563 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
2564 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
2565 } else {
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2566 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
2567 }
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2568 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
2569 }
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2570 }
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
2571
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2572 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
2573 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
2574 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
2575 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
2576 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
2577 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
2578
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2579 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
2580 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
2581 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
2582 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
2583 pixelCount++
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2584 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
2585 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
2586 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
2587 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2588 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2589
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2590 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
2591 (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
2592 (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
2593 (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
2594 )
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2595 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2596 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
2597 }
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2598
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2599 class DWindows : AppCompatActivity() {
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2600 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
2601 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
2602 var threadCond = threadLock.newCondition()
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
2603 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
2604 var darkMode: Int = -1
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2605 var contMode: Int = 0
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
2606 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
2607 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
2608 private var appID: String? = null
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
2609 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
2610 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
2611 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
2612 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
2613 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
2614 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
2615 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
2616 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
2617 // 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
2618 private var windowTitles = mutableListOf<String?>()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2619 private var windowMenuBars = mutableListOf<DWMenu?>()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2620 private var windowStyles = mutableListOf<Int>()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2621 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
2622
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2623 // 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
2624 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
2625 {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2626 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
2627 runnable.run()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2628 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2629 threadLock.lock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2630 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
2631 threadLock.lock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2632 runnable.run()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2633 threadCond.signal()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2634 threadLock.unlock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2635 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2636 runOnUiThread(ourRunnable)
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2637 threadCond.await()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2638 threadLock.unlock()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2639 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2640 }
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2641
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2642 // 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
2643 // 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
2644 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
2645 val length = filename.length
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2646
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2647 for (ext in DWImageExts) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2648 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
2649 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
2650 try {
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2651 if (filebody.toInt() > 0) {
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2652 return true
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2653 }
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2654 } catch(e: NumberFormatException) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2655 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2656 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2657 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2658 return false
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2659 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2660
2659
3a14d7fd4b99 Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2658
diff changeset
2661 // 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
2662 private fun extractAssets() {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2663 var zipFile: ZipFile? = null
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2664 val targetDir = cacheDir
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2665
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2666 try {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2667 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
2668 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
2669 while (e.hasMoreElements()) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2670 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
2671 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
2672 isDWResource(entry.name)) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2673 continue
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2674 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2675 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
2676 targetFile.parentFile!!.mkdirs()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2677 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
2678 var ais: BufferedInputStream? = null
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2679 var aos: FileOutputStream? = null
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2680 try {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2681 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
2682 aos = FileOutputStream(targetFile)
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2683 ais.read(tempBuffer)
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2684 aos.write(tempBuffer)
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2685 } catch (e: IOException) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2686 } finally {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2687 ais?.close()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2688 aos?.close()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2689 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2690 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2691 } catch (e: IOException) {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2692 } finally {
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2693 zipFile?.close()
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2694 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2695 }
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2696
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2697 // 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
2698 // 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
2699 // 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
2700 // 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
2701 // 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
2702 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
2703 super.onCreate(savedInstanceState)
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2704
2480
878d36588aaa Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2479
diff changeset
2705 // Turn on rotation
878d36588aaa Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2479
diff changeset
2706 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
2707
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2708 // 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
2709 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
2710 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
2711 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
2712 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
2713 val c = cacheDir.path
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2714
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2715 // 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
2716 // 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
2717 // other Dynamic Windows platforms
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
2718 extractAssets()
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
2719
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2720 // 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
2721 windowLayout = ViewPager2(this)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2722 windowLayout!!.id = View.generateViewId()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2723 windowLayout!!.adapter = DWTabViewPagerAdapter()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2724 windowLayout!!.isUserInputEnabled = false
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2725 windowLayout!!.layoutParams =
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2726 ViewGroup.LayoutParams(
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2727 ViewGroup.LayoutParams.MATCH_PARENT,
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2728 ViewGroup.LayoutParams.MATCH_PARENT
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2729 )
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2730
2756
4f09bf72b391 Android: Attempt to get the selection background color from the theme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2755
diff changeset
2731 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
2732
2498
4ae2b3b77f25 Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2497
diff changeset
2733 // 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
2734 // 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
2735 dwindowsInit(s, c, this.getPackageName())
2496
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2736 }
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2737
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2738 override fun onConfigurationChanged(newConfig: Configuration) {
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2739 super.onConfigurationChanged(newConfig)
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2740
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2741 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
2742 when (currentNightMode) {
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2743 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
2744 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
2745 }
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2746
2499
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
2747 // 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
2748 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
2749 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
2750 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
2751 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
2752 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
2753 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
2754
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2755 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
2756 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
2757
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2758 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
2759 }
2496
3bf2f08fdc45 Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2495
diff changeset
2760 }
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2761 }
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
2762
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
2763 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
2764 if(windowLayout != null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2765 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
2766 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
2767
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2768 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
2769 var menuBar = windowMenuBars[index]
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2770
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2771 if(menuBar == null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2772 menuBar = DWMenu()
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2773 windowMenuBars[index] = menuBar
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2774 }
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
2775 menuBar.menu = menu
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2776 return super.onCreateOptionsMenu(menu)
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2777 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2778 }
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2779 return false
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2780 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2781
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
2782 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
2783 if(windowLayout != null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2784 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
2785 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
2786
17c34bdaec6c Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2684
diff changeset
2787 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
2788 var menuBar = windowMenuBars[index]
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2789
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2790 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
2791 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
2792 } else {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2793 menuBar = DWMenu()
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
2794 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
2795 windowMenuBars[index] = menuBar
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2796 }
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2797 return super.onPrepareOptionsMenu(menu)
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2798 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2799 }
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2800 return false
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2801 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2802
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
2803 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
2804 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
2805 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
2806 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
2807 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
2808
2670
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
2809 // 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
2810 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
2811 // 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
2812 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
2813 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2814 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2815 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
2816
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
2817 // 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
2818 // 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
2819
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2820 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
2821 {
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2822 return darkMode
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2823 }
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
2824
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2825 fun setContainerMode(mode: Int)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2826 {
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2827 contMode = mode
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2828 }
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
2829
2694
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2830 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
2831 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
2832
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2833 waitOnUiThread {
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2834 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
2835 try {
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2836 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
2837 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
2838 } 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
2839 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
2840 }
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2841 }
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2842 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
2843 }
cee79add3669 Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2692
diff changeset
2844
2607
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2845 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
2846 {
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
2847 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
2848
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2849 // 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
2850 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
2851 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
2852 }
dbcd9416e9c9 Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2613
diff changeset
2853
2607
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2854 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
2855 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
2856
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2857 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
2858 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
2859 }
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2860 }
3b9bbd69bb9c Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2596
diff changeset
2861
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2862 fun menuBarNew(location: View): DWMenu?
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2863 {
2666
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2864 var menuBar: DWMenu? = null
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2865
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2866 if(windowLayout != null) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2867 waitOnUiThread {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2868 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
2869 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
2870
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2871 if (index != -1) {
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2872 menuBar = DWMenu()
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2873 windowMenuBars[index] = menuBar
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2874 }
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2875 }
4f2d433747e2 Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2665
diff changeset
2876 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2877 return menuBar
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2878 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2879
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2880 fun menuNew(cid: Int): DWMenu
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2881 {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2882 val menu = DWMenu()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2883 menu.id = cid
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2884 return menu
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2885 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2886
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2887 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
2888 {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2889 val menuitem = DWMenuItem()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2890 menuitem.id = cid
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2891 menuitem.title = title
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2892 menuitem.check = check != 0
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2893 if(submenu != null) {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2894 menuitem.submenu = submenu
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2895 }
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2896 if((flags and (1 shl 1)) != 0) {
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2897 menuitem.enabled = false
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2898 }
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2899 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
2900 menuitem.checked = true
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2901 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2902 if(end == 0) {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2903 menu.children.add(0, menuitem)
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2904 } else {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2905 menu.children.add(menuitem)
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2906 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2907 return menuitem
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2908 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
2909
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
2910 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
2911 {
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
2912 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
2913 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
2914 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
2915 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
2916 }
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
2917 }
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
2918
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
2919 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
2920 {
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
2921 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
2922 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
2923 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
2924 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
2925 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
2926 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
2927 }
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
2928 }
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
2929 }
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
2930 }
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
2931
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
2932 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
2933 {
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
2934 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
2935 if(menuitem.id == cid) {
2806
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2936 var changed: Boolean = false
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2937 // Handle DW_MIS_ENABLED/DISABLED
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2938 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
2939 var enabled = false
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2940
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2941 // Handle DW_MIS_ENABLED
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2942 if ((state and 1) != 0) {
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2943 enabled = true
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2944 }
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2945 menuitem.enabled = enabled
2806
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2946 if (menuitem.menuitem != null && menuitem.menuitem!!.isEnabled != enabled) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2947 menuitem.menuitem!!.isEnabled = enabled
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2948 changed = true
2546
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2949 }
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2950 }
897d94c20365 Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2545
diff changeset
2951
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
2952 // 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
2953 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
2954 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
2955
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
2956 // 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
2957 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
2958 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
2959 }
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
2960 menuitem.checked = checked
2806
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2961 if (menuitem.menuitem != null && menuitem.menuitem!!.isChecked != checked) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2962 menuitem.menuitem!!.isChecked = checked
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2963 changed = true
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2964 }
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
2965 if(changed == true) {
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
2966 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
2967 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
2968 }
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
2969 }
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
2970 }
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
2971 }
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
2972 }
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
2973 }
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
2974
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
2975 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
2976 var window: LinearLayout? = null
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2977
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2978 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
2979 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
2980 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
2981 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
2982
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
2983 setContentView(windowLayout)
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2984
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2985 window = LinearLayout(this)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2986 window!!.visibility = View.GONE
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2987 window!!.tag = dataArrayMap
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2988 window!!.layoutParams =
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2989 LinearLayout.LayoutParams(
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2990 LinearLayout.LayoutParams.MATCH_PARENT,
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2991 LinearLayout.LayoutParams.MATCH_PARENT
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2992 )
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2993
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2994 // Update our window list
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2995 adapter.viewList.add(window!!)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2996 windowTitles.add(title)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2997 windowMenuBars.add(null)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2998 windowStyles.add(style)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
2999 windowDefault.add(null)
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3000
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3001 // 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
3002 // We can set stuff immediately
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3003 if (adapter.viewList.count() == 1) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3004 this.title = title
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3005 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
3006 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
3007 supportActionBar?.hide()
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3008 }
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3009 }
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
3010 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
3011 }
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3012 }
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3013 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
3014 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3015
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
3016 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
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 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
3019 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
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 }
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
3022
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
3023 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
3024 {
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3025 if(windowLayout != null) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3026 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
3027 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
3028
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3029 if (index != -1) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3030 windowDefault[index] = default
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3031 }
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3032 }
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
3033 }
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
3034
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
3035 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
3036 {
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
3037 // 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
3038 waitOnUiThread {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3039 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
3040 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
3041
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3042 if (ourmask != 0) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3043 // 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
3044 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
3045
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3046 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
3047 }
2803
708bcef0ce6b Android: Add support for DW_BS_NOBORDER on bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2799
diff changeset
3048 } else if(window is ImageButton) {
708bcef0ce6b Android: Add support for DW_BS_NOBORDER on bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2799
diff changeset
3049 // DW_BS_NOBORDER = 1
708bcef0ce6b Android: Add support for DW_BS_NOBORDER on bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2799
diff changeset
3050 if((mask and 1) == 1) {
708bcef0ce6b Android: Add support for DW_BS_NOBORDER on bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2799
diff changeset
3051 val button = window as ImageButton
708bcef0ce6b Android: Add support for DW_BS_NOBORDER on bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2799
diff changeset
3052 if((style and 1) == 1) {
708bcef0ce6b Android: Add support for DW_BS_NOBORDER on bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2799
diff changeset
3053 button.background = null
708bcef0ce6b Android: Add support for DW_BS_NOBORDER on bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2799
diff changeset
3054 } // TODO: Handle turning border back on if possible
708bcef0ce6b Android: Add support for DW_BS_NOBORDER on bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2799
diff changeset
3055 }
2806
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3056 } else if(window is DWMenuItem) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3057 var menuitem = window as DWMenuItem
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3058 var changed: Boolean = false
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3059
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3060 // Handle DW_MIS_ENABLED/DISABLED
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3061 if((mask and (1 or (1 shl 1))) != 0) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3062 var enabled = false
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3063
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3064 // Handle DW_MIS_ENABLED = 1 or DW_MIS_DISABLED = 0
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3065 if (((mask and 1) != 0 && (style and 1) != 0) ||
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3066 ((mask and (1 shl 1) != 0 && (style and (1 shl 1) == 0)))) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3067 enabled = true
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3068 }
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3069 menuitem.enabled = enabled
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3070 if(menuitem.menuitem != null && menuitem.menuitem!!.isEnabled != enabled) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3071 menuitem.menuitem!!.isEnabled = enabled
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3072 changed = true
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3073 }
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3074 }
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3075
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3076 // Handle DW_MIS_CHECKED/UNCHECKED
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3077 if((mask and ((1 shl 2) or (1 shl 3))) != 0) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3078 var checked = false
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3079
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3080 // Handle DW_MIS_CHECKED = 1 or DW_MIS_UNCHECKED = 0
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3081 if (((mask and (1 shl 2)) != 0 && (style and (1 shl 2)) != 0) ||
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3082 ((mask and (1 shl 3) != 0 && (style and (1 shl 3) == 0)))) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3083 checked = true
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3084 }
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3085 menuitem.checked = checked
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3086 if (menuitem.menuitem != null && menuitem.menuitem!!.isChecked != checked) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3087 menuitem.menuitem!!.isChecked = checked
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3088 changed = true
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3089 }
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3090 }
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3091 if(changed == true) {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3092 runOnUiThread {
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3093 invalidateOptionsMenu()
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3094 }
d7b6e19e44d2 Android: Add support for menu item handles in dw_window_set_style().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2805
diff changeset
3095 }
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3096 }
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3097 }
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3098 }
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3099
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3100 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
3101 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
3102 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3103
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3104 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
3105 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
3106 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
3107
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3108 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
3109 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
3110 } else {
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3111 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
3112 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3113 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3114 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3115
2686
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3116 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
3117 {
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3118 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
3119
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3120 waitOnUiThread {
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3121 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
3122 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
3123 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
3124 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
3125 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
3126 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
3127
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3128 // 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
3129 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
3130 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
3131 }
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3132 }
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3133 }
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3134 return retval
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3135 }
95f61d3f3d0d Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2685
diff changeset
3136
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3137 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
3138 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
3139
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3140 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
3141 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
3142
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
3143 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
3144 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
3145 }
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3146 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3147 return retval
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3148 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
3149
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3150 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
3151 waitOnUiThread {
2808
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3152 window.isEnabled = state
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3153 if(window is ImageButton) {
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3154 val ib = window as ImageButton
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3155
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3156 if(ib.drawable != null) {
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3157 if(state) {
2809
f81e92947f4a Android: Change syntax of previous commit to avoid deprecations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2808
diff changeset
3158 ib.drawable.colorFilter = null
2808
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3159 } else {
2809
f81e92947f4a Android: Change syntax of previous commit to avoid deprecations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2808
diff changeset
3160 ib.drawable.colorFilter = PorterDuffColorFilter(Color.LTGRAY, PorterDuff.Mode.SRC_IN)
2808
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3161 }
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3162 if(ib.background != null) {
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3163 if(state) {
2809
f81e92947f4a Android: Change syntax of previous commit to avoid deprecations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2808
diff changeset
3164 ib.background.colorFilter = null
2808
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3165 } else {
2809
f81e92947f4a Android: Change syntax of previous commit to avoid deprecations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2808
diff changeset
3166 ib.background.colorFilter = PorterDuffColorFilter(Color.LTGRAY, PorterDuff.Mode.SRC_IN)
2808
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3167 }
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3168 }
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3169 }
965c3c6ed1ed Android: Gray out disabled bitmap buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2806
diff changeset
3170 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3171 }
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3172 }
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3173
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3174 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
3175 {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3176 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
3177 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
3178 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
3179 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
3180 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
3181 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
3182
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3183 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
3184 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
3185 } 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
3186 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
3187 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3188
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3189 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
3190 if (bold && italic) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3191 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
3192 } else if (bold) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3193 style = Typeface.BOLD
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3194 } else if (italic) {
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3195 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
3196 }
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3197 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
3198
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3199 return typeface
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3200 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3201 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
3202 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3203
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3204 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
3205 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
3206 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
3207
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3208 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
3209 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
3210 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3211
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3212 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
3213 waitOnUiThread {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3214 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
3215 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
3216 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
3217 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
3218 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
3219 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3220 } 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
3221 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
3222 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
3223 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
3224 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
3225 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3226 } 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
3227 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
3228 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
3229 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
3230 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
3231 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3232 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3233 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3234 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3235 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3236
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
3237 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
3238 {
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
3239 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
3240
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
3241 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
3242 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
3243 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
3244
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
3245 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
3246 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
3247 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
3248 } 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
3249 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
3250 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
3251 } 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
3252 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
3253 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
3254 }
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
3255
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
3256 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
3257 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
3258 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
3259
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
3260 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
3261 }
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
3262 }
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
3263 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
3264 }
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
3265
2551
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3266 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
3267 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
3268 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
3269 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
3270
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3271 // 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
3272 // 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
3273 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
3274 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
3275 }
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3276
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3277 waitOnUiThread {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3278 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
3279 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
3280
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3281 // 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
3282 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
3283 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
3284 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
3285 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
3286 }
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3287 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
3288 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
3289 } 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
3290 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
3291
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3292 // 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
3293 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
3294 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
3295 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
3296 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
3297 }
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3298 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
3299 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
3300 } 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
3301 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
3302
127779860ac1 Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2550
diff changeset
3303 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
3304 } 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
3305 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
3306
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3307 // 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
3308 if(fore == 16) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3309 val value = TypedValue()
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3310 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
3311 colorfore = value.data
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3312 }
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3313
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3314 listbox.colorFore = colorfore
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3315 listbox.colorBack = colorback
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3316
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3317 listbox.setBackgroundColor(colorback)
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3318 } 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
3319 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
3320 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
3321
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3322 // 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
3323 if(fore == 16) {
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3324 val value = TypedValue()
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3325 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
3326 colorfore = value.data
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3327 }
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3328
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3329 adapter.foreColor = colorfore
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3330 adapter.backColor = colorback
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3331
c90b2d7057c8 Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2676
diff changeset
3332 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
3333 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3334 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3335 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
3336
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3337 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
3338 if(windowLayout != null) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3339 waitOnUiThread {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3340 if (window is TextView) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3341 val textview: TextView = window
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3342 textview.text = text
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3343 } else if (window is Button) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3344 val button: Button = window
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3345 button.text = text
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3346 } else if (window is LinearLayout) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3347 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
3348 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
3349
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3350 if(index != -1) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3351 windowTitles[index] = text
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3352 if(index == windowLayout!!.currentItem) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3353 this.title = text
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3354 }
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3355 }
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3356 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3357 }
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3358 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3359 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3360
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3361 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
3362 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
3363
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3364 if(windowLayout != null) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3365 waitOnUiThread {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3366 if (window is TextView) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3367 val textview: TextView = window
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3368 text = textview.text.toString()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3369 } else if (window is Button) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3370 val button: Button = window
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3371 text = button.text.toString()
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3372 } else if (window is LinearLayout) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3373 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
3374 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
3375
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3376 if(index != -1) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3377 text = windowTitles[index]
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3378 }
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3379 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3380 }
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3381 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3382 return text
2489
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3383 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3384
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
3385 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
3386 {
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3387 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
3388
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3389 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
3390 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
3391
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3392 // 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
3393 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
3394 // 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
3395 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
3396 // 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
3397 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
3398 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
3399 }
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3400 // 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
3401 // So using RecyclerView.scrollToPosition() also
2ad924c6493d Android: Still need to call setCurrentItem() on ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2668
diff changeset
3402 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
3403
2670
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3404 // 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
3405 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
3406 supportActionBar?.show()
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3407 } else {
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3408 supportActionBar?.hide()
e3a95940c18f Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2669
diff changeset
3409 }
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
3410 // 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
3411 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
3412 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
3413 }
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
3414 // 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
3415 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
3416 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
3417 } 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
3418 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
3419 }
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
3420 // 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
3421 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
3422 }
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3423 }
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3424 }
2ae70678c845 Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2666
diff changeset
3425
2503
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3426 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
3427 {
2665
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3428 if(windowLayout != null) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3429 waitOnUiThread {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3430 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
3431 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
3432
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3433 if(state == 0) {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3434 window.visibility = View.GONE
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3435 } else {
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3436 window.visibility = View.VISIBLE
aca4b56f50dd Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2659
diff changeset
3437 }
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
3438 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
3439 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
3440 }
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3441 }
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3442 }
1c2a79313b04 Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2502
diff changeset
3443
2796
0c534743b7a9 Android: Allow passing a menu window handle to dw_window_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2795
diff changeset
3444 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
3445 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
3446
2796
0c534743b7a9 Android: Allow passing a menu window handle to dw_window_destroy().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2795
diff changeset
3447 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
3448 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
3449 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
3450 } 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
3451 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
3452 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
3453 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
3454
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3455 // 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
3456 // 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
3457 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
3458 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
3459 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
3460
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3461 // 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
3462 // 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
3463 // 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
3464 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
3465 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
3466 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3467 // 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
3468 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
3469
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3470 // 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
3471 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
3472 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
3473 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
3474 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
3475 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
3476
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
3477 adapter.notifyDataSetChanged()
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
3478
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
3479 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
3480 } 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
3481 // 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
3482 // 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
3483 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
3484 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
3485
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3486 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
3487 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
3488 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3489 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3490 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3491 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3492 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
3493 }
917f2d1f9cae Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2667
diff changeset
3494
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3495 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
3496 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
3497 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
3498
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3499 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
3500 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
3501 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3502 return ""
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3503 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3504
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3505 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
3506 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
3507 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
3508
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3509 cm.setPrimaryClip(clipdata)
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3510 }
6c01b0132813 Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2488
diff changeset
3511
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3512 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
3513 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
3514 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3515 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
3516 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
3517
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3518 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
3519 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
3520 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
3521 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
3522 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
3523 )
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3524 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
3525 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
3526 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3527 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
3528 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3529 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
3530 }
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3531 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
3532 }
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3533
2689
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3534 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
3535 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
3536 waitOnUiThread {
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3537 box = RadioGroup(this)
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3538 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
3539
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3540 box!!.tag = dataArrayMap
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3541 box!!.layoutParams =
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3542 LinearLayout.LayoutParams(
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3543 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
3544 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
3545 )
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3546 if (type > 0) {
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3547 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
3548 } else {
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3549 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
3550 }
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3551 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
3552 }
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3553 return box
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3554 }
7127de139acf Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2688
diff changeset
3555
2706
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3556 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
3557 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
3558
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3559 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3560 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
3561 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
3562 val dataArrayMap = SimpleArrayMap<String, Long>()
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3563
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3564 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
3565 box.layoutParams =
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3566 LinearLayout.LayoutParams(
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3567 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
3568 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
3569 )
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3570 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
3571 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
3572 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3573 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
3574 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3575 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
3576 // 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
3577 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
3578 scrollBox!!.addView(box)
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3579 }
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3580 return scrollBox
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3581 }
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3582
2706
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3583 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
3584 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
3585
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3586 waitOnUiThread {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3587 // 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
3588 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
3589 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
3590 } else {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3591 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
3592 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3593 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3594 return retval
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3595 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3596
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3597 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
3598 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
3599
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3600 waitOnUiThread {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3601 // 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
3602 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
3603 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
3604 } else {
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3605 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
3606 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3607 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3608 return retval
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3609 }
4e9eba7f7226 Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2703
diff changeset
3610
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3611 // 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
3612 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
3613 {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3614 val parent = box.parent
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3615
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3616 if(parent is LinearLayout) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3617 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
3618
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3619 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
3620 if(params.height == 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3621 box.measure(0, 0)
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3622 val calch = box.measuredHeight
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3623
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3624 if(calch > 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3625 params.weight = calch.toFloat()
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3626 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3627 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3628 } else {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3629 if(params.width == 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3630 box.measure(0, 0)
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3631 val calcw = box.measuredWidth
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3632
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3633 if(calcw > 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3634 params.weight = calcw.toFloat()
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3635 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3636 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3637 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3638 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3639 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3640
2495
5664c91d03fb Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2494
diff changeset
3641 fun boxPack(
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3642 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
3643 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
3644 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
3645 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
3646 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
3647 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
3648 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
3649 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
3650 ) {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3651 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3652 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
3653 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
3654 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
3655 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
3656
a7868380098f Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2670
diff changeset
3657 // 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
3658 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
3659 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
3660 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
3661 }
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3662
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3663 // 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
3664 // 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
3665 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
3666 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
3667 } 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
3668 val sv: ScrollView = boxview
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
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 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
3671 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
3672 }
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3673 }
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3674
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3675 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
3676 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
3677
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3678 // 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
3679 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
3680 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
3681 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
3682 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
3683 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
3684 }
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3685 if (vsize != 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3686 val calch = item.measuredHeight
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3687
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3688 if(calch > 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3689 weight = calch.toFloat()
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3690 } else {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3691 weight = 1F
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3692 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3693 h = 0
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
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 } else {
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3696 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
3697 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
3698 }
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3699 if (hsize != 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3700 val calcw = item.measuredWidth
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3701
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3702 if(calcw > 0) {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3703 weight = calcw.toFloat()
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3704 } else {
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3705 weight = 1F
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3706 }
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3707 w = 0
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3708 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3709 }
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3710 // 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
3711 } else {
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3712 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
3713 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
3714 }
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3715 if(hsize == 0) {
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3716 if (width > 0) {
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3717 w = width
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3718 }
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3719 } 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
3720 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
3721 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
3722 } 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
3723 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
3724 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
3725 } 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
3726 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
3727
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
3728 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
3729 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
3730 }
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3731 }
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
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 }
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3734 if(vsize == 0) {
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3735 if (height > 0) {
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3736 h = height
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3737 }
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3738 } 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
3739 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
3740 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
3741 } 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
3742 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
3743 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
3744 } 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
3745 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
3746
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
3747 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
3748 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
3749 }
2553
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3750 }
2b4f2929408e Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2552
diff changeset
3751 }
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3752 }
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3753 }
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3754
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3755 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
3756
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3757 // 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
3758 // 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
3759 if (box.orientation == LinearLayout.VERTICAL) {
2681
c1482518b643 Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2677
diff changeset
3760 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
3761 params.weight = weight
2681
c1482518b643 Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2677
diff changeset
3762 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
3763 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3764 } else {
2681
c1482518b643 Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2677
diff changeset
3765 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
3766 params.weight = weight
2681
c1482518b643 Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2677
diff changeset
3767 params.width = 0
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3768 }
2480
878d36588aaa Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2479
diff changeset
3769 }
2552
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3770 // 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
3771 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
3772 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
3773 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
3774 } 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
3775 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
3776 } 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
3777 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
3778 }
303f544d14fa Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2551
diff changeset
3779 // 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
3780 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
3781 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
3782 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3783 item.layoutParams = params
2805
ebe139dc16dd Android: Interface Builder passes index 65535 to make sure we are packing to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2803
diff changeset
3784 // If we are out of bounds, pass -1 to add to the end
ebe139dc16dd Android: Interface Builder passes index 65535 to make sure we are packing to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2803
diff changeset
3785 if(index >= box.childCount) {
ebe139dc16dd Android: Interface Builder passes index 65535 to make sure we are packing to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2803
diff changeset
3786 box.addView(item, -1)
ebe139dc16dd Android: Interface Builder passes index 65535 to make sure we are packing to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2803
diff changeset
3787 } else {
ebe139dc16dd Android: Interface Builder passes index 65535 to make sure we are packing to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2803
diff changeset
3788 box.addView(item, index)
ebe139dc16dd Android: Interface Builder passes index 65535 to make sure we are packing to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2803
diff changeset
3789 }
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3790 boxUpdate(box)
2500
ac0b7e579229 Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2499
diff changeset
3791 }
2478
b0230e378667 Android: Improvements to boxPack to handle more parameters...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2477
diff changeset
3792 }
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3793 }
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
3794
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3795 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
3796 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3797 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
3798 box.removeView(item)
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3799 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
3800 }
2477
3fbf8783122d Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2476
diff changeset
3801 }
3fbf8783122d Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2476
diff changeset
3802
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3803 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
3804 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
3805
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3806 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3807 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
3808 box.removeView(item)
2683
e7885fd45f7b Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2682
diff changeset
3809 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
3810 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3811 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
3812 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3813
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3814 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
3815 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
3816 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3817 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
3818 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
3819
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3820 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
3821 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
3822 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
3823 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
3824 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
3825 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
3826 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
3827 }
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
3828 }
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3829 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
3830 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3831
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3832 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
3833 var button: ImageButton? = null
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3834 waitOnUiThread {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3835 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
3836 val dataArrayMap = SimpleArrayMap<String, Long>()
2653
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3837 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
3838
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3839 button!!.tag = dataArrayMap
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3840 button!!.id = resid
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3841 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
3842 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
3843 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
3844 }
2653
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3845
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3846 if(resid > 0 && resid < 65536) {
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3847 filename = resid.toString()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
3848 } else {
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
3849 button!!.setImageResource(resid)
2653
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3850 }
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3851
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3852 if(filename != null) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
3853 for (ext in DWImageExts) {
2653
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3854 // 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
3855 try {
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3856 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
3857 val b = BitmapFactory.decodeStream(f)
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3858
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3859 if (b != null) {
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3860 button!!.setImageBitmap(b)
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3861 break
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3862 }
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3863 } catch (e: IOException) {
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3864 }
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3865 }
297456a381e4 Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2652
diff changeset
3866 }
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3867 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3868 return button
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3869 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3870
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3871 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
3872 var button: ImageButton? = null
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3873 waitOnUiThread {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3874 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
3875 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
3876
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3877 button!!.tag = dataArrayMap
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3878 button!!.id = cid
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3879 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
3880 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
3881 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
3882 }
2564
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3883
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
3884 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
3885 // 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
3886 try {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3887 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
3888 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
3889
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3890 if(b != null) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3891 button!!.setImageBitmap(b)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3892 break
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3893 }
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3894 } catch (e: IOException) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
3895 }
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3896 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3897 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3898 return button
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3899 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3900
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3901 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
3902 var button: ImageButton? = null
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3903 waitOnUiThread {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3904 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
3905 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
3906 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
3907
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3908 button!!.tag = dataArrayMap
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3909 button!!.id = cid
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3910 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
3911 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
3912 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
3913 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3914 button!!.setImageBitmap(b)
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3915 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3916 return button
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3917 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
3918
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3919 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
3920 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
3921
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3922 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3923 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
3924 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
3925
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3926 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
3927 entryfield!!.id = cid
2554
4c75fb6089a9 Android: Need to set isSingleLine for entryfields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2553
diff changeset
3928 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
3929 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
3930 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
3931 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
3932 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3933 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
3934 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3935 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
3936 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3937
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3938 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
3939 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3940 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
3941 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3942 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3943
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3944 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
3945 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
3946
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3947 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3948 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
3949 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
3950
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3951 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
3952 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
3953 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
3954 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
3955 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
3956 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
3957 }
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
3958 }
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3959 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
3960 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3961
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3962 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
3963 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
3964
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3965 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
3966 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
3967
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3968 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
3969 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
3970 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
3971 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
3972 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
3973 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
3974 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
3975 }
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
3976 }
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3977 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
3978 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
3979
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3980 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
3981 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3982 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3983 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
3984 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
3985 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
3986 } 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
3987 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
3988 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
3989 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3990 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3991 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3992
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
3993 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
3994 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
3995 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
3996
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3997 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
3998 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
3999 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
4000 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
4001 } 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
4002 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
4003 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
4004 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4005 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4006 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
4007 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4008
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4009 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
4010 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
4011
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4012 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4013 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
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 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
4016 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
4017 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
4018 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
4019 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
4020 val border = GradientDrawable()
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
4021
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4022 // 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
4023 // 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
4024 // 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
4025 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
4026 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
4027 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
4028 }
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
4029 }
2476
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
4030 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
4031 }
20c9e83cba2a Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2475
diff changeset
4032
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4033 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
4034 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4035 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
4036
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4037 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4038 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
4039 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
4040
2701
9df2c11f020f Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2694
diff changeset
4041 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
4042 mle!!.tag = dataArrayMap
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4043 mle!!.id = cid
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4044 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
4045 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
4046 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
4047 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
4048 mle!!.isVerticalScrollBarEnabled = true
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4049 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
4050 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
4051 mle!!.isHorizontalScrollBarEnabled = false
2581
9dea42f27b0a Android: MLE should have TOP/LEFT gravity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2580
diff changeset
4052 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
4053 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4054 return mle
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4055 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4056
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
4057 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
4058 {
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
4059 waitOnUiThread {
2716
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
4060 val layout = mle.layout
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
4061
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
4062 if(layout != null) {
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
4063 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
4064
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
4065 mle.scrollTo(0, y)
a1fea6b9f308 Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2715
diff changeset
4066 }
2707
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
4067 }
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
4068 }
a3f6ca621453 Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2706
diff changeset
4069
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4070 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
4071 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4072 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4073 if (state != 0) {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4074 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
4075 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
4076 } else {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4077 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
4078 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
4079 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4080 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4081 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4082
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4083 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
4084 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4085 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
4086 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
4087 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4088 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4089
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4090 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
4091 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4092 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4093 mle.setSelection(point)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4094 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4095 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4096
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
4097 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
4098 {
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
4099 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
4100 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
4101
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
4102 // 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
4103 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
4104 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
4105 } 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
4106 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
4107 }
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
4108 }
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
4109 }
4f12dc8e8f18 Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2701
diff changeset
4110
2708
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4111 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
4112 {
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4113 var retval: Int = -1
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4114 var ignorecase: Boolean = true
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4115
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4116 // DW_MLE_CASESENSITIVE 1
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4117 if(flags == 1) {
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4118 ignorecase = false
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4119 }
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4120
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4121 waitOnUiThread {
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4122 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
4123
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4124 if(retval > -1) {
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4125 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
4126 }
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4127 }
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4128 return retval
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4129 }
3a7dcc0ae08b Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2707
diff changeset
4130
2510
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4131 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
4132 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4133 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4134 mle.setText("")
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4135 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4136 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4137
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4138 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
4139 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4140 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
4141
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4142 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4143 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
4144 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
4145
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4146 if(startpoint < 1) {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4147 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
4148
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4149 mle.setText(newtext)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4150 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
4151 } 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
4152 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
4153
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4154 mle.setText(newtext)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4155 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
4156 } else {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4157 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
4158
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4159 mle.setText(newtext)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4160 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
4161 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4162 mle.setSelection(retval)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4163 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4164 return retval
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4165 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4166
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4167 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
4168 {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4169 waitOnUiThread {
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4170 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
4171 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
4172
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4173 mle.setText(newtext)
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4174 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4175 }
f54051c3f2a5 Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2505
diff changeset
4176
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4177 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
4178 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4179 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
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 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4182 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
4183 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
4184 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
4185 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
4186 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
4187
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4188 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
4189 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
4190 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
4191 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
4192 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
4193 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
4194 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
4195 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
4196 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
4197 }.attach()
2488
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
4198
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4199 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
4200 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
4201 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
4202 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4203 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
4204 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4205 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
4206 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
4207 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
4208 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
4209 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
4210 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
4211 } else {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4212 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
4213 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4214 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
4215 // 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
4216 // 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
4217 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
4218 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
4219 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
4220 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
4221
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4222 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
4223 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
4224 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4225
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4226 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
4227 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
4228 })
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
4229 }
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
4230 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
4231 }
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
4232
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4233 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
4234 {
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4235 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
4236
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4237 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4238 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
4239 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
4240
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4241 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
4242 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
4243 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
4244 } 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
4245 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
4246 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
4247 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4248
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4249 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
4250 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
4251 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
4252
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4253 // 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
4254 do {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4255 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
4256 } 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
4257 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
4258 // 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
4259 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
4260 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
4261 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
4262 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
4263 )
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4264 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
4265 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
4266 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
4267 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
4268 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
4269 } else {
2682
856d3c8b559f Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2681
diff changeset
4270 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
4271 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
4272 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
4273 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
4274 }
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4275 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
4276 }
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
4277 }
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4278 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
4279 }
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
4280
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
4281 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
4282 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
4283 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
4284 }
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4285 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
4286 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
4287 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
4288 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
4289 } 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
4290 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
4291 }
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4292 }
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4293 }
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4294
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4295 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
4296 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4297 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4298 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
4299 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
4300
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4301 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
4302 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
4303 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
4304 } 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
4305 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
4306 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
4307 }
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
4308
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4309 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
4310 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
4311 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
4312 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
4313
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4314 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
4315 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
4316 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
4317 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
4318 tabs.removeTab(tab)
2691
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4319 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
4320 }
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4321 }
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
4322 }
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
4323 }
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
4324
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4325 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
4326 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4327 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4328 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
4329 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
4330
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4331 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
4332 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
4333 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
4334 } 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
4335 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
4336 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
4337 }
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
4338
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4339 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
4340 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
4341 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
4342 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
4343
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4344 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
4345 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
4346 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
4347 }
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
4348
8352c38bc20b Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2582
diff changeset
4349 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
4350 }
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
4351 }
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
4352 }
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
4353
2736
09775418c776 Android: Use "View" as the type for the viewList instead of LinearLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2735
diff changeset
4354 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
4355 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4356 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4357 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
4358 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
4359
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4360 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
4361 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
4362 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
4363 } 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
4364 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
4365 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
4366 }
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
4367
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4368 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
4369 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
4370 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
4371
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4372 // 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
4373 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
4374 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
4375 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
4376 )
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4377
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4378 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
4379 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
4380 }
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
4381 }
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
4382 }
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
4383
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4384 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
4385 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4386 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
4387
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4388 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4389 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
4390 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
4391
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4392 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
4393 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
4394 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
4395 } 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
4396 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
4397 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
4398 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4399
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4400 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
4401 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
4402 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
4403 }
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
4404 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4405 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
4406 }
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
4407
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
4408 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
4409 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4410 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4411 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
4412 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
4413
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4414 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
4415 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
4416 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
4417 } 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
4418 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
4419 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
4420 }
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
4421
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4422 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
4423 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
4424 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
4425
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4426 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
4427 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
4428 pager.setCurrentItem(index, true)
e13607b87517 Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2690
diff changeset
4429 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4430 }
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
4431 }
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
4432 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
4433
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4434 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
4435 {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4436 var splitbar: ConstraintLayout? = null
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4437
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4438 waitOnUiThread {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4439 splitbar = ConstraintLayout(this)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4440 if(splitbar != null) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4441 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
4442 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
4443
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4444 constraintSet.clone(splitbar)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4445
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4446 splitbar!!.tag = dataArrayMap
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4447 splitbar!!.id = cid
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4448
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4449 // 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
4450 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
4451 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
4452
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4453 // Place the top/left item
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4454 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
4455 if(topleft.id < 1) {
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4456 topleft.id = View.generateViewId()
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4457 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4458 splitbar!!.addView(topleft)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4459 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4460 topleft.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4461 ConstraintLayout.LayoutParams.TOP,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4462 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4463 ConstraintLayout.LayoutParams.TOP
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4464 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4465 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4466 topleft.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4467 ConstraintLayout.LayoutParams.LEFT,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4468 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4469 ConstraintLayout.LayoutParams.LEFT
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4470 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4471
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4472 if (type == 0) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4473 // Horizontal
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4474 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4475 topleft.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4476 ConstraintLayout.LayoutParams.BOTTOM,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4477 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4478 ConstraintLayout.LayoutParams.BOTTOM
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4479 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4480 constraintSet.constrainPercentWidth(topleft.id, 0.5F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4481 } else {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4482 // Vertical
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4483 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4484 topleft.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4485 ConstraintLayout.LayoutParams.RIGHT,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4486 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4487 ConstraintLayout.LayoutParams.RIGHT
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4488 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4489 constraintSet.constrainPercentHeight(topleft.id, 0.5F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4490 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4491 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4492
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4493 // Place the bottom/right item
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4494 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
4495 if (bottomright.id < 1) {
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4496 bottomright.id = View.generateViewId()
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4497 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4498 splitbar!!.addView(bottomright)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4499 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4500 bottomright.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4501 ConstraintLayout.LayoutParams.BOTTOM,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4502 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4503 ConstraintLayout.LayoutParams.BOTTOM
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4504 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4505 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4506 bottomright.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4507 ConstraintLayout.LayoutParams.RIGHT,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4508 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4509 ConstraintLayout.LayoutParams.RIGHT
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4510 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4511
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4512 if (type == 0) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4513 // Horizontal
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4514 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4515 bottomright.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4516 ConstraintLayout.LayoutParams.TOP,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4517 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4518 ConstraintLayout.LayoutParams.TOP
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4519 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4520 constraintSet.constrainPercentWidth(bottomright.id, 0.5F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4521 } else {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4522 // Vertical
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4523 constraintSet.connect(
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4524 bottomright.id,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4525 ConstraintLayout.LayoutParams.LEFT,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4526 ConstraintLayout.LayoutParams.PARENT_ID,
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4527 ConstraintLayout.LayoutParams.LEFT
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4528 )
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4529 constraintSet.constrainPercentHeight(bottomright.id, 0.5F)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4530 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4531 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4532
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4533 // 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
4534 constraintSet.applyTo(splitbar)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4535 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4536 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4537 return splitbar
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4538 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4539
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4540 fun splitBarGet(splitbar: ConstraintLayout): Float {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4541 var position: Float = 50.0F
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4542
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4543 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
4544 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
4545 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
4546
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4547 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
4548 percent = dataArrayMap.get("_dw_percent")!!
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4549 }
2656
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4550
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4551 position = percent.toFloat() / 1000000.0F
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4552 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4553 return position
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4554 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4555
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4556 fun splitBarSet(splitbar: ConstraintLayout, position: Float) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4557 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
4558 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
4559 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
4560
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4561 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
4562 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
4563 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
4564 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
4565 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
4566
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4567 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
4568 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
4569 }
2bdbd5e83654 Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2655
diff changeset
4570 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
4571
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4572 constraintSet.clone(splitbar)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4573 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
4574 if (type == 1L) {
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4575 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
4576 } else {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4577 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
4578 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4579 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4580 if (bottomright != null) {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4581 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
4582 if (type == 1L) {
2650
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4583 constraintSet.constrainPercentHeight(bottomright.id, altper)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4584 } else {
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4585 constraintSet.constrainPercentWidth(bottomright.id, altper)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4586 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4587 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4588 constraintSet.applyTo(splitbar)
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4589 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4590 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4591 }
7101b5692601 Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2643
diff changeset
4592
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4593 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
4594 {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4595 var scrollbar: DWSlider? = null
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4596
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4597 waitOnUiThread {
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4598 val dataArrayMap = SimpleArrayMap<String, Long>()
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4599
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4600 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
4601 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
4602 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
4603 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
4604 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
4605 scrollbar!!.slider.progressBackgroundTintList = null
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4606 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
4607 scrollbar!!.slider.rotation = 90F
2719
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4608 }
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4609 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
4610 override fun onStopTrackingTouch(seekBar: SeekBar) {
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4611 }
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4612
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4613 override fun onStartTrackingTouch(seekBar: SeekBar) {
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4614 }
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4615
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4616 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
4617 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
4618 }
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4619 })
6754e8f70142 Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2716
diff changeset
4620 }
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4621 return scrollbar
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4622 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4623
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4624 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
4625 {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4626 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
4627
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4628 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4629 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
4630
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4631 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
4632 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
4633 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
4634 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
4635 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
4636 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
4637 }
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4638 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
4639 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
4640 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4641
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4642 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
4643 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4644
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4645 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
4646 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
4647 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4648 })
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4649 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4650 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
4651 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4652
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4653 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
4654 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4655 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
4656
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4657 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4658 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
4659
2574
5b13bb267364 Android: Percent widget should be using horizontal ProgressBar.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2573
diff changeset
4660 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
4661 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
4662 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
4663 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
4664 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4665 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
4666 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4667
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4668 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
4669 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4670 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
4671
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4672 waitOnUiThread {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4673 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
4674
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4675 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
4676 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
4677 } else {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4678 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
4679 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
4680 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4681 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
4682 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4683 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
4684 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4685
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4686 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
4687 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4688 waitOnUiThread {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4689 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
4690
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4691 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
4692 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
4693 } else {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4694 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
4695 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
4696 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4697 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
4698 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4699 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4700
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4701 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
4702 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4703 waitOnUiThread {
2720
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4704 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
4705
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4706 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
4707 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
4708 } else {
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4709 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
4710 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
4711 }
9ce1649b0fbd Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2719
diff changeset
4712 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
4713 }
2492
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4714 }
e2ca6c1a4661 Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2491
diff changeset
4715
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4716 fun htmlNew(cid: Int): WebView?
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4717 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4718 var html: WebView? = null
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4719
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4720 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
4721 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
4722
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4723 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
4724 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
4725 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
4726 // 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
4727 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
4728 html!!.settings.javaScriptEnabled = true
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4729 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4730 return html
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4731 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4732
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4733 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
4734 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4735 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4736 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
4737 }
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4738 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4739
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4740 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
4741 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4742 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4743 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
4744 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
4745 }
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4746 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4747
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4748 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
4749 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4750 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4751 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
4752 // 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
4753 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
4754 }
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4755 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4756 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4757
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4758 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
4759 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4760 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4761 when (action) {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
4762 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
4763 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
4764 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
4765 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
4766 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
4767 }
2501
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4768 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4769 }
41984ffb5ca2 Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2500
diff changeset
4770
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4771 fun spinButtonNew(text: String, cid: Int): DWSpinButton?
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4772 {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4773 var spinbutton: DWSpinButton? = null
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4774
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4775 waitOnUiThread {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4776 val dataArrayMap = SimpleArrayMap<String, Long>()
2520
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4777 val newval = text.toLongOrNull()
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4778
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4779 spinbutton = DWSpinButton(this)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4780 spinbutton!!.tag = dataArrayMap
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4781 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
4782 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
4783 spinbutton!!.setText(text)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4784 if(newval != null) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4785 spinbutton!!.value = newval
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4786 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4787 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4788 return spinbutton
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4789 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4790
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4791 fun spinButtonSetPos(spinbutton: DWSpinButton, position: Long)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4792 {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4793 waitOnUiThread {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4794 spinbutton.value = position
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4795 spinbutton.setText(position.toString())
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4796 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4797 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4798
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4799 fun spinButtonSetLimits(spinbutton: DWSpinButton, upper: Long, lower: Long)
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4800 {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4801 waitOnUiThread {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4802 spinbutton.maximum = upper
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4803 spinbutton.minimum = lower
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4804 if(spinbutton.value > upper) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4805 spinbutton.value = upper
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4806 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4807 if(spinbutton.value < lower) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4808 spinbutton.value = lower
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4809 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4810 spinbutton.setText(spinbutton.value.toString())
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4811 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4812 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4813
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4814 fun spinButtonGetPos(spinbutton: DWSpinButton): Long
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4815 {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4816 var retval: Long = 0
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4817
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4818 waitOnUiThread {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4819 val newvalue = spinbutton.text.toString().toLongOrNull()
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4820
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4821 if(newvalue == null) {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4822 retval = spinbutton.value
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4823 } else {
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4824 retval = newvalue
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4825 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4826 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4827 return retval
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4828 }
167af4b0004b Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2519
diff changeset
4829
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4830 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
4831 {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4832 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
4833
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4834 waitOnUiThread {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
4835 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
4836
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4837 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
4838 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
4839 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
4840 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
4841 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
4842 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4843 return combobox
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4844 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
4845
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4846 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
4847 {
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4848 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
4849
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4850 waitOnUiThread {
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4851 tree = DWTree(this)
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4852 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
4853 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
4854 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
4855 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
4856 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
4857 }
94af460bb954 Android: Implement dw_tree_new() and verify code doesn't crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2773
diff changeset
4858 }
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4859 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
4860 tree!!.tag = dataArrayMap
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4861 tree!!.id = cid
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4862 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
4863 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
4864 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
4865 if(treeitem != null) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4866 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
4867 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
4868 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4869 true
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4870 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4871 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
4872 if(treeitem != null) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4873 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
4874 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
4875 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4876 true
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4877 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4878 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
4879 if(treeitem != null) {
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4880 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
4881 }
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4882 true
220d63da2183 Android: Implement ITEM_CONTEXT, ITEM_SELECT and TREE_EXPAND callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2784
diff changeset
4883 }
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4884 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4885 }
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4886 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
4887 }
2773
f207b7ee177f Android: Experimental Kotlin tree view implmentation, not enabled yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2756
diff changeset
4888
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
4889 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
4890 {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4891 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
4892
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4893 waitOnUiThread {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4894 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
4895
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4896 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
4897 if(parent == null) {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4898 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
4899 } else {
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4900 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
4901 }
2783
1b7c1b6ee760 Android: Fix tree basic functionality... need to add child branches,
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2782
diff changeset
4902 tree.updateTree()
2775
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4903 }
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4904 return treeitem
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4905 }
5f77f52df8ac Android: Work in progress changes to get the tree working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2774
diff changeset
4906
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4907 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
4908 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4909 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
4910
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4911 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4912 retval = item.getTitle()
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4913 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4914 return retval
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4915 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4916
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4917 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
4918 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4919 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
4920
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4921 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4922 retval = item.getParent()
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4923 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4924 return retval
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4925 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4926
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4927 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
4928 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4929 waitOnUiThread {
2782
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4930 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
4931
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4932 if(title != null) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4933 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
4934 changed = true
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4935 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4936 if(icon != null) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4937 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
4938 changed = true
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4939 }
dff8fb5ddadd Android: Added layout manager and code to trigger data change updates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2781
diff changeset
4940 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
4941 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
4942 treeViewAdapter.notifyDataSetChanged()
2777
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4943 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4944 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4945 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4946
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4947 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
4948 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4949 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4950 item.setData(data)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4951 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4952 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4953
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4954 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
4955 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4956 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
4957
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4958 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4959 retval = item.getData()
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4960 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4961 return retval
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4962 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4963
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4964 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
4965 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4966 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4967 item.setSelected(true)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4968 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4969 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4970
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4971 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
4972 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4973 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4974 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
4975
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4976 if(state != 0) {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4977 treeViewAdapter.expandNode(item)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4978 } else {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4979 treeViewAdapter.collapseNode(item)
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4980 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4981 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4982 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4983
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4984 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
4985 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4986 // TODO: Implement this
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4987 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4988
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4989 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
4990 {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4991 waitOnUiThread {
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4992 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
4993 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
4994 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
4995 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4996 }
7d7eac751f7d Android: Connect the C API to the Kotlin tree implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2776
diff changeset
4997
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
4998 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
4999 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5000 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
5001
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5002 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5003 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
5004 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
5005
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5006 // Save the global container mode into the adapter
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5007 adapter.contMode = contMode
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5008 cont = ListView(this)
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5009 cont!!.tag = dataArrayMap
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5010 cont!!.id = cid
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5011 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
5012 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
5013 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
5014 }
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5015 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
5016 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
5017 val data = adapter.model.getRowData(position)
2613
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
5018 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
5019 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
5020
2563
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
5021 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
5022 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
5023 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
5024 lastClickView = cont!!
2613
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
5025 // 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
5026 // Generate an ENTER event
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
5027 if(cont!!.choiceMode != ListView.CHOICE_MODE_MULTIPLE ||
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
5028 (position == adapter.lastClickRow &&
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
5029 (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
5030 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
5031 } else {
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
5032 // 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
5033 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
5034 }
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
5035 adapter.lastClick = now
72f1141c07aa Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2611
diff changeset
5036 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
5037 }
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
5038 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
5039 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
5040 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
5041 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
5042
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
5043 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
5044 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
5045 }
56183bef6793 Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2562
diff changeset
5046 true
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5047 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5048 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
5049 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
5050 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
5051
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
5052 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
5053 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
5054 true
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5055 }
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5056 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5057 return cont
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5058 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5059
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
5060 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
5061 {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5062 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
5063 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
5064
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5065 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
5066 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
5067 } 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
5068 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
5069 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
5070 } 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
5071 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
5072 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5073 } 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
5074 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
5075 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5076 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
5077 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
5078 } 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
5079 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
5080 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5081 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5082 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
5083
2754
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
5084 // 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
5085 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
5086 {
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
5087 val newArray = SparseBooleanArray()
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
5088
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
5089 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
5090 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
5091 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
5092 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
5093 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
5094 return newArray
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
5095 }
e256bd8628ba Andrdoi: Attempt to fix a number of issues querying containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2753
diff changeset
5096
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5097 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
5098 {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5099 var retval: String? = null
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5100
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5101 waitOnUiThread {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5102 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
5103
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5104 // Handle DW_CRA_SELECTED
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5105 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
5106 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
5107
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5108 if(checked.size() > 0) {
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5109 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
5110
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5111 adapter.model.querypos = position
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5112 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
5113 } else {
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5114 adapter.model.querypos = -1
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5115 }
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5116 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5117 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
5118 adapter.model.querypos = -1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5119 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5120 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
5121 adapter.model.querypos = 0
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5122 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5123 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5124 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5125 return retval
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5126 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5127
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5128 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
5129 {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5130 var retval: String? = null
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5131
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5132 waitOnUiThread {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5133 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
5134
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5135 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
5136 // Handle DW_CRA_SELECTED
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5137 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
5138 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
5139
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5140 // 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
5141 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
5142 // Item position in adapter
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5143 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
5144
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5145 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
5146 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
5147
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5148 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
5149 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
5150 break
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5151 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5152 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5153 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5154 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
5155 adapter.model.querypos += 1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5156 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
5157 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5158 adapter.model.querypos = -1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5159 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5160 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5161 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5162 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5163 return retval
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5164 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5165
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5166 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
5167 {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5168 var retval: Long = 0
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5169
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5170 waitOnUiThread {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5171 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
5172
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5173 // Handle DW_CRA_SELECTED
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5174 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
5175 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
5176
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5177 if(checked.size() > 0) {
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5178 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
5179
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5180 adapter.model.querypos = position
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5181 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
5182 } else {
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5183 adapter.model.querypos = -1
9477910393ac Android: Hopefully the final set of container query fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2754
diff changeset
5184 }
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5185 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5186 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
5187 adapter.model.querypos = -1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5188 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5189 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
5190 adapter.model.querypos = 0
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5191 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5192 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5193 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5194 return retval
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5195 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5196
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5197 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
5198 {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5199 var retval: Long = 0
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5200
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5201 waitOnUiThread {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5202 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
5203
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5204 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
5205 // Handle DW_CRA_SELECTED
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5206 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
5207 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
5208
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5209 // 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
5210 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
5211 // Item position in adapter
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5212 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
5213
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5214 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
5215 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
5216
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5217 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
5218 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
5219 break
2560
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5220 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5221 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5222 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5223 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
5224 adapter.model.querypos += 1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5225 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
5226 } else {
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5227 adapter.model.querypos = -1
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5228 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5229 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5230 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5231 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5232 return retval
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5233 }
3da35cd91ca7 Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2558
diff changeset
5234
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5235 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
5236 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5237 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5238 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
5239
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5240 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
5241 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5242 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5243
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5244 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
5245 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5246 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5247 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
5248 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
5249
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5250 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
5251 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5252 return cont
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5253 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5254
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5255 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
5256 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5257 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5258 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
5259
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5260 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
5261 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5262 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5263
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5264 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
5265 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5266 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5267 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
5268
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5269 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
5270 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5271 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5272
2833
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5273 fun containerChangeItemInt(cont: ListView, column: Int, row: Int, num: Long)
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5274 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5275 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5276 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
5277
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5278 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
5279 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5280 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5281
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5282 fun timeString(num: Int, zeroAllowed: Boolean): String
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5283 {
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5284 if(zeroAllowed && num == 0)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5285 return "00"
2833
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5286 if(num > 0 && num < 60) {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5287 if(num > 9)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5288 return num.toString()
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5289 else
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5290 return "0" + num.toString()
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5291 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5292 return "01"
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5293 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5294
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5295 fun yearString(year: Int): String
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5296 {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5297 if(year < 100)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5298 {
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5299 if(year > 69)
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5300 return "19" + timeString(year, false)
2833
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5301 else
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5302 return "20" + timeString(year, true)
2833
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5303 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5304 if(year in 1901..2199)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5305 return year.toString()
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5306 val calendar = Calendar.getInstance()
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5307 val thisyear = calendar[Calendar.YEAR]
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5308 return thisyear.toString()
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5309 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5310
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5311 fun containerChangeItemDate(cont: ListView, column: Int, row: Int, year: Int, month: Int, day: Int)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5312 {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5313 waitOnUiThread {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5314 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5315 val dateString = timeString(day, false) + "/" + timeString(month, false) + "/" + yearString(year)
2833
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5316 val sdf = SimpleDateFormat("dd/MM/yyyy")
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5317 var date: Date? = null
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5318 var s = dateString
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5319 try {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5320 date = sdf.parse(dateString)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5321 val dateFormat = DateFormat.getDateFormat(this)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5322 s = dateFormat.format(date)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5323 } catch (e: ParseException) {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5324 // handle exception here !
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5325 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5326 adapter.model.setRowAndColumn(row, column, s)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5327 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5328 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5329
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5330 fun containerChangeItemTime(cont: ListView, column: Int, row: Int, hour: Int, minute: Int, second: Int)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5331 {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5332 waitOnUiThread {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5333 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
2834
0cbe8201db3c Android: Initial implementation of DW_CONTAINER_MODE_EXTRA/MULTI.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2833
diff changeset
5334 val timeStr = timeString(hour, true) + ":" + timeString(minute, true) + ":" + timeString(second, true)
2833
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5335 val sdf = SimpleDateFormat("hh:mm:ss")
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5336 var date: Date? = null
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5337 var s = timeStr
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5338 try {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5339 date = sdf.parse(timeStr)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5340 val timeFormat = DateFormat.getTimeFormat(this)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5341 s = timeFormat.format(date)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5342 } catch (e: ParseException) {
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5343 // handle exception here !
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5344 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5345 adapter.model.setRowAndColumn(row, column, s)
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5346 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5347 }
469e5748c8a5 Android: In preparation for the container mode changes... I needed to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2809
diff changeset
5348
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5349 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
5350 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5351 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5352 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
5353
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5354 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
5355 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5356 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5357
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5358 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
5359 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5360 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5361 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
5362
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5363 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
5364 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5365 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5366
2561
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5367 fun containerRefresh(cont: ListView)
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5368 {
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5369 waitOnUiThread {
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5370 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
5371
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5372 adapter.notifyDataSetChanged()
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5373 }
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5374 }
f28d7d0ca5ed Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2560
diff changeset
5375
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5376 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
5377 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5378 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
5379
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5380 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5381 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
5382
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5383 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
5384 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5385 return type
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5386 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5387
2558
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5388 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
5389 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5390 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5391 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
5392
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5393 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
5394 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5395 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5396
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5397 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
5398 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5399 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5400 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
5401
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5402 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
5403 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5404 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5405
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5406 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
5407 {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5408 waitOnUiThread {
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5409 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
5410
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5411 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
5412 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5413 }
ebc6a4ff5f1f Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2557
diff changeset
5414
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5415 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
5416 {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5417 waitOnUiThread {
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5418 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
5419
2845
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
5420 adapter.lastClick = 0L
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
5421 adapter.lastClickRow = -1
64c528d38fb8 Android: Attempt at fixing the container selection issues after clear.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2843
diff changeset
5422 adapter.selectedItem = -1
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5423 adapter.model.clear()
2846
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
5424
e6edeb2b63bc Android: Fix container problems after a clear().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2845
diff changeset
5425 windowSetData(cont, "_dw_rowstart", 0L)
2556
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5426 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5427 }
d2d8c66ad062 Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2555
diff changeset
5428
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
5429 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
5430 {
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
5431 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
5432 // 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
5433 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
5434 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
5435 // 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
5436 } 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
5437 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
5438 // 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
5439 } 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
5440 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
5441 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
5442 // 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
5443 } 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
5444 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
5445 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
5446
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
5447 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
5448 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
5449 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
5450 }
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
5451 }
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
5452 }
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
5453 }
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
5454
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
5455 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
5456 {
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
5457 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
5458 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
5459 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
5460
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
5461 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
5462 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
5463 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
5464 }
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
5465
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
5466 }
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
5467 }
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
5468
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
5469 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
5470 {
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
5471 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
5472 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
5473 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
5474
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
5475 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
5476 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
5477 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
5478 }
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
5479
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
5480 }
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
5481 }
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
5482
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5483 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
5484 {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5485 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
5486
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5487 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5488 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
5489
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5490 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
5491 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
5492 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
5493 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
5494 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
5495 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5496 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5497 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
5498 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5499
2515
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5500 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
5501 {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5502 waitOnUiThread {
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5503 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
5504 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
5505
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5506 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
5507 } 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
5508 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
5509
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5510 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
5511 listbox.multiple.clear()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5512 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
5513 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
5514 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5515 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5516 }
211044d98e86 Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2514
diff changeset
5517
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5518 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
5519 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5520 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5521 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
5522 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5523
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5524 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
5525 } 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
5526 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
5527
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5528 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
5529 listbox.multiple.clear()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5530 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
5531 adapter.notifyDataSetChanged()
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5532 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5533 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5534 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5535
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5536 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
5537 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5538 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5539 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
5540 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5541
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5542 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
5543 } 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
5544 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
5545
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5546 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
5547 listbox.multiple.clear()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5548 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
5549 adapter.notifyDataSetChanged()
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5550 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5551 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5552 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5553
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5554 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
5555 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5556 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
5557
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5558 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5559 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
5560 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5561
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5562 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
5563 } 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
5564 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
5565
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5566 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
5567 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5568 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5569 return retval
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5570 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5571
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5572 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
5573 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5574 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5575 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
5576 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5577
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5578 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
5579 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
5580 } 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
5581 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
5582
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5583 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
5584 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
5585 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
5586 adapter.notifyDataSetChanged()
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5587 }
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5588 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5589 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5590 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5591
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5592 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
5593 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5594 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
5595
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5596 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5597 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
5598 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5599
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5600 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
5601 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
5602 } 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
5603 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
5604
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5605 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
5606 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
5607 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5608 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5609 return retval
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5610 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5611
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5612 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
5613 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5614 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
5615
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5616 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5617 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
5618 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5619
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5620 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
5621 } 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
5622 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
5623
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5624 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
5625 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5626 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5627 return retval
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5628 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5629
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5630 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
5631 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5632 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5633 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
5634 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5635
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5636 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
5637 combobox.selected = index
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5638 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
5639 }
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5640 } 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
5641 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
5642
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5643 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
5644 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
5645 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
5646 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
5647 } else {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
5648 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
5649 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5650 }
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5651 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5652 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5653 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5654
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5655 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
5656 {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5657 waitOnUiThread {
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5658 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
5659 val combobox = window
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5660
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5661 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
5662 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
5663 }
2519
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5664 } 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
5665 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
5666
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5667 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
5668 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
5669 listbox.multiple.clear()
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
5670 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
5671 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
5672 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5673 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5674 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5675 }
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5676
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5677 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
5678 {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5679 waitOnUiThread {
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5680 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
5681 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
5682
551313c064f2 Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2517
diff changeset
5683 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
5684 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
5685 }
2517
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5686 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5687 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5688 }
d746323f2841 Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2516
diff changeset
5689
2521
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5690 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
5691 {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5692 var retval: Int = -1
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5693
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5694 waitOnUiThread {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5695 if(window is DWListBox) {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5696 val listbox = window
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5697
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5698 // 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
5699 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
5700 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
5701 } else {
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5702 // 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
5703 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
5704 // 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
5705 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
5706 // 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
5707 // 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
5708 // 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
5709 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
5710 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
5711 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5712 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5713 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5714 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5715 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5716 return retval
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5717 }
5f92284e2b08 Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2520
diff changeset
5718
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5719 fun calendarNew(cid: Int): CalendarView?
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5720 {
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5721 var calendar: CalendarView? = null
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5722
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5723 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5724 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
5725
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5726 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
5727 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
5728 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
5729 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
5730 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
5731 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
5732 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
5733 }
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5734 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5735
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5736 return calendar
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5737 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5738
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5739 fun calendarSetDate(calendar: CalendarView, date: Long)
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5740 {
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5741 waitOnUiThread {
2524
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5742 // 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
5743 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
5744 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5745 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5746
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5747 fun calendarGetDate(calendar: CalendarView): Long
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5748 {
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5749 var date: Long = 0
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5750
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5751 waitOnUiThread {
2524
d5c3c573c74e Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2523
diff changeset
5752 // 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
5753 date = calendar.date / 1000
2523
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5754 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5755 return date
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5756 }
82cdb3ad7c25 Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2522
diff changeset
5757
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
5758 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
5759 {
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
5760 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
5761
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
5762 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5763 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
5764
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
5765 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
5766 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
5767 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
5768 }
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
5769
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
5770 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
5771 }
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
5772
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5773 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
5774 {
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
5775 waitOnUiThread {
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5776 var filename: String? = file
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5777
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5778 if(resID > 0 && resID < 65536) {
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5779 filename = resID.toString()
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5780 } else if(resID != 0) {
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5781 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
5782 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
5783
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
5784 button.setImageResource(resID)
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5785 } 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
5786 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
5787
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
5788 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
5789 }
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5790 }
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5791 if(filename != null) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
5792 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
5793 // 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
5794 try {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5795 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
5796 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
5797
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5798 if(b != null) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5799 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
5800 val button = window
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5801
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5802 button.setImageBitmap(b)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5803 } 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
5804 val imageview = window
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5805
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5806 imageview.setImageBitmap(b)
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5807 }
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5808 break
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5809 }
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5810 } 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
5811 }
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
5812 }
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
5813 }
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
5814 }
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
5815 }
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
5816
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
5817 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
5818 {
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
5819 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
5820 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
5821 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
5822 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
5823
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
5824 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
5825 } 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
5826 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
5827
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
5828 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
5829 }
2655
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5830 }
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5831 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
5832 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
5833
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
5834 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
5835 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
5836
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
5837 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
5838 } 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
5839 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
5840
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
5841 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
5842 }
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
5843 }
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
5844 }
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
5845 }
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
5846
2652
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5847 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
5848 {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5849 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
5850
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5851 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
5852 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
5853
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5854 // 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
5855 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
5856 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
5857 // 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
5858 } 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
5859 try {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5860 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
5861 } 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
5862 }
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5863 // 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
5864 } 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
5865 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
5866 } else {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5867 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
5868 }
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5869 // 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
5870 // 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
5871 if(filename != null) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
5872 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
5873 // 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
5874 try {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5875 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
5876 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
5877 } catch (e: IOException) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5878 }
2652
42151fd096d4 Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2651
diff changeset
5879 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
5880 break
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5881 }
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5882 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5883 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5884 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5885 return icon
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5886 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5887
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5888 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
5889 {
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5890 var pixmap: Bitmap? = null
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5891
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5892 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
5893 var filename: String? = null
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5894
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5895 if(width > 0 && height > 0) {
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5896 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
5897 } 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
5898 filename = resID.toString()
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5899 } 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
5900 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
5901 } 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
5902 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
5903 } else {
5b63a3ed8e10 Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2654
diff changeset
5904 filename = file
2654
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5905 }
fe186c9318cc Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2653
diff changeset
5906 if(filename != null) {
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
5907 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
5908 // 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
5909 try {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5910 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
5911 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
5912 } catch (e: IOException) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5913 }
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5914 if(pixmap != null) {
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5915 break
607acfe2c504 Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2563
diff changeset
5916 }
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5917 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5918 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5919 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5920 return pixmap
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5921 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5922
2727
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5923 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
5924 {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5925 var retval: PrintJob? = null
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5926
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5927 waitOnUiThread {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5928 // Get a PrintManager instance
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5929 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
5930 // Setup our print adapter
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5931 val printAdapter = DWPrintDocumentAdapter()
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5932 printAdapter.context = this
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5933 printAdapter.pages = pages
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5934 printAdapter.print = print
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5935 // 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
5936 // 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
5937 retval = printManager.print(jobname, printAdapter, null)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5938 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5939 return retval
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5940 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5941
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5942 fun printCancel(printjob: PrintJob)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5943 {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5944 waitOnUiThread {
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5945 // Get a PrintManager instance
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5946 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
5947 // 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
5948 printManager.printJobs.remove(printjob)
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5949 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5950 }
bf585f375286 Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2722
diff changeset
5951
2529
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5952 fun pixmapGetDimensions(pixmap: Bitmap): Long
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5953 {
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5954 var dimensions: Long = 0
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5955
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5956 waitOnUiThread {
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5957 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
5958 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5959 return dimensions
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5960 }
060fdb2d807d Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2528
diff changeset
5961
2542
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5962 fun screenGetDimensions(): Long
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5963 {
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5964 val dm = resources.displayMetrics
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5965 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
5966 }
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
5967
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5968 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
5969 {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5970 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
5971
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5972 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
5973 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
5974
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
5975 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
5976 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
5977 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
5978 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
5979 @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
5980 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
5981 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
5982 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
5983 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
5984 render!!.evy = event.y
2611
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5985 // 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
5986 // 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
5987 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
5988 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
5989 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
5990 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
5991 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
5992 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
5993 }
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5994 MotionEvent.ACTION_MOVE -> {
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5995 render!!.evx = event.x
ed2c4a503666 Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2608
diff changeset
5996 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
5997 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
5998 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
5999 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
6000 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
6001 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
6002 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
6003 })
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
6004 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
6005 // 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
6006 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
6007 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
6008 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
6009 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
6010 }
a11522c30345 Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2607
diff changeset
6011 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
6012 // 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
6013 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
6014 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
6015 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
6016 }
2596
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
6017 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
6018 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
6019 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
6020 }
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
6021 false
60ec91d23746 Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2595
diff changeset
6022 })
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6023 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6024 return render
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6025 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6026
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6027 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
6028 {
2539
822f814a54f4 Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2538
diff changeset
6029 runOnUiThread {
822f814a54f4 Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2538
diff changeset
6030 render.invalidate()
822f814a54f4 Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2538
diff changeset
6031 }
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6032 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6033
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6034 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
6035 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
6036 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6037 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
6038 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
6039 var retval = 1
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6040
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6041 if(srcw == -1) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6042 src.right = srcx + dstw
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6043 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6044 if(srch == -1) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6045 src.bottom = srcy + dsth
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6046 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6047
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6048 waitOnUiThread {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6049 var canvas: Canvas? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6050 var bitmap: Bitmap? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6051
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6052 if(dstr != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6053 canvas = dstr.cachedCanvas
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6054 } else if(dstp != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6055 canvas = Canvas(dstp)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6056 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6057
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6058 if(srcp != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6059 bitmap = srcp
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6060 } else if(srcr != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6061 bitmap = Bitmap.createBitmap(srcr.layoutParams.width,
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6062 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
6063 val c = Canvas(bitmap)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6064 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
6065 srcr.draw(c)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6066 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6067
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6068 if(canvas != null && bitmap != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6069 canvas.drawBitmap(bitmap, src, dst, null)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6070 retval = 0
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6071 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6072 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6073 return retval
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6074 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6075
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
6076 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
6077 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6078 waitOnUiThread {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6079 var canvas: Canvas? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6080
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6081 if(render != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6082 canvas = render.cachedCanvas
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6083 } else if(bitmap != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6084 canvas = Canvas(bitmap)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6085 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6086
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6087 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
6088 colorsSet(fgColor, bgColor)
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6089 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
6090 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6091 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6092 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6093
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
6094 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
6095 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6096 waitOnUiThread {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6097 var canvas: Canvas? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6098
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6099 if(render != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6100 canvas = render.cachedCanvas
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6101 } else if(bitmap != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6102 canvas = Canvas(bitmap)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6103 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6104
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6105 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
6106 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
6107 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
6108 paint.style = Paint.Style.STROKE
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6109 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
6110 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6111 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6112 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6113
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6114 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
6115 {
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6116 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
6117
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6118 waitOnUiThread {
2578
a36448beb7f7 Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2576
diff changeset
6119 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
6120
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6121 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
6122 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
6123 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
6124 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
6125 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
6126 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6127 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6128 } 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
6129 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
6130 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
6131 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
6132 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
6133 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6134 } 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
6135 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
6136
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6137 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
6138 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
6139 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
6140 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
6141 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6142 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6143 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6144 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6145 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
6146 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
6147 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
6148 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
6149 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6150 return dimensions
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6151 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6152
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
6153 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
6154 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
6155 {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6156 waitOnUiThread {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6157 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
6158
2547
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6159 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
6160 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
6161 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
6162 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
6163 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
6164 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
6165 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6166 }
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6167 } 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
6168 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
6169 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
6170 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
6171 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
6172 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
6173 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6174 } 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
6175 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
6176
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6177 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
6178 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
6179 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
6180 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
6181 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6182 }
dbd15c13f5bb Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2546
diff changeset
6183 }
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6184 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6185
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6186 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
6187 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
6188 // 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
6189 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
6190 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
6191 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
6192 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
6193 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
6194 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
6195 if(bgcolor != null) {
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6196 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
6197 // 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
6198 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
6199 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
6200 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
6201 rect.left += x
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6202 rect.right += x
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6203 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
6204 // 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
6205 paint.color = oldcolor
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6206 }
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6207 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
6208 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
6209 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6210 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6211 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6212
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
6213 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
6214 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6215 waitOnUiThread {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6216 var canvas: Canvas? = null
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6217
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6218 if(render != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6219 canvas = render.cachedCanvas
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6220 } else if(bitmap != null) {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6221 canvas = Canvas(bitmap)
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6222 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6223
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6224 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
6225 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
6226 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
6227 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
6228 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
6229 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6230 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6231 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6232
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
6233 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
6234 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
6235 {
2537
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
6236 // 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
6237 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
6238
2537
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
6239 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
6240 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
6241 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
6242 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6243
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6244 waitOnUiThread {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6245 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
6246
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6247 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
6248 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
6249 } 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
6250 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
6251 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6252
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6253 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
6254 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
6255 // 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
6256 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
6257 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
6258 } else {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6259 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
6260 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6261 // 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
6262 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
6263 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
6264 } else {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6265 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
6266 }
2537
cd9d2ba251d5 Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2536
diff changeset
6267 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
6268 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6269 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6270 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6271
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6272 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
6273 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
6274 {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6275 waitOnUiThread {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6276 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
6277
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6278 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
6279 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
6280 } 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
6281 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
6282 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6283
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6284 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
6285 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
6286
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6287 // 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
6288 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
6289 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
6290 } else {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6291 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
6292 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6293 // 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
6294 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
6295 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
6296 } else {
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6297 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
6298 }
2536
d172ab2eddb6 Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2535
diff changeset
6299 // 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
6300 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
6301 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
6302 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
6303 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
6304 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
6305
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6306 if(x2 < x1) {
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6307 left = x2.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6308 right = x1.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6309 }
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6310 if(y2 < y1) {
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6311 top = y2.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6312 bottom = y1.toFloat()
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6313 }
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6314
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6315 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
6316 } else {
2576
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6317 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
6318 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
6319 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
6320 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
6321 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
6322 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
6323 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
6324 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
6325
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6326 // Convert to degrees
db097ec28c90 Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2575
diff changeset
6327 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
6328 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
6329 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
6330
2536
d172ab2eddb6 Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2535
diff changeset
6331 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
6332 }
2535
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6333 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6334 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6335 }
d862d9e4069b Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2531
diff changeset
6336
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
6337 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
6338 {
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6339 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
6340 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
6341 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
6342
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6343 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
6344 }
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6345
473eb9ff3f04 Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2579
diff changeset
6346 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
6347 {
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6348 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
6349 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
6350 if(bgColor != -1L) {
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6351 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
6352 } else {
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6353 this.bgcolor = null
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6354 }
2531
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6355 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6356 }
f45ebd96ebe5 Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2530
diff changeset
6357
2490
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6358 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
6359 {
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6360 // creating timer task, timer
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6361 val t = Timer()
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6362 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
6363 override fun run() {
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6364 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
6365 t.cancel()
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6366 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6367 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6368 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6369 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
6370 return t
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6371 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6372
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6373 fun timerDisconnect(timer: Timer)
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6374 {
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6375 timer.cancel()
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6376 }
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6377
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6378 fun doBeep(duration: Int)
62e124eecd82 Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2489
diff changeset
6379 {
2491
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6380 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
6381 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
6382 val handler = Handler(Looper.getMainLooper())
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6383 handler.postDelayed({
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6384 toneGen.release()
bf4fe6bb512b Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2490
diff changeset
6385 }, (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
6386 }
666af45f33b5 Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2487
diff changeset
6387
2482
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
6388 fun debugMessage(text: String)
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
6389 {
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
6390 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
6391 }
4888503c3e3e Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2481
diff changeset
6392
2788
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6393 @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
6394 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
6395 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
6396 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
6397 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
6398 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
6399 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
6400 } 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
6401 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
6402 }
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6403 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
6404 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
6405 }
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
6406 }
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
6407
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
6408 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
6409 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
6410 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
6411 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
6412
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6413 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
6414 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
6415 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
6416 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
6417 )
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6418 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
6419 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
6420 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
6421 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6422 } 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
6423 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
6424 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6425 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
6426 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6427
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
6428 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
6429 {
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
6430 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
6431 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
6432 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
6433 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
6434
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
6435 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
6436 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
6437 } 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
6438 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
6439 }
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
6440 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
6441 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
6442 } 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
6443 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
6444 }
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
6445 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
6446 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
6447 }
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
6448 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
6449 }
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
6450
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
6451 // 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
6452 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
6453 {
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
6454 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
6455 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
6456 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
6457
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6458 // 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
6459 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
6460 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
6461 {
8a4f162810c2 Android: During dw_file_browse() request read/write access to external
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2785
diff changeset
6462 // 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
6463 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
6464 }
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
6465
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
6466 // 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
6467 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
6468 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
6469
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
6470 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
6471 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
6472 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
6473 // 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
6474 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
6475 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
6476 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
6477 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
6478 } 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
6479 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
6480 }
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
6481 }
6b5057dd6b8e Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2594
diff changeset
6482
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
6483 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
6484 // 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
6485 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
6486 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
6487
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
6488 // 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
6489 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
6490
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6491 // 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
6492 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
6493 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
6494 // ExternalStorageProvider
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6495 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
6496 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
6497 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
6498 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
6499 .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
6500 } 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
6501 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
6502 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
6503 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
6504 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
6505 )
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6506 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
6507 } 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
6508 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
6509 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
6510 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
6511 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
6512 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
6513 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
6514 } 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
6515 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
6516 } 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
6517 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
6518 }
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6519 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
6520 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
6521 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
6522 )
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6523 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
6524 }
2795
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6525 } 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
6526 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
6527 }
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6528 // File
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6529 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
6530 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
6531 }
2795
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6532
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6533 // 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
6534 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
6535 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
6536 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
6537
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6538 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
6539 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
6540 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
6541
5c61aba17b69 Android: Change dw_file_browse() to return URIs or paths on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2790
diff changeset
6542 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
6543 }
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
6544 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6545 }
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6546 } 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
6547 // 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
6548 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
6549 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
6550 }
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
6551 }
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
6552 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
6553 }
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
6554
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6555 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
6556 {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6557 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
6558
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6559 waitOnUiThread {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6560 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
6561 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
6562 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
6563 // 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
6564 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
6565 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
6566 }
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
6567 })
2526
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6568 if(ext != null) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6569 fc.setExtension(ext)
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6570 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6571 fc.showDialog()
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6572 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6573
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6574 // 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
6575 try {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6576 Looper.loop()
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6577 } catch (e2: RuntimeException) {
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6578 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6579
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6580 return retval
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6581 }
d3f09b3f3703 Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2524
diff changeset
6582
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
6583 // 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
6584 // 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
6585 // 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
6586 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
6587 {
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
6588 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
6589 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
6590
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
6591 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
6592 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
6593
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
6594 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
6595 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
6596 }
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
6597 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
6598 }
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
6599 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
6600 }
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
6601
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
6602 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
6603 {
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
6604 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
6605
e9ad53d2271b Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2714
diff changeset
6606 // 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
6607 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
6608 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
6609 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
6610 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
6611 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
6612 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
6613 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
6614 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
6615 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
6616 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
6617 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
6618
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6619 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
6620 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
6621 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
6622 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
6623
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6624 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
6625 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
6626 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
6627 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
6628 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
6629 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
6630 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
6631 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
6632 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
6633 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
6634 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
6635 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
6636 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
6637
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6638 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
6639 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
6640 colorWheel.rgb = colorChosen
2734
cd3c7740e352 Android: Attempt at some Color Chooser improvements... Fix layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2733
diff changeset
6641 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
6642 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
6643 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
6644 // 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
6645 // 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
6646 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
6647 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
6648 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
6649 } 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
6650 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
6651 }
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
6652 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
6653 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
6654 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
6655 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
6656 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
6657 }
34e34d5d56e8 Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2727
diff changeset
6658 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
6659 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
6660 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
6661 }
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
6662 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
6663 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
6664 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
6665 )
2722
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6666 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
6667 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
6668 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
6669 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
6670 }
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
6671 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
6672 }
2722
cacde852e2db Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2720
diff changeset
6673 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
6674 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
6675 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
6676 }
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
6677 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
6678 }
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
6679
2486
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6680 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
6681 {
2579
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6682 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
6683
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6684 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6685 // 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
6686 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
6687
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6688 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
6689 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
6690 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
6691 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
6692 )
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6693 //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
6694 { _: DialogInterface, _: Int ->
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6695 retval = 1
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6696 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
6697 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6698 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6699 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
6700 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
6701 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
6702 ) { _: DialogInterface, _: Int ->
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6703 retval = 0
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6704 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
6705 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6706 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6707 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
6708 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
6709 )
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6710 //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
6711 { _: DialogInterface, _: Int ->
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6712 retval = 0
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6713 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
6714 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6715 }
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6716 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
6717 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
6718 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
6719 ) { _: DialogInterface, _: Int ->
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6720 retval = 2
68ee9a89e0f0 Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2578
diff changeset
6721 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
6722 }
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6723 }
2573
ea75e295025b Android: Make message boxes modal (not cancelable).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2572
diff changeset
6724 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
6725 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
6726
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6727 // 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
6728 try {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6729 Looper.loop()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6730 } 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
6731 }
2486
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6732 }
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6733 return retval
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6734 }
cec43818bd3e Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2484
diff changeset
6735
2530
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6736 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
6737 {
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6738 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
6739 return true
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6740 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6741 return false
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6742 }
b9923432cb1f Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2529
diff changeset
6743
2514
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6744 fun mainSleep(milliseconds: Int)
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6745 {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6746 // 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
6747 // 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
6748 // 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
6749 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
6750 val starttime = System.currentTimeMillis()
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6751
2637
22105f99dd6a Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2620
diff changeset
6752 // 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
6753 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
6754 var thrown: Boolean = false
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6755
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6756 override fun queueIdle(): Boolean {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6757 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
6758 if (thrown == false) {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6759 thrown = true
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6760 throw java.lang.RuntimeException()
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6761 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6762 return false
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6763 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6764 return true
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6765 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6766 })
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6767
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6768 // 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
6769 try {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6770 Looper.loop()
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6771 } catch (e2: RuntimeException) {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6772 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6773 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6774 else
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6775 {
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6776 // 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
6777 Thread.sleep(milliseconds.toLong())
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6778 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6779 }
5f711e86a211 Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2510
diff changeset
6780
2487
83f8f4f58a98 Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2486
diff changeset
6781 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
6782 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6783 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6784 this.finishAffinity()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6785 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
6786 }
2494
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
6787 }
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
6788
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
6789 fun dwindowsShutdown()
b3e28eed0e50 Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2493
diff changeset
6790 {
2502
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6791 waitOnUiThread {
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6792 this.finishAffinity()
b6319aed3298 Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2501
diff changeset
6793 }
2487
83f8f4f58a98 Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2486
diff changeset
6794 }
83f8f4f58a98 Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2486
diff changeset
6795
2542
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6796 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
6797 {
2690
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
6798 appID = appid
755d9ad07aaf Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2689
diff changeset
6799
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6800 waitOnUiThread {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6801 // 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
6802 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
6803 // Create the NotificationChannel
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6804 val importance = NotificationManager.IMPORTANCE_DEFAULT
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6805 val mChannel = NotificationChannel(appid, appname, importance)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6806 // 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
6807 // or other notification behaviors after this
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6808 val notificationManager =
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6809 getSystemService(NOTIFICATION_SERVICE) as NotificationManager
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6810 notificationManager.createNotificationChannel(mChannel)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6811 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6812 }
2542
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6813 return Build.VERSION.SDK_INT
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6814 }
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6815
2543
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6816 fun dwMain()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6817 {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6818 runOnUiThread {
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6819 // 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
6820 invalidateOptionsMenu()
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6821 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6822 }
f9367eb9a6e7 Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2542
diff changeset
6823
2542
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6824 fun androidGetRelease(): String
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6825 {
bb75e64e6138 Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2539
diff changeset
6826 return Build.VERSION.RELEASE
2522
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6827 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6828
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6829 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
6830 {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6831 var builder: NotificationCompat.Builder? = null
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6832
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6833 waitOnUiThread {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6834 builder = NotificationCompat.Builder(this, appid)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6835 .setContentTitle(title)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6836 .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
6837 .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
6838 .setPriority(NotificationCompat.PRIORITY_DEFAULT)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6839 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6840 return builder
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6841 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6842
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6843 fun notificationSend(builder: NotificationCompat.Builder)
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6844 {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6845 waitOnUiThread {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6846 notificationID += 1
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6847 with(NotificationManagerCompat.from(this)) {
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6848 // 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
6849 notify(notificationID, builder.build())
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6850 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6851 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6852 }
66c490aa719d Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2521
diff changeset
6853
2475
16d195d46f2a Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2474
diff changeset
6854 /*
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6855 * 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
6856 * 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
6857 */
2658
ad6fc7f1a9af Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2656
diff changeset
6858 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
6859 external fun eventHandler(
2499
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6860 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
6861 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
6862 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
6863 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
6864 str2: String?,
2499
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6865 inta: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6866 intb: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6867 intc: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6868 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
6869 ): Int
2499
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6870 external fun eventHandlerInt(
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6871 obj1: View,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6872 message: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6873 inta: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6874 intb: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6875 intc: Int,
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6876 intd: Int
ff3310fa6d72 Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2498
diff changeset
6877 )
2483
9f7af6d8c6a4 Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2482
diff changeset
6878 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
6879 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
6880 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
6881 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
6882 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
6883 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
6884 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
6885 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
6886
2474
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6887 companion object
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6888 {
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6889 // 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
6890 init
a13e6db064f4 Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2473
diff changeset
6891 {
2473
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6892 System.loadLibrary("dwindows")
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6893 }
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6894 }
aa420e366b2b Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6895 }