From 1a327a4526b5055d65b75bf9fc5ebfde307661c1 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Feb 2019 14:57:25 +0100 Subject: [PATCH 1/3] Improve DateTimePickerManager --- ...ialogFragment.kt => DateTimePickerManager.kt} | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) rename app/src/main/java/net/pokeranalytics/android/ui/fragment/components/{DateTimeDialogFragment.kt => DateTimePickerManager.kt} (89%) 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 89% 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..b4c7326c 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 @@ -13,11 +13,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,11 +25,18 @@ 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 } } @@ -66,8 +72,8 @@ 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.show() From c54412cbc82f13aa53142aeb939eebf0bb4dcb1e Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Feb 2019 15:32:41 +0100 Subject: [PATCH 2/3] Update DateTimePicker --- .../android/ui/fragment/NewSessionFragment.kt | 2 ++ .../ui/fragment/components/DateTimePickerManager.kt | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) 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 0ed7dbbb..9dd1b99e 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/DateTimePickerManager.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DateTimePickerManager.kt index b4c7326c..2f6e9a91 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DateTimePickerManager.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.* @@ -41,7 +43,6 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, } } - override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) { calendar.set(Calendar.YEAR, year) calendar.set(Calendar.MONTH, month) @@ -64,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() } } @@ -76,6 +81,10 @@ class DateTimePickerManager : DatePickerDialog.OnDateSetListener, 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() } } From 42cbb7a09e4b0ea794b8e0d67eb9468302ae4678 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Feb 2019 15:44:26 +0100 Subject: [PATCH 3/3] Add refresh method on DynamicListAdapter --- .../ui/adapter/components/DynamicListAdapter.kt | 10 ++++++++++ .../android/ui/fragment/EditableDataFragment.kt | 11 ++++------- 2 files changed, 14 insertions(+), 7 deletions(-) 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 }