mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Replace Track Reading Dates date picker with MaterialDialog's one (#2935)
* Replaced datepicker with MaterialDialog's one * Removed max date due to library bug (afollestad/material-dialogs#1973) * Removed old date picker view.
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							2a4f35959b
						
					
				
				
					commit
					aae6820fdc
				
			| @@ -2,17 +2,13 @@ package eu.kanade.tachiyomi.ui.manga.track | ||||
|  | ||||
| import android.app.Dialog | ||||
| import android.os.Bundle | ||||
| import android.widget.NumberPicker | ||||
| import com.afollestad.materialdialogs.MaterialDialog | ||||
| import com.afollestad.materialdialogs.customview.customView | ||||
| import com.afollestad.materialdialogs.customview.getCustomView | ||||
| import com.afollestad.materialdialogs.datetime.datePicker | ||||
| import com.bluelinelabs.conductor.Controller | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.database.models.Track | ||||
| import eu.kanade.tachiyomi.data.track.TrackManager | ||||
| import eu.kanade.tachiyomi.ui.base.controller.DialogController | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| import java.text.DateFormatSymbols | ||||
| import java.util.Calendar | ||||
| import uy.kohesive.injekt.Injekt | ||||
| import uy.kohesive.injekt.api.get | ||||
| @@ -41,74 +37,32 @@ class SetTrackReadingDatesDialog<T> : DialogController | ||||
|     } | ||||
|  | ||||
|     override fun onCreateDialog(savedViewState: Bundle?): Dialog { | ||||
|         val item = item | ||||
|         val listener = (targetController as? Listener) | ||||
|  | ||||
|         val dialog = MaterialDialog(activity!!) | ||||
|         return MaterialDialog(activity!!) | ||||
|                 .title(when (dateToUpdate) { | ||||
|                     ReadingDate.Start -> R.string.track_started_reading_date | ||||
|                     ReadingDate.Finish -> R.string.track_finished_reading_date | ||||
|                 }) | ||||
|                 .customView(R.layout.track_date_dialog, dialogWrapContent = false) | ||||
|                 .positiveButton(android.R.string.ok) { dialog -> | ||||
|                     onDialogConfirm(dialog) | ||||
|                 .datePicker(currentDate = getCurrentDate()) { _, date -> | ||||
|                     listener?.setReadingDate(item, dateToUpdate, date.timeInMillis) | ||||
|                 } | ||||
|                 .negativeButton(android.R.string.cancel) { dialog -> | ||||
|                     dialog.dismiss() | ||||
|                 } | ||||
|                 .neutralButton(R.string.action_remove) { dialog -> | ||||
|                     val listener = (targetController as? Listener) | ||||
|                 .neutralButton(R.string.action_remove) { | ||||
|                     listener?.setReadingDate(item, dateToUpdate, 0L) | ||||
|                     dialog.dismiss() | ||||
|                 } | ||||
|                 .noAutoDismiss() | ||||
|  | ||||
|         onDialogCreated(dialog) | ||||
|  | ||||
|         return dialog | ||||
|     } | ||||
|  | ||||
|     private fun onDialogCreated(dialog: MaterialDialog) { | ||||
|         val view = dialog.getCustomView() | ||||
|  | ||||
|         val dayPicker: NumberPicker = view.findViewById(R.id.day_picker) | ||||
|         val monthPicker: NumberPicker = view.findViewById(R.id.month_picker) | ||||
|         val yearPicker: NumberPicker = view.findViewById(R.id.year_picker) | ||||
|  | ||||
|         val monthNames: Array<String> = DateFormatSymbols().months | ||||
|         monthPicker.displayedValues = monthNames | ||||
|  | ||||
|         val calendar = Calendar.getInstance() | ||||
|         item.track?.let { | ||||
|             val date = when (dateToUpdate) { | ||||
|                 ReadingDate.Start -> it.started_reading_date | ||||
|                 ReadingDate.Finish -> it.finished_reading_date | ||||
|     private fun getCurrentDate(): Calendar { | ||||
|         // Today if no date is set, otherwise the already set date | ||||
|         return Calendar.getInstance().apply { | ||||
|             item.track?.let { | ||||
|                 val date = when (dateToUpdate) { | ||||
|                     ReadingDate.Start -> it.started_reading_date | ||||
|                     ReadingDate.Finish -> it.finished_reading_date | ||||
|                 } | ||||
|                 if (date != 0L) | ||||
|                     timeInMillis = date | ||||
|             } | ||||
|             if (date != 0L) | ||||
|                 calendar.timeInMillis = date | ||||
|         } | ||||
|         dayPicker.value = calendar[Calendar.DAY_OF_MONTH] | ||||
|         monthPicker.value = calendar[Calendar.MONTH] | ||||
|         yearPicker.maxValue = calendar[Calendar.YEAR] | ||||
|         yearPicker.value = calendar[Calendar.YEAR] | ||||
|     } | ||||
|  | ||||
|     private fun onDialogConfirm(dialog: MaterialDialog) { | ||||
|         val view = dialog.getCustomView() | ||||
|  | ||||
|         val dayPicker: NumberPicker = view.findViewById(R.id.day_picker) | ||||
|         val monthPicker: NumberPicker = view.findViewById(R.id.month_picker) | ||||
|         val yearPicker: NumberPicker = view.findViewById(R.id.year_picker) | ||||
|  | ||||
|         try { | ||||
|             val calendar = Calendar.getInstance().apply { isLenient = false } | ||||
|             calendar.set(yearPicker.value, monthPicker.value, dayPicker.value) | ||||
|             calendar.time = calendar.time // Throws if invalid | ||||
|  | ||||
|             val listener = (targetController as? Listener) | ||||
|             listener?.setReadingDate(item, dateToUpdate, calendar.timeInMillis) | ||||
|             dialog.dismiss() | ||||
|         } catch (e: Exception) { | ||||
|             activity?.toast(R.string.error_invalid_date_supplied) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user