From 6c0fe4d2347131d2ebc5ed02ede11f0ba151c4a4 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Fri, 8 Mar 2019 14:30:54 +0100 Subject: [PATCH] Avoid session enDate > startDate --- .../ui/fragment/EditableDataFragment.kt | 11 ++----- .../android/ui/fragment/SessionFragment.kt | 3 +- .../ui/helpers/DateTimePickerManager.kt | 30 +++++++++++++++---- app/src/main/res/values/strings.xml | 1 + 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index 8642d0f1..7ccfca7a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -72,15 +72,10 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, LocationRow.LOCATE_ME -> PlacePickerManager.create(parentActivity, row, this) else -> { BottomSheetFragment.create( - fragmentManager, - row, - this, - (this.item as RowRepresentableDataSource).editDescriptors(row) + fragmentManager, row, this, (this.item as RowRepresentableDataSource).editDescriptors(row) ) } } - - } override fun clickOnAdd(row: RowRepresentable) { @@ -91,7 +86,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, this.getRealm().executeTransaction { (this.item as Savable).updateValue(value, row) } - when(row) { + when (row) { LocationRow.LOCATE_ME -> rowRepresentableAdapter.notifyDataSetChanged() else -> rowRepresentableAdapter.refreshRow(row) } @@ -142,7 +137,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, } } else { - val message = when(item) { + val message = when (item) { is Bankroll -> R.string.empty_name_for_br_error is Location -> R.string.location_empty_field_error is Game -> R.string.location_empty_field_error diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index 68684f18..a7c45c8f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -96,7 +96,8 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott requireContext(), row, this, - currentSession.timeFrame?.endDate ?: currentSession.timeFrame?.startDate ?: Date() + currentSession.timeFrame?.endDate ?: currentSession.timeFrame?.startDate ?: Date(), + currentSession.timeFrame?.startDate ) SessionRow.BANKROLL -> { BottomSheetFragment.create(fragmentManager, row, this, data, false) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/helpers/DateTimePickerManager.kt b/app/src/main/java/net/pokeranalytics/android/ui/helpers/DateTimePickerManager.kt index 2cd5b074..f4935267 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/helpers/DateTimePickerManager.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/helpers/DateTimePickerManager.kt @@ -7,6 +7,7 @@ import android.content.DialogInterface import android.text.format.DateFormat import android.widget.DatePicker import android.widget.TimePicker +import android.widget.Toast import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.view.RowRepresentable @@ -17,16 +18,18 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, private var context: Context? = null - lateinit var row: RowRepresentable - lateinit var delegate: RowRepresentableDelegate - lateinit var calendar: Calendar + private lateinit var row: RowRepresentable + private lateinit var delegate: RowRepresentableDelegate + private lateinit var calendar: Calendar + private var minimumDate: Date? = null companion object { fun create( context: Context, row: RowRepresentable, delegate: RowRepresentableDelegate, - date: Date? + date: Date?, + minimumDate: Date? = null ) : DateTimePickerManager { val calendar = Calendar.getInstance() @@ -37,6 +40,7 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, dateTimePickerManager.row = row dateTimePickerManager.delegate = delegate dateTimePickerManager.calendar = calendar + dateTimePickerManager.minimumDate = minimumDate dateTimePickerManager.showDatePicker() @@ -54,7 +58,19 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) { calendar.set(Calendar.HOUR_OF_DAY, hourOfDay) calendar.set(Calendar.MINUTE, minute) - delegate.onRowValueChanged(calendar.time, row) + + if (minimumDate != null) { + minimumDate?.let { + if (calendar.time < it) { + Toast.makeText(context, R.string.end_date_not_possible, Toast.LENGTH_LONG).show() + } else { + delegate.onRowValueChanged(calendar.time, row) + } + } + } else { + delegate.onRowValueChanged(calendar.time, row) + } + } /** @@ -66,6 +82,10 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, val day = calendar.get(Calendar.DAY_OF_MONTH) context?.let { val datePickerDialog = DatePickerDialog(it, this, year, month, day) + minimumDate?.let { + datePickerDialog.datePicker.minDate = it.time + } + datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, it.getString(R.string.clear)) { dialog, _ -> delegate.onRowValueChanged(null, row) dialog.dismiss() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b480f2cd..bfc94b84 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,6 +20,7 @@ Address %s deleted + The end date should be after the start date