use a nicer time picker with material theme

This commit is contained in:
tibbi
2023-01-08 11:55:06 +01:00
parent b8296fbe58
commit fd6d03db6f
3 changed files with 135 additions and 29 deletions

View File

@@ -20,6 +20,8 @@ import android.view.WindowManager
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.widget.ImageView import android.widget.ImageView
import android.widget.RelativeLayout import android.widget.RelativeLayout
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.TimeFormat
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.R
@@ -1359,14 +1361,34 @@ class EventActivity : SimpleActivity() {
private fun setupStartTime() { private fun setupStartTime() {
hideKeyboard() hideKeyboard()
TimePickerDialog( if (config.isUsingSystemTheme) {
this, val timeFormat = if (config.use24HourFormat) {
getTimePickerDialogTheme(), TimeFormat.CLOCK_24H
startTimeSetListener, } else {
mEventStartDateTime.hourOfDay, TimeFormat.CLOCK_12H
mEventStartDateTime.minuteOfHour, }
config.use24HourFormat
).show() val timePicker = MaterialTimePicker.Builder()
.setTimeFormat(timeFormat)
.setHour(mEventStartDateTime.hourOfDay)
.setMinute(mEventStartDateTime.minuteOfHour)
.build()
timePicker.addOnPositiveButtonClickListener {
timeSet(timePicker.hour, timePicker.minute, true)
}
timePicker.show(supportFragmentManager, "")
} else {
TimePickerDialog(
this,
getTimePickerDialogTheme(),
startTimeSetListener,
mEventStartDateTime.hourOfDay,
mEventStartDateTime.minuteOfHour,
config.use24HourFormat
).show()
}
} }
private fun setupEndDate() { private fun setupEndDate() {
@@ -1382,14 +1404,34 @@ class EventActivity : SimpleActivity() {
private fun setupEndTime() { private fun setupEndTime() {
hideKeyboard() hideKeyboard()
TimePickerDialog( if (config.isUsingSystemTheme) {
this, val timeFormat = if (config.use24HourFormat) {
getTimePickerDialogTheme(), TimeFormat.CLOCK_24H
endTimeSetListener, } else {
mEventEndDateTime.hourOfDay, TimeFormat.CLOCK_12H
mEventEndDateTime.minuteOfHour, }
config.use24HourFormat
).show() val timePicker = MaterialTimePicker.Builder()
.setTimeFormat(timeFormat)
.setHour(mEventEndDateTime.hourOfDay)
.setMinute(mEventEndDateTime.minuteOfHour)
.build()
timePicker.addOnPositiveButtonClickListener {
timeSet(timePicker.hour, timePicker.minute, false)
}
timePicker.show(supportFragmentManager, "")
} else {
TimePickerDialog(
this,
getTimePickerDialogTheme(),
endTimeSetListener,
mEventEndDateTime.hourOfDay,
mEventEndDateTime.minuteOfHour,
config.use24HourFormat
).show()
}
} }
private val startDateSetListener = DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth -> private val startDateSetListener = DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->

View File

@@ -8,12 +8,15 @@ import android.media.AudioManager
import android.media.RingtoneManager import android.media.RingtoneManager
import android.os.Bundle import android.os.Bundle
import android.widget.Toast import android.widget.Toast
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.TimeFormat
import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.dialogs.SelectCalendarsDialog import com.simplemobiletools.calendar.pro.dialogs.SelectCalendarsDialog
import com.simplemobiletools.calendar.pro.dialogs.SelectEventTypeDialog import com.simplemobiletools.calendar.pro.dialogs.SelectEventTypeDialog
import com.simplemobiletools.calendar.pro.dialogs.SelectQuickFilterEventTypesDialog import com.simplemobiletools.calendar.pro.dialogs.SelectQuickFilterEventTypesDialog
import com.simplemobiletools.calendar.pro.extensions.* import com.simplemobiletools.calendar.pro.extensions.*
import com.simplemobiletools.calendar.pro.helpers.* import com.simplemobiletools.calendar.pro.helpers.*
import com.simplemobiletools.calendar.pro.helpers.Formatter
import com.simplemobiletools.calendar.pro.models.EventType import com.simplemobiletools.calendar.pro.models.EventType
import com.simplemobiletools.commons.dialogs.* import com.simplemobiletools.commons.dialogs.*
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
@@ -24,6 +27,7 @@ import kotlinx.android.synthetic.main.activity_settings.*
import org.joda.time.DateTime import org.joda.time.DateTime
import java.io.File import java.io.File
import java.io.InputStream import java.io.InputStream
import java.text.SimpleDateFormat
import java.util.* import java.util.*
import kotlin.system.exitProcess import kotlin.system.exitProcess
@@ -579,7 +583,17 @@ class SettingsActivity : SimpleActivity() {
} }
} }
private fun getHoursString(hours: Int) = String.format("%02d:00", hours) private fun getHoursString(hours: Int): String {
return if (config.use24HourFormat) {
String.format("%02d:00", hours)
} else {
val calendar = Calendar.getInstance()
calendar.set(Calendar.HOUR_OF_DAY, hours)
calendar.set(Calendar.MINUTE, 0)
val format = SimpleDateFormat("hh.mm aa")
format.format(calendar.time)
}
}
private fun setupDisplayPastEvents() { private fun setupDisplayPastEvents() {
var displayPastEvents = config.displayPastEvents var displayPastEvents = config.displayPastEvents
@@ -715,14 +729,36 @@ class SettingsActivity : SimpleActivity() {
} }
val currentDateTime = DateTime.now() val currentDateTime = DateTime.now()
TimePickerDialog(
this, if (config.isUsingSystemTheme) {
getTimePickerDialogTheme(), val timeFormat = if (config.use24HourFormat) {
timeListener, TimeFormat.CLOCK_24H
currentDateTime.hourOfDay, } else {
currentDateTime.minuteOfHour, TimeFormat.CLOCK_12H
config.use24HourFormat }
).show()
val timePicker = MaterialTimePicker.Builder()
.setTimeFormat(timeFormat)
.setHour(currentDateTime.hourOfDay)
.setMinute(currentDateTime.minuteOfHour)
.build()
timePicker.addOnPositiveButtonClickListener {
config.defaultStartTime = timePicker.hour * 60 + timePicker.minute
updateDefaultStartTimeText()
}
timePicker.show(supportFragmentManager, "")
} else {
TimePickerDialog(
this,
getTimePickerDialogTheme(),
timeListener,
currentDateTime.hourOfDay,
currentDateTime.minuteOfHour,
config.use24HourFormat
).show()
}
} }
} }
} }
@@ -735,7 +771,8 @@ class SettingsActivity : SimpleActivity() {
else -> { else -> {
val hours = config.defaultStartTime / 60 val hours = config.defaultStartTime / 60
val minutes = config.defaultStartTime % 60 val minutes = config.defaultStartTime % 60
settings_default_start_time.text = String.format("%02d:%02d", hours, minutes) val dateTime = DateTime.now().withHourOfDay(hours).withMinuteOfHour(minutes)
settings_default_start_time.text = Formatter.getTime(this, dateTime)
} }
} }
} }

