diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt index 038bbf74f..0dff42737 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt @@ -144,6 +144,7 @@ class TaskActivity : SimpleActivity() { config.lastUsedLocalEventTypeId = mEventTypeId mTask.apply { startTS = mTaskDateTime.withSecondOfMinute(0).withMillisOfSecond(0).seconds() + endTS = startTS title = newTitle description = task_description.value flags = mTask.flags.addBitIf(task_all_day.isChecked, FLAG_ALL_DAY) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/EventsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/EventsHelper.kt index 16e108557..03534218b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/EventsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/EventsHelper.kt @@ -294,6 +294,8 @@ class EventsHelper(val context: Context) { events.addAll(getRepeatableEventsFor(fromTS, toTS, eventId, applyTypeFilter)) + events.addAll(eventsDB.getTasksFromTo(fromTS, toTS)) + events = events .asSequence() .distinct() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/EventsDao.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/EventsDao.kt index 5c19ea063..c0af83cce 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/EventsDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/EventsDao.kt @@ -4,9 +4,7 @@ import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.simplemobiletools.calendar.pro.helpers.REGULAR_EVENT_TYPE_ID -import com.simplemobiletools.calendar.pro.helpers.SOURCE_CONTACT_ANNIVERSARY -import com.simplemobiletools.calendar.pro.helpers.SOURCE_CONTACT_BIRTHDAY +import com.simplemobiletools.calendar.pro.helpers.* import com.simplemobiletools.calendar.pro.models.Event @Dao @@ -14,95 +12,98 @@ interface EventsDao { @Query("SELECT * FROM events") fun getAllEvents(): List - @Query("SELECT * FROM events WHERE event_type IN (:eventTypeIds)") + @Query("SELECT * FROM events WHERE event_type IN (:eventTypeIds) AND type = $TYPE_EVENT") fun getAllEventsWithTypes(eventTypeIds: List): List - @Query("SELECT * FROM events WHERE id = :id") + @Query("SELECT * FROM events WHERE id = :id AND type = $TYPE_EVENT") fun getEventWithId(id: Long): Event? - @Query("SELECT * FROM events WHERE import_id = :importId") + @Query("SELECT * FROM events WHERE import_id = :importId AND type = $TYPE_EVENT") fun getEventWithImportId(importId: String): Event? - @Query("SELECT * FROM events WHERE start_ts <= :toTS AND end_ts >= :fromTS AND repeat_interval = 0") + @Query("SELECT * FROM events WHERE start_ts <= :toTS AND end_ts >= :fromTS AND repeat_interval = 0 AND type = $TYPE_EVENT") fun getOneTimeEventsFromTo(toTS: Long, fromTS: Long): List - @Query("SELECT * FROM events WHERE id = :id AND start_ts <= :toTS AND end_ts >= :fromTS AND repeat_interval = 0") + @Query("SELECT * FROM events WHERE start_ts <= :toTS AND start_ts >= :fromTS AND type = $TYPE_TASK") + fun getTasksFromTo(fromTS: Long, toTS: Long): List + + @Query("SELECT * FROM events WHERE id = :id AND start_ts <= :toTS AND end_ts >= :fromTS AND repeat_interval = 0 AND type = $TYPE_EVENT") fun getOneTimeEventFromToWithId(id: Long, toTS: Long, fromTS: Long): List - @Query("SELECT * FROM events WHERE start_ts <= :toTS AND end_ts >= :fromTS AND start_ts != 0 AND repeat_interval = 0 AND event_type IN (:eventTypeIds)") + @Query("SELECT * FROM events WHERE start_ts <= :toTS AND end_ts >= :fromTS AND start_ts != 0 AND repeat_interval = 0 AND event_type IN (:eventTypeIds) AND type = $TYPE_EVENT") fun getOneTimeEventsFromToWithTypes(toTS: Long, fromTS: Long, eventTypeIds: List): List - @Query("SELECT * FROM events WHERE end_ts > :toTS AND repeat_interval = 0 AND event_type IN (:eventTypeIds)") + @Query("SELECT * FROM events WHERE end_ts > :toTS AND repeat_interval = 0 AND event_type IN (:eventTypeIds) AND type = $TYPE_EVENT") fun getOneTimeFutureEventsWithTypes(toTS: Long, eventTypeIds: List): List - @Query("SELECT * FROM events WHERE start_ts <= :toTS AND repeat_interval != 0") + @Query("SELECT * FROM events WHERE start_ts <= :toTS AND repeat_interval != 0 AND type = $TYPE_EVENT") fun getRepeatableEventsFromToWithTypes(toTS: Long): List - @Query("SELECT * FROM events WHERE id = :id AND start_ts <= :toTS AND repeat_interval != 0") + @Query("SELECT * FROM events WHERE id = :id AND start_ts <= :toTS AND repeat_interval != 0 AND type = $TYPE_EVENT") fun getRepeatableEventFromToWithId(id: Long, toTS: Long): List - @Query("SELECT * FROM events WHERE start_ts <= :toTS AND start_ts != 0 AND repeat_interval != 0 AND event_type IN (:eventTypeIds)") + @Query("SELECT * FROM events WHERE start_ts <= :toTS AND start_ts != 0 AND repeat_interval != 0 AND event_type IN (:eventTypeIds) AND type = $TYPE_EVENT") fun getRepeatableEventsFromToWithTypes(toTS: Long, eventTypeIds: List): List - @Query("SELECT * FROM events WHERE repeat_interval != 0 AND (repeat_limit == 0 OR repeat_limit > :currTS) AND event_type IN (:eventTypeIds)") + @Query("SELECT * FROM events WHERE repeat_interval != 0 AND (repeat_limit == 0 OR repeat_limit > :currTS) AND event_type IN (:eventTypeIds) AND type = $TYPE_EVENT") fun getRepeatableFutureEventsWithTypes(currTS: Long, eventTypeIds: List): List - @Query("SELECT * FROM events WHERE id IN (:ids) AND import_id != \"\"") + @Query("SELECT * FROM events WHERE id IN (:ids) AND import_id != \"\" AND type = $TYPE_EVENT") fun getEventsByIdsWithImportIds(ids: List): List - @Query("SELECT * FROM events WHERE title LIKE :searchQuery OR location LIKE :searchQuery OR description LIKE :searchQuery") + @Query("SELECT * FROM events WHERE title LIKE :searchQuery OR location LIKE :searchQuery OR description LIKE :searchQuery AND type = $TYPE_EVENT") fun getEventsForSearch(searchQuery: String): List - @Query("SELECT * FROM events WHERE source = \'$SOURCE_CONTACT_BIRTHDAY\'") + @Query("SELECT * FROM events WHERE source = \'$SOURCE_CONTACT_BIRTHDAY\' AND type = $TYPE_EVENT") fun getBirthdays(): List - @Query("SELECT * FROM events WHERE source = \'$SOURCE_CONTACT_ANNIVERSARY\'") + @Query("SELECT * FROM events WHERE source = \'$SOURCE_CONTACT_ANNIVERSARY\' AND type = $TYPE_EVENT") fun getAnniversaries(): List - @Query("SELECT * FROM events WHERE import_id != \"\"") + @Query("SELECT * FROM events WHERE import_id != \"\" AND type = $TYPE_EVENT") fun getEventsWithImportIds(): List - @Query("SELECT * FROM events WHERE source = :source") + @Query("SELECT * FROM events WHERE source = :source AND type = $TYPE_EVENT") fun getEventsFromCalDAVCalendar(source: String): List - @Query("SELECT * FROM events WHERE id IN (:ids)") + @Query("SELECT * FROM events WHERE id IN (:ids) AND type = $TYPE_EVENT") fun getEventsWithIds(ids: List): List //val selection = "$COL_REMINDER_MINUTES != -1 AND ($COL_START_TS > ? OR $COL_REPEAT_INTERVAL != 0) AND $COL_START_TS != 0" - @Query("SELECT * FROM events WHERE reminder_1_minutes != -1 AND (start_ts > :currentTS OR repeat_interval != 0) AND start_ts != 0") + @Query("SELECT * FROM events WHERE reminder_1_minutes != -1 AND (start_ts > :currentTS OR repeat_interval != 0) AND start_ts != 0 AND type = $TYPE_EVENT") fun getEventsAtReboot(currentTS: Long): List @Query("SELECT id FROM events") fun getEventIds(): List - @Query("SELECT id FROM events WHERE import_id = :importId") + @Query("SELECT id FROM events WHERE import_id = :importId AND type = $TYPE_EVENT") fun getEventIdWithImportId(importId: String): Long? - @Query("SELECT id FROM events WHERE import_id LIKE :importId") + @Query("SELECT id FROM events WHERE import_id LIKE :importId AND type = $TYPE_EVENT") fun getEventIdWithLastImportId(importId: String): Long? - @Query("SELECT id FROM events WHERE event_type = :eventTypeId") + @Query("SELECT id FROM events WHERE event_type = :eventTypeId AND type = $TYPE_EVENT") fun getEventIdsByEventType(eventTypeId: Long): List - @Query("SELECT id FROM events WHERE event_type IN (:eventTypeIds)") + @Query("SELECT id FROM events WHERE event_type IN (:eventTypeIds) AND type = $TYPE_EVENT") fun getEventIdsByEventType(eventTypeIds: List): List - @Query("SELECT id FROM events WHERE parent_id IN (:parentIds)") + @Query("SELECT id FROM events WHERE parent_id IN (:parentIds) AND type = $TYPE_EVENT") fun getEventIdsWithParentIds(parentIds: List): List - @Query("SELECT id FROM events WHERE source = :source AND import_id != \"\"") + @Query("SELECT id FROM events WHERE source = :source AND import_id != \"\" AND type = $TYPE_EVENT") fun getCalDAVCalendarEvents(source: String): List - @Query("UPDATE events SET event_type = $REGULAR_EVENT_TYPE_ID WHERE event_type = :eventTypeId") + @Query("UPDATE events SET event_type = $REGULAR_EVENT_TYPE_ID WHERE event_type = :eventTypeId AND type = $TYPE_EVENT") fun resetEventsWithType(eventTypeId: Long) - @Query("UPDATE events SET import_id = :importId, source = :source WHERE id = :id") + @Query("UPDATE events SET import_id = :importId, source = :source WHERE id = :id AND type = $TYPE_EVENT") fun updateEventImportIdAndSource(importId: String, source: String, id: Long) - @Query("UPDATE events SET repeat_limit = :repeatLimit WHERE id = :id") + @Query("UPDATE events SET repeat_limit = :repeatLimit WHERE id = :id AND type = $TYPE_EVENT") fun updateEventRepetitionLimit(repeatLimit: Long, id: Long) - @Query("UPDATE events SET repetition_exceptions = :repetitionExceptions WHERE id = :id") + @Query("UPDATE events SET repetition_exceptions = :repetitionExceptions WHERE id = :id AND type = $TYPE_EVENT") fun updateEventRepetitionExceptions(repetitionExceptions: String, id: Long) @Insert(onConflict = OnConflictStrategy.REPLACE)