diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt index f2bc8cdc6..5192677ec 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt @@ -563,10 +563,12 @@ class EventActivity : SimpleActivity() { private fun deleteEvent() { DeleteEventDialog(this, arrayListOf(mEvent.id)) { - if (it) { - dbHelper.deleteEvents(arrayOf(mEvent.id.toString()), true) - } else { - dbHelper.addEventRepeatException(mEvent.id, mEventOccurrenceTS, true) + when (it) { + DELETE_SELECTED_OCCURRENCE -> dbHelper.addEventRepeatException(mEvent.id, mEventOccurrenceTS, true) + DELETE_FUTURE_OCCURRENCES -> { + + } + DELETE_ALL_OCCURRENCES -> dbHelper.deleteEvents(arrayOf(mEvent.id.toString()), true) } finish() } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt index 97e005249..a3e19e0e1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt @@ -9,8 +9,7 @@ import com.simplemobiletools.calendar.dialogs.DeleteEventDialog import com.simplemobiletools.calendar.extensions.config import com.simplemobiletools.calendar.extensions.dbHelper import com.simplemobiletools.calendar.extensions.shareEvents -import com.simplemobiletools.calendar.helpers.Formatter -import com.simplemobiletools.calendar.helpers.LOW_ALPHA +import com.simplemobiletools.calendar.helpers.* import com.simplemobiletools.calendar.models.Event import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.extensions.adjustAlpha @@ -123,12 +122,18 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList, r } events.removeAll(eventsToDelete) - if (it) { - val eventIDs = Array(eventIds.size, { i -> (eventIds[i].toString()) }) - activity.dbHelper.deleteEvents(eventIDs, true) - } else { - eventIds.forEachIndexed { index, value -> - activity.dbHelper.addEventRepeatException(value, timestamps[index], true) + when (it) { + DELETE_SELECTED_OCCURRENCE -> { + eventIds.forEachIndexed { index, value -> + activity.dbHelper.addEventRepeatException(value, timestamps[index], true) + } + } + DELETE_FUTURE_OCCURRENCES -> { + + } + DELETE_ALL_OCCURRENCES -> { + val eventIDs = Array(eventIds.size, { i -> (eventIds[i].toString()) }) + activity.dbHelper.deleteEvents(eventIDs, true) } } removeSelectedItems() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListAdapter.kt index 350165dde..dbeec802a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListAdapter.kt @@ -9,9 +9,8 @@ import com.simplemobiletools.calendar.dialogs.DeleteEventDialog import com.simplemobiletools.calendar.extensions.config import com.simplemobiletools.calendar.extensions.dbHelper import com.simplemobiletools.calendar.extensions.shareEvents +import com.simplemobiletools.calendar.helpers.* import com.simplemobiletools.calendar.helpers.Formatter -import com.simplemobiletools.calendar.helpers.LOW_ALPHA -import com.simplemobiletools.calendar.helpers.getNowSeconds import com.simplemobiletools.calendar.models.ListEvent import com.simplemobiletools.calendar.models.ListItem import com.simplemobiletools.calendar.models.ListSection @@ -219,12 +218,18 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList (eventIds[i].toString()) }) - activity.dbHelper.deleteEvents(eventIDs, true) - } else { - eventIds.forEachIndexed { index, value -> - activity.dbHelper.addEventRepeatException(value, timestamps[index], true) + when (it) { + DELETE_SELECTED_OCCURRENCE -> { + eventIds.forEachIndexed { index, value -> + activity.dbHelper.addEventRepeatException(value, timestamps[index], true) + } + } + DELETE_FUTURE_OCCURRENCES -> { + + } + DELETE_ALL_OCCURRENCES -> { + val eventIDs = Array(eventIds.size, { i -> (eventIds[i].toString()) }) + activity.dbHelper.deleteEvents(eventIDs, true) } } listener?.refreshItems() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/dialogs/DeleteEventDialog.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/dialogs/DeleteEventDialog.kt index 5c88fc256..c1545b0d5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/dialogs/DeleteEventDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/dialogs/DeleteEventDialog.kt @@ -5,11 +5,14 @@ import android.support.v7.app.AlertDialog import android.view.ViewGroup import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.extensions.dbHelper +import com.simplemobiletools.calendar.helpers.DELETE_ALL_OCCURRENCES +import com.simplemobiletools.calendar.helpers.DELETE_FUTURE_OCCURRENCES +import com.simplemobiletools.calendar.helpers.DELETE_SELECTED_OCCURRENCE import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.setupDialogStuff import kotlinx.android.synthetic.main.dialog_delete_event.view.* -class DeleteEventDialog(val activity: Activity, eventIds: List, val callback: (allOccurrences: Boolean) -> Unit) { +class DeleteEventDialog(val activity: Activity, eventIds: List, val callback: (deleteRule: Int) -> Unit) { val dialog: AlertDialog? init { @@ -26,16 +29,20 @@ class DeleteEventDialog(val activity: Activity, eventIds: List, val callbac } dialog = AlertDialog.Builder(activity) - .setPositiveButton(R.string.yes, { dialog, which -> dialogConfirmed(view as ViewGroup, hasRepeatableEvent) }) + .setPositiveButton(R.string.yes, { dialog, which -> dialogConfirmed(view as ViewGroup) }) .setNegativeButton(R.string.no, null) .create().apply { activity.setupDialogStuff(view, this) } } - private fun dialogConfirmed(view: ViewGroup, hasRepeatableEvent: Boolean) { - val deleteAllOccurrences = !hasRepeatableEvent || view.delete_event_radio_view.checkedRadioButtonId == R.id.delete_event_all + private fun dialogConfirmed(view: ViewGroup) { + val deleteRule = when (view.delete_event_radio_view.checkedRadioButtonId) { + R.id.delete_event_all -> DELETE_ALL_OCCURRENCES + R.id.delete_event_future -> DELETE_FUTURE_OCCURRENCES + else -> DELETE_SELECTED_OCCURRENCE + } dialog?.dismiss() - callback(deleteAllOccurrences) + callback(deleteRule) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt index 40503685c..cfcf35e2f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt @@ -125,4 +125,8 @@ const val SOURCE_IMPORTED_ICS = "imported-ics" const val SOURCE_CONTACT_BIRTHDAY = "contact-birthday" const val SOURCE_CONTACT_ANNIVERSARY = "contact-anniversary" +const val DELETE_SELECTED_OCCURRENCE = 0 +const val DELETE_FUTURE_OCCURRENCES = 1 +const val DELETE_ALL_OCCURRENCES = 2 + fun getNowSeconds() = (System.currentTimeMillis() / 1000).toInt() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt index e43e3e275..c84a05fe8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt @@ -559,8 +559,9 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont val deletedSet = HashSet() deleteIds.map { deletedSet.add(it.toString()) } context.config.removeDisplayEventTypes(deletedSet) - if (deleteIds.isEmpty()) + if (deleteIds.isEmpty()) { return + } for (eventTypeId in deleteIds) { if (deleteEvents) {