Skip to content
This repository was archived by the owner on Jan 29, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

oldView()
// newView()
// oldView()
newView()
}

private fun oldView() {
Expand All @@ -39,16 +39,14 @@ class MainActivity : AppCompatActivity() {
}

private fun newView() {

spv.apply {
setOptions(getOptionsStrings())
}
}

private fun getOptions(): List<Option> {
return listOf(
Option("Single"),
Option("2"),
Option("3"),
Option("4"),
Option("5+")
)
return getOptionsStrings().map { Option(it) }
}

private fun getOptionsStrings() = listOf("Single", "2", "3", "4", "5+")
}
1 change: 1 addition & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
app:cornerRadius="5dp" />

<yaroslav.ovdiienko.idivision.rangepickerview.scopepicker.ScopePickerView
android:id="@+id/spv"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="16dp"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ import yaroslav.ovdiienko.idivision.rangepickerview.scopepicker.model.enums.Mode

// TODO: provide documentation
interface PickerAgreement {

/***/
fun setOptions(options: List<String>)

/***/
fun changeMode(mode: Mode)

// Planned:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package yaroslav.ovdiienko.idivision.rangepickerview.scopepicker

import android.content.Context
import android.content.res.Configuration
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.Rect
Expand All @@ -15,8 +16,7 @@ import yaroslav.ovdiienko.idivision.rangepickerview.scopepicker.model.exceptions
import yaroslav.ovdiienko.idivision.rangepickerview.util.Dimension
import yaroslav.ovdiienko.idivision.rangepickerview.util.DisplayUtils
import yaroslav.ovdiienko.idivision.rangepickerview.util.TouchAssistant
import yaroslav.ovdiienko.idivision.rangepickerview.util.extension.drawOnce
import yaroslav.ovdiienko.idivision.rangepickerview.util.extension.requestDisallowInterceptTouchEvent
import yaroslav.ovdiienko.idivision.rangepickerview.util.extension.*
import yaroslav.ovdiienko.idivision.rangepickerview.util.view.ViewAttributes


Expand All @@ -26,6 +26,9 @@ class ScopePickerView @JvmOverloads constructor(
defStyleAttr: Int = 0
) : BaseView(context, attrs, defStyleAttr), PickerAgreement {

internal var isFirstDraw = true
private val data: LinkedHashMap<Int, State> = LinkedHashMap()

private val dimension: Dimension =
DisplayUtils(context.getSystemService(Context.WINDOW_SERVICE) as WindowManager)
private val viewBounds = Rect()
Expand All @@ -36,9 +39,6 @@ class ScopePickerView @JvmOverloads constructor(
private val leftBox = AnimationRect()
private val rightBox = AnimationRect()

private val data: LinkedHashMap<Int, State> = LinkedHashMap()

internal var isFirstDraw = true

init {
val parser = ViewAttributes.Parser(context, attrs)
Expand All @@ -52,8 +52,13 @@ class ScopePickerView @JvmOverloads constructor(
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)

debugAction {

}

drawOnce {
// skip for now.
log { "click rectangles drawn" }
// only for drawing clickable rectangles.
}

when (viewAttributes.mode) {
Expand Down Expand Up @@ -110,15 +115,24 @@ class ScopePickerView @JvmOverloads constructor(
}

override fun changeMode(mode: Mode) {
log { "view mode changed to $mode" }
viewAttributes.mode = mode
}

private fun reset() {
log { "view reset triggered" }
isFirstDraw = true
}

override fun onConfigurationChanged(newConfig: Configuration?) {
super.onConfigurationChanged(newConfig)
reset()
}

companion object {
const val MAX_ELEMENTS_ALLOWED = 5
const val MAX_LETTERS_IN_WORD_ALLOWED = 15
internal const val MAX_ELEMENTS_ALLOWED = 5
internal const val MAX_LETTERS_IN_WORD_ALLOWED = 15

internal const val DEBUG = true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,30 @@ import android.content.Context
import android.content.res.Resources
import android.graphics.Typeface
import android.os.Build
import android.util.Log
import android.util.TypedValue
import androidx.core.content.res.ResourcesCompat
import yaroslav.ovdiienko.idivision.rangepickerview.scopepicker.ScopePickerView
import yaroslav.ovdiienko.idivision.rangepickerview.scopepicker.ScopePickerView.Companion.DEBUG


fun buildVersionGE(version: Int): Boolean = Build.VERSION.SDK_INT >= version
internal fun buildVersionGE(version: Int): Boolean = Build.VERSION.SDK_INT >= version

val Float.dp: Float
internal val Float.dp: Float
get() = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
this,
Resources.getSystem().displayMetrics
)

val Float.sp: Float
internal val Float.sp: Float
get() = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP,
this,
Resources.getSystem().displayMetrics
)

fun Context.getFont(fontResId: Int): Typeface? {
internal fun Context.getFont(fontResId: Int): Typeface? {
return try {
if (buildVersionGE(Build.VERSION_CODES.O)) {
resources.getFont(fontResId)
Expand All @@ -39,4 +42,12 @@ fun Context.getFont(fontResId: Int): Typeface? {
else -> font
}
}
}

internal fun ScopePickerView.log(tag: String = "SPV/Default", msg: () -> String) {
if (DEBUG) Log.d(tag, msg.invoke())
}

internal fun ScopePickerView.debugAction(action: () -> Unit) {
if (DEBUG) action.invoke()
}