mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-02-17 12:20:51 +01:00
do not allow deleting event types belonging to caldav calendars
This commit is contained in:
parent
91aeeee2bc
commit
aa9adaa236
@ -492,7 +492,7 @@ class EventActivity : SimpleActivity(), DBHelper.EventUpdateListener {
|
||||
val oldSource = mEvent.source
|
||||
val newImportId = if (mEvent.id != 0) mEvent.importId else UUID.randomUUID().toString().replace("-", "") + System.currentTimeMillis().toString()
|
||||
|
||||
val newEventType = if (!config.caldavSync || config.lastUsedCaldavCalendar == 0) mEventTypeId else dbHelper.getEventTypeIdWithCalDAVCalendarId(config.lastUsedCaldavCalendar)
|
||||
val newEventType = if (!config.caldavSync || config.lastUsedCaldavCalendar == 0) mEventTypeId else dbHelper.getEventTypeWithCalDAVCalendarId(config.lastUsedCaldavCalendar)!!.id
|
||||
val newSource = if (!config.caldavSync || config.lastUsedCaldavCalendar == 0) SOURCE_SIMPLE_CALENDAR else "$CALDAV-${config.lastUsedCaldavCalendar}"
|
||||
|
||||
val reminders = sortedSetOf(mReminder1Minutes, mReminder2Minutes, mReminder3Minutes).filter { it != REMINDER_OFF }
|
||||
|
@ -53,12 +53,16 @@ class ManageEventTypesActivity : SimpleActivity(), DeleteEventTypesListener {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun deleteEventTypes(ids: ArrayList<Int>, deleteEvents: Boolean) {
|
||||
if (ids.contains(DBHelper.REGULAR_EVENT_TYPE_ID)) {
|
||||
override fun deleteEventTypes(eventTypes: ArrayList<EventType>, deleteEvents: Boolean) {
|
||||
if (eventTypes.map { it.id }.contains(DBHelper.REGULAR_EVENT_TYPE_ID)) {
|
||||
toast(R.string.cannot_delete_default_type)
|
||||
}
|
||||
|
||||
dbHelper.deleteEventTypes(ids, deleteEvents) {
|
||||
if (eventTypes.any { it.caldavCalendarId != 0 }) {
|
||||
toast(R.string.unsync_caldav_calendar)
|
||||
}
|
||||
|
||||
dbHelper.deleteEventTypes(eventTypes, deleteEvents) {
|
||||
if (it > 0) {
|
||||
getEventTypes()
|
||||
} else {
|
||||
|
@ -156,8 +156,9 @@ class SettingsActivity : SimpleActivity() {
|
||||
|
||||
oldCalendarIds.filter { !newCalendarIds.contains(it) }.forEach {
|
||||
CalDAVHandler(applicationContext).deleteCalDAVCalendarEvents(it.toLong())
|
||||
val eventId = dbHelper.getEventTypeIdWithCalDAVCalendarId(it.toInt())
|
||||
dbHelper.deleteEventTypes(arrayListOf(eventId), true) {}
|
||||
dbHelper.getEventTypeWithCalDAVCalendarId(it.toInt())?.apply {
|
||||
dbHelper.deleteEventTypes(arrayListOf(this), true) {}
|
||||
}
|
||||
}
|
||||
}).start()
|
||||
}
|
||||
|
@ -71,10 +71,10 @@ class EventTypeAdapter(val activity: SimpleActivity, val mItems: List<EventType>
|
||||
|
||||
private fun askConfirmDelete() {
|
||||
val selections = multiSelector.selectedPositions
|
||||
val ids = ArrayList<Int>(selections.size)
|
||||
selections.forEach { ids.add((mItems[it]).id) }
|
||||
val eventTypes = ArrayList<EventType>(selections.size)
|
||||
selections.forEach { eventTypes.add(mItems[it]) }
|
||||
|
||||
if (activity.dbHelper.doEventTypesContainEvent(ids)) {
|
||||
if (activity.dbHelper.doEventTypesContainEvent(eventTypes)) {
|
||||
val MOVE_EVENTS = 0
|
||||
val DELETE_EVENTS = 1
|
||||
val res = activity.resources
|
||||
@ -84,15 +84,15 @@ class EventTypeAdapter(val activity: SimpleActivity, val mItems: List<EventType>
|
||||
}
|
||||
RadioGroupDialog(activity, items, -1) {
|
||||
actMode?.finish()
|
||||
deleteEventTypes(it == DELETE_EVENTS, ids)
|
||||
deleteEventTypes(it == DELETE_EVENTS, eventTypes)
|
||||
}
|
||||
} else {
|
||||
deleteEventTypes(true, ids)
|
||||
deleteEventTypes(true, eventTypes)
|
||||
}
|
||||
}
|
||||
|
||||
private fun deleteEventTypes(deleteEvents: Boolean, ids: ArrayList<Int>) {
|
||||
listener?.deleteEventTypes(ids, deleteEvents)
|
||||
private fun deleteEventTypes(deleteEvents: Boolean, eventTypes: ArrayList<EventType>) {
|
||||
listener?.deleteEventTypes(eventTypes, deleteEvents)
|
||||
actMode?.finish()
|
||||
}
|
||||
|
||||
|
@ -24,15 +24,13 @@ class CalDAVHandler(val context: Context) {
|
||||
fun refreshCalendars(callback: () -> Unit) {
|
||||
val dbHelper = context.dbHelper
|
||||
getCalDAVCalendars(context.config.caldavSyncedCalendarIDs).forEach {
|
||||
val localEventTypeId = dbHelper.getEventTypeIdWithCalDAVCalendarId(it.id)
|
||||
if (localEventTypeId != -1) {
|
||||
dbHelper.getEventType(localEventTypeId)?.apply {
|
||||
title = it.displayName
|
||||
caldavDisplayName = it.displayName
|
||||
caldavEmail = it.accountName
|
||||
color = it.color
|
||||
dbHelper.updateLocalEventType(this)
|
||||
}
|
||||
val localEventType = dbHelper.getEventTypeWithCalDAVCalendarId(it.id)
|
||||
localEventType?.apply {
|
||||
title = it.displayName
|
||||
caldavDisplayName = it.displayName
|
||||
caldavEmail = it.accountName
|
||||
color = it.color
|
||||
dbHelper.updateLocalEventType(this)
|
||||
}
|
||||
|
||||
val eventTypeId = dbHelper.getEventTypeIdWithTitle(it.getFullTitle())
|
||||
|
@ -345,7 +345,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||
return -1
|
||||
}
|
||||
|
||||
fun getEventTypeIdWithCalDAVCalendarId(calendarId: Int): Int {
|
||||
fun getEventTypeWithCalDAVCalendarId(calendarId: Int): EventType? {
|
||||
val cols = arrayOf(COL_TYPE_ID)
|
||||
val selection = "$COL_TYPE_CALDAV_CALENDAR_ID = ?"
|
||||
val selectionArgs = arrayOf(calendarId.toString())
|
||||
@ -353,12 +353,12 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||
try {
|
||||
cursor = mDb.query(TYPES_TABLE_NAME, cols, selection, selectionArgs, null, null, null)
|
||||
if (cursor?.moveToFirst() == true) {
|
||||
return cursor.getIntValue(COL_TYPE_ID)
|
||||
return getEventType(cursor.getIntValue(COL_TYPE_ID))
|
||||
}
|
||||
} finally {
|
||||
cursor?.close()
|
||||
}
|
||||
return -1
|
||||
return null
|
||||
}
|
||||
|
||||
fun getEventType(id: Int): EventType? {
|
||||
@ -446,10 +446,9 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteEventTypes(ids: ArrayList<Int>, deleteEvents: Boolean, callback: (deletedCnt: Int) -> Unit) {
|
||||
var deleteIds = ids
|
||||
if (ids.contains(DBHelper.REGULAR_EVENT_TYPE_ID))
|
||||
deleteIds = ids.filter { it != DBHelper.REGULAR_EVENT_TYPE_ID } as ArrayList<Int>
|
||||
fun deleteEventTypes(eventTypes: ArrayList<EventType>, deleteEvents: Boolean, callback: (deletedCnt: Int) -> Unit) {
|
||||
var deleteIds = eventTypes.filter { it.caldavCalendarId == 0 }.map { it.id }
|
||||
deleteIds = deleteIds.filter { it != DBHelper.REGULAR_EVENT_TYPE_ID } as ArrayList<Int>
|
||||
|
||||
val deletedSet = HashSet<String>()
|
||||
deleteIds.map { deletedSet.add(it.toString()) }
|
||||
@ -827,8 +826,8 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||
return eventTypes
|
||||
}
|
||||
|
||||
fun doEventTypesContainEvent(types: ArrayList<Int>): Boolean {
|
||||
val args = TextUtils.join(", ", types)
|
||||
fun doEventTypesContainEvent(types: ArrayList<EventType>): Boolean {
|
||||
val args = TextUtils.join(", ", types.map { it.id })
|
||||
val columns = arrayOf(COL_ID)
|
||||
val selection = "$COL_EVENT_TYPE IN ($args)"
|
||||
var cursor: Cursor? = null
|
||||
|
@ -1,7 +1,8 @@
|
||||
package com.simplemobiletools.calendar.interfaces
|
||||
|
||||
import com.simplemobiletools.calendar.models.EventType
|
||||
import java.util.*
|
||||
|
||||
interface DeleteEventTypesListener {
|
||||
fun deleteEventTypes(ids: ArrayList<Int>, deleteEvents: Boolean)
|
||||
fun deleteEventTypes(eventTypes: ArrayList<EventType>, deleteEvents: Boolean)
|
||||
}
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Wähle einen Termin Typ</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Seleccione un tipo de evento</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Sélectionner un type d\'evénement</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Select an event type</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Select an event type</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Select an event type</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Select an event type</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Select an event type</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">이벤트 유형 선택</string>
|
||||
<string name="move_events_into_default">영향을 받는 이벤트들을 기본 유형으로 이동</string>
|
||||
<string name="remove_affected_events">영향을 받는 이벤트들을 영구적으로 제거</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">공휴일</string>
|
||||
|
@ -168,6 +168,7 @@
|
||||
<string name="select_event_type">Wybierz typ wydarzenia</string>
|
||||
<string name="move_events_into_default">Przenieś powiązane wydarzenia do domyślnego typu wydarzeń</string>
|
||||
<string name="remove_affected_events">Usuń nieodwracalnie powiązane wydarzenia</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Święta</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Selecione um tipo de evento</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Selecione um tipo de evento</string>
|
||||
<string name="move_events_into_default">Mover eventos afetados para o tipo de evento padrão</string>
|
||||
<string name="remove_affected_events">Remover permanentemente os eventos afetados</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Feriados</string>
|
||||
|
@ -177,6 +177,7 @@
|
||||
<string name="select_event_type">Выбрать тип события</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Праздники</string>
|
||||
|
@ -173,6 +173,7 @@
|
||||
<string name="importing_holidays_failed">Importovanie udalostí zlyhalo</string>
|
||||
<string name="move_events_into_default">Presunúť dotknuté udalosti do predvoleného typu udalostí</string>
|
||||
<string name="remove_affected_events">Natrvalo odstrániť dotknuté udalosti</string>
|
||||
<string name="unsync_caldav_calendar">Na odstránenie CalDAV kalendára musíte vypnúť jeho synchronizáciu</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Sviatky</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Välj en händelsetyp</string>
|
||||
<string name="move_events_into_default">Flytta berörda händelser till standardhändelsetypen</string>
|
||||
<string name="remove_affected_events">Ta bort berörda händelser permanent</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Helgdagar</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Bir etkinlik türü seçin</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
@ -163,6 +163,7 @@
|
||||
<string name="select_event_type">Select an event type</string>
|
||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">To remove a CalDAV calendar you have to unsynchronize it</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Holidays</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user