Mercurial > dwindows
annotate android/DWindows.kt @ 2734:cd3c7740e352
Android: Attempt at some Color Chooser improvements... Fix layout.
Try to select the color passed in on the wheel and slider.
The wheel seems to work, but the slider seems wrong... attempted to convert
to HSV and use the V (brightness) value for the slider offset... seems like
this should work, but it is not the same when testing.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 15 Dec 2021 15:49:39 +0000 |
parents | 34e34d5d56e8 |
children | 970cbcdb68f9 |
rev | line source |
---|---|
2713
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
1 // (C) 2021 Brian Smith <brian@dbsoft.org> |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
2 // (C) 2019 Anton Popov |
2484
cb5b67154399
Android: The DWindows class should be org.dbsoft.dwindows, remove dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2483
diff
changeset
|
3 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
|
4 |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5 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
|
6 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
|
7 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
|
8 import android.app.Dialog |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
9 import android.app.NotificationChannel |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
10 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
|
11 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
|
12 import android.content.pm.ActivityInfo |
2496
3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2495
diff
changeset
|
13 import android.content.res.Configuration |
2643
28ca1e59e76f
Android: Catch NotFoundException when loading resource...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2642
diff
changeset
|
14 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
|
15 import android.database.Cursor |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
16 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
|
17 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
|
18 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
|
19 import android.graphics.drawable.GradientDrawable |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
20 import android.media.AudioManager |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
21 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
|
22 import android.net.Uri |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
23 import android.os.* |
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
|
24 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
|
25 import android.provider.MediaStore |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
26 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
|
27 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
|
28 import android.text.InputType |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
29 import android.text.method.PasswordTransformationMethod |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
30 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
|
31 import android.view.View.OnTouchListener |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
32 import android.view.ViewGroup |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
33 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
|
34 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
|
35 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
|
36 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
|
37 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
|
38 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
|
39 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
|
40 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
|
41 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
|
42 import androidx.collection.SimpleArrayMap |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
43 import androidx.constraintlayout.widget.ConstraintLayout |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
44 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
|
45 import androidx.constraintlayout.widget.Placeholder |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
46 import androidx.core.app.NotificationCompat |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
47 import androidx.core.app.NotificationManagerCompat |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
48 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
|
49 import androidx.core.view.MenuCompat |
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.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
|
51 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
|
52 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
|
53 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
|
54 import com.google.android.material.tabs.TabLayoutMediator |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
55 import java.io.BufferedInputStream |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
56 import java.io.File |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
57 import java.io.FileOutputStream |
2564
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
58 import java.io.IOException |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
59 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
|
60 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
|
61 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
|
62 import java.util.zip.ZipFile |
2694
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2692
diff
changeset
|
63 import android.content.Intent |
2713
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
64 import android.util.* |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
65 import android.util.Base64 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
66 import kotlin.math.* |
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
|
67 import android.content.ContentUris |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
68 import androidx.appcompat.widget.AppCompatSeekBar |
2722
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
69 import android.content.DialogInterface |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
70 import android.graphics.pdf.PdfDocument |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
71 import android.print.* |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
72 import android.print.pdf.PrintedPdfDocument |
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
|
73 |
2713
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
74 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
75 // Color Wheel section |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
76 private val HUE_COLORS = intArrayOf( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
77 Color.RED, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
78 Color.YELLOW, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
79 Color.GREEN, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
80 Color.CYAN, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
81 Color.BLUE, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
82 Color.MAGENTA, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
83 Color.RED |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
84 ) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
85 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
86 private val SATURATION_COLORS = intArrayOf( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
87 Color.WHITE, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
88 setAlpha(Color.WHITE, 0) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
89 ) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
90 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
91 open class ColorWheel @JvmOverloads constructor( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
92 context: Context, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
93 attrs: AttributeSet? = null, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
94 defStyleAttr: Int = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
95 ) : View(context, attrs, defStyleAttr) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
96 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
97 private val hueGradient = GradientDrawable().apply { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
98 gradientType = GradientDrawable.SWEEP_GRADIENT |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
99 shape = GradientDrawable.OVAL |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
100 colors = HUE_COLORS |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
101 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
102 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
103 private val saturationGradient = GradientDrawable().apply { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
104 gradientType = GradientDrawable.RADIAL_GRADIENT |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
105 shape = GradientDrawable.OVAL |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
106 colors = SATURATION_COLORS |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
107 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
108 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
109 private val thumbDrawable = ThumbDrawable() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
110 private val hsvColor = HsvColor(value = 1f) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
111 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
112 private var wheelCenterX = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
113 private var wheelCenterY = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
114 private var wheelRadius = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
115 private var downX = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
116 private var downY = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
117 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
118 var rgb |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
119 get() = hsvColor.rgb |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
120 set(rgb) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
121 hsvColor.rgb = rgb |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
122 hsvColor.set(value = 1f) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
123 fireColorListener() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
124 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
125 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
126 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
127 var thumbRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
128 get() = thumbDrawable.radius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
129 set(value) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
130 thumbDrawable.radius = value |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
131 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
132 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
133 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
134 var thumbColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
135 get() = thumbDrawable.thumbColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
136 set(value) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
137 thumbDrawable.thumbColor = value |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
138 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
139 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
140 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
141 var thumbStrokeColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
142 get() = thumbDrawable.strokeColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
143 set(value) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
144 thumbDrawable.strokeColor = value |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
145 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
146 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
147 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
148 var thumbColorCircleScale |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
149 get() = thumbDrawable.colorCircleScale |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
150 set(value) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
151 thumbDrawable.colorCircleScale = value |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
152 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
153 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
154 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
155 var colorChangeListener: ((Int) -> Unit)? = null |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
156 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
157 var interceptTouchEvent = true |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
158 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
159 init { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
160 thumbRadius = 13 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
161 thumbColor = Color.WHITE |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
162 thumbStrokeColor = Color.DKGRAY |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
163 thumbColorCircleScale = 0.7f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
164 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
165 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
166 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
|
167 rgb = Color.rgb(r, g, b) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
168 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
169 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
170 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
|
171 val minDimension = minOf( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
172 MeasureSpec.getSize(widthMeasureSpec), |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
173 MeasureSpec.getSize(heightMeasureSpec) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
174 ) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
175 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
176 setMeasuredDimension( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
177 resolveSize(minDimension, widthMeasureSpec), |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
178 resolveSize(minDimension, heightMeasureSpec) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
179 ) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
180 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
181 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
182 override fun onDraw(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
183 drawColorWheel(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
184 drawThumb(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
185 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
186 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
187 private fun drawColorWheel(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
188 val hSpace = width - paddingLeft - paddingRight |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
189 val vSpace = height - paddingTop - paddingBottom |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
190 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
191 wheelCenterX = paddingLeft + hSpace / 2 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
192 wheelCenterY = paddingTop + vSpace / 2 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
193 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
|
194 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
195 val left = wheelCenterX - wheelRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
196 val top = wheelCenterY - wheelRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
197 val right = wheelCenterX + wheelRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
198 val bottom = wheelCenterY + wheelRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
199 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
200 hueGradient.setBounds(left, top, right, bottom) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
201 saturationGradient.setBounds(left, top, right, bottom) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
202 saturationGradient.gradientRadius = wheelRadius.toFloat() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
203 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
204 hueGradient.draw(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
205 saturationGradient.draw(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
206 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
207 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
208 private fun drawThumb(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
209 val r = hsvColor.saturation * wheelRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
210 val hueRadians = toRadians(hsvColor.hue) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
211 val x = cos(hueRadians) * r + wheelCenterX |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
212 val y = sin(hueRadians) * r + wheelCenterY |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
213 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
214 thumbDrawable.indicatorColor = hsvColor.rgb |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
215 thumbDrawable.setCoordinates(x, y) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
216 thumbDrawable.draw(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
217 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
218 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
219 override fun onTouchEvent(event: MotionEvent): Boolean { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
220 when (event.actionMasked) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
221 MotionEvent.ACTION_DOWN -> onActionDown(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
222 MotionEvent.ACTION_MOVE -> updateColorOnMotionEvent(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
223 MotionEvent.ACTION_UP -> { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
224 updateColorOnMotionEvent(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
225 if (isTap(event, downX, downY)) performClick() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
226 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
227 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
228 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
229 return true |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
230 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
231 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
232 private fun onActionDown(event: MotionEvent) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
233 parent.requestDisallowInterceptTouchEvent(interceptTouchEvent) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
234 updateColorOnMotionEvent(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
235 downX = event.x |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
236 downY = event.y |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
237 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
238 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
239 override fun performClick() = super.performClick() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
240 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
241 private fun updateColorOnMotionEvent(event: MotionEvent) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
242 calculateColor(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
243 fireColorListener() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
244 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
245 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
246 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
247 private fun calculateColor(event: MotionEvent) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
248 val legX = event.x - wheelCenterX |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
249 val legY = event.y - wheelCenterY |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
250 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
|
251 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
|
252 val saturation = hypot / wheelRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
253 hsvColor.set(hue, saturation, 1f) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
254 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
255 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
256 private fun fireColorListener() { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
257 colorChangeListener?.invoke(hsvColor.rgb) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
258 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
259 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
260 override fun onSaveInstanceState(): Parcelable { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
261 val superState = super.onSaveInstanceState() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
262 val thumbState = thumbDrawable.saveState() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
263 return ColorWheelState(superState, this, thumbState) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
264 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
265 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
266 override fun onRestoreInstanceState(state: Parcelable) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
267 if (state is ColorWheelState) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
268 super.onRestoreInstanceState(state.superState) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
269 readColorWheelState(state) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
270 } else { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
271 super.onRestoreInstanceState(state) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
272 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
273 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
274 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
275 private fun readColorWheelState(state: ColorWheelState) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
276 thumbDrawable.restoreState(state.thumbState) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
277 interceptTouchEvent = state.interceptTouchEvent |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
278 rgb = state.rgb |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
279 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
280 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
281 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
282 internal class ColorWheelState : View.BaseSavedState { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
283 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
284 val thumbState: ThumbDrawableState |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
285 val interceptTouchEvent: Boolean |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
286 val rgb: Int |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
287 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
288 constructor( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
289 superState: Parcelable?, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
290 view: ColorWheel, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
291 thumbState: ThumbDrawableState |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
292 ) : super(superState) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
293 this.thumbState = thumbState |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
294 interceptTouchEvent = view.interceptTouchEvent |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
295 rgb = view.rgb |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
296 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
297 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
298 constructor(source: Parcel) : super(source) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
299 thumbState = source.readThumbState() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
300 interceptTouchEvent = source.readBooleanCompat() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
301 rgb = source.readInt() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
302 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
303 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
304 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
|
305 super.writeToParcel(out, flags) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
306 out.writeThumbState(thumbState, flags) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
307 out.writeBooleanCompat(interceptTouchEvent) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
308 out.writeInt(rgb) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
309 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
310 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
311 companion object CREATOR : Parcelable.Creator<ColorWheelState> { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
312 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
313 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
|
314 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
315 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
|
316 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
317 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
318 internal fun Parcel.writeBooleanCompat(value: Boolean) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
319 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
|
320 this.writeBoolean(value) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
321 } else { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
322 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
|
323 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
324 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
325 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
326 internal fun Parcel.readBooleanCompat(): Boolean { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
327 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
|
328 this.readBoolean() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
329 } else { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
330 this.readInt() == 1 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
331 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
332 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
333 private const val MAX_ALPHA = 255 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
334 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
335 open class GradientSeekBar @JvmOverloads constructor( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
336 context: Context, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
337 attrs: AttributeSet? = null, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
338 defStyleAttr: Int = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
339 ) : View(context, attrs, defStyleAttr) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
340 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
341 private val gradientColors = IntArray(2) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
342 private val thumbDrawable = ThumbDrawable() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
343 private val gradientDrawable = GradientDrawable() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
344 private val argbEvaluator = android.animation.ArgbEvaluator() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
345 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
346 private lateinit var orientationStrategy: OrientationStrategy |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
347 private var downX = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
348 private var downY = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
349 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
350 var startColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
351 get() = gradientColors[0] |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
352 set(color) { setColors(start = color) } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
353 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
354 var endColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
355 get() = gradientColors[1] |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
356 set(color) { setColors(end = color) } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
357 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
358 var offset = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
359 set(offset) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
360 field = ensureOffsetWithinRange(offset) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
361 calculateArgb() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
362 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
363 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
364 var barSize = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
365 set(width) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
366 field = width |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
367 requestLayout() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
368 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
369 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
370 var cornersRadius = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
371 set(radius) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
372 field = radius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
373 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
374 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
375 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
376 var orientation = Orientation.VERTICAL |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
377 set(orientation) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
378 field = orientation |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
379 orientationStrategy = createOrientationStrategy() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
380 requestLayout() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
381 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
382 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
383 var thumbColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
384 get() = thumbDrawable.thumbColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
385 set(value) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
386 thumbDrawable.thumbColor = value |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
387 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
388 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
389 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
390 var thumbStrokeColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
391 get() = thumbDrawable.strokeColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
392 set(value) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
393 thumbDrawable.strokeColor = value |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
394 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
395 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
396 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
397 var thumbColorCircleScale |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
398 get() = thumbDrawable.colorCircleScale |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
399 set(value) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
400 thumbDrawable.colorCircleScale = value |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
401 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
402 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
403 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
404 var thumbRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
405 get() = thumbDrawable.radius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
406 set(radius) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
407 thumbDrawable.radius = radius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
408 requestLayout() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
409 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
410 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
411 var argb = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
412 private set |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
413 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
414 var colorChangeListener: ((Float, Int) -> Unit)? = null |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
415 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
416 var interceptTouchEvent = true |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
417 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
418 init { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
419 thumbColor = Color.WHITE |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
420 thumbStrokeColor = Color.DKGRAY |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
421 thumbColorCircleScale = 0.7f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
422 thumbRadius = 13 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
423 barSize = 10 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
424 cornersRadius = 5.0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
425 offset = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
426 orientation = Orientation.VERTICAL |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
427 setColors(Color.TRANSPARENT, Color.BLACK) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
428 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
429 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
430 private fun createOrientationStrategy(): OrientationStrategy { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
431 return when (orientation) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
432 Orientation.VERTICAL -> VerticalStrategy() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
433 Orientation.HORIZONTAL -> HorizontalStrategy() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
434 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
435 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
436 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
437 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
|
438 updateGradientColors(start, end) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
439 calculateArgb() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
440 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
441 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
442 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
|
443 gradientColors[0] = start |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
444 gradientColors[1] = end |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
445 gradientDrawable.colors = gradientColors |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
446 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
447 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
448 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
|
449 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
|
450 setMeasuredDimension(dimens.width(), dimens.height()) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
451 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
452 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
453 override fun onDraw(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
454 drawGradientRect(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
455 drawThumb(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
456 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
457 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
458 private fun drawGradientRect(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
459 gradientDrawable.orientation = orientationStrategy.gradientOrientation |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
460 gradientDrawable.bounds = orientationStrategy.getGradientBounds(this) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
461 gradientDrawable.cornerRadius = cornersRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
462 gradientDrawable.draw(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
463 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
464 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
465 private fun drawThumb(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
466 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
|
467 thumbDrawable.indicatorColor = argb |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
468 thumbDrawable.setCoordinates(coordinates.x, coordinates.y) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
469 thumbDrawable.draw(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
470 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
471 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
472 override fun onTouchEvent(event: MotionEvent): Boolean { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
473 when (event.actionMasked) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
474 MotionEvent.ACTION_DOWN -> onActionDown(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
475 MotionEvent.ACTION_MOVE -> calculateOffsetOnMotionEvent(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
476 MotionEvent.ACTION_UP -> { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
477 calculateOffsetOnMotionEvent(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
478 if (isTap(event, downX, downY)) performClick() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
479 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
480 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
481 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
482 return true |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
483 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
484 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
485 private fun onActionDown(event: MotionEvent) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
486 parent.requestDisallowInterceptTouchEvent(interceptTouchEvent) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
487 calculateOffsetOnMotionEvent(event) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
488 downX = event.x |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
489 downY = event.y |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
490 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
491 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
492 override fun performClick() = super.performClick() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
493 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
494 private fun calculateOffsetOnMotionEvent(event: MotionEvent) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
495 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
|
496 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
497 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
498 private fun calculateArgb() { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
499 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
|
500 fireListener() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
501 invalidate() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
502 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
503 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
504 private fun fireListener() { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
505 colorChangeListener?.invoke(offset, argb) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
506 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
507 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
508 override fun onSaveInstanceState(): Parcelable { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
509 val superState = super.onSaveInstanceState() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
510 val thumbState = thumbDrawable.saveState() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
511 return GradientSeekBarState(superState, this, thumbState) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
512 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
513 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
514 override fun onRestoreInstanceState(state: Parcelable) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
515 if (state is GradientSeekBarState) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
516 super.onRestoreInstanceState(state.superState) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
517 readGradientSeekBarState(state) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
518 } else { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
519 super.onRestoreInstanceState(state) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
520 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
521 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
522 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
523 private fun readGradientSeekBarState(state: GradientSeekBarState) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
524 updateGradientColors(state.startColor, state.endColor) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
525 offset = state.offset |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
526 barSize = state.barSize |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
527 cornersRadius = state.cornerRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
528 orientation = Orientation.values()[state.orientation] |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
529 interceptTouchEvent = state.interceptTouchEvent |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
530 thumbDrawable.restoreState(state.thumbState) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
531 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
532 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
533 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
|
534 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
535 enum class Orientation { VERTICAL, HORIZONTAL } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
536 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
537 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
538 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
|
539 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
540 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
|
541 if (respectAlpha) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
542 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
|
543 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
544 this.setColors( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
545 setAlpha(color, 0), |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
546 setAlpha(color, MAX_ALPHA) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
547 ) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
548 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
549 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
550 inline fun GradientSeekBar.setAlphaChangeListener( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
551 crossinline listener: (Float, Int, Int) -> Unit |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
552 ) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
553 this.colorChangeListener = { offset, color -> |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
554 listener(offset, color, this.currentColorAlpha) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
555 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
556 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
557 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
558 fun GradientSeekBar.setBlackToColor(color: Int) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
559 this.setColors(Color.BLACK, color) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
560 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
561 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
562 internal class GradientSeekBarState : View.BaseSavedState { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
563 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
564 val startColor: Int |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
565 val endColor: Int |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
566 val offset: Float |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
567 val barSize: Int |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
568 val cornerRadius: Float |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
569 val orientation: Int |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
570 val interceptTouchEvent: Boolean |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
571 val thumbState: ThumbDrawableState |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
572 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
573 constructor( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
574 superState: Parcelable?, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
575 view: GradientSeekBar, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
576 thumbState: ThumbDrawableState |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
577 ) : super(superState) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
578 startColor = view.startColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
579 endColor = view.endColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
580 offset = view.offset |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
581 barSize = view.barSize |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
582 cornerRadius = view.cornersRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
583 orientation = view.orientation.ordinal |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
584 interceptTouchEvent = view.interceptTouchEvent |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
585 this.thumbState = thumbState |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
586 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
587 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
588 constructor(source: Parcel) : super(source) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
589 startColor = source.readInt() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
590 endColor = source.readInt() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
591 offset = source.readFloat() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
592 barSize = source.readInt() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
593 cornerRadius = source.readFloat() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
594 orientation = source.readInt() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
595 interceptTouchEvent = source.readBooleanCompat() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
596 thumbState = source.readThumbState() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
597 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
598 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
599 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
|
600 super.writeToParcel(out, flags) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
601 out.writeInt(startColor) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
602 out.writeInt(endColor) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
603 out.writeFloat(offset) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
604 out.writeInt(barSize) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
605 out.writeFloat(cornerRadius) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
606 out.writeInt(orientation) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
607 out.writeBooleanCompat(interceptTouchEvent) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
608 out.writeThumbState(thumbState, flags) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
609 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
610 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
611 companion object CREATOR : Parcelable.Creator<GradientSeekBarState> { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
612 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
613 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
|
614 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
615 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
|
616 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
617 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
618 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
619 internal class HorizontalStrategy : OrientationStrategy { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
620 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
621 private val rect = Rect() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
622 private val point = PointF() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
623 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
624 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
|
625 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
626 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
|
627 val widthSize = View.MeasureSpec.getSize(widthSpec) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
628 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
|
629 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
|
630 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
|
631 val finalWidth = View.resolveSize(preferredWidth, widthSpec) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
632 val finalHeight = View.resolveSize(preferredHeight, heightSpec) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
633 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
|
634 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
635 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
636 override fun getGradientBounds(view: GradientSeekBar): Rect { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
637 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
|
638 val left = view.paddingLeft + view.thumbRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
639 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
|
640 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
|
641 val bottom = top + view.barSize |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
642 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
|
643 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
644 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
645 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
|
646 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
|
647 val y = view.height / 2f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
648 return point.apply { set(x, y) } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
649 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
650 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
651 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
|
652 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
|
653 val relativeX = (checkedX - gradient.left).toFloat() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
654 return relativeX / gradient.width() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
655 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
656 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
657 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
658 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
|
659 val config = ViewConfiguration.get(context) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
660 val duration = lastEvent.eventTime - lastEvent.downTime |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
661 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
|
662 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
|
663 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
664 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
665 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
|
666 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
667 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
|
668 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
669 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
|
670 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
671 internal fun <T> ensureWithinRange( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
672 value: T, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
673 start: T, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
674 end: T |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
675 ): 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
|
676 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
677 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
|
678 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
|
679 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
680 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
|
681 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
682 private val hsv = floatArrayOf( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
683 ensureHue(hue), |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
684 ensureSaturation(saturation), |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
685 ensureValue(value) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
686 ) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
687 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
688 var hue |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
689 get() = hsv[0] |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
690 set(hue) { hsv[0] = ensureHue(hue) } |
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 var saturation |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
693 get() = hsv[1] |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
694 set(saturation) { hsv[1] = ensureSaturation(saturation) } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
695 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
696 var value |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
697 get() = hsv[2] |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
698 set(value) { hsv[2] = ensureValue(value) } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
699 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
700 var rgb |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
701 get() = Color.HSVToColor(hsv) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
702 set(rgb) { Color.colorToHSV(rgb, hsv) } |
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 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
|
705 hsv[0] = ensureHue(hue) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
706 hsv[1] = ensureSaturation(saturation) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
707 hsv[2] = ensureValue(value) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
708 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
709 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
710 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
|
711 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
712 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
|
713 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
714 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
|
715 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
716 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
717 internal interface OrientationStrategy { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
718 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
719 val gradientOrientation: GradientDrawable.Orientation |
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 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
|
722 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
723 fun getGradientBounds(view: GradientSeekBar): Rect |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
724 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
725 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
|
726 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
727 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
|
728 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
729 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
730 internal class ThumbDrawableState private constructor( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
731 val radius: Int, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
732 val thumbColor: Int, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
733 val strokeColor: Int, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
734 val colorCircleScale: Float |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
735 ) : Parcelable { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
736 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
737 constructor(thumbDrawable: ThumbDrawable) : this( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
738 thumbDrawable.radius, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
739 thumbDrawable.thumbColor, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
740 thumbDrawable.strokeColor, |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
741 thumbDrawable.colorCircleScale |
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 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
744 constructor(parcel: Parcel) : this( |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
745 parcel.readInt(), |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
746 parcel.readInt(), |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
747 parcel.readInt(), |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
748 parcel.readFloat() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
749 ) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
750 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
751 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
|
752 parcel.writeInt(radius) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
753 parcel.writeInt(thumbColor) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
754 parcel.writeInt(strokeColor) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
755 parcel.writeFloat(colorCircleScale) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
756 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
757 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
758 override fun describeContents() = 0 |
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 companion object { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
761 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
762 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
|
763 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
764 @JvmField |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
765 val CREATOR = object : Parcelable.Creator<ThumbDrawableState> { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
766 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
767 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
|
768 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
769 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
|
770 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
771 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
772 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
773 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
774 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
|
775 this.writeParcelable(state, flags) |
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 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
778 internal fun Parcel.readThumbState(): ThumbDrawableState { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
779 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
|
780 ?: ThumbDrawableState.EMPTY_STATE |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
781 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
782 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
783 internal class ThumbDrawable { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
784 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
785 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
|
786 private var x = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
787 private var y = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
788 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
789 var indicatorColor = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
790 var strokeColor = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
791 var thumbColor = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
792 var radius = 0 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
793 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
794 var colorCircleScale = 0f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
795 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
|
796 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
797 fun setCoordinates(x: Float, y: Float) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
798 this.x = x |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
799 this.y = y |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
800 } |
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 fun draw(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
803 drawThumb(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
804 drawStroke(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
805 drawColorIndicator(canvas) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
806 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
807 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
808 private fun drawThumb(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
809 paint.color = thumbColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
810 paint.style = Paint.Style.FILL |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
811 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
|
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 private fun drawStroke(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
815 val strokeCircleRadius = radius - paint.strokeWidth / 2f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
816 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
817 paint.color = strokeColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
818 paint.style = Paint.Style.STROKE |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
819 canvas.drawCircle(x, y, strokeCircleRadius, paint) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
820 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
821 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
822 private fun drawColorIndicator(canvas: Canvas) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
823 val colorIndicatorCircleRadius = radius * colorCircleScale |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
824 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
825 paint.color = indicatorColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
826 paint.style = Paint.Style.FILL |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
827 canvas.drawCircle(x, y, colorIndicatorCircleRadius, paint) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
828 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
829 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
830 fun restoreState(state: ThumbDrawableState) { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
831 radius = state.radius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
832 thumbColor = state.thumbColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
833 strokeColor = state.strokeColor |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
834 colorCircleScale = state.colorCircleScale |
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 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
837 fun saveState() = ThumbDrawableState(this) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
838 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
839 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
840 internal class VerticalStrategy : OrientationStrategy { |
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 val rect = Rect() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
843 private val point = PointF() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
844 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
845 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
|
846 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
847 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
|
848 val heightSize = View.MeasureSpec.getSize(heightSpec) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
849 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
|
850 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
|
851 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
|
852 val finalWidth = View.resolveSize(preferredWidth, widthSpec) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
853 val finalHeight = View.resolveSize(preferredHeight, heightSpec) |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
854 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
|
855 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
856 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
857 override fun getGradientBounds(view: GradientSeekBar): Rect { |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
858 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
|
859 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
|
860 val right = left + view.barSize |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
861 val top = view.paddingTop + view.thumbRadius |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
862 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
|
863 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
|
864 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
865 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
866 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
|
867 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
|
868 val x = view.width / 2f |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
869 return point.apply { set(x, y) } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
870 } |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
871 |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
872 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
|
873 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
|
874 val relativeY = (checkedY - gradient.top).toFloat() |
6594bb323ab5
Android: Import Colow Wheel by Anton Popov.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2709
diff
changeset
|
875 return 1f - relativeY / gradient.height() |
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 } |
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 // 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
|
880 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
|
881 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
|
882 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
|
883 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
|
884 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
|
885 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
|
886 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
|
887 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
|
888 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
|
889 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
|
890 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
|
891 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
|
892 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
|
893 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
|
894 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
|
895 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
|
896 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
|
897 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
|
898 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
|
899 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
|
900 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
|
901 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
902 |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
903 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
|
904 |
2495
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
905 class DWTabViewPagerAdapter : RecyclerView.Adapter<DWTabViewPagerAdapter.DWEventViewHolder>() { |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
906 val viewList = mutableListOf<LinearLayout>() |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
907 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
|
908 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
|
909 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
|
910 var recyclerView: RecyclerView? = null |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
911 |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
912 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
|
913 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
|
914 |
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
|
915 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
|
916 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
|
917 return position |
4ae2b3b77f25
Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2497
diff
changeset
|
918 } |
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
|
919 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
|
920 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
|
921 } |
2495
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
922 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
|
923 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
|
924 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
925 |
2498
4ae2b3b77f25
Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2497
diff
changeset
|
926 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
|
927 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
928 |
2505
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
929 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
|
930 //Implement shouldOverrideUrlLoading// |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
931 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
|
932 // 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
|
933 // 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
|
934 return false |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
935 } |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
936 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
|
937 // 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
|
938 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
|
939 } |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
940 |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
941 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
|
942 // 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
|
943 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
|
944 } |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
945 |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
946 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
|
947 } |
a149dabf6a1f
Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2503
diff
changeset
|
948 |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
949 class DWPrintDocumentAdapter : PrintDocumentAdapter() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
950 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
951 var context: Context? = null |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
952 var pages: Int = 0 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
953 var pdfDocument: PrintedPdfDocument? = null |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
954 var print: Long = 0 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
955 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
956 override fun onLayout( |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
957 oldAttributes: PrintAttributes?, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
958 newAttributes: PrintAttributes, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
959 cancellationSignal: CancellationSignal?, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
960 callback: LayoutResultCallback, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
961 extras: Bundle? |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
962 ) { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
963 // 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
|
964 pdfDocument = context?.let { PrintedPdfDocument(it, newAttributes) } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
965 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
966 // Respond to cancellation request |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
967 if (cancellationSignal?.isCanceled == true) { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
968 callback.onLayoutCancelled() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
969 return |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
970 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
971 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
972 if (pages > 0) { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
973 // Return print information to print framework |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
974 PrintDocumentInfo.Builder("print_output.pdf") |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
975 .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
976 .setPageCount(pages) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
977 .build() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
978 .also { info -> |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
979 // Content layout reflow is complete |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
980 callback.onLayoutFinished(info, true) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
981 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
982 } else { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
983 // 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
|
984 callback.onLayoutFailed("No pages to print.") |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
985 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
986 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
987 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
988 override fun onWrite( |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
989 pageRanges: Array<out PageRange>, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
990 destination: ParcelFileDescriptor, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
991 cancellationSignal: CancellationSignal?, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
992 callback: WriteResultCallback |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
993 ) { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
994 var writtenPagesArray: Array<PdfDocument.Page> = emptyArray() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
995 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
996 // Iterate over each page of the document, |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
997 // 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
|
998 for (i in 0 until pages) { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
999 pdfDocument?.startPage(i)?.also { page -> |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1000 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1001 // check for cancellation |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1002 if (cancellationSignal?.isCanceled == true) { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1003 callback.onWriteCancelled() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1004 pdfDocument?.close() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1005 pdfDocument = null |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1006 return |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1007 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1008 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1009 // Draw page content for printing |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1010 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
|
1011 // 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
|
1012 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
|
1013 // 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
|
1014 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
|
1015 page.canvas.drawBitmap(bitmap, rect, rect, null) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1016 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1017 // 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
|
1018 pdfDocument?.finishPage(page) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1019 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1020 // Add the new page to the array |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1021 writtenPagesArray += page |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1022 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1023 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1024 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1025 // Write PDF document to file |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1026 try { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1027 pdfDocument?.writeTo(FileOutputStream(destination.fileDescriptor)) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1028 } catch (e: IOException) { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1029 callback.onWriteFailed(e.toString()) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1030 return |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1031 } finally { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1032 pdfDocument?.close() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1033 pdfDocument = null |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1034 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1035 // 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
|
1036 callback.onWriteFinished(pageRanges) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1037 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1038 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1039 override fun onFinish() { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1040 // 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
|
1041 eventHandlerPrintFinish(print) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1042 super.onFinish() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1043 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1044 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1045 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
|
1046 external fun eventHandlerPrintFinish(print: Long) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1047 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
1048 |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1049 class DWSlider |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1050 @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
|
1051 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
|
1052 |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1053 init { |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1054 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
|
1055 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
|
1056 addView(slider) |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1057 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1058 |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1059 @Synchronized |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1060 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
|
1061 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
|
1062 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
|
1063 // 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
|
1064 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
|
1065 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1066 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
|
1067 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
|
1068 // 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
|
1069 // 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
|
1070 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
|
1071 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1072 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1073 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
1074 |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1075 class DWSpinButton(context: Context) : AppCompatEditText(context), OnTouchListener { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1076 var value: Long = 0 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1077 var minimum: Long = 0 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1078 var maximum: Long = 65535 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1079 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1080 init { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
1081 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
|
1082 setOnTouchListener(this) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1083 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1084 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1085 override fun onTouch(v: View, event: MotionEvent): Boolean { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1086 val DRAWABLE_RIGHT = 2 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1087 val DRAWABLE_LEFT = 0 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1088 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1089 if (event.action == MotionEvent.ACTION_UP) { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1090 if (event.x >= v.width - (v as EditText) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1091 .compoundDrawables[DRAWABLE_RIGHT].bounds.width() |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1092 ) { |
2527
eec926265888
Android: Use toLongOrNull() whenever converting from string to long...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
1093 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
|
1094 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1095 if(newvalue != null) { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1096 value = newvalue + 1 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1097 } else { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1098 value += 1 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1099 } |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1100 if(value > maximum) { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1101 value = maximum |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1102 } |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1103 if(value < minimum) { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1104 value = minimum |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1105 } |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1106 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
|
1107 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
|
1108 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
|
1109 } 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
|
1110 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
|
1111 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1112 if(newvalue != null) { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1113 value = newvalue - 1 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1114 } else { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1115 value -= 1 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1116 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1117 if(value > maximum) { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1118 value = maximum |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
1119 } |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1120 if(value < minimum) { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1121 value = minimum |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1122 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1123 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
|
1124 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
|
1125 return true |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1126 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1127 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1128 return false |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1129 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1130 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1131 external fun eventHandlerInt( |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1132 message: Int, |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1133 inta: Int, |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1134 intb: Int, |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1135 intc: Int, |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1136 intd: Int |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1137 ) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1138 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1139 |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1140 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
|
1141 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
|
1142 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
|
1143 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
|
1144 |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1145 init { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
1146 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
|
1147 setOnTouchListener(this) |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1148 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
|
1149 lpw!!.setAdapter( |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1150 ArrayAdapter( |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1151 context, |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
1152 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
|
1153 ) |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1154 ) |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1155 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
|
1156 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
|
1157 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
|
1158 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1159 |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1160 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
|
1161 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
|
1162 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
|
1163 setText(item) |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1164 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
|
1165 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
|
1166 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1167 |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1168 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
|
1169 val DRAWABLE_RIGHT = 2 |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
1170 |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1171 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
|
1172 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
|
1173 .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
|
1174 ) { |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1175 lpw!!.show() |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1176 return true |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1177 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1178 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1179 return false |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1180 } |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
1181 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
1182 external fun eventHandlerInt( |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
1183 message: Int, |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
1184 inta: Int, |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
1185 intb: Int, |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
1186 intc: Int, |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
1187 intd: Int |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
1188 ) |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1189 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
1190 |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1191 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
|
1192 var list = mutableListOf<String>() |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1193 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
|
1194 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
|
1195 var colorBack: Int? = null |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1196 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1197 init { |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1198 setAdapter( |
2677
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1199 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
|
1200 context, |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
1201 R.layout.simple_list_item_1, list |
2677
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1202 ) { |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1203 override fun getView(pos: Int, view: View?, parent: ViewGroup): View { |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1204 val thisview = super.getView(pos, view, parent) |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1205 val textview = thisview as TextView |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1206 if (colorFore != null) { |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1207 textview.setTextColor(colorFore!!) |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1208 } |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1209 if (colorBack != null) { |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1210 textview.setBackgroundColor(colorBack!!) |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1211 } |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1212 return thisview |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1213 } |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1214 } |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1215 ) |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
1216 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
|
1217 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1218 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1219 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
|
1220 selected = 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
|
1221 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
|
1222 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1223 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1224 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
|
1225 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
|
1226 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
|
1227 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
|
1228 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
|
1229 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
|
1230 ) |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1231 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
1232 |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1233 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
|
1234 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
|
1235 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
|
1236 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
|
1237 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
|
1238 var evy: Float = 0f |
2611
ed2c4a503666
Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
1239 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
|
1240 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1241 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
|
1242 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
|
1243 // 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
|
1244 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
|
1245 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1246 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1247 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
|
1248 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
|
1249 cachedCanvas = canvas |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1250 // 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
|
1251 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
|
1252 cachedCanvas = null |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1253 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1254 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1255 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
|
1256 message: Int, |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1257 inta: Int, |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1258 intb: Int, |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1259 intc: Int, |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1260 intd: Int |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1261 ) |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1262 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
1263 |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1264 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
|
1265 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
|
1266 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
|
1267 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
|
1268 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1269 // 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
|
1270 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
|
1271 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
|
1272 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
|
1273 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1274 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1275 // 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
|
1276 interface FileSelectedListener { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1277 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
|
1278 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1279 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1280 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
|
1281 this.fileListener = fileListener |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1282 return this |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1283 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1284 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1285 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
|
1286 fun showDialog() { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1287 dialog.show() |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1288 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1289 |
2527
eec926265888
Android: Use toLongOrNull() whenever converting from string to long...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2526
diff
changeset
|
1290 /* |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1291 * 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
|
1292 */ |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1293 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
|
1294 currentPath = path |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1295 if (path != null) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1296 if (path.exists()) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1297 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
|
1298 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
|
1299 if (!file.isDirectory) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1300 if (!file.canRead()) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1301 false |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1302 } 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
|
1303 true |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1304 } else { |
2708
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
1305 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
|
1306 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1307 } else { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1308 false |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1309 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1310 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1311 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1312 // 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
|
1313 var i = 0 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1314 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
|
1315 var filecount = 0 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1316 var dircount = 0 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1317 if(files != null) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1318 filecount = files.size |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1319 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1320 if(dirs != null) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1321 dircount = dirs.size |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1322 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1323 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
|
1324 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
|
1325 } else { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1326 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
|
1327 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
|
1328 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1329 if(dirs != null) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1330 Arrays.sort(dirs) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1331 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
|
1332 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
|
1333 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1334 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1335 if(files != null) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1336 Arrays.sort(files) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1337 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
|
1338 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
|
1339 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1340 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1341 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1342 // 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
|
1343 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
|
1344 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
|
1345 activity, |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1346 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
|
1347 ) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1348 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
|
1349 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
|
1350 (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
|
1351 return thisview |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1352 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1353 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1354 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1355 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1356 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1357 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1358 /** |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1359 * 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
|
1360 */ |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1361 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
|
1362 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
|
1363 currentPath!!.parentFile |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1364 } else { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1365 File(currentPath, fileChosen) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1366 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1367 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1368 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1369 companion object { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1370 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
|
1371 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1372 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1373 init { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1374 list.onItemClickListener = |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1375 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
|
1376 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
|
1377 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
|
1378 if (chosenFile != null) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1379 if (chosenFile.isDirectory) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1380 refresh(chosenFile) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1381 } else { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1382 if (fileListener != null) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1383 fileListener!!.fileSelected(chosenFile) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1384 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1385 dialog.dismiss() |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1386 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1387 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1388 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1389 dialog.setContentView(list) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1390 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
|
1391 refresh(Environment.getExternalStorageDirectory()) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1392 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1393 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
1394 |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1395 // 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
|
1396 // 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
|
1397 // 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
|
1398 class DWMenuItem |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1399 { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1400 var title: String? = null |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1401 var menu: DWMenu? = null |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1402 var submenu: DWMenu? = null |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1403 var checked: Boolean = false |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1404 var check: Boolean = false |
2546
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
1405 var enabled: Boolean = true |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1406 var menuitem: MenuItem? = null |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1407 var submenuitem: SubMenu? = null |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1408 var id: Int = 0 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1409 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1410 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1411 class DWMenu { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1412 var menu: Menu? = null |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1413 var children = mutableListOf<DWMenuItem>() |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1414 var id: Int = 0 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1415 |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1416 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
|
1417 var refresh = recreate |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1418 |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1419 if(newmenu != null) { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1420 if(newmenu != menu) { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1421 menu = newmenu |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1422 refresh = true |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1423 } |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1424 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1425 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
|
1426 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
|
1427 |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1428 if(refresh) { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1429 menu!!.clear() |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1430 } |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1431 |
2544
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
1432 // Enable group dividers for separators |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
1433 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
|
1434 |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1435 for (menuitem in children) { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1436 // 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
|
1437 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
|
1438 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
|
1439 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
|
1440 } |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1441 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
|
1442 } 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
|
1443 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
|
1444 group += 1 |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1445 } 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
|
1446 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
|
1447 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
|
1448 menuitem.menuitem!!.isChecked = menuitem.checked |
2546
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
1449 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
|
1450 menuitem.menuitem!!.setOnMenuItemClickListener { item: MenuItem? -> |
2620
dcd71b04cc46
Android: Add internal event constants for more clarity about what code does.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2614
diff
changeset
|
1451 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
|
1452 true |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
1453 } |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1454 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1455 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1456 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1457 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1458 } |
2544
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
1459 |
dbfcc0e357d6
Android: Clean up the menus... add separator, remove tildes and implement callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2543
diff
changeset
|
1460 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
|
1461 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1462 |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1463 // Class for storing container data |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1464 class DWContainerModel { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1465 var columns = mutableListOf<String?>() |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1466 var types = mutableListOf<Int>() |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1467 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
|
1468 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
|
1469 var rowtitle = mutableListOf<String?>() |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
1470 var querypos: Int = -1 |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1471 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1472 fun numberOfColumns(): Int |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1473 { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1474 return columns.size |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1475 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1476 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1477 fun numberOfRows(): Int |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1478 { |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
1479 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
|
1480 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
|
1481 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
1482 return 0 |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1483 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1484 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1485 fun getColumnType(column: Int): Int |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1486 { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1487 if(column < types.size) { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1488 return types[column] |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1489 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1490 return -1 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1491 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1492 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1493 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
|
1494 { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
1495 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
|
1496 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1497 if(index > -1 && index < data.size) { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1498 return data[index] |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1499 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1500 return null |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1501 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1502 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1503 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
|
1504 { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
1505 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
|
1506 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1507 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
|
1508 // 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
|
1509 if((((types[column] and 1) != 0) && (obj is Drawable)) || |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1510 (((types[column] and (1 shl 1)) != 0) && (obj is String)) || |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1511 (((types[column] and (1 shl 2)) != 0) && (obj is Int))) { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1512 data[index] = obj |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1513 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1514 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1515 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1516 |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1517 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
|
1518 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1519 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
|
1520 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
|
1521 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1522 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1523 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1524 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
|
1525 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1526 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
|
1527 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
|
1528 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1529 return 0 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1530 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1531 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1532 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
|
1533 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1534 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
|
1535 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
|
1536 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1537 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1538 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1539 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
|
1540 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1541 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
|
1542 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
|
1543 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1544 return null |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1545 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1546 |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1547 fun addColumn(title: String?, type: Int) |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1548 { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1549 columns.add(title) |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1550 types.add(type) |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1551 // 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
|
1552 data.clear() |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1553 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1554 |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1555 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
|
1556 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1557 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
|
1558 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
|
1559 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
|
1560 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
|
1561 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1562 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
|
1563 rowtitle.removeAt(0) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1564 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1565 } else { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1566 data.clear() |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1567 rowdata.clear() |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1568 rowtitle.clear() |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1569 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1570 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1571 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1572 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
|
1573 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1574 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
|
1575 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
|
1576 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
|
1577 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
|
1578 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1579 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
|
1580 rowtitle.removeAt(i) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1581 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1582 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1583 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1584 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1585 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
|
1586 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1587 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
|
1588 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
|
1589 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
|
1590 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
|
1591 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1592 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
|
1593 rowtitle.removeAt(i) |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1594 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1595 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1596 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1597 |
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
|
1598 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
|
1599 { |
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
|
1600 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
|
1601 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
|
1602 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
|
1603 } |
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
|
1604 } |
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
|
1605 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
|
1606 } |
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
|
1607 |
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
|
1608 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
|
1609 { |
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
|
1610 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
|
1611 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
|
1612 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
|
1613 } |
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
|
1614 } |
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
|
1615 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
|
1616 } |
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
|
1617 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
1618 fun addRows(count: Int): Long |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1619 { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
1620 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
|
1621 |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1622 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
|
1623 { |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1624 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
|
1625 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1626 // 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
|
1627 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
|
1628 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1629 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
|
1630 rowtitle.add(null) |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1631 } |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
1632 return startRow |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1633 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1634 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1635 fun clear() |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1636 { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1637 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
|
1638 rowdata.clear() |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
1639 rowtitle.clear() |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1640 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1641 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1642 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1643 class DWContainerAdapter(c: Context) : BaseAdapter() |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1644 { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1645 private var context = c |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1646 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
|
1647 var selectedItem: Int = -1 |
2565
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1648 var simpleMode: Boolean = true |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
1649 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
|
1650 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
|
1651 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
|
1652 var backColor: Int? = null |
2613
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
1653 var lastClick: Long = 0 |
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
1654 var lastClickRow: Int = -1 |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1655 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1656 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
|
1657 return model.numberOfRows() |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1658 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1659 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1660 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
|
1661 return model.getRowAndColumn(position, 0) |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1662 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1663 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1664 override fun getItemId(position: Int): Long { |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1665 return position.toLong() |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1666 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1667 |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1668 override fun getView(position: Int, view: View?, parent: ViewGroup): View { |
2568
b536b7b21682
Android: Switch to using LinearLayout for Container row layout...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2567
diff
changeset
|
1669 var rowView: LinearLayout? = view as LinearLayout? |
2565
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1670 var displayColumns = model.numberOfColumns() |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1671 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1672 // In simple mode, limit the columns to 1 or 2 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1673 if(simpleMode == true) { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1674 // If column 1 is bitmap and column 2 is text... |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1675 if(displayColumns > 1 && (model.getColumnType(0) and 1) != 0 && |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1676 (model.getColumnType(1) and (1 shl 1)) != 0) { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1677 displayColumns = 2 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1678 } else { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1679 displayColumns = 1 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1680 } |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1681 } |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
1682 |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
1683 // 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
|
1684 if(rowView == null) { |
2568
b536b7b21682
Android: Switch to using LinearLayout for Container row layout...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2567
diff
changeset
|
1685 rowView = LinearLayout(context) |
b536b7b21682
Android: Switch to using LinearLayout for Container row layout...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2567
diff
changeset
|
1686 rowView.orientation = LinearLayout.HORIZONTAL |
2565
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1687 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1688 for(i in 0 until displayColumns) { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1689 val content = model.getRowAndColumn(position, i) |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1690 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1691 // Image |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1692 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
|
1693 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
|
1694 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
|
1695 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
|
1696 params.gravity = Gravity.CENTER |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
1697 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
|
1698 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
|
1699 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
|
1700 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
|
1701 } |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1702 rowView.addView(imageview) |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1703 } else { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1704 // Everything else id displayed as text |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1705 val textview = TextView(context) |
2580
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
1706 val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
1707 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
|
1708 params.gravity = Gravity.CENTER |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
1709 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
|
1710 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
|
1711 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
|
1712 textview.text = content |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1713 } else if(content is Int) { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1714 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
|
1715 } |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1716 rowView.addView(textview) |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
1717 } |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1718 } |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
1719 // TODO: Add code to optionally add other columns |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
1720 } else { |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
1721 // Otherwise we just need to update the existing layout |
2565
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1722 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1723 for(i in 0 until displayColumns) { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1724 val content = model.getRowAndColumn(position, i) |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1725 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1726 // Image |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1727 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
|
1728 val imageview = rowView.getChildAt(i) |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1729 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1730 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
|
1731 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
|
1732 } |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1733 } else { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1734 // Text |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1735 val textview = rowView.getChildAt(i) |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1736 |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1737 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
|
1738 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
|
1739 textview.text = content |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1740 } else if (content is Int) { |
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1741 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
|
1742 } |
2677
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1743 if(foreColor != null) { |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1744 textview.setTextColor(foreColor!!) |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
1745 } |
2565
5463801a888f
Android: Attempt to rewrite container layout code in a more generic manner.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2564
diff
changeset
|
1746 } |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
1747 } |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1748 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1749 } |
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
|
1750 // 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
|
1751 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
|
1752 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
|
1753 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
|
1754 } 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
|
1755 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
|
1756 } |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
1757 } 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
|
1758 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
|
1759 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
|
1760 } 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
|
1761 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
|
1762 } |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
1763 } |
2555
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1764 return rowView |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1765 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1766 } |
d7d163d70763
Android: Initial implementations of DWContainerModel and DWContainerAdapter.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2554
diff
changeset
|
1767 |
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
|
1768 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
|
1769 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
|
1770 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
|
1771 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
|
1772 } else { |
9df2c11f020f
Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
1773 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
|
1774 } |
9df2c11f020f
Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
1775 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
|
1776 } |
9df2c11f020f
Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
1777 } |
9df2c11f020f
Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
1778 |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
1779 class DWindows : AppCompatActivity() { |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1780 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
|
1781 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
|
1782 var threadCond = threadLock.newCondition() |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
1783 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
|
1784 var darkMode: Int = -1 |
2614
dbcd9416e9c9
Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2613
diff
changeset
|
1785 var lastClickView: View? = null |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
1786 private var appID: String? = null |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
1787 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
|
1788 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
|
1789 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
|
1790 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
|
1791 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
|
1792 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
|
1793 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
|
1794 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
|
1795 // 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
|
1796 private var windowTitles = mutableListOf<String?>() |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1797 private var windowMenuBars = mutableListOf<DWMenu?>() |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1798 private var windowStyles = mutableListOf<Int>() |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1799 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
|
1800 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1801 // 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
|
1802 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
|
1803 { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1804 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
|
1805 runnable.run() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1806 } else { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1807 threadLock.lock() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1808 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
|
1809 threadLock.lock() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1810 runnable.run() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1811 threadCond.signal() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1812 threadLock.unlock() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1813 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1814 runOnUiThread(ourRunnable) |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1815 threadCond.await() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1816 threadLock.unlock() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1817 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
1818 } |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
1819 |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1820 // 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
|
1821 // 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
|
1822 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
|
1823 val length = filename.length |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1824 |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1825 for (ext in DWImageExts) { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1826 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
|
1827 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
|
1828 try { |
3a14d7fd4b99
Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
1829 if (filebody.toInt() > 0) { |
3a14d7fd4b99
Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
1830 return true |
3a14d7fd4b99
Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
1831 } |
3a14d7fd4b99
Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
1832 } catch(e: NumberFormatException) { |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1833 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1834 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1835 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1836 return false |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1837 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1838 |
2659
3a14d7fd4b99
Android: Catch NumberFormatException in isDWResource().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2658
diff
changeset
|
1839 // 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
|
1840 private fun extractAssets() { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1841 var zipFile: ZipFile? = null |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1842 val targetDir = cacheDir |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1843 |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1844 try { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1845 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
|
1846 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
|
1847 while (e.hasMoreElements()) { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1848 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
|
1849 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
|
1850 isDWResource(entry.name)) { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1851 continue |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1852 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1853 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
|
1854 targetFile.parentFile!!.mkdirs() |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1855 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
|
1856 var ais: BufferedInputStream? = null |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1857 var aos: FileOutputStream? = null |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1858 try { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1859 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
|
1860 aos = FileOutputStream(targetFile) |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1861 ais.read(tempBuffer) |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1862 aos.write(tempBuffer) |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1863 } catch (e: IOException) { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1864 } finally { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1865 ais?.close() |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1866 aos?.close() |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1867 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1868 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1869 } catch (e: IOException) { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1870 } finally { |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1871 zipFile?.close() |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1872 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1873 } |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1874 |
2498
4ae2b3b77f25
Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2497
diff
changeset
|
1875 // 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
|
1876 // 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
|
1877 // 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
|
1878 // 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
|
1879 // 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
|
1880 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
|
1881 super.onCreate(savedInstanceState) |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1882 |
2480
878d36588aaa
Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2479
diff
changeset
|
1883 // Turn on rotation |
878d36588aaa
Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2479
diff
changeset
|
1884 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
|
1885 |
2498
4ae2b3b77f25
Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2497
diff
changeset
|
1886 // 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
|
1887 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
|
1888 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
|
1889 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
|
1890 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
|
1891 val c = cacheDir.path |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1892 |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1893 // 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
|
1894 // 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
|
1895 // other Dynamic Windows platforms |
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
1896 extractAssets() |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
1897 |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1898 // 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
|
1899 windowLayout = ViewPager2(this) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1900 windowLayout!!.id = View.generateViewId() |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1901 windowLayout!!.adapter = DWTabViewPagerAdapter() |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1902 windowLayout!!.isUserInputEnabled = false |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1903 windowLayout!!.layoutParams = |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1904 ViewGroup.LayoutParams( |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1905 ViewGroup.LayoutParams.MATCH_PARENT, |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1906 ViewGroup.LayoutParams.MATCH_PARENT |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1907 ) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
1908 |
2498
4ae2b3b77f25
Android: Get the notebook control functional. Disable recylcing of the views.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2497
diff
changeset
|
1909 // 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
|
1910 // 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
|
1911 dwindowsInit(s, c, this.getPackageName()) |
2496
3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2495
diff
changeset
|
1912 } |
3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2495
diff
changeset
|
1913 |
3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2495
diff
changeset
|
1914 override fun onConfigurationChanged(newConfig: Configuration) { |
3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2495
diff
changeset
|
1915 super.onConfigurationChanged(newConfig) |
3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2495
diff
changeset
|
1916 |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
1917 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
|
1918 when (currentNightMode) { |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
1919 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
|
1920 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
|
1921 } |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
1922 |
2499
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
1923 // 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
|
1924 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
|
1925 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
|
1926 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
|
1927 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
|
1928 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
|
1929 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
|
1930 |
17c34bdaec6c
Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2684
diff
changeset
|
1931 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
|
1932 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
|
1933 |
17c34bdaec6c
Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2684
diff
changeset
|
1934 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
|
1935 } |
2496
3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2495
diff
changeset
|
1936 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
1937 } |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
1938 |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1939 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
|
1940 if(windowLayout != null) { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1941 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
|
1942 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
|
1943 |
17c34bdaec6c
Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2684
diff
changeset
|
1944 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
|
1945 var menuBar = windowMenuBars[index] |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1946 |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1947 if(menuBar == null) { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1948 menuBar = DWMenu() |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1949 windowMenuBars[index] = menuBar |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1950 } |
2707
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
1951 menuBar.menu = menu |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1952 return super.onCreateOptionsMenu(menu) |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1953 } |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1954 } |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1955 return false |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1956 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1957 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1958 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
|
1959 if(windowLayout != null) { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1960 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
|
1961 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
|
1962 |
17c34bdaec6c
Android: Put in some list bounds safety checks... them getting hit however...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2684
diff
changeset
|
1963 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
|
1964 var menuBar = windowMenuBars[index] |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1965 |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1966 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
|
1967 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
|
1968 } else { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1969 menuBar = DWMenu() |
2707
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
1970 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
|
1971 windowMenuBars[index] = menuBar |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1972 } |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1973 return super.onPrepareOptionsMenu(menu) |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1974 } |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1975 } |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
1976 return false |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1977 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
1978 |
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
|
1979 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
|
1980 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
|
1981 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
|
1982 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
|
1983 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
|
1984 |
2670
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2669
diff
changeset
|
1985 // 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
|
1986 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
|
1987 // 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
|
1988 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
|
1989 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
1990 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
1991 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
1992 |
2552
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
1993 // 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
|
1994 // 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
|
1995 |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
1996 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
|
1997 { |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
1998 return darkMode |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
1999 } |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
2000 |
2694
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2692
diff
changeset
|
2001 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
|
2002 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
|
2003 |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2692
diff
changeset
|
2004 waitOnUiThread { |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2692
diff
changeset
|
2005 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
|
2006 try { |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2692
diff
changeset
|
2007 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
|
2008 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
|
2009 } 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
|
2010 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
|
2011 } |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2692
diff
changeset
|
2012 } |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2692
diff
changeset
|
2013 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
|
2014 } |
cee79add3669
Andrdoid: Implement dw_browse() to load a URL in a new Activity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2692
diff
changeset
|
2015 |
2607
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
2016 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
|
2017 { |
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
|
2018 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
|
2019 |
dbcd9416e9c9
Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2613
diff
changeset
|
2020 // 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
|
2021 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
|
2022 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
|
2023 } |
dbcd9416e9c9
Android: Popup menus on Andoird use an anchor View not the touch location.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2613
diff
changeset
|
2024 |
2607
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
2025 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
|
2026 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
|
2027 |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2028 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
|
2029 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
|
2030 } |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
2031 } |
3b9bbd69bb9c
Android: Implement dw_menu_popup() ... still need to implement the context events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2596
diff
changeset
|
2032 |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2033 fun menuBarNew(location: View): DWMenu? |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2034 { |
2666
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2035 var menuBar: DWMenu? = null |
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 if(windowLayout != null) { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2038 waitOnUiThread { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2039 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
|
2040 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
|
2041 |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2042 if (index != -1) { |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2043 menuBar = DWMenu() |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2044 windowMenuBars[index] = menuBar |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2045 } |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2046 } |
4f2d433747e2
Android: Rewrite the menubar code for multi-window support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2665
diff
changeset
|
2047 } |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2048 return menuBar |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2049 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2050 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2051 fun menuNew(cid: Int): DWMenu |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2052 { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2053 val menu = DWMenu() |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2054 menu.id = cid |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2055 return menu |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2056 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2057 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2058 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
|
2059 { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2060 val menuitem = DWMenuItem() |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2061 menuitem.id = cid |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2062 menuitem.title = title |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2063 menuitem.check = check != 0 |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2064 if(submenu != null) { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2065 menuitem.submenu = submenu |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2066 } |
2546
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2067 if((flags and (1 shl 1)) != 0) { |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2068 menuitem.enabled = false |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2069 } |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2070 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
|
2071 menuitem.checked = true |
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 if(end == 0) { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2074 menu.children.add(0, menuitem) |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2075 } else { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2076 menu.children.add(menuitem) |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2077 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2078 return menuitem |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2079 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
2080 |
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
|
2081 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
|
2082 { |
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
|
2083 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
|
2084 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
|
2085 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
|
2086 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
|
2087 } |
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
|
2088 } |
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
|
2089 |
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
|
2090 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
|
2091 { |
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
|
2092 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
|
2093 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
|
2094 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
|
2095 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
|
2096 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
|
2097 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
|
2098 } |
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
|
2099 } |
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
|
2100 } |
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
|
2101 } |
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
|
2102 |
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
|
2103 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
|
2104 { |
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
|
2105 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
|
2106 if(menuitem.id == cid) { |
2546
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2107 // Handle DW_MIS_ENABLED/DISABLED |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2108 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
|
2109 var enabled = false |
2546
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2110 |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2111 // Handle DW_MIS_ENABLED |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2112 if ((state and 1) != 0) { |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2113 enabled = true |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2114 } |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2115 menuitem.enabled = enabled |
2642
3edc64443b71
Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
2116 if(menuitem.menuitem != null) { |
3edc64443b71
Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
2117 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
|
2118 menuitem.menuitem!!.isEnabled = enabled |
3edc64443b71
Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
2119 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
|
2120 } |
2546
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2121 } |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2122 } |
897d94c20365
Android: Implement disabled menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2545
diff
changeset
|
2123 |
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
|
2124 // 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
|
2125 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
|
2126 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
|
2127 |
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
|
2128 // 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
|
2129 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
|
2130 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
|
2131 } |
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
|
2132 menuitem.checked = checked |
2642
3edc64443b71
Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
2133 if(menuitem.menuitem != null) { |
3edc64443b71
Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
2134 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
|
2135 menuitem.menuitem!!.isChecked = checked |
3edc64443b71
Android: Fix a null pointer exception in the menu code running HandyFTP on Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2637
diff
changeset
|
2136 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
|
2137 } |
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
|
2138 } |
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
|
2139 } |
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
|
2140 } |
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
|
2141 } |
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
|
2142 } |
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
|
2143 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2144 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
|
2145 var window: LinearLayout? = null |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2146 |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2147 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
|
2148 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2149 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
|
2150 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
|
2151 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2152 setContentView(windowLayout) |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2153 |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2154 window = LinearLayout(this) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2155 window!!.visibility = View.GONE |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2156 window!!.tag = dataArrayMap |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2157 window!!.layoutParams = |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2158 LinearLayout.LayoutParams( |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2159 LinearLayout.LayoutParams.MATCH_PARENT, |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2160 LinearLayout.LayoutParams.MATCH_PARENT |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2161 ) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2162 |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2163 // Update our window list |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2164 adapter.viewList.add(window!!) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2165 windowTitles.add(title) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2166 windowMenuBars.add(null) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2167 windowStyles.add(style) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2168 windowDefault.add(null) |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2169 |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2170 // 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
|
2171 // We can set stuff immediately |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2172 if (adapter.viewList.count() == 1) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2173 this.title = title |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2174 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
|
2175 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
|
2176 supportActionBar?.hide() |
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2669
diff
changeset
|
2177 } |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2178 } |
2691
e13607b87517
Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2690
diff
changeset
|
2179 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
|
2180 } |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2181 } |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2182 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
|
2183 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2184 |
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
|
2185 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
|
2186 { |
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
|
2187 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
|
2188 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
|
2189 } |
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
|
2190 } |
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
|
2191 |
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
|
2192 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
|
2193 { |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2194 if(windowLayout != null) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2195 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
|
2196 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
|
2197 |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2198 if (index != -1) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2199 windowDefault[index] = default |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2200 } |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2201 } |
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
|
2202 } |
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
|
2203 |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2204 fun windowSetStyle(window: View, style: Int, mask: Int) |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2205 { |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2206 waitOnUiThread { |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2207 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
|
2208 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
|
2209 |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2210 if (ourmask != 0) { |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2211 // 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
|
2212 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
|
2213 |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2214 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
|
2215 } |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2216 } |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2217 } |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2218 } |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2219 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2220 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
|
2221 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
|
2222 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2223 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2224 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
|
2225 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
|
2226 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
|
2227 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2228 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
|
2229 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
|
2230 } else { |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2231 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
|
2232 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2233 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2234 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2235 |
2686
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2236 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
|
2237 { |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2238 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
|
2239 |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2240 waitOnUiThread { |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2241 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
|
2242 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
|
2243 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
|
2244 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
|
2245 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
|
2246 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
|
2247 |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2248 // 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
|
2249 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
|
2250 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
|
2251 } |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2252 } |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2253 } |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2254 return retval |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2255 } |
95f61d3f3d0d
Android: Initial attempt at implmenting dw_window_get_preferred_size().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2685
diff
changeset
|
2256 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2257 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
|
2258 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
|
2259 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2260 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
|
2261 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
|
2262 |
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
|
2263 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
|
2264 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
|
2265 } |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2266 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2267 return retval |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2268 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
2269 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2270 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
|
2271 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2272 window.setEnabled(state) |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2273 } |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
2274 } |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
2275 |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2276 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
|
2277 { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2278 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
|
2279 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
|
2280 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
|
2281 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
|
2282 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
|
2283 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
|
2284 |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2285 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
|
2286 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
|
2287 } 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
|
2288 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
|
2289 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2290 |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2291 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
|
2292 if (bold && italic) { |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2293 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
|
2294 } else if (bold) { |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2295 style = Typeface.BOLD |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2296 } else if (italic) { |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2297 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
|
2298 } |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2299 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
|
2300 |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2301 return typeface |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2302 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2303 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
|
2304 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2305 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2306 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
|
2307 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
|
2308 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
|
2309 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2310 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
|
2311 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
|
2312 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2313 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2314 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
|
2315 waitOnUiThread { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2316 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
|
2317 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
|
2318 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
|
2319 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
|
2320 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
|
2321 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2322 } 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
|
2323 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
|
2324 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
|
2325 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
|
2326 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
|
2327 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2328 } 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
|
2329 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
|
2330 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
|
2331 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
|
2332 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
|
2333 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2334 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2335 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2336 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2337 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2338 |
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
|
2339 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
|
2340 { |
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
|
2341 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
|
2342 |
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
|
2343 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
|
2344 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
|
2345 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
|
2346 |
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
|
2347 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
|
2348 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
|
2349 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
|
2350 } 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
|
2351 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
|
2352 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
|
2353 } 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
|
2354 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
|
2355 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
|
2356 } |
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
|
2357 |
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
|
2358 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
|
2359 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
|
2360 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
|
2361 |
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
|
2362 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
|
2363 } |
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
|
2364 } |
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
|
2365 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
|
2366 } |
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
|
2367 |
2551
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
2368 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
|
2369 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
|
2370 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
|
2371 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
|
2372 |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
2373 // 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
|
2374 // 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
|
2375 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
|
2376 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
|
2377 } |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2378 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2379 waitOnUiThread { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2380 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
|
2381 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
|
2382 |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
2383 // 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
|
2384 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
|
2385 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
|
2386 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
|
2387 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
|
2388 } |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
2389 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
|
2390 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
|
2391 } 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
|
2392 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
|
2393 |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
2394 // 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
|
2395 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
|
2396 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
|
2397 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
|
2398 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
|
2399 } |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
2400 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
|
2401 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
|
2402 } 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
|
2403 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
|
2404 |
127779860ac1
Android: Implement DW_CLR_DEFAULT and some basic dark mode support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2550
diff
changeset
|
2405 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
|
2406 } 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
|
2407 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
|
2408 |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2409 // 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
|
2410 if(fore == 16) { |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2411 val value = TypedValue() |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2412 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
|
2413 colorfore = value.data |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2414 } |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2415 |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2416 listbox.colorFore = colorfore |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2417 listbox.colorBack = colorback |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2418 |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2419 listbox.setBackgroundColor(colorback) |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2420 } 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
|
2421 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
|
2422 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
|
2423 |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2424 // 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
|
2425 if(fore == 16) { |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2426 val value = TypedValue() |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2427 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
|
2428 colorfore = value.data |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2429 } |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2430 |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2431 adapter.foreColor = colorfore |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2432 adapter.backColor = colorback |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2433 |
c90b2d7057c8
Android: Implement dw_window_set_color() on Containers and Listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2676
diff
changeset
|
2434 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
|
2435 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2436 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2437 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
2438 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2439 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
|
2440 if(windowLayout != null) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2441 waitOnUiThread { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2442 if (window is TextView) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2443 val textview: TextView = window |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2444 textview.text = text |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2445 } else if (window is Button) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2446 val button: Button = window |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2447 button.text = text |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2448 } else if (window is LinearLayout) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2449 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
|
2450 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
|
2451 |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2452 if(index != -1) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2453 windowTitles[index] = text |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2454 if(index == windowLayout!!.currentItem) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2455 this.title = text |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2456 } |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2457 } |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2458 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2459 } |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2460 } |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2461 } |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2462 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2463 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
|
2464 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
|
2465 |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2466 if(windowLayout != null) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2467 waitOnUiThread { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2468 if (window is TextView) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2469 val textview: TextView = window |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2470 text = textview.text.toString() |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2471 } else if (window is Button) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2472 val button: Button = window |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2473 text = button.text.toString() |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2474 } else if (window is LinearLayout) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2475 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
|
2476 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
|
2477 |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2478 if(index != -1) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2479 text = windowTitles[index] |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2480 } |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2481 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2482 } |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2483 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2484 return text |
2489
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2485 } |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2486 |
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
|
2487 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
|
2488 { |
2ae70678c845
Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2666
diff
changeset
|
2489 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
|
2490 |
2ae70678c845
Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2666
diff
changeset
|
2491 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
|
2492 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
|
2493 |
2ae70678c845
Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2666
diff
changeset
|
2494 // 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
|
2495 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
|
2496 // 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
|
2497 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
|
2498 // 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
|
2499 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
|
2500 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
|
2501 } |
2ae70678c845
Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2666
diff
changeset
|
2502 // 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
|
2503 // So using RecyclerView.scrollToPosition() also |
2ad924c6493d
Android: Still need to call setCurrentItem() on ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2668
diff
changeset
|
2504 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
|
2505 |
2670
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2669
diff
changeset
|
2506 // 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
|
2507 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
|
2508 supportActionBar?.show() |
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2669
diff
changeset
|
2509 } else { |
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2669
diff
changeset
|
2510 supportActionBar?.hide() |
e3a95940c18f
Android: Implement DW_FCF_CLOSEBUTTON and DW_FCF_TITLEBAR flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2669
diff
changeset
|
2511 } |
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
|
2512 // 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
|
2513 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
|
2514 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
|
2515 } |
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
|
2516 // 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
|
2517 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
|
2518 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
|
2519 } 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
|
2520 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
|
2521 } |
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
|
2522 // 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
|
2523 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
|
2524 } |
2ae70678c845
Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2666
diff
changeset
|
2525 } |
2ae70678c845
Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2666
diff
changeset
|
2526 } |
2ae70678c845
Android: Use a RecyclerView method to change the ViewPager2 page since the ViewPager2
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2666
diff
changeset
|
2527 |
2503
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
2528 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
|
2529 { |
2665
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2530 if(windowLayout != null) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2531 waitOnUiThread { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2532 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
|
2533 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
|
2534 |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2535 if(state == 0) { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2536 window.visibility = View.GONE |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2537 } else { |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2538 window.visibility = View.VISIBLE |
aca4b56f50dd
Android: Attempt at multi-window support using ViewPager2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2659
diff
changeset
|
2539 } |
2691
e13607b87517
Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2690
diff
changeset
|
2540 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
|
2541 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
|
2542 } |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
2543 } |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
2544 } |
1c2a79313b04
Android: Implment dw_window_hide/show(). Set the initial visibility to GONE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2502
diff
changeset
|
2545 |
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
|
2546 fun windowDestroy(window: View): Int { |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2547 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
|
2548 |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2549 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
|
2550 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
|
2551 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
|
2552 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
|
2553 |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2554 // 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
|
2555 // 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
|
2556 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
|
2557 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
|
2558 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
|
2559 |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2560 // 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
|
2561 // 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
|
2562 // 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
|
2563 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
|
2564 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
|
2565 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2566 // 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
|
2567 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
|
2568 |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2569 // 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
|
2570 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
|
2571 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
|
2572 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
|
2573 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
|
2574 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
|
2575 |
2691
e13607b87517
Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2690
diff
changeset
|
2576 adapter.notifyDataSetChanged() |
e13607b87517
Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2690
diff
changeset
|
2577 |
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
|
2578 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
|
2579 } 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
|
2580 // 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
|
2581 // 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
|
2582 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
|
2583 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
|
2584 |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2585 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
|
2586 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
|
2587 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2588 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2589 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2590 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2591 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
|
2592 } |
917f2d1f9cae
Android: Implement dw_window_destroy() and try to add a back button to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2667
diff
changeset
|
2593 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2594 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
|
2595 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
|
2596 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
|
2597 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2598 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
|
2599 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
|
2600 } |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2601 return "" |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2602 } |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2603 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2604 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
|
2605 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
|
2606 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
|
2607 |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2608 cm.setPrimaryClip(clipdata) |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2609 } |
6c01b0132813
Android: Implement window and clipboard text setter and getters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2488
diff
changeset
|
2610 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2611 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
|
2612 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
|
2613 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2614 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
|
2615 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
|
2616 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2617 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
|
2618 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
|
2619 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
|
2620 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
|
2621 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
|
2622 ) |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2623 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
|
2624 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
|
2625 } else { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2626 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
|
2627 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2628 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
|
2629 } |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
2630 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
|
2631 } |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
2632 |
2689
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2633 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
|
2634 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
|
2635 waitOnUiThread { |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2636 box = RadioGroup(this) |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2637 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
|
2638 |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2639 box!!.tag = dataArrayMap |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2640 box!!.layoutParams = |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2641 LinearLayout.LayoutParams( |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2642 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
|
2643 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
|
2644 ) |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2645 if (type > 0) { |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2646 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
|
2647 } else { |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2648 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
|
2649 } |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2650 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
|
2651 } |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2652 return box |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2653 } |
7127de139acf
Android: Implement groupbox using RadioGroup... still missing the title and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2688
diff
changeset
|
2654 |
2706
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2655 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
|
2656 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
|
2657 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2658 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2659 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
|
2660 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
|
2661 val dataArrayMap = SimpleArrayMap<String, Long>() |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2662 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2663 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
|
2664 box.layoutParams = |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2665 LinearLayout.LayoutParams( |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2666 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
|
2667 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
|
2668 ) |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2669 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
|
2670 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
|
2671 } else { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2672 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
|
2673 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2674 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
|
2675 // 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
|
2676 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
|
2677 scrollBox!!.addView(box) |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2678 } |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2679 return scrollBox |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2680 } |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2681 |
2706
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2682 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
|
2683 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
|
2684 |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2685 waitOnUiThread { |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2686 // 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
|
2687 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
|
2688 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
|
2689 } else { |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2690 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
|
2691 } |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2692 } |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2693 return retval |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2694 } |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2695 |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2696 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
|
2697 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
|
2698 |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2699 waitOnUiThread { |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2700 // 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
|
2701 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
|
2702 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
|
2703 } else { |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2704 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
|
2705 } |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2706 } |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2707 return retval |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2708 } |
4e9eba7f7226
Android: Implement dw_scrollbox_get_range() and dw_scrollbox_get_pos().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2703
diff
changeset
|
2709 |
2683
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2710 // 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
|
2711 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
|
2712 { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2713 val parent = box.parent |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2714 |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2715 if(parent is LinearLayout) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2716 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
|
2717 |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2718 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
|
2719 if(params.height == 0) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2720 box.measure(0, 0) |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2721 val calch = box.measuredHeight |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2722 |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2723 if(calch > 0) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2724 params.weight = calch.toFloat() |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2725 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2726 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2727 } else { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2728 if(params.width == 0) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2729 box.measure(0, 0) |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2730 val calcw = box.measuredWidth |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2731 |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2732 if(calcw > 0) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2733 params.weight = calcw.toFloat() |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2734 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2735 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2736 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2737 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2738 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2739 |
2495
5664c91d03fb
Android: Attempts to sort out the various issues... still not working but...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2494
diff
changeset
|
2740 fun boxPack( |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2741 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
|
2742 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
|
2743 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
|
2744 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
|
2745 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
|
2746 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
|
2747 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
|
2748 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
|
2749 ) { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2750 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2751 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
|
2752 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
|
2753 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
|
2754 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
|
2755 |
a7868380098f
Android: LinearLayout does not allow null views, if null, create a Placeholder view.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2670
diff
changeset
|
2756 // 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
|
2757 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
|
2758 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
|
2759 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
|
2760 } |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
2761 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2762 // 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
|
2763 // 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
|
2764 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
|
2765 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
|
2766 } 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
|
2767 val sv: ScrollView = boxview |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2768 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2769 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
|
2770 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
|
2771 } |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2772 } |
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2773 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2774 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
|
2775 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
|
2776 |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2777 // 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
|
2778 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
|
2779 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
|
2780 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
|
2781 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
|
2782 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
|
2783 } |
2683
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2784 if (vsize != 0) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2785 val calch = item.measuredHeight |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2786 |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2787 if(calch > 0) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2788 weight = calch.toFloat() |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2789 } else { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2790 weight = 1F |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2791 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2792 h = 0 |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2793 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2794 } else { |
2552
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2795 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
|
2796 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
|
2797 } |
2683
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2798 if (hsize != 0) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2799 val calcw = item.measuredWidth |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2800 |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2801 if(calcw > 0) { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2802 weight = calcw.toFloat() |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2803 } else { |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2804 weight = 1F |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2805 } |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2806 w = 0 |
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2807 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2808 } |
2552
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2809 // 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
|
2810 } else { |
2552
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2811 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
|
2812 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
|
2813 } |
2553
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2814 if(hsize == 0) { |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2815 if (width > 0) { |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2816 w = width |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2817 } |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2818 } 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
|
2819 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
|
2820 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
|
2821 } 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
|
2822 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
|
2823 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
|
2824 } 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
|
2825 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
|
2826 |
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
|
2827 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
|
2828 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
|
2829 } |
2553
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2830 } |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2831 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2832 } |
2553
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2833 if(vsize == 0) { |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2834 if (height > 0) { |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2835 h = height |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2836 } |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2837 } 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
|
2838 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
|
2839 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
|
2840 } 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
|
2841 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
|
2842 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
|
2843 } 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
|
2844 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
|
2845 |
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
|
2846 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
|
2847 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
|
2848 } |
2553
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2849 } |
2b4f2929408e
Android: Fix issue with specifying static sizes... still some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2552
diff
changeset
|
2850 } |
2552
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2851 } |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2852 } |
2552
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2853 |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2854 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
|
2855 |
2552
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2856 // 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
|
2857 // 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
|
2858 if (box.orientation == LinearLayout.VERTICAL) { |
2681
c1482518b643
Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2677
diff
changeset
|
2859 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
|
2860 params.weight = weight |
2681
c1482518b643
Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2677
diff
changeset
|
2861 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
|
2862 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2863 } else { |
2681
c1482518b643
Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2677
diff
changeset
|
2864 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
|
2865 params.weight = weight |
2681
c1482518b643
Android: Fix weight based layout problems.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2677
diff
changeset
|
2866 params.width = 0 |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2867 } |
2480
878d36588aaa
Android: Enable app rotation and fix some issues with layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2479
diff
changeset
|
2868 } |
2552
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2869 // 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
|
2870 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
|
2871 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
|
2872 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
|
2873 } 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
|
2874 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
|
2875 } 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
|
2876 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
|
2877 } |
303f544d14fa
Android: Refactor boxPack() to try to fix non-expandable items expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2551
diff
changeset
|
2878 // 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
|
2879 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
|
2880 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
|
2881 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2882 item.layoutParams = params |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2883 box.addView(item, index) |
2683
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2884 boxUpdate(box) |
2500
ac0b7e579229
Android: Implement dw_scrollbox_new() using ScrollView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2499
diff
changeset
|
2885 } |
2478
b0230e378667
Android: Improvements to boxPack to handle more parameters...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2477
diff
changeset
|
2886 } |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
2887 } |
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
2888 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2889 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
|
2890 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
2891 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
|
2892 box.removeView(item) |
2683
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2893 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
|
2894 } |
2477
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
2895 } |
3fbf8783122d
Android: First functional version. Notebook-less first page of dwtest works.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2476
diff
changeset
|
2896 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2897 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
|
2898 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
|
2899 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2900 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2901 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
|
2902 box.removeView(item) |
2683
e7885fd45f7b
Android: Apply weights to boxes as well as items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2682
diff
changeset
|
2903 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
|
2904 } |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2905 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
|
2906 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
2907 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2908 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
|
2909 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
|
2910 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2911 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
|
2912 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
|
2913 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
2914 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
|
2915 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
|
2916 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
|
2917 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
|
2918 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
|
2919 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
|
2920 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
|
2921 } |
2482
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
2922 } |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2923 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
|
2924 } |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
2925 |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2926 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
|
2927 var button: ImageButton? = null |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2928 waitOnUiThread { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2929 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
|
2930 val dataArrayMap = SimpleArrayMap<String, Long>() |
2653
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2931 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
|
2932 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2933 button!!.tag = dataArrayMap |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2934 button!!.id = resid |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2935 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
|
2936 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
|
2937 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
|
2938 } |
2653
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2939 |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2940 if(resid > 0 && resid < 65536) { |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2941 filename = resid.toString() |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
2942 } else { |
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
2943 button!!.setImageResource(resid) |
2653
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2944 } |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2945 |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2946 if(filename != null) { |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
2947 for (ext in DWImageExts) { |
2653
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2948 // 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
|
2949 try { |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2950 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
|
2951 val b = BitmapFactory.decodeStream(f) |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2952 |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2953 if (b != null) { |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2954 button!!.setImageBitmap(b) |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2955 break |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2956 } |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2957 } catch (e: IOException) { |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2958 } |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2959 } |
297456a381e4
Android: Similar resource change for bitmap buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2652
diff
changeset
|
2960 } |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2961 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2962 return button |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2963 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2964 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2965 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
|
2966 var button: ImageButton? = null |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2967 waitOnUiThread { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2968 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
|
2969 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
|
2970 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2971 button!!.tag = dataArrayMap |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2972 button!!.id = cid |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2973 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
|
2974 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
|
2975 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
|
2976 } |
2564
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
2977 |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
2978 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
|
2979 // 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
|
2980 try { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
2981 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
|
2982 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
|
2983 |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
2984 if(b != null) { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
2985 button!!.setImageBitmap(b) |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
2986 break |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
2987 } |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
2988 } catch (e: IOException) { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
2989 } |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2990 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2991 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2992 return button |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2993 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2994 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2995 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
|
2996 var button: ImageButton? = null |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2997 waitOnUiThread { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
2998 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
|
2999 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
|
3000 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
|
3001 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
3002 button!!.tag = dataArrayMap |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
3003 button!!.id = cid |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
3004 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
|
3005 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
|
3006 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
|
3007 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
3008 button!!.setImageBitmap(b) |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
3009 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
3010 return button |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
3011 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
3012 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3013 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
|
3014 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
|
3015 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3016 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3017 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
|
3018 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
|
3019 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3020 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
|
3021 entryfield!!.id = cid |
2554
4c75fb6089a9
Android: Need to set isSingleLine for entryfields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2553
diff
changeset
|
3022 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
|
3023 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
|
3024 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
|
3025 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
|
3026 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3027 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
|
3028 } |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3029 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
|
3030 } |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3031 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3032 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
|
3033 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3034 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
|
3035 } |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3036 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3037 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3038 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
|
3039 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
|
3040 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3041 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3042 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
|
3043 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
|
3044 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3045 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
|
3046 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
|
3047 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
|
3048 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
|
3049 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
|
3050 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
|
3051 } |
2482
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
3052 } |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3053 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
|
3054 } |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3055 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3056 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
|
3057 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
|
3058 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3059 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3060 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
|
3061 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3062 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
|
3063 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
|
3064 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
|
3065 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
|
3066 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
|
3067 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
|
3068 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
|
3069 } |
2482
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
3070 } |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3071 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
|
3072 } |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3073 |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3074 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
|
3075 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3076 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3077 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
|
3078 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
|
3079 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
|
3080 } 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
|
3081 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
|
3082 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
|
3083 } |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3084 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3085 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3086 |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3087 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
|
3088 { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3089 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
|
3090 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3091 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3092 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
|
3093 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
|
3094 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
|
3095 } 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
|
3096 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
|
3097 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
|
3098 } |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3099 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3100 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
|
3101 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3102 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3103 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
|
3104 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
|
3105 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3106 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3107 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
|
3108 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3109 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
|
3110 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
|
3111 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
|
3112 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
|
3113 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
|
3114 val border = GradientDrawable() |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
3115 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3116 // 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
|
3117 // 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
|
3118 // 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
|
3119 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
|
3120 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
|
3121 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
|
3122 } |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
3123 } |
2476
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3124 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
|
3125 } |
20c9e83cba2a
Android: Implement dw_entryfield_new, dw_entryfield_password_new() dw_button_new(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2475
diff
changeset
|
3126 |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3127 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
|
3128 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3129 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
|
3130 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3131 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3132 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
|
3133 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
|
3134 |
2701
9df2c11f020f
Android: Fix dw_mle_set_word_wrap() and dw_mle_set_cursor().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2694
diff
changeset
|
3135 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
|
3136 mle!!.tag = dataArrayMap |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3137 mle!!.id = cid |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3138 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
|
3139 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
|
3140 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
|
3141 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
|
3142 mle!!.isVerticalScrollBarEnabled = true |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3143 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
|
3144 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
|
3145 mle!!.isHorizontalScrollBarEnabled = false |
2581
9dea42f27b0a
Android: MLE should have TOP/LEFT gravity.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2580
diff
changeset
|
3146 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
|
3147 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3148 return mle |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3149 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3150 |
2707
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
3151 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
|
3152 { |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
3153 waitOnUiThread { |
2716
a1fea6b9f308
Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
3154 val layout = mle.layout |
a1fea6b9f308
Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
3155 |
a1fea6b9f308
Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
3156 if(layout != null) { |
a1fea6b9f308
Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
3157 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
|
3158 |
a1fea6b9f308
Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
3159 mle.scrollTo(0, y) |
a1fea6b9f308
Android: Fix potential null pointer exception in mleSetVisible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2715
diff
changeset
|
3160 } |
2707
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
3161 } |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
3162 } |
a3f6ca621453
Android: Implement dw_mle_set_visible(). Also fix various warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2706
diff
changeset
|
3163 |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3164 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
|
3165 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3166 waitOnUiThread { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3167 if (state != 0) { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3168 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
|
3169 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
|
3170 } else { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3171 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
|
3172 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
|
3173 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3174 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3175 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3176 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3177 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
|
3178 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3179 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
|
3180 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
|
3181 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3182 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3183 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3184 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
|
3185 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3186 waitOnUiThread { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3187 mle.setSelection(point) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3188 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3189 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3190 |
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
|
3191 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
|
3192 { |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3193 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
|
3194 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
|
3195 |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3196 // 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
|
3197 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
|
3198 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
|
3199 } 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
|
3200 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
|
3201 } |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3202 } |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3203 } |
4f12dc8e8f18
Android: Implement dw_mle_set_auto_complete() in the same way as iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2701
diff
changeset
|
3204 |
2708
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3205 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
|
3206 { |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3207 var retval: Int = -1 |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3208 var ignorecase: Boolean = true |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3209 |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3210 // DW_MLE_CASESENSITIVE 1 |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3211 if(flags == 1) { |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3212 ignorecase = false |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3213 } |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3214 |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3215 waitOnUiThread { |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3216 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
|
3217 |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3218 if(retval > -1) { |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3219 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
|
3220 } |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3221 } |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3222 return retval |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3223 } |
3a7dcc0ae08b
Android: Implement dw_mle_search(). Also revert lowercase() change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2707
diff
changeset
|
3224 |
2510
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3225 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
|
3226 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3227 waitOnUiThread { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3228 mle.setText("") |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3229 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3230 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3231 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3232 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
|
3233 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3234 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
|
3235 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3236 waitOnUiThread { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3237 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
|
3238 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
|
3239 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3240 if(startpoint < 1) { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3241 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
|
3242 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3243 mle.setText(newtext) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3244 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
|
3245 } 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
|
3246 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
|
3247 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3248 mle.setText(newtext) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3249 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
|
3250 } else { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3251 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
|
3252 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3253 mle.setText(newtext) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3254 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
|
3255 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3256 mle.setSelection(retval) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3257 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3258 return retval |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3259 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3260 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3261 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
|
3262 { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3263 waitOnUiThread { |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3264 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
|
3265 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
|
3266 |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3267 mle.setText(newtext) |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3268 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3269 } |
f54051c3f2a5
Android: Implement MLE functions. Fix issues with checkboxes and sliders.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2505
diff
changeset
|
3270 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3271 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
|
3272 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3273 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
|
3274 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3275 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3276 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
|
3277 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
|
3278 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
|
3279 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
|
3280 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
|
3281 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3282 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
|
3283 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
|
3284 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
|
3285 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
|
3286 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
|
3287 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
|
3288 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
|
3289 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
|
3290 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
|
3291 }.attach() |
2488
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
3292 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3293 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
|
3294 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
|
3295 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
|
3296 } else { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3297 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
|
3298 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3299 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
|
3300 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
|
3301 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
|
3302 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
|
3303 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
|
3304 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
|
3305 } else { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3306 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
|
3307 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3308 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
|
3309 // 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
|
3310 // 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
|
3311 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
|
3312 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
|
3313 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
|
3314 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
|
3315 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3316 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
|
3317 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
|
3318 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3319 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3320 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
|
3321 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
|
3322 }) |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
3323 } |
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
|
3324 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
|
3325 } |
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
|
3326 |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3327 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
|
3328 { |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3329 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
|
3330 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3331 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3332 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
|
3333 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
|
3334 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3335 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
|
3336 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
|
3337 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
|
3338 } 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
|
3339 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
|
3340 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
|
3341 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3342 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3343 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
|
3344 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
|
3345 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
|
3346 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3347 // 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
|
3348 do { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3349 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
|
3350 } 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
|
3351 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
|
3352 // 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
|
3353 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
|
3354 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
|
3355 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
|
3356 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
|
3357 ) |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3358 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
|
3359 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
|
3360 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
|
3361 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
|
3362 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
|
3363 } else { |
2682
856d3c8b559f
Android: Fix an exception when displaying a notebook with a placeholder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2681
diff
changeset
|
3364 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
|
3365 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
|
3366 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
|
3367 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
|
3368 } |
2691
e13607b87517
Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2690
diff
changeset
|
3369 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
|
3370 } |
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
|
3371 } |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3372 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
|
3373 } |
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
|
3374 |
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
|
3375 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
|
3376 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
|
3377 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
|
3378 } |
8352c38bc20b
Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
3379 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
|
3380 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
|
3381 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
|
3382 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
|
3383 } 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
|
3384 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
|
3385 } |
8352c38bc20b
Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
3386 } |
8352c38bc20b
Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
3387 } |
8352c38bc20b
Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
3388 |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3389 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
|
3390 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3391 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3392 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
|
3393 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
|
3394 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3395 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
|
3396 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
|
3397 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
|
3398 } 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
|
3399 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
|
3400 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
|
3401 } |
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
|
3402 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3403 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
|
3404 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
|
3405 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
|
3406 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
|
3407 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3408 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
|
3409 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
|
3410 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
|
3411 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
|
3412 tabs.removeTab(tab) |
2691
e13607b87517
Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2690
diff
changeset
|
3413 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
|
3414 } |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3415 } |
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
|
3416 } |
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
|
3417 } |
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
|
3418 |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3419 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
|
3420 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3421 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3422 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
|
3423 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
|
3424 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3425 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
|
3426 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
|
3427 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
|
3428 } 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
|
3429 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
|
3430 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
|
3431 } |
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
|
3432 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3433 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
|
3434 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
|
3435 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
|
3436 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
|
3437 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3438 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
|
3439 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
|
3440 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
|
3441 } |
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
|
3442 |
8352c38bc20b
Android: Turn off Android's forcing buttons and tabs to be all caps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2582
diff
changeset
|
3443 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
|
3444 } |
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
|
3445 } |
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
|
3446 } |
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
|
3447 |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3448 fun notebookPagePack(notebook: RelativeLayout, pageID: Long, box: LinearLayout) |
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
|
3449 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3450 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3451 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
|
3452 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
|
3453 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3454 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
|
3455 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
|
3456 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
|
3457 } 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
|
3458 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
|
3459 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
|
3460 } |
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
|
3461 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3462 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
|
3463 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
|
3464 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
|
3465 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3466 // 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
|
3467 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
|
3468 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
|
3469 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
|
3470 ) |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3471 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3472 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
|
3473 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
|
3474 } |
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
|
3475 } |
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
|
3476 } |
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
|
3477 |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3478 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
|
3479 { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3480 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
|
3481 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3482 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3483 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
|
3484 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
|
3485 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3486 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
|
3487 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
|
3488 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
|
3489 } 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
|
3490 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
|
3491 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
|
3492 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3493 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3494 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
|
3495 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
|
3496 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
|
3497 } |
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
|
3498 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3499 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
|
3500 } |
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
|
3501 |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
3502 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
|
3503 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3504 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3505 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
|
3506 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
|
3507 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3508 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
|
3509 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
|
3510 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
|
3511 } 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
|
3512 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
|
3513 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
|
3514 } |
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
|
3515 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3516 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
|
3517 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
|
3518 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
|
3519 |
e13607b87517
Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2690
diff
changeset
|
3520 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
|
3521 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
|
3522 pager.setCurrentItem(index, true) |
e13607b87517
Android: Call notifyDataSetChanged() on ViewPager2 adapters to fix some
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2690
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 } |
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
|
3525 } |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
3526 } |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
3527 |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3528 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
|
3529 { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3530 var splitbar: ConstraintLayout? = null |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3531 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3532 waitOnUiThread { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3533 splitbar = ConstraintLayout(this) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3534 if(splitbar != null) { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3535 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
|
3536 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
|
3537 |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3538 constraintSet.clone(splitbar) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3539 |
2656
2bdbd5e83654
Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2655
diff
changeset
|
3540 splitbar!!.tag = dataArrayMap |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3541 splitbar!!.id = cid |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3542 |
2656
2bdbd5e83654
Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2655
diff
changeset
|
3543 // 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
|
3544 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
|
3545 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
|
3546 |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3547 // Place the top/left item |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3548 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
|
3549 if(topleft.id < 1) { |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3550 topleft.id = View.generateViewId() |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3551 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3552 splitbar!!.addView(topleft) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3553 constraintSet.connect( |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3554 topleft.id, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3555 ConstraintLayout.LayoutParams.TOP, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3556 ConstraintLayout.LayoutParams.PARENT_ID, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3557 ConstraintLayout.LayoutParams.TOP |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3558 ) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3559 constraintSet.connect( |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3560 topleft.id, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3561 ConstraintLayout.LayoutParams.LEFT, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3562 ConstraintLayout.LayoutParams.PARENT_ID, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3563 ConstraintLayout.LayoutParams.LEFT |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3564 ) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3565 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3566 if (type == 0) { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3567 // Horizontal |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3568 constraintSet.connect( |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3569 topleft.id, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3570 ConstraintLayout.LayoutParams.BOTTOM, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3571 ConstraintLayout.LayoutParams.PARENT_ID, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3572 ConstraintLayout.LayoutParams.BOTTOM |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3573 ) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3574 constraintSet.constrainPercentWidth(topleft.id, 0.5F) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3575 } else { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3576 // Vertical |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3577 constraintSet.connect( |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3578 topleft.id, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3579 ConstraintLayout.LayoutParams.RIGHT, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3580 ConstraintLayout.LayoutParams.PARENT_ID, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3581 ConstraintLayout.LayoutParams.RIGHT |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3582 ) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3583 constraintSet.constrainPercentHeight(topleft.id, 0.5F) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3584 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3585 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3586 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3587 // Place the bottom/right item |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3588 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
|
3589 if (bottomright.id < 1) { |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3590 bottomright.id = View.generateViewId() |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3591 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3592 splitbar!!.addView(bottomright) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3593 constraintSet.connect( |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3594 bottomright.id, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3595 ConstraintLayout.LayoutParams.BOTTOM, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3596 ConstraintLayout.LayoutParams.PARENT_ID, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3597 ConstraintLayout.LayoutParams.BOTTOM |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3598 ) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3599 constraintSet.connect( |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3600 bottomright.id, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3601 ConstraintLayout.LayoutParams.RIGHT, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3602 ConstraintLayout.LayoutParams.PARENT_ID, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3603 ConstraintLayout.LayoutParams.RIGHT |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3604 ) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3605 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3606 if (type == 0) { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3607 // Horizontal |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3608 constraintSet.connect( |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3609 bottomright.id, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3610 ConstraintLayout.LayoutParams.TOP, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3611 ConstraintLayout.LayoutParams.PARENT_ID, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3612 ConstraintLayout.LayoutParams.TOP |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3613 ) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3614 constraintSet.constrainPercentWidth(bottomright.id, 0.5F) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3615 } else { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3616 // Vertical |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3617 constraintSet.connect( |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3618 bottomright.id, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3619 ConstraintLayout.LayoutParams.LEFT, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3620 ConstraintLayout.LayoutParams.PARENT_ID, |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3621 ConstraintLayout.LayoutParams.LEFT |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3622 ) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3623 constraintSet.constrainPercentHeight(bottomright.id, 0.5F) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3624 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3625 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3626 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3627 // 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
|
3628 constraintSet.applyTo(splitbar) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3629 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3630 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3631 return splitbar |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3632 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3633 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3634 fun splitBarGet(splitbar: ConstraintLayout): Float { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3635 var position: Float = 50.0F |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3636 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3637 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
|
3638 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
|
3639 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
|
3640 |
2bdbd5e83654
Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2655
diff
changeset
|
3641 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
|
3642 percent = dataArrayMap.get("_dw_percent")!! |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3643 } |
2656
2bdbd5e83654
Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2655
diff
changeset
|
3644 |
2bdbd5e83654
Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2655
diff
changeset
|
3645 position = percent.toFloat() / 1000000.0F |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3646 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3647 return position |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3648 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3649 |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3650 fun splitBarSet(splitbar: ConstraintLayout, position: Float) { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3651 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
|
3652 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
|
3653 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
|
3654 |
2bdbd5e83654
Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2655
diff
changeset
|
3655 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
|
3656 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
|
3657 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
|
3658 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
|
3659 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
|
3660 |
2bdbd5e83654
Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2655
diff
changeset
|
3661 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
|
3662 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
|
3663 } |
2bdbd5e83654
Android: Save splitbar settings in dataArrayMap instead of attempting to calculate them.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2655
diff
changeset
|
3664 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
|
3665 |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3666 constraintSet.clone(splitbar) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3667 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
|
3668 if (type == 1L) { |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3669 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
|
3670 } else { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3671 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
|
3672 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3673 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3674 if (bottomright != null) { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3675 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
|
3676 if (type == 1L) { |
2650
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3677 constraintSet.constrainPercentHeight(bottomright.id, altper) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3678 } else { |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3679 constraintSet.constrainPercentWidth(bottomright.id, altper) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3680 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3681 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3682 constraintSet.applyTo(splitbar) |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3683 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3684 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3685 } |
7101b5692601
Android: Attempt at implementing splitbar using ConstraintLayout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2643
diff
changeset
|
3686 |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3687 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
|
3688 { |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3689 var scrollbar: DWSlider? = null |
2719
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3690 |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3691 waitOnUiThread { |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3692 val dataArrayMap = SimpleArrayMap<String, Long>() |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3693 |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3694 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
|
3695 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
|
3696 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
|
3697 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
|
3698 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
|
3699 scrollbar!!.slider.progressBackgroundTintList = null |
2719
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3700 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
|
3701 scrollbar!!.slider.rotation = 90F |
2719
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3702 } |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3703 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
|
3704 override fun onStopTrackingTouch(seekBar: SeekBar) { |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3705 } |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3706 |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3707 override fun onStartTrackingTouch(seekBar: SeekBar) { |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3708 } |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3709 |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3710 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
|
3711 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
|
3712 } |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3713 }) |
6754e8f70142
Android: Split out scrollbar to a separate implementation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2716
diff
changeset
|
3714 } |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3715 return scrollbar |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3716 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3717 |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3718 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
|
3719 { |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3720 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
|
3721 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3722 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3723 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
|
3724 |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3725 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
|
3726 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
|
3727 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
|
3728 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
|
3729 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
|
3730 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
|
3731 } |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3732 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
|
3733 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
|
3734 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3735 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3736 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
|
3737 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3738 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3739 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
|
3740 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
|
3741 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3742 }) |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3743 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3744 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
|
3745 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3746 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3747 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
|
3748 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3749 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
|
3750 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3751 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3752 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
|
3753 |
2574
5b13bb267364
Android: Percent widget should be using horizontal ProgressBar.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2573
diff
changeset
|
3754 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
|
3755 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
|
3756 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
|
3757 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
|
3758 } |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3759 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
|
3760 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3761 |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3762 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
|
3763 { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3764 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
|
3765 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3766 waitOnUiThread { |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3767 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
|
3768 |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3769 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
|
3770 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
|
3771 } else { |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3772 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
|
3773 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
|
3774 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3775 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
|
3776 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3777 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
|
3778 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3779 |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3780 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
|
3781 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3782 waitOnUiThread { |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3783 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
|
3784 |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3785 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
|
3786 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
|
3787 } else { |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3788 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
|
3789 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
|
3790 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3791 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
|
3792 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3793 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3794 |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3795 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
|
3796 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3797 waitOnUiThread { |
2720
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3798 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
|
3799 |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3800 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
|
3801 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
|
3802 } else { |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3803 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
|
3804 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
|
3805 } |
9ce1649b0fbd
Android: Fix vertical sliders/scrollbars by creating a DWSlider class to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2719
diff
changeset
|
3806 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
|
3807 } |
2492
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3808 } |
e2ca6c1a4661
Android: Implement: slider, percent, scrollbar, checkbox_set/get box_unpack_at_index(),
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2491
diff
changeset
|
3809 |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3810 fun htmlNew(cid: Int): WebView? |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3811 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3812 var html: WebView? = null |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
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 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3815 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
|
3816 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3817 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
|
3818 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
|
3819 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
|
3820 // 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
|
3821 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
|
3822 html!!.settings.javaScriptEnabled = true |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3823 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3824 return html |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3825 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3826 |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3827 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
|
3828 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3829 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3830 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
|
3831 } |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3832 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3833 |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3834 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
|
3835 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3836 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3837 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
|
3838 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
|
3839 } |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3840 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3841 |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3842 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
|
3843 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3844 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3845 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
|
3846 // 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
|
3847 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
|
3848 } |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3849 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3850 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3851 |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3852 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
|
3853 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3854 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3855 when (action) { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
3856 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
|
3857 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
|
3858 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
|
3859 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
|
3860 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
|
3861 } |
2501
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3862 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3863 } |
41984ffb5ca2
Android: Initial implement of HTML control with WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2500
diff
changeset
|
3864 |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3865 fun spinButtonNew(text: String, cid: Int): DWSpinButton? |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3866 { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3867 var spinbutton: DWSpinButton? = null |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3868 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3869 waitOnUiThread { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3870 val dataArrayMap = SimpleArrayMap<String, Long>() |
2520
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3871 val newval = text.toLongOrNull() |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3872 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3873 spinbutton = DWSpinButton(this) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3874 spinbutton!!.tag = dataArrayMap |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3875 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
|
3876 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
|
3877 spinbutton!!.setText(text) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3878 if(newval != null) { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3879 spinbutton!!.value = newval |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3880 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3881 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3882 return spinbutton |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3883 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3884 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3885 fun spinButtonSetPos(spinbutton: DWSpinButton, position: Long) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3886 { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3887 waitOnUiThread { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3888 spinbutton.value = position |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3889 spinbutton.setText(position.toString()) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3890 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3891 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3892 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3893 fun spinButtonSetLimits(spinbutton: DWSpinButton, upper: Long, lower: Long) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3894 { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3895 waitOnUiThread { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3896 spinbutton.maximum = upper |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3897 spinbutton.minimum = lower |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3898 if(spinbutton.value > upper) { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3899 spinbutton.value = upper |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3900 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3901 if(spinbutton.value < lower) { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3902 spinbutton.value = lower |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3903 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3904 spinbutton.setText(spinbutton.value.toString()) |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3905 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3906 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3907 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3908 fun spinButtonGetPos(spinbutton: DWSpinButton): Long |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3909 { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3910 var retval: Long = 0 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3911 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3912 waitOnUiThread { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3913 val newvalue = spinbutton.text.toString().toLongOrNull() |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3914 |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3915 if(newvalue == null) { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3916 retval = spinbutton.value |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3917 } else { |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3918 retval = newvalue |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3919 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3920 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3921 return retval |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3922 } |
167af4b0004b
Android: Implement spinbuttons and callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2519
diff
changeset
|
3923 |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
3924 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
|
3925 { |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
3926 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
|
3927 |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
3928 waitOnUiThread { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
3929 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
|
3930 |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
3931 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
|
3932 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
|
3933 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
|
3934 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
|
3935 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
|
3936 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
3937 return combobox |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
3938 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
3939 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3940 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
|
3941 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3942 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
|
3943 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3944 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
3945 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
|
3946 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
|
3947 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3948 cont = ListView(this) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3949 cont!!.tag = dataArrayMap |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3950 cont!!.id = cid |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3951 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
|
3952 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
|
3953 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
|
3954 } |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3955 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
|
3956 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
|
3957 val data = adapter.model.getRowData(position) |
2613
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
3958 val now = System.currentTimeMillis() |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3959 |
2563
56183bef6793
Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2562
diff
changeset
|
3960 view.isSelected = !view.isSelected |
56183bef6793
Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2562
diff
changeset
|
3961 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
|
3962 lastClickView = cont!! |
2613
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
3963 // 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
|
3964 // Generate an ENTER event |
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
3965 if(cont!!.choiceMode != ListView.CHOICE_MODE_MULTIPLE || |
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
3966 (position == adapter.lastClickRow && |
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
3967 (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
|
3968 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
|
3969 } else { |
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
3970 // 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
|
3971 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
|
3972 } |
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
3973 adapter.lastClick = now |
72f1141c07aa
Android: Standardize DWContainer behavior part 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2611
diff
changeset
|
3974 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
|
3975 } |
56183bef6793
Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2562
diff
changeset
|
3976 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
|
3977 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
|
3978 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
|
3979 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
|
3980 |
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
|
3981 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
|
3982 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
|
3983 } |
56183bef6793
Android: Use ItemClick for the ITEM_SELECT event and the API 23
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2562
diff
changeset
|
3984 true |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3985 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3986 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
|
3987 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
|
3988 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
|
3989 |
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
|
3990 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
|
3991 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
|
3992 true |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
3993 } |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3994 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3995 return cont |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3996 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
3997 |
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
|
3998 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
|
3999 { |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
4000 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
|
4001 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
|
4002 |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
4003 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
|
4004 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
|
4005 } 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
|
4006 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
|
4007 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
|
4008 } 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
|
4009 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
|
4010 } |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
4011 } 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
|
4012 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
|
4013 } |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
4014 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
|
4015 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
|
4016 } 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
|
4017 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
|
4018 } |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
4019 } |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
4020 } |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
4021 |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4022 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
|
4023 { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4024 var retval: String? = null |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4025 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4026 waitOnUiThread { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4027 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
|
4028 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4029 // Handle DW_CRA_SELECTED |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4030 if((flags and 1) != 0) { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4031 val checked: SparseBooleanArray = cont.getCheckedItemPositions() |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4032 val position = checked.keyAt(0) |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4033 |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4034 adapter.model.querypos = position |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4035 retval = adapter.model.getRowTitle(position) |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4036 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4037 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
|
4038 adapter.model.querypos = -1 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4039 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4040 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
|
4041 adapter.model.querypos = 0 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4042 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4043 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4044 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4045 return retval |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4046 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4047 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4048 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
|
4049 { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4050 var retval: String? = null |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4051 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4052 waitOnUiThread { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4053 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
|
4054 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4055 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
|
4056 // Handle DW_CRA_SELECTED |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4057 if ((flags and 1) != 0) { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4058 val checked: SparseBooleanArray = cont.getCheckedItemPositions() |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4059 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4060 // 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
|
4061 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
|
4062 // Item position in adapter |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4063 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
|
4064 |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4065 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
|
4066 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
|
4067 |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4068 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
|
4069 retval = adapter.model.getRowTitle(newpos) |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4070 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4071 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4072 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4073 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
|
4074 adapter.model.querypos += 1 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4075 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
|
4076 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4077 adapter.model.querypos = -1 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4078 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4079 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4080 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4081 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4082 return retval |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4083 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4084 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4085 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
|
4086 { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4087 var retval: Long = 0 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4088 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4089 waitOnUiThread { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4090 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
|
4091 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4092 // Handle DW_CRA_SELECTED |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4093 if((flags and 1) != 0) { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4094 val checked: SparseBooleanArray = cont.getCheckedItemPositions() |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4095 val position = checked.keyAt(0) |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4096 |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4097 adapter.model.querypos = position |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4098 retval = adapter.model.getRowData(position) |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4099 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4100 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
|
4101 adapter.model.querypos = -1 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4102 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4103 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
|
4104 adapter.model.querypos = 0 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4105 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4106 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4107 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4108 return retval |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4109 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4110 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4111 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
|
4112 { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4113 var retval: Long = 0 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4114 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4115 waitOnUiThread { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4116 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
|
4117 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4118 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
|
4119 // Handle DW_CRA_SELECTED |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4120 if ((flags and 1) != 0) { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4121 val checked: SparseBooleanArray = cont.getCheckedItemPositions() |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4122 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4123 // 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
|
4124 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
|
4125 // Item position in adapter |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4126 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
|
4127 |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4128 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
|
4129 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
|
4130 |
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4131 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
|
4132 retval = adapter.model.getRowData(newpos) |
2560
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4133 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4134 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4135 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4136 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
|
4137 adapter.model.querypos += 1 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4138 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
|
4139 } else { |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4140 adapter.model.querypos = -1 |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4141 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4142 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4143 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4144 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4145 return retval |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4146 } |
3da35cd91ca7
Android: Implement querying containers and ENTER and CONTEXT callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2558
diff
changeset
|
4147 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4148 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
|
4149 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4150 waitOnUiThread { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4151 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
|
4152 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4153 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
|
4154 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4155 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4156 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4157 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
|
4158 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4159 waitOnUiThread { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4160 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
|
4161 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
|
4162 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4163 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
|
4164 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4165 return cont |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4166 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4167 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4168 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
|
4169 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4170 waitOnUiThread { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4171 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
|
4172 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4173 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
|
4174 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4175 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4176 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4177 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
|
4178 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4179 waitOnUiThread { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4180 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
|
4181 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4182 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
|
4183 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4184 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4185 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4186 fun containerChangeItemInt(cont: ListView, column: Int, row: Int, num: Int) |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4187 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4188 waitOnUiThread { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4189 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
|
4190 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4191 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
|
4192 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4193 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4194 |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4195 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
|
4196 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4197 waitOnUiThread { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4198 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
|
4199 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4200 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
|
4201 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4202 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4203 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4204 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
|
4205 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4206 waitOnUiThread { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4207 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
|
4208 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4209 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
|
4210 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4211 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4212 |
2561
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4213 fun containerRefresh(cont: ListView) |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4214 { |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4215 waitOnUiThread { |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4216 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
|
4217 |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4218 adapter.notifyDataSetChanged() |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4219 } |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4220 } |
f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2560
diff
changeset
|
4221 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4222 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
|
4223 { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4224 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
|
4225 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4226 waitOnUiThread { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4227 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
|
4228 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4229 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
|
4230 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4231 return type |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4232 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4233 |
2558
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4234 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
|
4235 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4236 waitOnUiThread { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4237 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
|
4238 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4239 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
|
4240 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4241 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4242 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4243 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
|
4244 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4245 waitOnUiThread { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4246 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
|
4247 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4248 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
|
4249 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4250 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4251 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4252 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
|
4253 { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4254 waitOnUiThread { |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4255 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
|
4256 |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4257 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
|
4258 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4259 } |
ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2557
diff
changeset
|
4260 |
2556
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4261 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
|
4262 { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4263 waitOnUiThread { |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4264 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
|
4265 |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4266 adapter.model.clear() |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4267 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4268 } |
d2d8c66ad062
Android: Initial container implementation... getting a NullPointerException crash in dwtest...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2555
diff
changeset
|
4269 |
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
|
4270 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
|
4271 { |
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
|
4272 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
|
4273 // 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
|
4274 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
|
4275 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
|
4276 // 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
|
4277 } 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
|
4278 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
|
4279 // 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
|
4280 } 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
|
4281 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
|
4282 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
|
4283 // 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
|
4284 } 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
|
4285 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
|
4286 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
|
4287 |
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
|
4288 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
|
4289 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
|
4290 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
|
4291 } |
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
|
4292 } |
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
|
4293 } |
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
|
4294 } |
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
|
4295 |
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
|
4296 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
|
4297 { |
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
|
4298 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
|
4299 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
|
4300 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
|
4301 |
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
|
4302 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
|
4303 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
|
4304 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
|
4305 } |
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
|
4306 |
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
|
4307 } |
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
|
4308 } |
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
|
4309 |
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
|
4310 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
|
4311 { |
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
|
4312 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
|
4313 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
|
4314 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
|
4315 |
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
|
4316 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
|
4317 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
|
4318 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
|
4319 } |
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
|
4320 |
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
|
4321 } |
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
|
4322 } |
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
|
4323 |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4324 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
|
4325 { |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4326 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
|
4327 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4328 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4329 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
|
4330 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4331 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
|
4332 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
|
4333 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
|
4334 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
|
4335 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
|
4336 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4337 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4338 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
|
4339 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4340 |
2515
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
4341 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
|
4342 { |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
4343 waitOnUiThread { |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
4344 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
|
4345 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
|
4346 |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
4347 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
|
4348 } 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
|
4349 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
|
4350 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4351 listbox.list.add(text) |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
4352 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
|
4353 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
|
4354 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
4355 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
4356 } |
211044d98e86
Android: Initial attempt at our own ComboBox class, EditText with PopupList.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2514
diff
changeset
|
4357 |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4358 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
|
4359 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4360 waitOnUiThread { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4361 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
|
4362 val combobox = window |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4363 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4364 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
|
4365 } 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
|
4366 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
|
4367 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4368 listbox.list.add(pos, text) |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
4369 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
|
4370 adapter.notifyDataSetChanged() |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4371 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4372 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4373 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4374 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4375 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
|
4376 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4377 waitOnUiThread { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4378 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
|
4379 val combobox = window |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4380 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4381 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
|
4382 } 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
|
4383 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
|
4384 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4385 listbox.list.clear() |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
4386 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
|
4387 adapter.notifyDataSetChanged() |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4388 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4389 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4390 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4391 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4392 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
|
4393 { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4394 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
|
4395 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4396 waitOnUiThread { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4397 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
|
4398 val combobox = window |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4399 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4400 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
|
4401 } 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
|
4402 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
|
4403 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4404 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
|
4405 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4406 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4407 return retval |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4408 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4409 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4410 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
|
4411 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4412 waitOnUiThread { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4413 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
|
4414 val combobox = window |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4415 |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4416 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
|
4417 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
|
4418 } 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
|
4419 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
|
4420 |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
4421 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
|
4422 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
|
4423 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
|
4424 adapter.notifyDataSetChanged() |
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
4425 } |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4426 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4427 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4428 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4429 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4430 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
|
4431 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4432 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
|
4433 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4434 waitOnUiThread { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4435 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
|
4436 val combobox = window |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4437 |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4438 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
|
4439 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
|
4440 } 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
|
4441 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
|
4442 |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4443 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
|
4444 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
|
4445 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4446 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4447 return retval |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4448 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4449 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4450 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
|
4451 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4452 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
|
4453 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4454 waitOnUiThread { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4455 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
|
4456 val combobox = window |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4457 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4458 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
|
4459 } 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
|
4460 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
|
4461 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4462 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
|
4463 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4464 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4465 return retval |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4466 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4467 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4468 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
|
4469 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4470 waitOnUiThread { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4471 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
|
4472 val combobox = window |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4473 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4474 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
|
4475 combobox.selected = index |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4476 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
|
4477 } |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4478 } 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
|
4479 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
|
4480 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4481 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
|
4482 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
|
4483 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
|
4484 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
|
4485 } else { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
4486 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
|
4487 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4488 } |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4489 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4490 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4491 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4492 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4493 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
|
4494 { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4495 waitOnUiThread { |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4496 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
|
4497 val combobox = window |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4498 |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4499 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
|
4500 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
|
4501 } |
2519
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4502 } 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
|
4503 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
|
4504 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4505 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
|
4506 listbox.list.removeAt(index) |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
4507 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
|
4508 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
|
4509 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4510 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4511 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4512 } |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4513 |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4514 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
|
4515 { |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4516 waitOnUiThread { |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4517 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
|
4518 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
|
4519 |
551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2517
diff
changeset
|
4520 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
|
4521 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
|
4522 } |
2517
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4523 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4524 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4525 } |
d746323f2841
Android: Implement most of the dw_listbox_*() functions for ComboBoxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2516
diff
changeset
|
4526 |
2521
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4527 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
|
4528 { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4529 var retval: Int = -1 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4530 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4531 waitOnUiThread { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4532 if(window is DWListBox) { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4533 val listbox = window |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4534 val checked: SparseBooleanArray = listbox.getCheckedItemPositions() |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4535 |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4536 // If we are starting over.... |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4537 if(where == -1 && checked.size() > 0) { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4538 retval = checked.keyAt(0) |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4539 } else { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4540 // Otherwise loop until we find our current place |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4541 for (i in 0 until checked.size()) { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4542 // Item position in adapter |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4543 val position: Int = checked.keyAt(i) |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4544 // 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
|
4545 // 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
|
4546 // otherwise we will return -1 to indicated we are done. |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4547 if (where == position && (i+1) < checked.size()) { |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4548 retval = checked.keyAt(i+1) |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4549 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4550 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4551 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4552 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4553 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4554 return retval |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4555 } |
5f92284e2b08
Android: Implement bitmap buttons, implement dw_listbox_selected_multi().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2520
diff
changeset
|
4556 |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4557 fun calendarNew(cid: Int): CalendarView? |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4558 { |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4559 var calendar: CalendarView? = null |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4560 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4561 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4562 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
|
4563 |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4564 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
|
4565 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
|
4566 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
|
4567 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
|
4568 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
|
4569 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
|
4570 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
|
4571 } |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4572 } |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4573 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4574 return calendar |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4575 } |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4576 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4577 fun calendarSetDate(calendar: CalendarView, date: Long) |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4578 { |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4579 waitOnUiThread { |
2524
d5c3c573c74e
Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
4580 // 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
|
4581 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
|
4582 } |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4583 } |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4584 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4585 fun calendarGetDate(calendar: CalendarView): Long |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4586 { |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4587 var date: Long = 0 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4588 |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4589 waitOnUiThread { |
2524
d5c3c573c74e
Android: Calendar fixes, need to be in milliseconds not seconds... also...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2523
diff
changeset
|
4590 // 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
|
4591 date = calendar.date / 1000 |
2523
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4592 } |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4593 return date |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4594 } |
82cdb3ad7c25
Android: Implement the calendar widget using CalendarView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2522
diff
changeset
|
4595 |
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
|
4596 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
|
4597 { |
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
|
4598 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
|
4599 |
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
|
4600 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4601 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
|
4602 |
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
|
4603 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
|
4604 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
|
4605 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
|
4606 } |
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
|
4607 |
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
|
4608 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
|
4609 } |
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
|
4610 |
2654
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4611 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
|
4612 { |
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
|
4613 waitOnUiThread { |
2654
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4614 var filename: String? = file |
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4615 |
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4616 if(resID > 0 && resID < 65536) { |
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4617 filename = resID.toString() |
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4618 } else if(resID != 0) { |
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4619 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
|
4620 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
|
4621 |
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
|
4622 button.setImageResource(resID) |
2654
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4623 } 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
|
4624 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
|
4625 |
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
|
4626 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
|
4627 } |
2654
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4628 } |
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4629 if(filename != null) { |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
4630 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
|
4631 // 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
|
4632 try { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4633 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
|
4634 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
|
4635 |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4636 if(b != null) { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4637 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
|
4638 val button = window |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4639 |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4640 button.setImageBitmap(b) |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4641 } 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
|
4642 val imageview = window |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4643 |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4644 imageview.setImageBitmap(b) |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4645 } |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4646 break |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4647 } |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4648 } 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
|
4649 } |
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
|
4650 } |
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
|
4651 } |
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
|
4652 } |
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
|
4653 } |
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
|
4654 |
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
|
4655 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
|
4656 { |
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
|
4657 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
|
4658 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
|
4659 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
|
4660 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
|
4661 |
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
|
4662 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
|
4663 } 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
|
4664 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
|
4665 |
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
|
4666 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
|
4667 } |
2655
5b63a3ed8e10
Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2654
diff
changeset
|
4668 } |
5b63a3ed8e10
Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2654
diff
changeset
|
4669 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
|
4670 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
|
4671 |
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
|
4672 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
|
4673 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
|
4674 |
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
|
4675 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
|
4676 } 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
|
4677 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
|
4678 |
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
|
4679 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
|
4680 } |
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
|
4681 } |
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
|
4682 } |
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
|
4683 } |
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
|
4684 |
2652
42151fd096d4
Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2651
diff
changeset
|
4685 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
|
4686 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4687 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
|
4688 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4689 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
|
4690 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
|
4691 |
42151fd096d4
Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2651
diff
changeset
|
4692 // 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
|
4693 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
|
4694 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
|
4695 // 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
|
4696 } 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
|
4697 try { |
5b63a3ed8e10
Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2654
diff
changeset
|
4698 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
|
4699 } 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
|
4700 } |
5b63a3ed8e10
Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2654
diff
changeset
|
4701 // 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
|
4702 } 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
|
4703 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
|
4704 } else { |
5b63a3ed8e10
Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2654
diff
changeset
|
4705 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
|
4706 } |
42151fd096d4
Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2651
diff
changeset
|
4707 // 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
|
4708 // 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
|
4709 if(filename != null) { |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
4710 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
|
4711 // 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
|
4712 try { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4713 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
|
4714 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
|
4715 } catch (e: IOException) { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4716 } |
2652
42151fd096d4
Android: Switch to loading resource images like we do on iOS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2651
diff
changeset
|
4717 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
|
4718 break |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4719 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4720 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4721 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4722 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4723 return icon |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4724 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4725 |
2654
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4726 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
|
4727 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4728 var pixmap: Bitmap? = null |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4729 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4730 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
|
4731 var filename: String? = null |
2654
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4732 |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4733 if(width > 0 && height > 0) { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4734 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
|
4735 } 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
|
4736 filename = resID.toString() |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4737 } 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
|
4738 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
|
4739 } 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
|
4740 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
|
4741 } else { |
5b63a3ed8e10
Android: Code path cleanup, basically only try one image load... the only
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2654
diff
changeset
|
4742 filename = file |
2654
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4743 } |
fe186c9318cc
Android: More resource changes, for windowSetBitmap and pixmapNew.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2653
diff
changeset
|
4744 if(filename != null) { |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
4745 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
|
4746 // 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
|
4747 try { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4748 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
|
4749 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
|
4750 } catch (e: IOException) { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4751 } |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4752 if(pixmap != null) { |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4753 break |
607acfe2c504
Android: The *_from_file() functions now check the assets folder.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2563
diff
changeset
|
4754 } |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4755 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4756 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4757 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4758 return pixmap |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4759 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4760 |
2727
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4761 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
|
4762 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4763 var retval: PrintJob? = null |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4764 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4765 waitOnUiThread { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4766 // Get a PrintManager instance |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4767 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
|
4768 // Setup our print adapter |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4769 val printAdapter = DWPrintDocumentAdapter() |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4770 printAdapter.context = this |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4771 printAdapter.pages = pages |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4772 printAdapter.print = print |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4773 // 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
|
4774 // 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
|
4775 retval = printManager.print(jobname, printAdapter, null) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4776 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4777 return retval |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4778 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4779 |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4780 fun printCancel(printjob: PrintJob) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4781 { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4782 waitOnUiThread { |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4783 // Get a PrintManager instance |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4784 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
|
4785 // 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
|
4786 printManager.printJobs.remove(printjob) |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4787 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4788 } |
bf585f375286
Android: Initial print implementation for Android....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2722
diff
changeset
|
4789 |
2529
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4790 fun pixmapGetDimensions(pixmap: Bitmap): Long |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4791 { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4792 var dimensions: Long = 0 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4793 |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4794 waitOnUiThread { |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4795 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
|
4796 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4797 return dimensions |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4798 } |
060fdb2d807d
Android: Initial pixmap implmentation using Android Bitmap.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2528
diff
changeset
|
4799 |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
4800 fun screenGetDimensions(): Long |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
4801 { |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
4802 val dm = resources.displayMetrics |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
4803 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
|
4804 } |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
4805 |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4806 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
|
4807 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4808 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
|
4809 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4810 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4811 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
|
4812 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4813 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
|
4814 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
|
4815 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
|
4816 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
|
4817 @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
|
4818 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
|
4819 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
|
4820 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
|
4821 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
|
4822 render!!.evy = event.y |
2611
ed2c4a503666
Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
4823 // 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
|
4824 // 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
|
4825 } |
a11522c30345
Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2607
diff
changeset
|
4826 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
|
4827 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
|
4828 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
|
4829 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
|
4830 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
|
4831 } |
ed2c4a503666
Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
4832 MotionEvent.ACTION_MOVE -> { |
ed2c4a503666
Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
4833 render!!.evx = event.x |
ed2c4a503666
Android: Implement button release and motion notify events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2608
diff
changeset
|
4834 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
|
4835 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
|
4836 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
|
4837 } |
a11522c30345
Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2607
diff
changeset
|
4838 } |
a11522c30345
Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2607
diff
changeset
|
4839 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
|
4840 } |
a11522c30345
Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2607
diff
changeset
|
4841 }) |
a11522c30345
Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2607
diff
changeset
|
4842 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
|
4843 // 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
|
4844 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
|
4845 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
|
4846 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
|
4847 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
|
4848 } |
a11522c30345
Android: Add initial code to handle button presses and long clicks on DWRender.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2607
diff
changeset
|
4849 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
|
4850 // 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
|
4851 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
|
4852 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
|
4853 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
|
4854 } |
2596
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2595
diff
changeset
|
4855 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
|
4856 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
|
4857 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
|
4858 } |
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2595
diff
changeset
|
4859 false |
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2595
diff
changeset
|
4860 }) |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4861 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4862 return render |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4863 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4864 |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4865 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
|
4866 { |
2539
822f814a54f4
Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2538
diff
changeset
|
4867 runOnUiThread { |
822f814a54f4
Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2538
diff
changeset
|
4868 render.invalidate() |
822f814a54f4
Android: Fix memory corruption issue due to incorrectly allocating HPIXMAP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2538
diff
changeset
|
4869 } |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4870 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
4871 |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4872 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
|
4873 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
|
4874 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4875 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
|
4876 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
|
4877 var retval = 1 |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4878 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4879 if(srcw == -1) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4880 src.right = srcx + dstw |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4881 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4882 if(srch == -1) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4883 src.bottom = srcy + dsth |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4884 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4885 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4886 waitOnUiThread { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4887 var canvas: Canvas? = null |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4888 var bitmap: Bitmap? = null |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4889 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4890 if(dstr != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4891 canvas = dstr.cachedCanvas |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4892 } else if(dstp != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4893 canvas = Canvas(dstp) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4894 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4895 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4896 if(srcp != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4897 bitmap = srcp |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4898 } else if(srcr != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4899 bitmap = Bitmap.createBitmap(srcr.layoutParams.width, |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4900 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
|
4901 val c = Canvas(bitmap) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4902 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
|
4903 srcr.draw(c) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4904 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4905 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4906 if(canvas != null && bitmap != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4907 canvas.drawBitmap(bitmap, src, dst, null) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4908 retval = 0 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4909 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4910 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4911 return retval |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4912 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4913 |
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
|
4914 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
|
4915 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4916 waitOnUiThread { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4917 var canvas: Canvas? = null |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4918 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4919 if(render != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4920 canvas = render.cachedCanvas |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4921 } else if(bitmap != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4922 canvas = Canvas(bitmap) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4923 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4924 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4925 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
|
4926 colorsSet(fgColor, bgColor) |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4927 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
|
4928 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4929 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4930 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4931 |
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
|
4932 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
|
4933 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4934 waitOnUiThread { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4935 var canvas: Canvas? = null |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4936 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4937 if(render != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4938 canvas = render.cachedCanvas |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4939 } else if(bitmap != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4940 canvas = Canvas(bitmap) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4941 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4942 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4943 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
|
4944 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
|
4945 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
|
4946 paint.style = Paint.Style.STROKE |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4947 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
|
4948 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4949 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4950 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
4951 |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4952 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
|
4953 { |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4954 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
|
4955 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4956 waitOnUiThread { |
2578
a36448beb7f7
Android: Implement dw_window_set_style() for static text widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2576
diff
changeset
|
4957 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
|
4958 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4959 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
|
4960 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
|
4961 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
|
4962 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
|
4963 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
|
4964 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4965 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4966 } 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
|
4967 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
|
4968 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
|
4969 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
|
4970 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
|
4971 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4972 } 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
|
4973 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
|
4974 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4975 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
|
4976 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
|
4977 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
|
4978 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
|
4979 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4980 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4981 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4982 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4983 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
|
4984 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
|
4985 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
|
4986 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
|
4987 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4988 return dimensions |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4989 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4990 |
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
|
4991 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
|
4992 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
|
4993 { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
4994 waitOnUiThread { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
4995 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
|
4996 |
2547
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
4997 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
|
4998 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
|
4999 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
|
5000 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
|
5001 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
|
5002 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
|
5003 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
5004 } |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5005 } 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
|
5006 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
|
5007 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
|
5008 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
|
5009 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
|
5010 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
|
5011 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
5012 } 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
|
5013 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
|
5014 |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
5015 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
|
5016 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
|
5017 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
|
5018 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
|
5019 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
5020 } |
dbd15c13f5bb
Android: Implement most of the font functions and control/widget color.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2546
diff
changeset
|
5021 } |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5022 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5023 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5024 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
|
5025 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
|
5026 // 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
|
5027 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
|
5028 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
|
5029 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
|
5030 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
|
5031 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
|
5032 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
|
5033 if(bgcolor != null) { |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
5034 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
|
5035 // 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
|
5036 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
|
5037 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
|
5038 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
|
5039 rect.left += x |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
5040 rect.right += x |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
5041 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
|
5042 // 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
|
5043 paint.color = oldcolor |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
5044 } |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5045 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
|
5046 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
|
5047 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5048 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5049 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5050 |
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
|
5051 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
|
5052 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5053 waitOnUiThread { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5054 var canvas: Canvas? = null |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5055 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5056 if(render != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5057 canvas = render.cachedCanvas |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5058 } else if(bitmap != null) { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5059 canvas = Canvas(bitmap) |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5060 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5061 |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5062 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
|
5063 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
|
5064 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
|
5065 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
|
5066 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
|
5067 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5068 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5069 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5070 |
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
|
5071 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
|
5072 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
|
5073 { |
2537
cd9d2ba251d5
Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2536
diff
changeset
|
5074 // 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
|
5075 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
|
5076 |
2537
cd9d2ba251d5
Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2536
diff
changeset
|
5077 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
|
5078 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
|
5079 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
|
5080 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5081 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5082 waitOnUiThread { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5083 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
|
5084 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5085 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
|
5086 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
|
5087 } 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
|
5088 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
|
5089 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5090 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5091 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
|
5092 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
|
5093 // 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
|
5094 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
|
5095 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
|
5096 } else { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5097 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
|
5098 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5099 // 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
|
5100 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
|
5101 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
|
5102 } else { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5103 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
|
5104 } |
2537
cd9d2ba251d5
Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2536
diff
changeset
|
5105 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
|
5106 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5107 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5108 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5109 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5110 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
|
5111 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
|
5112 { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5113 waitOnUiThread { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5114 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
|
5115 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5116 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
|
5117 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
|
5118 } 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
|
5119 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
|
5120 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5121 |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5122 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
|
5123 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
|
5124 |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5125 // 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
|
5126 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
|
5127 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
|
5128 } else { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5129 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
|
5130 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5131 // 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
|
5132 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
|
5133 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
|
5134 } else { |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5135 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
|
5136 } |
2536
d172ab2eddb6
Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2535
diff
changeset
|
5137 // 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
|
5138 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
|
5139 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
|
5140 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
|
5141 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
|
5142 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
|
5143 |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5144 if(x2 < x1) { |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5145 left = x2.toFloat() |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5146 right = x1.toFloat() |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5147 } |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5148 if(y2 < y1) { |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5149 top = y2.toFloat() |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5150 bottom = y1.toFloat() |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5151 } |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5152 |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5153 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
|
5154 } else { |
2576
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5155 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
|
5156 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
|
5157 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
|
5158 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
|
5159 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
|
5160 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
|
5161 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
|
5162 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
|
5163 |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5164 // Convert to degrees |
db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2575
diff
changeset
|
5165 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
|
5166 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
|
5167 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
|
5168 |
2536
d172ab2eddb6
Android: Implement DW_DRAW_FULL flag for dw_draw_arc().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2535
diff
changeset
|
5169 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
|
5170 } |
2535
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5171 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5172 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5173 } |
d862d9e4069b
Android: Implement most of the rest of drawing except for fonts...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2531
diff
changeset
|
5174 |
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
|
5175 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
|
5176 { |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
5177 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
|
5178 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
|
5179 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
|
5180 |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
5181 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
|
5182 } |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
5183 |
473eb9ff3f04
Android: Implement dw_container_set_stripe() and center the images in the rows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2579
diff
changeset
|
5184 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
|
5185 { |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5186 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
|
5187 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
|
5188 if(bgColor != -1L) { |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
5189 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
|
5190 } else { |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
5191 this.bgcolor = null |
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
5192 } |
2531
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5193 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5194 } |
f45ebd96ebe5
Android: First attempts at implementing drawing functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2530
diff
changeset
|
5195 |
2490
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5196 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
|
5197 { |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5198 // creating timer task, timer |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5199 val t = Timer() |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5200 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
|
5201 override fun run() { |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5202 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
|
5203 t.cancel() |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5204 } |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5205 } |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5206 } |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5207 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
|
5208 return t |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5209 } |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5210 |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5211 fun timerDisconnect(timer: Timer) |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5212 { |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5213 timer.cancel() |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5214 } |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5215 |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5216 fun doBeep(duration: Int) |
62e124eecd82
Android: Implement timers and beep. Some general code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2489
diff
changeset
|
5217 { |
2491
bf4fe6bb512b
Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
5218 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
|
5219 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
|
5220 val handler = Handler(Looper.getMainLooper()) |
bf4fe6bb512b
Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
5221 handler.postDelayed({ |
bf4fe6bb512b
Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
5222 toneGen.release() |
bf4fe6bb512b
Android: Fix the permission error on the beep...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2490
diff
changeset
|
5223 }, (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
|
5224 } |
666af45f33b5
Android: Implment a bunch of window functions: enable/disable/data/id
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2487
diff
changeset
|
5225 |
2482
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
5226 fun debugMessage(text: String) |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
5227 { |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
5228 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
|
5229 } |
4888503c3e3e
Android: Implement dw_debug() using the Android Log class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2481
diff
changeset
|
5230 |
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
|
5231 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
|
5232 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
|
5233 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
|
5234 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
|
5235 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
|
5236 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
|
5237 } 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
|
5238 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
|
5239 } |
6b5057dd6b8e
Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2594
diff
changeset
|
5240 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
|
5241 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
|
5242 } |
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
|
5243 } |
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
|
5244 |
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
|
5245 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
|
5246 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
|
5247 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
|
5248 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
|
5249 |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5250 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
|
5251 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
|
5252 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
|
5253 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
|
5254 ) |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5255 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
|
5256 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
|
5257 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
|
5258 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5259 } 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
|
5260 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
|
5261 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5262 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
|
5263 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5264 |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5265 // 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
|
5266 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
|
5267 { |
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
|
5268 var retval: String? = null |
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
|
5269 |
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
|
5270 // 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
|
5271 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
|
5272 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
|
5273 |
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
|
5274 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
|
5275 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
|
5276 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
|
5277 // 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
|
5278 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
|
5279 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
|
5280 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
|
5281 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
|
5282 } 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
|
5283 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
|
5284 } |
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
|
5285 } |
6b5057dd6b8e
Android: Experimental change for the new file browser... require it be on secondary...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2594
diff
changeset
|
5286 |
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
|
5287 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
|
5288 // 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
|
5289 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
|
5290 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
|
5291 |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5292 if (DocumentsContract.isDocumentUri(this, fileURI)) { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5293 // ExternalStorageProvider |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5294 if (fileURI?.authority == "com.android.externalstorage.documents") { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5295 val docId = DocumentsContract.getDocumentId(fileURI) |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5296 val split = docId.split(":").toTypedArray() |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5297 retval = Environment.getExternalStorageDirectory().toString() + "/" + split[1] |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5298 } else if (fileURI?.authority == "com.android.providers.downloads.documents") { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5299 val id = DocumentsContract.getDocumentId(fileURI) |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5300 val contentUri = ContentUris.withAppendedId( |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5301 Uri.parse("content://downloads/public_downloads"), |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5302 java.lang.Long.valueOf(id) |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5303 ) |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5304 retval = getDataColumn(this, contentUri, null, 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
|
5305 } else if (fileURI?.authority == "com.android.providers.media.documents") { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5306 val docId = DocumentsContract.getDocumentId(fileURI) |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5307 val split = docId.split(":").toTypedArray() |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5308 val type = split[0] |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5309 var contentUri: Uri? = 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
|
5310 if ("image" == type) { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5311 contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5312 } else if ("video" == type) { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5313 contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5314 } else if ("audio" == type) { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5315 contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5316 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5317 val selection = "_id=?" |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5318 val selectionArgs = arrayOf<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
|
5319 split[1] |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5320 ) |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5321 retval = getDataColumn(this, contentUri, 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
|
5322 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5323 } else if (fileURI?.scheme == "content") { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5324 retval = getDataColumn(this, fileURI, null, 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
|
5325 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5326 // File |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5327 else if (fileURI?.scheme == "file") { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5328 retval = fileURI?.path |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5329 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5330 |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5331 // If we are opening a directory DW_DIRECTORY_OPEN |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5332 if(retval != null && flags == 2) { |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5333 val split = retval.split("/") |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5334 val filename = split.last() |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5335 |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5336 if(filename != 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
|
5337 val pathlen = retval.length |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5338 val filelen = filename.length |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5339 |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5340 retval = retval.substring(0, pathlen - filelen - 1) |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5341 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5342 } |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5343 } 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
|
5344 // 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
|
5345 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
|
5346 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
|
5347 } |
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
|
5348 } |
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
|
5349 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
|
5350 } |
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
|
5351 |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5352 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
|
5353 { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5354 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
|
5355 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5356 waitOnUiThread { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5357 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
|
5358 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
|
5359 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
|
5360 // 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
|
5361 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
|
5362 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
|
5363 } |
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
|
5364 }) |
2526
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5365 if(ext != null) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5366 fc.setExtension(ext) |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5367 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5368 fc.showDialog() |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5369 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5370 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5371 // 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
|
5372 try { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5373 Looper.loop() |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5374 } catch (e2: RuntimeException) { |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5375 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5376 |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5377 return retval |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5378 } |
d3f09b3f3703
Android: Initial dw_file_browse() implementation, still needs some work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2524
diff
changeset
|
5379 |
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
|
5380 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
|
5381 { |
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
|
5382 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
|
5383 |
e9ad53d2271b
Android: Fix Intent based file chooser and switch to using it by default.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2714
diff
changeset
|
5384 // 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
|
5385 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
|
5386 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
|
5387 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
|
5388 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
|
5389 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
|
5390 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
|
5391 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
|
5392 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
|
5393 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
|
5394 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
|
5395 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
|
5396 |
34e34d5d56e8
Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2727
diff
changeset
|
5397 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
|
5398 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
|
5399 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
|
5400 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
|
5401 |
34e34d5d56e8
Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2727
diff
changeset
|
5402 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
|
5403 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
|
5404 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
|
5405 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
|
5406 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
|
5407 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
|
5408 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
|
5409 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
|
5410 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
|
5411 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
|
5412 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
|
5413 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
|
5414 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
|
5415 |
34e34d5d56e8
Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2727
diff
changeset
|
5416 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
|
5417 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
|
5418 colorWheel.rgb = colorChosen |
2734
cd3c7740e352
Android: Attempt at some Color Chooser improvements... Fix layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2733
diff
changeset
|
5419 gradientBar.setBlackToColor(colorWheel.rgb) |
cd3c7740e352
Android: Attempt at some Color Chooser improvements... Fix layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2733
diff
changeset
|
5420 var hsv = FloatArray(3) |
cd3c7740e352
Android: Attempt at some Color Chooser improvements... Fix layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2733
diff
changeset
|
5421 Color.colorToHSV(colorChosen, hsv) |
cd3c7740e352
Android: Attempt at some Color Chooser improvements... Fix layout.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2733
diff
changeset
|
5422 gradientBar.offset = hsv[2] |
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
|
5423 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
|
5424 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
|
5425 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
|
5426 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
|
5427 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
|
5428 } |
34e34d5d56e8
Android: Add a color picker preview area and a gradient slider for contrast.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2727
diff
changeset
|
5429 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
|
5430 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
|
5431 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
|
5432 } |
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
|
5433 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
|
5434 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
|
5435 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
|
5436 ) |
2722
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
5437 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
|
5438 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
|
5439 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
|
5440 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
|
5441 } |
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
|
5442 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
|
5443 } |
2722
cacde852e2db
Android: Add dialog dismiss and color change handlers to the color chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2720
diff
changeset
|
5444 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
|
5445 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
|
5446 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
|
5447 } |
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
|
5448 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
|
5449 } |
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
|
5450 |
2486
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
5451 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
|
5452 { |
2579
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5453 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
|
5454 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5455 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5456 // 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
|
5457 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
|
5458 |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5459 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
|
5460 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
|
5461 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
|
5462 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
|
5463 ) |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5464 //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
|
5465 { _: DialogInterface, _: Int -> |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5466 retval = 1 |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5467 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
|
5468 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5469 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5470 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
|
5471 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
|
5472 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
|
5473 ) { _: DialogInterface, _: Int -> |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5474 retval = 0 |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5475 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
|
5476 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5477 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5478 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
|
5479 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
|
5480 ) |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5481 //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
|
5482 { _: DialogInterface, _: Int -> |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5483 retval = 0 |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5484 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
|
5485 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5486 } |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5487 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
|
5488 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
|
5489 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
|
5490 ) { _: DialogInterface, _: Int -> |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5491 retval = 2 |
68ee9a89e0f0
Android: Code cleanup, fix all warnings except for unused function/parameters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2578
diff
changeset
|
5492 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
|
5493 } |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5494 } |
2573
ea75e295025b
Android: Make message boxes modal (not cancelable).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2572
diff
changeset
|
5495 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
|
5496 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
|
5497 |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5498 // 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
|
5499 try { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5500 Looper.loop() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5501 } 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
|
5502 } |
2486
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
5503 } |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
5504 return retval |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
5505 } |
cec43818bd3e
Android: Implement dw_messagebox() ... seems we can't just cleanly exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2484
diff
changeset
|
5506 |
2530
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5507 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
|
5508 { |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5509 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
|
5510 return true |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5511 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5512 return false |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5513 } |
b9923432cb1f
Android: Implement View based render widget and icon support with Drawable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2529
diff
changeset
|
5514 |
2514
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5515 fun mainSleep(milliseconds: Int) |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5516 { |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5517 // 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
|
5518 // 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
|
5519 // 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
|
5520 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
|
5521 val starttime = System.currentTimeMillis() |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5522 |
2637
22105f99dd6a
Android: Add support for transparent background color for text drawing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2620
diff
changeset
|
5523 // 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
|
5524 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
|
5525 var thrown: Boolean = false |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5526 |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5527 override fun queueIdle(): Boolean { |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5528 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
|
5529 if (thrown == false) { |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5530 thrown = true |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5531 throw java.lang.RuntimeException() |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5532 } |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5533 return false |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5534 } |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5535 return true |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5536 } |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5537 }) |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5538 |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5539 // 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
|
5540 try { |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5541 Looper.loop() |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5542 } catch (e2: RuntimeException) { |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5543 } |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5544 } |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5545 else |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5546 { |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5547 // 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
|
5548 Thread.sleep(milliseconds.toLong()) |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5549 } |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5550 } |
5f711e86a211
Android: Implement dw_main_sleep() and dw_main_iteration().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2510
diff
changeset
|
5551 |
2487
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
5552 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
|
5553 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5554 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5555 this.finishAffinity() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5556 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
|
5557 } |
2494
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5558 } |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5559 |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5560 fun dwindowsShutdown() |
b3e28eed0e50
Android: Fix the basics of notebook control... return actual page IDs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2493
diff
changeset
|
5561 { |
2502
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5562 waitOnUiThread { |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5563 this.finishAffinity() |
b6319aed3298
Android: Massive thread safety overhaul. Not quite back to fully functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2501
diff
changeset
|
5564 } |
2487
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
5565 } |
83f8f4f58a98
Android: Implement dw_exit() using Activity.finishActivity() instead of exit().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2486
diff
changeset
|
5566 |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
5567 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
|
5568 { |
2690
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
5569 appID = appid |
755d9ad07aaf
Android: Fix state exception by calling notifyDataSetChanged() on DWListBox.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2689
diff
changeset
|
5570 |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5571 waitOnUiThread { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5572 // 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
|
5573 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
|
5574 // Create the NotificationChannel |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5575 val importance = NotificationManager.IMPORTANCE_DEFAULT |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5576 val mChannel = NotificationChannel(appid, appname, importance) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5577 // 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
|
5578 // or other notification behaviors after this |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5579 val notificationManager = |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5580 getSystemService(NOTIFICATION_SERVICE) as NotificationManager |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5581 notificationManager.createNotificationChannel(mChannel) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5582 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5583 } |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
5584 return Build.VERSION.SDK_INT |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
5585 } |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
5586 |
2543
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5587 fun dwMain() |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5588 { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5589 runOnUiThread { |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5590 // 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
|
5591 invalidateOptionsMenu() |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5592 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5593 } |
f9367eb9a6e7
Android: Initial menu support, incomplete but basics functional.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2542
diff
changeset
|
5594 |
2542
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
5595 fun androidGetRelease(): String |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
5596 { |
bb75e64e6138
Android: Implement dw_screen_* and dw_environment_query().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2539
diff
changeset
|
5597 return Build.VERSION.RELEASE |
2522
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5598 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5599 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5600 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
|
5601 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5602 var builder: NotificationCompat.Builder? = null |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5603 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5604 waitOnUiThread { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5605 builder = NotificationCompat.Builder(this, appid) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5606 .setContentTitle(title) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5607 .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
|
5608 .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
|
5609 .setPriority(NotificationCompat.PRIORITY_DEFAULT) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5610 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5611 return builder |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5612 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5613 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5614 fun notificationSend(builder: NotificationCompat.Builder) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5615 { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5616 waitOnUiThread { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5617 notificationID += 1 |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5618 with(NotificationManagerCompat.from(this)) { |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5619 // 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
|
5620 notify(notificationID, builder.build()) |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5621 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5622 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5623 } |
66c490aa719d
Android: Implement notifications, images on notifications incomplete.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2521
diff
changeset
|
5624 |
2475
16d195d46f2a
Android: Implement dw_window_new(), dw_box_new() and dw_box_pack().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2474
diff
changeset
|
5625 /* |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
5626 * 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
|
5627 * 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
|
5628 */ |
2658
ad6fc7f1a9af
Android: Asset/Resource refactoring for compatibility with other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2656
diff
changeset
|
5629 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
|
5630 external fun eventHandler( |
2499
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5631 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
|
5632 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
|
5633 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
|
5634 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
|
5635 str2: String?, |
2499
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5636 inta: Int, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5637 intb: Int, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5638 intc: Int, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5639 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
|
5640 ): Int |
2499
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5641 external fun eventHandlerInt( |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5642 obj1: View, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5643 message: Int, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5644 inta: Int, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5645 intb: Int, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5646 intc: Int, |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5647 intd: Int |
ff3310fa6d72
Android: Implment DW_SIGNA_CONFIGURE on orientation change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2498
diff
changeset
|
5648 ) |
2483
9f7af6d8c6a4
Android: Fix signal handlers so they actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2482
diff
changeset
|
5649 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
|
5650 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
|
5651 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
|
5652 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
|
5653 external fun eventHandlerContainer(obj1: View, message: Int, title: String?, x: Int, y: Int, data: Long) |
2596
60ec91d23746
Android: Add initial keyboard support for Android.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2595
diff
changeset
|
5654 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
|
5655 |
2474
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
5656 companion object |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
5657 { |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5658 // 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
|
5659 init |
a13e6db064f4
Android: Implement thread, semaphore, shared memory API functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
2473
diff
changeset
|
5660 { |
2473
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5661 System.loadLibrary("dwindows") |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5662 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5663 } |
aa420e366b2b
Android: Initial skeletal commit for Android support, almost nothing implemented...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff
changeset
|
5664 } |