diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt index ee87cb0e..3978e424 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt @@ -76,4 +76,14 @@ class DynamicListAdapter(var delegate: DynamicRowDelegate, var callBackDelegate: (holder as DynamicHolder).bind(dynamicRow, this.delegate, listener, actionListener) } + /** + * Refresh the row in the adapter + */ + fun refreshRow(row: DynamicRowInterface) { + val index = rows.indexOf(row) + if (index >= 0) { + notifyItemChanged(index) + } + } + } \ No newline at end of file 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 c1a64cfd..0b44efdd 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 @@ -1,7 +1,6 @@ package net.pokeranalytics.android.ui.fragment import android.os.Bundle -import android.text.InputType import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -13,19 +12,17 @@ import kotlinx.android.synthetic.main.fragment_editable_data.* import kotlinx.android.synthetic.main.fragment_editable_data.view.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.DataList -import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.components.* -import net.pokeranalytics.android.ui.fragment.components.BottomSheetData import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment -import java.util.* class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomSheetDelegate { private lateinit var item: RealmObject private lateinit var dataType: DataList + private lateinit var dynamicListAdapter: DynamicListAdapter override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_editable_data, container, false) @@ -52,9 +49,9 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto override fun setValue(value: Any, row: DynamicRowInterface) { (this.item as EditableDataSource).setBottomSheetValue(value, row) this.getRealm().executeTransaction { - it.copyToRealm(this.item) + it.copyToRealmOrUpdate(this.item) } - Toast.makeText(requireContext(), "Callback for ${row.localizedTitle(requireContext())} ($value)", Toast.LENGTH_SHORT).show() + dynamicListAdapter.refreshRow(row) } private fun initData() { @@ -92,7 +89,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto this.item = this.dataType.updateOrCreate(realm, primaryKey) - val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this) + this.dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this) this.recyclerView.adapter = dynamicListAdapter } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt index 926d349a..e5a498c0 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt @@ -68,6 +68,8 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS currentSession.cgBigBlind = null } SessionRow.COMMENT -> currentSession.comment = "" + SessionRow.START_DATE -> currentSession.timeFrame?.setDate(Date(), null) + SessionRow.END_DATE -> currentSession.timeFrame?.setDate(Date(), null) } sessionAdapter.notifyItemChanged(SessionRow.values().indexOf(row)) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DateTimeDialogFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DateTimePickerManager.kt similarity index 75% rename from app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DateTimeDialogFragment.kt rename to app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DateTimePickerManager.kt index 4bd4c822..2f6e9a91 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DateTimeDialogFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DateTimePickerManager.kt @@ -3,9 +3,11 @@ package net.pokeranalytics.android.ui.fragment.components import android.app.DatePickerDialog import android.app.TimePickerDialog import android.content.Context +import android.content.DialogInterface import android.text.format.DateFormat import android.widget.DatePicker import android.widget.TimePicker +import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface import java.util.* @@ -13,11 +15,10 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener { private var context: Context? = null - private val calendar = Calendar.getInstance() lateinit var row: DynamicRowInterface lateinit var bottomSheetDelegate: BottomSheetDelegate - + lateinit var calendar: Calendar companion object { fun create( @@ -26,16 +27,22 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, bottomSheetDelegate: BottomSheetDelegate, date: Date? ) : DateTimePickerManager { + + val calendar = Calendar.getInstance() + calendar.time = date ?: Date() + val dateTimePickerManager = DateTimePickerManager() dateTimePickerManager.context = context - dateTimePickerManager.showDatePicker() dateTimePickerManager.row = row dateTimePickerManager.bottomSheetDelegate = bottomSheetDelegate + dateTimePickerManager.calendar = calendar + + dateTimePickerManager.showDatePicker() + return dateTimePickerManager } } - override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) { calendar.set(Calendar.YEAR, year) calendar.set(Calendar.MONTH, month) @@ -58,6 +65,10 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, val day = calendar.get(Calendar.DAY_OF_MONTH) context?.let { val datePickerDialog = DatePickerDialog(it, this, year, month, day) + datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, it.getString(R.string.clear)) { dialog, _ -> + bottomSheetDelegate.clickOnClear(row) + dialog.dismiss() + } datePickerDialog.show() } } @@ -66,10 +77,14 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, * Show the time picker */ private fun showTimePicker() { - val hour = calendar.get(Calendar.YEAR) - val minute = calendar.get(Calendar.MONTH) + val hour = calendar.get(Calendar.HOUR_OF_DAY) + val minute = calendar.get(Calendar.MINUTE) context?.let { val timePickerDialog = TimePickerDialog(context, this, hour, minute, DateFormat.is24HourFormat(context)) + timePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, it.getString(R.string.clear)) { dialog, _ -> + bottomSheetDelegate.clickOnClear(row) + dialog.dismiss() + } timePickerDialog.show() } }