Skip to content
This repository has been archived by the owner on Sep 3, 2023. It is now read-only.

Commit

Permalink
WIP integrate afollestad/date-picker lib
Browse files Browse the repository at this point in the history
  • Loading branch information
afollestad committed Jun 23, 2019
1 parent cd50499 commit 968fd57
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ internal class CustomPageViewSet(private val dialog: MaterialDialog) {

private fun MaterialDialog.getPageCustomView() = findViewById<View?>(R.id.colorArgbPage)

@Suppress("DEPRECATION")
private fun SeekBar.tint(color: Int) {
progressDrawable.setColorFilter(color, SRC_IN)
thumb.setColorFilter(color, SRC_IN)
Expand Down
1 change: 1 addition & 0 deletions datetime/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:' + versions.kotlin

implementation 'com.afollestad:viewpagerdots:' + versions.dotsIndicator
implementation 'com.afollestad:date-picker:' + versions.datePicker

implementation project(':core')
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

package com.afollestad.materialdialogs.datetime

import android.R.string
import androidx.annotation.CheckResult
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.WhichButton.POSITIVE
Expand All @@ -26,7 +27,6 @@ import com.afollestad.materialdialogs.customview.customView
import com.afollestad.materialdialogs.datetime.internal.TimeChangeListener
import com.afollestad.materialdialogs.datetime.utils.getDatePicker
import com.afollestad.materialdialogs.datetime.utils.isFutureDate
import com.afollestad.materialdialogs.datetime.utils.toCalendar
import com.afollestad.materialdialogs.utils.MDUtil.isLandscape
import java.util.Calendar

Expand All @@ -46,18 +46,12 @@ fun MaterialDialog.datePicker(
dialogWrapContent = windowContext.isLandscape()
)

if (minDate != null) {
getDatePicker().minDate = minDate.timeInMillis
}
if (maxDate != null) {
getDatePicker().maxDate = maxDate.timeInMillis
}
if (currentDate != null) {
getDatePicker().init(
currentDate.get(Calendar.YEAR),
currentDate.get(Calendar.MONTH),
currentDate.get(Calendar.DAY_OF_MONTH)
) { _, _, _, _ ->
getDatePicker().apply {
minDate?.let { setMinDate(it) }
maxDate?.let { setMaxDate(it) }
currentDate?.let { setDate(it) }

onDateChanged {
val isFutureDate = getDatePicker().isFutureDate()
setActionButtonEnabled(
POSITIVE,
Expand All @@ -66,10 +60,10 @@ fun MaterialDialog.datePicker(
}
}

positiveButton(android.R.string.ok) {
dateCallback?.invoke(it, getDatePicker().toCalendar())
positiveButton(string.ok) {
dateCallback?.invoke(it, getDatePicker().getDate()!!)
}
negativeButton(android.R.string.cancel)
negativeButton(string.cancel)

if (requireFutureDate) {
val changeListener = TimeChangeListener(windowContext, getDatePicker()) {
Expand All @@ -89,5 +83,5 @@ fun MaterialDialog.datePicker(
* Gets the currently selected date from a date picker dialog.
*/
@CheckResult fun MaterialDialog.selectedDate(): Calendar {
return getDatePicker().toCalendar()
return getDatePicker().getDate()!!
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,11 @@ fun MaterialDialog.dateTimePicker(
setDotTint(resolveColor(windowContext, attr = attr.textColorPrimary))
}

minDateTime?.let { getDatePicker().minDate = it.timeInMillis }

with(getDatePicker()) {
init(
currentDateTime?.get(Calendar.YEAR) ?: year,
currentDateTime?.get(Calendar.MONTH) ?: month,
currentDateTime?.get(Calendar.DAY_OF_MONTH) ?: dayOfMonth
) { _, _, _, _ ->
val futureTime = isFutureTime(this, getTimePicker())
getDatePicker().apply {
minDateTime?.let { setMinDate(it) }
currentDateTime?.let { setDate(it) }
onDateChanged {
val futureTime = isFutureTime(getDatePicker(), getTimePicker())
setActionButtonEnabled(
POSITIVE, !requireFutureDateTime || futureTime
)
Expand All @@ -85,7 +81,6 @@ fun MaterialDialog.dateTimePicker(

getTimePicker().apply {
setIs24HourView(show24HoursView)

hour(currentDateTime?.get(Calendar.HOUR_OF_DAY) ?: 12)
minute(currentDateTime?.get(Calendar.MINUTE) ?: 0)

Expand All @@ -98,12 +93,6 @@ fun MaterialDialog.dateTimePicker(
}
}

val futureTime = isFutureTime(getDatePicker(), getTimePicker())
setActionButtonEnabled(
POSITIVE,
!requireFutureDateTime || futureTime
)

positiveButton(android.R.string.ok) {
val selectedTime = toCalendar(getDatePicker(), getTimePicker())
dateTimeCallback?.invoke(it, selectedTime)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
*/
package com.afollestad.materialdialogs.datetime.utils

import android.widget.DatePicker
import android.widget.TimePicker
import com.afollestad.date.DatePicker
import java.util.Calendar
import java.util.GregorianCalendar

Expand All @@ -36,11 +36,7 @@ internal fun TimePicker.isFutureTime(): Boolean {

internal fun DatePicker.isFutureDate(): Boolean {
val now = Calendar.getInstance()
return toCalendar().timeInMillis >= now.timeInMillis
}

internal fun DatePicker.toCalendar(): Calendar {
return GregorianCalendar(year, month, dayOfMonth, 0, 0, 1)
return getDate()!!.timeInMillis >= now.timeInMillis
}

internal fun TimePicker.toCalendar(): Calendar {
Expand All @@ -58,11 +54,8 @@ internal fun toCalendar(
datePicker: DatePicker,
timePicker: TimePicker
): Calendar {
return GregorianCalendar(
datePicker.year,
datePicker.month,
datePicker.dayOfMonth,
timePicker.hour(),
timePicker.minute()
)
return datePicker.getDate()!!.apply {
set(Calendar.HOUR_OF_DAY, timePicker.hour())
set(Calendar.MINUTE, timePicker.minute())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
package com.afollestad.materialdialogs.datetime.utils

import android.os.Build
import android.widget.DatePicker
import android.widget.TimePicker
import androidx.viewpager.widget.ViewPager
import com.afollestad.date.DatePicker
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.datetime.R
import com.afollestad.viewpagerdots.DotsIndicator
Expand Down
3 changes: 2 additions & 1 deletion datetime/src/main/res/layout/md_datetime_picker_date.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
<com.afollestad.date.DatePicker
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/datetimeDatePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
3 changes: 2 additions & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,6 @@ ext.versions = [

// afollestad
assent : '2.3.0',
dotsIndicator : '1.0.0'
dotsIndicator : '1.0.0',
datePicker : '0.2.1'
]
1 change: 1 addition & 0 deletions sample/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ android {

packagingOptions {
exclude 'META-INF/atomicfu.kotlin_module'
exclude 'META-INF/library_release.kotlin_module'
}
}

Expand Down

0 comments on commit 968fd57

Please sign in to comment.