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 0d95e84d0..6040e93e6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt @@ -509,8 +509,15 @@ class EventActivity : SimpleActivity(), DBHelper.EventUpdateListener { com.google.api.services.calendar.model.Event().apply { summary = mEvent.title description = mEvent.description - start = EventDateTime().setDateTime(com.google.api.client.util.DateTime(mEvent.startTS * 1000L)) - end = EventDateTime().setDateTime(com.google.api.client.util.DateTime(mEvent.endTS * 1000L)) + + if (mEvent.getIsAllDay()) { + start = EventDateTime().setDate(com.google.api.client.util.DateTime(true, mEvent.startTS * 1000L, null)) + end = EventDateTime().setDate(com.google.api.client.util.DateTime(true, (mEvent.endTS + DAY) * 1000L, null)) + } else { + start = EventDateTime().setDateTime(com.google.api.client.util.DateTime(mEvent.startTS * 1000L)) + end = EventDateTime().setDateTime(com.google.api.client.util.DateTime(mEvent.endTS * 1000L)) + } + status = CONFIRMED.toLowerCase() recurrence = listOf(Parser().getShortRepeatInterval(mEvent)) reminders = getEventReminders() 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 3d0760a42..300fcad12 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt @@ -119,7 +119,7 @@ class DayEventsAdapter(val activity: SimpleActivity, val mItems: List, va itemView.apply { event_item_title.text = event.title event_item_description.text = event.description - event_item_start.text = if (event.isAllDay) allDayString else Formatter.getTimeFromTS(context, event.startTS) + event_item_start.text = if (event.getIsAllDay()) allDayString else Formatter.getTimeFromTS(context, event.startTS) event_item_end.beInvisibleIf(event.startTS == event.endTS) toggleItemSelection(this, markedItems.contains(pos), pos) @@ -130,12 +130,12 @@ class DayEventsAdapter(val activity: SimpleActivity, val mItems: List, va event_item_end.apply { text = Formatter.getTimeFromTS(context, event.endTS) if (startCode != endCode) { - if (event.isAllDay) { + if (event.getIsAllDay()) { text = Formatter.getDateFromCode(context, endCode, true) } else { append(" (${Formatter.getDateFromCode(context, endCode, true)})") } - } else if (event.isAllDay) { + } else if (event.getIsAllDay()) { beInvisible() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListWidgetAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListWidgetAdapter.kt index 31788558c..1207582ab 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListWidgetAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListWidgetAdapter.kt @@ -119,7 +119,7 @@ class EventListWidgetAdapter(val context: Context, val intent: Intent) : RemoteV listItems.add(ListSection(day)) prevCode = code } - listItems.add(ListEvent(it.id, it.startTS, it.endTS, it.title, it.description, it.isAllDay)) + listItems.add(ListEvent(it.id, it.startTS, it.endTS, it.title, it.description, it.getIsAllDay())) } this@EventListWidgetAdapter.events = listItems diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/asynctasks/FetchGoogleEventsTask.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/asynctasks/FetchGoogleEventsTask.kt index 91b550bad..df6cffb26 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/asynctasks/FetchGoogleEventsTask.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/asynctasks/FetchGoogleEventsTask.kt @@ -123,7 +123,7 @@ class FetchGoogleEventsTask(val activity: Activity, val googleSyncListener: Goog reminders.getOrElse(1, { -1 }), reminders.getOrElse(2, { -1 }), repeatRule.repeatInterval, importId, flags, repeatRule.repeatLimit, repeatRule.repeatRule, eventTypeId, lastUpdated = lastUpdate, source = SOURCE_GOOGLE_SYNC) - if (event.isAllDay && endTS > startTS) { + if (event.getIsAllDay() && endTS > startTS) { event.endTS -= DAY } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt index 8102e0336..a5150f7f8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt @@ -176,7 +176,7 @@ fun Context.notifyEvent(event: Event) { val pendingIntent = getPendingIntent(this, event) val startTime = Formatter.getTimeFromTS(this, event.startTS) val endTime = Formatter.getTimeFromTS(this, event.endTS) - val timeRange = if (event.isAllDay) getString(R.string.all_day) else getFormattedEventTime(startTime, endTime) + val timeRange = if (event.getIsAllDay()) getString(R.string.all_day) else getFormattedEventTime(startTime, endTime) val notification = getNotification(this, pendingIntent, event, "$timeRange ${event.description}") val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.notify(event.id, notification) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/EventListFragment.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/EventListFragment.kt index af2522b51..164acb053 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/EventListFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/EventListFragment.kt @@ -80,7 +80,7 @@ class EventListFragment : Fragment(), DBHelper.EventUpdateListener, DeleteEvents listItems.add(ListSection(day)) prevCode = code } - listItems.add(ListEvent(it.id, it.startTS, it.endTS, it.title, it.description, it.isAllDay)) + listItems.add(ListEvent(it.id, it.startTS, it.endTS, it.title, it.description, it.getIsAllDay())) } val eventsAdapter = EventListAdapter(activity as SimpleActivity, listItems, this) { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/WeekFragment.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/WeekFragment.kt index bdc3db30d..08aef0ad0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/WeekFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/fragments/WeekFragment.kt @@ -246,7 +246,7 @@ class WeekFragment : Fragment(), WeeklyCalendar { var hadAllDayEvent = false val sorted = filtered.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description })) for (event in sorted) { - if (event.isAllDay || Formatter.getDayCodeFromTS(event.startTS) != Formatter.getDayCodeFromTS(event.endTS)) { + if (event.getIsAllDay() || Formatter.getDayCodeFromTS(event.startTS) != Formatter.getDayCodeFromTS(event.endTS)) { hadAllDayEvent = true addAllDayEvent(event) } else { 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 de583d3a6..9d66c543f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt @@ -543,7 +543,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont } } - if (event.isAllDay) { + if (event.getIsAllDay()) { if (event.repeatInterval.isXWeeklyRepetition()) { if (event.startTS.isTsOnProperDay(event)) { if (isOnProperWeek(event, startTimes)) { @@ -579,7 +579,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont } else { if (event.endTS >= fromTS) { events.add(event.copy()) - } else if (event.isAllDay) { + } else if (event.getIsAllDay()) { val dayCode = Formatter.getDayCodeFromTS(fromTS) val endDayCode = Formatter.getDayCodeFromTS(event.endTS) if (dayCode == endDayCode) { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsExporter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsExporter.kt index 488f294c3..eddecbb5b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsExporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsExporter.kt @@ -29,7 +29,7 @@ class IcsExporter { event.eventType.let { out.writeLn("$CATEGORIES${activity.dbHelper.getEventType(it)?.title}") } event.lastUpdated.let { out.writeLn("$LAST_MODIFIED:${Formatter.getExportedTime(it)}") } - if (event.isAllDay) { + if (event.getIsAllDay()) { out.writeLn("$DTSTART;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.startTS)}") out.writeLn("$DTEND;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.endTS + DAY)}") } else { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsImporter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsImporter.kt index 373fa9075..863e75e52 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsImporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsImporter.kt @@ -101,7 +101,7 @@ class IcsImporter { curImportId, curFlags, curRepeatLimit, curRepeatRule, curEventType, lastUpdated = curLastModified, source = SOURCE_IMPORTED_ICS) - if (event.isAllDay && curEnd > curStart) { + if (event.getIsAllDay() && curEnd > curStart) { event.endTS -= DAY } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/models/Event.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/models/Event.kt index 72e366342..712d822d8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/models/Event.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/models/Event.kt @@ -92,13 +92,13 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var return addedProperOrder } - val isAllDay = flags and FLAG_ALL_DAY != 0 + fun getIsAllDay() = flags and FLAG_ALL_DAY != 0 fun getReminders() = setOf(reminder1Minutes, reminder2Minutes, reminder3Minutes).filter { it != REMINDER_OFF } // properly return the start time of all-day events as midnight fun getEventStartTS(): Int { - return if (isAllDay) { + return if (getIsAllDay()) { Formatter.getDateTimeFromTS(startTS).withTime(0, 0, 0, 0).seconds() } else { startTS