adding an option to switch between notification/email reminders

This commit is contained in:
tibbi 2019-03-11 23:42:03 +01:00
parent 0a358f209b
commit e3d34a9737
3 changed files with 139 additions and 10 deletions

View File

@ -57,7 +57,7 @@ android {
}
dependencies {
implementation 'com.simplemobiletools:commons:5.10.8'
implementation 'com.simplemobiletools:commons:5.10.9'
implementation 'joda-time:joda-time:2.10.1'
implementation 'androidx.multidex:multidex:2.0.1'

View File

@ -23,6 +23,7 @@ import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.commons.views.MyTextView
import kotlinx.android.synthetic.main.activity_event.*
import org.joda.time.DateTime
import java.util.*
@ -45,6 +46,9 @@ class EventActivity : SimpleActivity() {
private var mReminder1Minutes = 0
private var mReminder2Minutes = 0
private var mReminder3Minutes = 0
private var mReminder1Type = REMINDER_NOTIFICATION
private var mReminder2Type = REMINDER_NOTIFICATION
private var mReminder3Type = REMINDER_NOTIFICATION
private var mRepeatInterval = 0
private var mRepeatLimit = 0L
private var mRepeatRule = 0
@ -146,10 +150,32 @@ class EventActivity : SimpleActivity() {
event_reminder_2.setOnClickListener { showReminder2Dialog() }
event_reminder_3.setOnClickListener { showReminder3Dialog() }
event_reminder_1_type.setOnClickListener {
showReminderTypePicker(mReminder1Type) {
mReminder1Type = it
updateReminderTypeText(event_reminder_1_type, mReminder1Type)
}
}
event_reminder_2_type.setOnClickListener {
showReminderTypePicker(mReminder2Type) {
mReminder2Type = it
updateReminderTypeText(event_reminder_2_type, mReminder2Type)
}
}
event_reminder_3_type.setOnClickListener {
showReminderTypePicker(mReminder3Type) {
mReminder3Type = it
updateReminderTypeText(event_reminder_3_type, mReminder3Type)
}
}
event_type_holder.setOnClickListener { showEventTypeDialog() }
if (mEvent.flags and FLAG_ALL_DAY != 0)
if (mEvent.flags and FLAG_ALL_DAY != 0) {
event_all_day.toggle()
}
updateTextColors(event_scrollview)
updateIconColors()
@ -253,6 +279,9 @@ class EventActivity : SimpleActivity() {
mReminder1Minutes = mEvent.reminder1Minutes
mReminder2Minutes = mEvent.reminder2Minutes
mReminder3Minutes = mEvent.reminder3Minutes
mReminder1Type = mEvent.reminder1Type
mReminder2Type = mEvent.reminder2Type
mReminder3Type = mEvent.reminder3Type
mRepeatInterval = mEvent.repeatInterval
mRepeatLimit = mEvent.repeatLimit
mRepeatRule = mEvent.repeatRule
@ -558,10 +587,15 @@ class EventActivity : SimpleActivity() {
updateReminder1Text()
updateReminder2Text()
updateReminder3Text()
updateReminderTypeTexts()
}
private fun updateReminder1Text() {
event_reminder_1.text = getFormattedMinutes(mReminder1Minutes)
event_reminder_1_type.apply {
beVisibleIf(mReminder1Minutes != REMINDER_OFF)
text = getString(R.string.notification)
}
}
private fun updateReminder2Text() {
@ -575,6 +609,11 @@ class EventActivity : SimpleActivity() {
alpha = 1f
}
}
event_reminder_2_type.apply {
beVisibleIf(mReminder2Minutes != REMINDER_OFF)
text = getString(R.string.notification)
}
}
private fun updateReminder3Text() {
@ -588,6 +627,32 @@ class EventActivity : SimpleActivity() {
alpha = 1f
}
}
event_reminder_3_type.apply {
beVisibleIf(mReminder3Minutes != REMINDER_OFF)
text = getString(R.string.notification)
}
}
private fun showReminderTypePicker(currentValue: Int, callback: (Int) -> Unit) {
val items = arrayListOf(
RadioItem(REMINDER_NOTIFICATION, getString(R.string.notification)),
RadioItem(REMINDER_EMAIL, getString(R.string.email))
)
RadioGroupDialog(this, items, currentValue) {
callback(it as Int)
}
}
private fun updateReminderTypeTexts() {
updateReminderTypeText(event_reminder_1_type, mReminder1Type)
updateReminderTypeText(event_reminder_2_type, mReminder2Type)
updateReminderTypeText(event_reminder_3_type, mReminder3Type)
}
private fun updateReminderTypeText(view: MyTextView, type: Int) {
val text = getString(if (type == REMINDER_NOTIFICATION) R.string.notification else R.string.email)
view.text = text
}
private fun updateRepetitionText() {
@ -765,10 +830,22 @@ class EventActivity : SimpleActivity() {
"$CALDAV-$mEventCalendarId"
}
val reminders = sortedSetOf(mReminder1Minutes, mReminder2Minutes, mReminder3Minutes).filter { it != REMINDER_OFF }
val reminder1 = reminders.getOrElse(0) { REMINDER_OFF }
val reminder2 = reminders.getOrElse(1) { REMINDER_OFF }
val reminder3 = reminders.getOrElse(2) { REMINDER_OFF }
val reminders = LinkedHashMap<Int, Int>().apply {
put(mReminder1Minutes, mReminder1Type)
put(mReminder2Minutes, mReminder2Type)
put(mReminder3Minutes, mReminder3Type)
}
val sortedReminders = reminders.toSortedMap().filter { it.key != REMINDER_OFF }
val keys = sortedReminders.keys.toList()
val reminder1 = keys.getOrElse(0) { REMINDER_OFF }
val reminder2 = keys.getOrElse(1) { REMINDER_OFF }
val reminder3 = keys.getOrElse(2) { REMINDER_OFF }
val types = sortedReminders.values.toList()
mReminder1Type = types.getOrElse(0) { REMINDER_NOTIFICATION }
mReminder2Type = types.getOrElse(1) { REMINDER_NOTIFICATION }
mReminder3Type = types.getOrElse(2) { REMINDER_NOTIFICATION }
config.apply {
if (usePreviousEventReminders) {
@ -786,6 +863,9 @@ class EventActivity : SimpleActivity() {
reminder1Minutes = reminder1
reminder2Minutes = reminder2
reminder3Minutes = reminder3
reminder1Type = mReminder1Type
reminder2Type = mReminder2Type
reminder3Type = mReminder3Type
repeatInterval = mRepeatInterval
importId = newImportId
flags = mEvent.flags.addBitIf(event_all_day.isChecked, FLAG_ALL_DAY)

View File

@ -187,11 +187,27 @@
android:layout_height="wrap_content"
android:layout_below="@+id/event_date_time_divider"
android:layout_marginStart="@dimen/small_margin"
android:layout_toStartOf="@+id/event_reminder_1_type"
android:layout_toEndOf="@+id/event_reminder_image"
android:background="?attr/selectableItemBackground"
android:ellipsize="end"
android:lines="1"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin"
android:textSize="@dimen/day_text_size"/>
android:textSize="@dimen/day_text_size"
tools:text="@string/add_another_reminder"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/event_reminder_1_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/event_date_time_divider"
android:layout_alignParentEnd="true"
android:layout_marginStart="@dimen/small_margin"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:textSize="@dimen/day_text_size"
tools:text="@string/notification"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/event_reminder_2"
@ -199,13 +215,29 @@
android:layout_height="wrap_content"
android:layout_below="@+id/event_reminder_1"
android:layout_alignStart="@+id/event_reminder_1"
android:layout_toStartOf="@+id/event_reminder_2_type"
android:alpha="0.4"
android:background="?attr/selectableItemBackground"
android:ellipsize="end"
android:lines="1"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin"
android:text="@string/add_another_reminder"
android:textSize="@dimen/day_text_size"
android:visibility="gone"/>
android:visibility="gone"
tools:text="@string/add_another_reminder"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/event_reminder_2_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/event_reminder_1"
android:layout_alignParentEnd="true"
android:layout_marginStart="@dimen/small_margin"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:textSize="@dimen/day_text_size"
tools:text="@string/notification"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/event_reminder_3"
@ -213,13 +245,29 @@
android:layout_height="wrap_content"
android:layout_below="@+id/event_reminder_2"
android:layout_alignStart="@+id/event_reminder_1"
android:layout_toStartOf="@+id/event_reminder_3_type"
android:alpha="0.4"
android:background="?attr/selectableItemBackground"
android:ellipsize="end"
android:lines="1"
android:paddingTop="@dimen/activity_margin"
android:paddingBottom="@dimen/activity_margin"
android:text="@string/add_another_reminder"
android:textSize="@dimen/day_text_size"
android:visibility="gone"/>
android:visibility="gone"
tools:text="@string/add_another_reminder"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/event_reminder_3_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/event_reminder_2"
android:layout_alignParentEnd="true"
android:layout_marginStart="@dimen/small_margin"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:textSize="@dimen/day_text_size"
tools:text="@string/notification"/>
<ImageView
android:id="@+id/event_reminder_divider"
@ -253,7 +301,8 @@
android:background="?attr/selectableItemBackground"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:textSize="@dimen/day_text_size"/>
android:textSize="@dimen/day_text_size"
tools:text="@string/no_repetition"/>
<RelativeLayout
android:id="@+id/event_repetition_rule_holder"