From c412d61202bae1a09b404616eb396a208d75cbde Mon Sep 17 00:00:00 2001 From: yaroslav-android Date: Wed, 23 Oct 2019 01:33:41 +0300 Subject: [PATCH 01/28] - deprecate old view and related classes - add new ScopePikerView --- .../rangepickerview/rangepicker/BaseView.kt | 19 +++++++++++++++++++ .../rangepicker/RangePickerView.kt | 2 +- .../rangepicker/ScopePickerView.kt | 11 +++++++++++ .../rangepicker/model/Option.kt | 2 +- .../rangepicker/model/RectShape.kt | 2 +- .../rangepicker/model/enums/Direction.kt | 2 +- .../rangepicker/model/enums/OptionsState.kt | 2 +- .../rangepicker/model/enums/TouchMode.kt | 2 +- .../util/view/AttributeSetParser.kt | 2 +- .../util/view/IndexContainer.kt | 2 +- 10 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/BaseView.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/ScopePickerView.kt diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/BaseView.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/BaseView.kt new file mode 100644 index 0000000..41c1c79 --- /dev/null +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/BaseView.kt @@ -0,0 +1,19 @@ +package yaroslav.ovdiienko.idivision.rangepickerview.rangepicker + +import android.annotation.TargetApi +import android.content.Context +import android.os.Build +import android.util.AttributeSet +import android.view.View + + +open class BaseView : View { + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) + : super(context, attrs, defStyleAttr, defStyleRes) + + +} \ No newline at end of file diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/RangePickerView.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/RangePickerView.kt index 27b3d42..053a430 100644 --- a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/RangePickerView.kt +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/RangePickerView.kt @@ -32,7 +32,7 @@ import yaroslav.ovdiienko.idivision.rangepickerview.util.view.IndexContainer import kotlin.math.abs import kotlin.math.max - +@Deprecated("RangePickerView is no more valid. Please replace it with ScopePikerView.") class RangePickerView : View { private val rectangleBackgroundPaint: Paint = Paint() private val lineBackgroundPaint: Paint = Paint() diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/ScopePickerView.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/ScopePickerView.kt new file mode 100644 index 0000000..2cf1268 --- /dev/null +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/ScopePickerView.kt @@ -0,0 +1,11 @@ +package yaroslav.ovdiienko.idivision.rangepickerview.rangepicker + +import android.content.Context +import android.util.AttributeSet + + +class ScopePickerView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : BaseView(context, attrs, defStyleAttr) { + +} \ No newline at end of file diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/Option.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/Option.kt index 009785a..cc351dd 100644 --- a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/Option.kt +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/Option.kt @@ -1,6 +1,6 @@ package yaroslav.ovdiienko.idivision.rangepickerview.rangepicker.model - +@Deprecated("RangePickerView is no more valid. Please replace it with ScopePikerView.") data class Option(private val option: String) { fun getOption(): String { return option diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/RectShape.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/RectShape.kt index ceb96ed..b4f4a79 100644 --- a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/RectShape.kt +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/RectShape.kt @@ -3,7 +3,7 @@ package yaroslav.ovdiienko.idivision.rangepickerview.rangepicker.model import android.graphics.Rect import android.graphics.RectF - +@Deprecated("RangePickerView is no more valid. Please replace it with ScopePikerView.") class RectShape { var coordinateRect: RectF = RectF() var textBoundsRect: Rect = Rect() diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/Direction.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/Direction.kt index f3918cc..6e3cc54 100644 --- a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/Direction.kt +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/Direction.kt @@ -1,6 +1,6 @@ package yaroslav.ovdiienko.idivision.rangepickerview.rangepicker.model.enums - +@Deprecated("RangePickerView is no more valid. Please replace it with ScopePikerView.") enum class Direction { TO_RIGHT, TO_LEFT, diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/OptionsState.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/OptionsState.kt index f1cef45..f933e90 100644 --- a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/OptionsState.kt +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/OptionsState.kt @@ -1,6 +1,6 @@ package yaroslav.ovdiienko.idivision.rangepickerview.rangepicker.model.enums - +@Deprecated("RangePickerView is no more valid. Please replace it with ScopePikerView.") enum class OptionsState(val tapId: Int) { SINGLE(0), MULTIPLE(1), diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/TouchMode.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/TouchMode.kt index 2ae89ae..ccc3415 100644 --- a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/TouchMode.kt +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/model/enums/TouchMode.kt @@ -1,6 +1,6 @@ package yaroslav.ovdiienko.idivision.rangepickerview.rangepicker.model.enums - +@Deprecated("RangePickerView is no more valid. Please replace it with ScopePikerView.") enum class TouchMode { TOUCH_MODE_IDLE, TOUCH_MODE_DOWN, diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/AttributeSetParser.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/AttributeSetParser.kt index d2a7995..42f5ba3 100644 --- a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/AttributeSetParser.kt +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/AttributeSetParser.kt @@ -11,7 +11,7 @@ import yaroslav.ovdiienko.idivision.rangepickerview.R import yaroslav.ovdiienko.idivision.rangepickerview.rangepicker.RangePickerView import yaroslav.ovdiienko.idivision.rangepickerview.rangepicker.RangePickerView.Companion.DEFAULT_TEXT_SIZE - +@Deprecated("RangePickerView is no more valid. Please replace it with ScopePikerView.") class AttributeSetParser(private val context: Context, attributeSet: AttributeSet?) { private val displayMetrics = context.resources.displayMetrics diff --git a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/IndexContainer.kt b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/IndexContainer.kt index 2d6f174..19de3c9 100644 --- a/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/IndexContainer.kt +++ b/rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/IndexContainer.kt @@ -2,7 +2,7 @@ package yaroslav.ovdiienko.idivision.rangepickerview.util.view import yaroslav.ovdiienko.idivision.rangepickerview.rangepicker.model.enums.OptionsState - +@Deprecated("RangePickerView is no more valid. Please replace it with ScopePikerView.") class IndexContainer { var firstPreviousIndex: Int = -1 var secondPreviousIndex: Int = -1 From 311305db5b65b61834a2851f51d671394c9fc7b9 Mon Sep 17 00:00:00 2001 From: Yaroslav Ovdiienko Date: Fri, 1 Nov 2019 04:00:07 +0200 Subject: [PATCH 02/28] - prepare classes for the view redesign --- .../idivision/rangepicker/MainActivity.kt | 15 ++- app/src/main/res/layout/activity_main.xml | 24 +++-- build.gradle | 2 +- .../rangepicker/RangePickerView.kt | 24 +++-- .../rangepicker/ScopePickerView.kt | 11 -- .../{rangepicker => scopepicker}/BaseView.kt | 4 +- .../scopepicker/PickerAgreement.kt | 31 ++++++ .../scopepicker/ScopePickerView.kt | 101 ++++++++++++++++++ .../model/AnimationRect.kt} | 14 +-- .../scopepicker/model/State.kt | 12 +++ .../scopepicker/model/enums/AnimateRect.kt | 6 ++ .../scopepicker/model/enums/Mode.kt | 11 ++ .../model/exceptions/MaxSizeException.kt | 7 ++ .../exceptions/MaxWordLengthException.kt | 7 ++ .../scopepicker/strategy/DuoPickStrategy.kt | 5 + .../strategy/SinglePickStrategy.kt | 5 + .../scopepicker/strategy/Strategy.kt | 5 + .../rangepickerview/util/Dimension.kt | 14 +++ .../rangepickerview/util/DisplayUtils.kt | 43 +++----- .../rangepickerview/util/TouchAssistant.kt | 6 ++ .../util/extension/PaintExtensions.kt | 35 ++++++ .../util/view/ViewAttributes.kt | 16 +++ 22 files changed, 323 insertions(+), 75 deletions(-) delete mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/rangepicker/ScopePickerView.kt rename rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/{rangepicker => scopepicker}/BaseView.kt (90%) create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/PickerAgreement.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/ScopePickerView.kt rename rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/{rangepicker/model/AnimatableRectF.kt => scopepicker/model/AnimationRect.kt} (73%) create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/model/State.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/model/enums/AnimateRect.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/model/enums/Mode.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/model/exceptions/MaxSizeException.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/model/exceptions/MaxWordLengthException.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/strategy/DuoPickStrategy.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/strategy/SinglePickStrategy.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/scopepicker/strategy/Strategy.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/Dimension.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/TouchAssistant.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/extension/PaintExtensions.kt create mode 100644 rangepickerview/src/main/java/yaroslav/ovdiienko/idivision/rangepickerview/util/view/ViewAttributes.kt diff --git a/app/src/main/java/yaroslav/ovdiienko/idivision/rangepicker/MainActivity.kt b/app/src/main/java/yaroslav/ovdiienko/idivision/rangepicker/MainActivity.kt index 9ff342a..cfb044e 100644 --- a/app/src/main/java/yaroslav/ovdiienko/idivision/rangepicker/MainActivity.kt +++ b/app/src/main/java/yaroslav/ovdiienko/idivision/rangepicker/MainActivity.kt @@ -12,14 +12,19 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) +// oldView() + newView() + } + + private fun oldView() { picker.apply { setOptions(getOptions()) setDefaultSelectedPositions(0 to 4) setOnRangeSelectedListener { view, leftPoint, rightPoint -> Toast.makeText( - this@MainActivity, - view.getSelectedIndexes().toString(), - Toast.LENGTH_SHORT + this@MainActivity, + view.getSelectedIndexes().toString(), + Toast.LENGTH_SHORT ).show() } } @@ -30,6 +35,10 @@ class MainActivity : AppCompatActivity() { } } + private fun newView() { + + } + private fun getOptions(): List