View File

@@ -7,6 +7,8 @@ import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.WindowManager import android.view.WindowManager
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.TimeFormat
import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.dialogs.* import com.simplemobiletools.calendar.pro.dialogs.*
import com.simplemobiletools.calendar.pro.extensions.* import com.simplemobiletools.calendar.pro.extensions.*
@@ -538,9 +540,34 @@ class TaskActivity : SimpleActivity() {
private fun setupTime() { private fun setupTime() {
hideKeyboard() hideKeyboard()
TimePickerDialog( if (config.isUsingSystemTheme) {
this, getTimePickerDialogTheme(), timeSetListener, mTaskDateTime.hourOfDay, mTaskDateTime.minuteOfHour, config.use24HourFormat val timeFormat = if (config.use24HourFormat) {
).show() TimeFormat.CLOCK_24H
} else {
TimeFormat.CLOCK_12H
}
val timePicker = MaterialTimePicker.Builder()
.setTimeFormat(timeFormat)
.setHour(mTaskDateTime.hourOfDay)
.setMinute(mTaskDateTime.minuteOfHour)
.build()
timePicker.addOnPositiveButtonClickListener {
timeSet(timePicker.hour, timePicker.minute)
}
timePicker.show(supportFragmentManager, "")
} else {
TimePickerDialog(
this,
getTimePickerDialogTheme(),
timeSetListener,
mTaskDateTime.hourOfDay,
mTaskDateTime.minuteOfHour,
config.use24HourFormat
).show()
}
} }
private val dateSetListener = DatePickerDialog.OnDateSetListener { _, year, monthOfYear, dayOfMonth -> private val dateSetListener = DatePickerDialog.OnDateSetListener { _, year, monthOfYear, dayOfMonth ->