replace EventRepeatInterval with the generic radiobutton dialog
This commit is contained in:
parent
6e88c8a425
commit
0c1119c150
|
@ -9,7 +9,6 @@ import android.view.MenuItem
|
|||
import android.view.WindowManager
|
||||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.dialogs.DeleteEventDialog
|
||||
import com.simplemobiletools.calendar.dialogs.EventRepeatIntervalDialog
|
||||
import com.simplemobiletools.calendar.dialogs.SelectEventTypeDialog
|
||||
import com.simplemobiletools.calendar.extensions.*
|
||||
import com.simplemobiletools.calendar.helpers.*
|
||||
|
@ -139,7 +138,7 @@ class EventActivity : SimpleActivity(), DBHelper.EventUpdateListener {
|
|||
}
|
||||
|
||||
private fun showRepeatIntervalDialog() {
|
||||
EventRepeatIntervalDialog(this, mRepeatInterval) {
|
||||
showEventRepeatIntervalDialog(mRepeatInterval) {
|
||||
mRepeatInterval = it
|
||||
updateRepetitionText()
|
||||
checkRepeatLimit(it)
|
||||
|
|
|
@ -3,7 +3,10 @@ package com.simplemobiletools.calendar.activities
|
|||
import android.os.Bundle
|
||||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.dialogs.CustomEventReminderDialog
|
||||
import com.simplemobiletools.calendar.dialogs.CustomEventRepeatIntervalDialog
|
||||
import com.simplemobiletools.calendar.extensions.getReminderText
|
||||
import com.simplemobiletools.calendar.extensions.getRepetitionText
|
||||
import com.simplemobiletools.calendar.helpers.*
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
|
@ -49,4 +52,41 @@ open class SimpleActivity : BaseSimpleActivity() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected fun showEventRepeatIntervalDialog(curSeconds: Int, callback: (minutes: Int) -> Unit) {
|
||||
val seconds = TreeSet<Int>()
|
||||
seconds.apply {
|
||||
add(0)
|
||||
add(DAY)
|
||||
add(WEEK)
|
||||
add(BIWEEK)
|
||||
add(MONTH)
|
||||
add(YEAR)
|
||||
add(curSeconds)
|
||||
}
|
||||
|
||||
val items = ArrayList<RadioItem>(seconds.size + 1)
|
||||
seconds.mapIndexedTo(items, {
|
||||
index, value ->
|
||||
RadioItem(index, getRepetitionText(value), value)
|
||||
})
|
||||
|
||||
var selectedIndex = 0
|
||||
seconds.forEachIndexed { index, value ->
|
||||
if (value == curSeconds)
|
||||
selectedIndex = index
|
||||
}
|
||||
|
||||
items.add(RadioItem(-1, getString(R.string.custom)))
|
||||
|
||||
RadioGroupDialog(this, items, selectedIndex) {
|
||||
if (it == -1) {
|
||||
CustomEventRepeatIntervalDialog(this) {
|
||||
callback(it)
|
||||
}
|
||||
} else {
|
||||
callback(it as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
package com.simplemobiletools.calendar.dialogs
|
||||
|
||||
import android.app.Activity
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.view.ViewGroup
|
||||
import android.widget.RadioButton
|
||||
import android.widget.RadioGroup
|
||||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.extensions.getRepetitionText
|
||||
import com.simplemobiletools.calendar.helpers.*
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import kotlinx.android.synthetic.main.dialog_radio_group.view.*
|
||||
import java.util.*
|
||||
|
||||
class EventRepeatIntervalDialog(val activity: Activity, val repeatSeconds: Int, val callback: (mins: Int) -> Unit) : AlertDialog.Builder(activity),
|
||||
RadioGroup.OnCheckedChangeListener {
|
||||
val dialog: AlertDialog?
|
||||
var wasInit = false
|
||||
var seconds = TreeSet<Int>()
|
||||
var radioGroup: RadioGroup
|
||||
|
||||
init {
|
||||
val view = activity.layoutInflater.inflate(R.layout.dialog_radio_group, null)
|
||||
radioGroup = view.dialog_radio_group
|
||||
radioGroup.setOnCheckedChangeListener(this)
|
||||
|
||||
seconds.apply {
|
||||
add(0)
|
||||
add(DAY)
|
||||
add(WEEK)
|
||||
add(BIWEEK)
|
||||
add(MONTH)
|
||||
add(YEAR)
|
||||
add(repeatSeconds)
|
||||
}
|
||||
|
||||
seconds.forEachIndexed { index, value ->
|
||||
addRadioButton(activity.getRepetitionText(value), value, index)
|
||||
}
|
||||
addRadioButton(activity.getString(R.string.custom), -1, seconds.size)
|
||||
|
||||
dialog = AlertDialog.Builder(activity)
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this, R.string.select_repeat_interval)
|
||||
}
|
||||
|
||||
wasInit = true
|
||||
}
|
||||
|
||||
private fun addRadioButton(textValue: String, value: Int, index: Int) {
|
||||
val radioButton = (activity.layoutInflater.inflate(R.layout.radio_button, null) as RadioButton).apply {
|
||||
text = textValue
|
||||
isChecked = value == repeatSeconds
|
||||
id = index
|
||||
}
|
||||
radioGroup.addView(radioButton, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
|
||||
}
|
||||
|
||||
override fun onCheckedChanged(group: RadioGroup?, checkedId: Int) {
|
||||
if (!wasInit)
|
||||
return
|
||||
|
||||
if (checkedId == seconds.size) {
|
||||
CustomEventRepeatIntervalDialog(activity) {
|
||||
callback.invoke(it)
|
||||
dialog?.dismiss()
|
||||
}
|
||||
} else {
|
||||
callback.invoke(seconds.elementAt(checkedId))
|
||||
dialog?.dismiss()
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue