Avoid session enDate > startDate

feature/top10
Aurelien Hubert 7 years ago
parent 8390a20877
commit 6c0fe4d234
  1. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  2. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  3. 30
      app/src/main/java/net/pokeranalytics/android/ui/helpers/DateTimePickerManager.kt
  4. 1
      app/src/main/res/values/strings.xml

@ -72,15 +72,10 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
LocationRow.LOCATE_ME -> PlacePickerManager.create(parentActivity, row, this) LocationRow.LOCATE_ME -> PlacePickerManager.create(parentActivity, row, this)
else -> { else -> {
BottomSheetFragment.create( BottomSheetFragment.create(
fragmentManager, fragmentManager, row, this, (this.item as RowRepresentableDataSource).editDescriptors(row)
row,
this,
(this.item as RowRepresentableDataSource).editDescriptors(row)
) )
} }
} }
} }
override fun clickOnAdd(row: RowRepresentable) { override fun clickOnAdd(row: RowRepresentable) {
@ -91,7 +86,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
this.getRealm().executeTransaction { this.getRealm().executeTransaction {
(this.item as Savable).updateValue(value, row) (this.item as Savable).updateValue(value, row)
} }
when(row) { when (row) {
LocationRow.LOCATE_ME -> rowRepresentableAdapter.notifyDataSetChanged() LocationRow.LOCATE_ME -> rowRepresentableAdapter.notifyDataSetChanged()
else -> rowRepresentableAdapter.refreshRow(row) else -> rowRepresentableAdapter.refreshRow(row)
} }
@ -142,7 +137,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
} }
} else { } else {
val message = when(item) { val message = when (item) {
is Bankroll -> R.string.empty_name_for_br_error is Bankroll -> R.string.empty_name_for_br_error
is Location -> R.string.location_empty_field_error is Location -> R.string.location_empty_field_error
is Game -> R.string.location_empty_field_error is Game -> R.string.location_empty_field_error

@ -96,7 +96,8 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott
requireContext(), requireContext(),
row, row,
this, this,
currentSession.timeFrame?.endDate ?: currentSession.timeFrame?.startDate ?: Date() currentSession.timeFrame?.endDate ?: currentSession.timeFrame?.startDate ?: Date(),
currentSession.timeFrame?.startDate
) )
SessionRow.BANKROLL -> { SessionRow.BANKROLL -> {
BottomSheetFragment.create(fragmentManager, row, this, data, false) BottomSheetFragment.create(fragmentManager, row, this, data, false)

@ -7,6 +7,7 @@ import android.content.DialogInterface
import android.text.format.DateFormat import android.text.format.DateFormat
import android.widget.DatePicker import android.widget.DatePicker
import android.widget.TimePicker import android.widget.TimePicker
import android.widget.Toast
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
@ -17,16 +18,18 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener,
private var context: Context? = null private var context: Context? = null
lateinit var row: RowRepresentable private lateinit var row: RowRepresentable
lateinit var delegate: RowRepresentableDelegate private lateinit var delegate: RowRepresentableDelegate
lateinit var calendar: Calendar private lateinit var calendar: Calendar
private var minimumDate: Date? = null
companion object { companion object {
fun create( fun create(
context: Context, context: Context,
row: RowRepresentable, row: RowRepresentable,
delegate: RowRepresentableDelegate, delegate: RowRepresentableDelegate,
date: Date? date: Date?,
minimumDate: Date? = null
) : DateTimePickerManager { ) : DateTimePickerManager {
val calendar = Calendar.getInstance() val calendar = Calendar.getInstance()
@ -37,6 +40,7 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener,
dateTimePickerManager.row = row dateTimePickerManager.row = row
dateTimePickerManager.delegate = delegate dateTimePickerManager.delegate = delegate
dateTimePickerManager.calendar = calendar dateTimePickerManager.calendar = calendar
dateTimePickerManager.minimumDate = minimumDate
dateTimePickerManager.showDatePicker() dateTimePickerManager.showDatePicker()
@ -54,7 +58,19 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener,
override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) { override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) {
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay) calendar.set(Calendar.HOUR_OF_DAY, hourOfDay)
calendar.set(Calendar.MINUTE, minute) 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) val day = calendar.get(Calendar.DAY_OF_MONTH)
context?.let { context?.let {
val datePickerDialog = DatePickerDialog(it, this, year, month, day) 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, _ -> datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, it.getString(R.string.clear)) { dialog, _ ->
delegate.onRowValueChanged(null, row) delegate.onRowValueChanged(null, row)
dialog.dismiss() dialog.dismiss()

@ -20,6 +20,7 @@
<string name="address">Address</string> <string name="address">Address</string>
<string name="data_deleted" formatted="false">%s deleted</string> <string name="data_deleted" formatted="false">%s deleted</string>
<string name="end_date_not_possible">The end date should be after the start date</string>
<!-- <!--

Loading…
Cancel
Save