Skip to content

Commit 77df270

Browse files
committed
fix cab seekbar in portrait
1 parent 8acdf5b commit 77df270

File tree

4 files changed

+54
-4
lines changed

4 files changed

+54
-4
lines changed

app/src/main/java/ru/aleksandr/dccppthrottle/ui/cab/LocoCabFragment.kt

+15
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77

88
package ru.aleksandr.dccppthrottle.ui.cab
99

10+
import android.content.res.Configuration
1011
import android.os.Bundle
1112
import android.os.Handler
1213
import android.os.Looper
1314
import android.view.KeyEvent
1415
import android.view.LayoutInflater
16+
import android.view.MotionEvent
1517
import android.view.View
1618
import android.view.ViewGroup
1719
import android.widget.*
@@ -22,6 +24,7 @@ import ru.aleksandr.dccppthrottle.cs.CommandStation
2224
import ru.aleksandr.dccppthrottle.R
2325
import ru.aleksandr.dccppthrottle.Utility.remap
2426
import ru.aleksandr.dccppthrottle.store.LocomotivesStore
27+
import ru.aleksandr.dccppthrottle.view.LockableScrollView
2528
import kotlin.math.ceil
2629
import kotlin.math.roundToInt
2730

@@ -143,6 +146,18 @@ class LocoCabFragment : Fragment() {
143146
}
144147
})
145148

149+
if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
150+
val scrollView = view as LockableScrollView
151+
progressView.setOnTouchListener { _, ev ->
152+
when (ev?.action) {
153+
MotionEvent.ACTION_DOWN -> scrollView.setScrollingEnabled(false)
154+
MotionEvent.ACTION_UP -> scrollView.setScrollingEnabled(true)
155+
}
156+
false
157+
}
158+
//TODO: same view for landscape and portrait
159+
}
160+
146161
val revToggle = view.findViewById<ToggleButton>(R.id.toggleReverse)
147162
revToggle.setOnCheckedChangeListener { button, isChecked ->
148163
if (button.isPressed) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright (c) 2025. Aleksandr.ru
3+
* @link http://aleksandr.ru
4+
*
5+
* If you're using this code, please keep above information.
6+
*/
7+
8+
package ru.aleksandr.dccppthrottle.view
9+
10+
import android.content.Context
11+
import android.util.AttributeSet
12+
import android.view.MotionEvent
13+
import android.widget.ScrollView
14+
15+
// https://stackoverflow.com/a/65544704
16+
class LockableScrollView(context: Context, attrs: AttributeSet) : ScrollView(context, attrs) {
17+
private var _enabled = true
18+
19+
fun setScrollingEnabled(value: Boolean = true) {
20+
_enabled = value
21+
}
22+
23+
fun isScrollable() = _enabled
24+
25+
override fun onTouchEvent(ev: MotionEvent?): Boolean {
26+
return when (ev?.action) {
27+
MotionEvent.ACTION_DOWN -> _enabled && super.onTouchEvent(ev)
28+
else -> super.onTouchEvent(ev)
29+
}
30+
}
31+
32+
override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
33+
return _enabled && super.onInterceptTouchEvent(ev)
34+
}
35+
}

app/src/main/res/layout/fragment_loco_cab.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<ScrollView
2+
<ru.aleksandr.dccppthrottle.view.LockableScrollView
33
xmlns:android="http://schemas.android.com/apk/res/android"
44
xmlns:app="http://schemas.android.com/apk/res-auto"
55
xmlns:tools="http://schemas.android.com/tools"
@@ -106,4 +106,4 @@
106106
</TableLayout>
107107

108108
</LinearLayout>
109-
</ScrollView>
109+
</ru.aleksandr.dccppthrottle.view.LockableScrollView>

app/version.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
#Thu Jan 09 23:41:56 MSK 2025
2-
VERSION_CODE=1309
1+
#Thu Jan 23 16:42:57 MSK 2025
2+
VERSION_CODE=1333

0 commit comments

Comments
 (0)