mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
use proper start and end date at all-day events
This commit is contained in:
@@ -509,8 +509,15 @@ class EventActivity : SimpleActivity(), DBHelper.EventUpdateListener {
|
|||||||
com.google.api.services.calendar.model.Event().apply {
|
com.google.api.services.calendar.model.Event().apply {
|
||||||
summary = mEvent.title
|
summary = mEvent.title
|
||||||
description = mEvent.description
|
description = mEvent.description
|
||||||
|
|
||||||
|
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))
|
start = EventDateTime().setDateTime(com.google.api.client.util.DateTime(mEvent.startTS * 1000L))
|
||||||
end = EventDateTime().setDateTime(com.google.api.client.util.DateTime(mEvent.endTS * 1000L))
|
end = EventDateTime().setDateTime(com.google.api.client.util.DateTime(mEvent.endTS * 1000L))
|
||||||
|
}
|
||||||
|
|
||||||
status = CONFIRMED.toLowerCase()
|
status = CONFIRMED.toLowerCase()
|
||||||
recurrence = listOf(Parser().getShortRepeatInterval(mEvent))
|
recurrence = listOf(Parser().getShortRepeatInterval(mEvent))
|
||||||
reminders = getEventReminders()
|
reminders = getEventReminders()
|
||||||
|
@@ -119,7 +119,7 @@ class DayEventsAdapter(val activity: SimpleActivity, val mItems: List<Event>, va
|
|||||||
itemView.apply {
|
itemView.apply {
|
||||||
event_item_title.text = event.title
|
event_item_title.text = event.title
|
||||||
event_item_description.text = event.description
|
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)
|
event_item_end.beInvisibleIf(event.startTS == event.endTS)
|
||||||
toggleItemSelection(this, markedItems.contains(pos), pos)
|
toggleItemSelection(this, markedItems.contains(pos), pos)
|
||||||
|
|
||||||
@@ -130,12 +130,12 @@ class DayEventsAdapter(val activity: SimpleActivity, val mItems: List<Event>, va
|
|||||||
event_item_end.apply {
|
event_item_end.apply {
|
||||||
text = Formatter.getTimeFromTS(context, event.endTS)
|
text = Formatter.getTimeFromTS(context, event.endTS)
|
||||||
if (startCode != endCode) {
|
if (startCode != endCode) {
|
||||||
if (event.isAllDay) {
|
if (event.getIsAllDay()) {
|
||||||
text = Formatter.getDateFromCode(context, endCode, true)
|
text = Formatter.getDateFromCode(context, endCode, true)
|
||||||
} else {
|
} else {
|
||||||
append(" (${Formatter.getDateFromCode(context, endCode, true)})")
|
append(" (${Formatter.getDateFromCode(context, endCode, true)})")
|
||||||
}
|
}
|
||||||
} else if (event.isAllDay) {
|
} else if (event.getIsAllDay()) {
|
||||||
beInvisible()
|
beInvisible()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -119,7 +119,7 @@ class EventListWidgetAdapter(val context: Context, val intent: Intent) : RemoteV
|
|||||||
listItems.add(ListSection(day))
|
listItems.add(ListSection(day))
|
||||||
prevCode = code
|
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
|
this@EventListWidgetAdapter.events = listItems
|
||||||
|
@@ -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,
|
reminders.getOrElse(1, { -1 }), reminders.getOrElse(2, { -1 }), repeatRule.repeatInterval, importId, flags, repeatRule.repeatLimit,
|
||||||
repeatRule.repeatRule, eventTypeId, lastUpdated = lastUpdate, source = SOURCE_GOOGLE_SYNC)
|
repeatRule.repeatRule, eventTypeId, lastUpdated = lastUpdate, source = SOURCE_GOOGLE_SYNC)
|
||||||
|
|
||||||
if (event.isAllDay && endTS > startTS) {
|
if (event.getIsAllDay() && endTS > startTS) {
|
||||||
event.endTS -= DAY
|
event.endTS -= DAY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -176,7 +176,7 @@ fun Context.notifyEvent(event: Event) {
|
|||||||
val pendingIntent = getPendingIntent(this, event)
|
val pendingIntent = getPendingIntent(this, event)
|
||||||
val startTime = Formatter.getTimeFromTS(this, event.startTS)
|
val startTime = Formatter.getTimeFromTS(this, event.startTS)
|
||||||
val endTime = Formatter.getTimeFromTS(this, event.endTS)
|
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 notification = getNotification(this, pendingIntent, event, "$timeRange ${event.description}")
|
||||||
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
notificationManager.notify(event.id, notification)
|
notificationManager.notify(event.id, notification)
|
||||||
|
@@ -80,7 +80,7 @@ class EventListFragment : Fragment(), DBHelper.EventUpdateListener, DeleteEvents
|
|||||||
listItems.add(ListSection(day))
|
listItems.add(ListSection(day))
|
||||||
prevCode = code
|
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) {
|
val eventsAdapter = EventListAdapter(activity as SimpleActivity, listItems, this) {
|
||||||
|
@@ -246,7 +246,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
var hadAllDayEvent = false
|
var hadAllDayEvent = false
|
||||||
val sorted = filtered.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description }))
|
val sorted = filtered.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description }))
|
||||||
for (event in sorted) {
|
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
|
hadAllDayEvent = true
|
||||||
addAllDayEvent(event)
|
addAllDayEvent(event)
|
||||||
} else {
|
} else {
|
||||||
|
@@ -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.repeatInterval.isXWeeklyRepetition()) {
|
||||||
if (event.startTS.isTsOnProperDay(event)) {
|
if (event.startTS.isTsOnProperDay(event)) {
|
||||||
if (isOnProperWeek(event, startTimes)) {
|
if (isOnProperWeek(event, startTimes)) {
|
||||||
@@ -579,7 +579,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
} else {
|
} else {
|
||||||
if (event.endTS >= fromTS) {
|
if (event.endTS >= fromTS) {
|
||||||
events.add(event.copy())
|
events.add(event.copy())
|
||||||
} else if (event.isAllDay) {
|
} else if (event.getIsAllDay()) {
|
||||||
val dayCode = Formatter.getDayCodeFromTS(fromTS)
|
val dayCode = Formatter.getDayCodeFromTS(fromTS)
|
||||||
val endDayCode = Formatter.getDayCodeFromTS(event.endTS)
|
val endDayCode = Formatter.getDayCodeFromTS(event.endTS)
|
||||||
if (dayCode == endDayCode) {
|
if (dayCode == endDayCode) {
|
||||||
|
@@ -29,7 +29,7 @@ class IcsExporter {
|
|||||||
event.eventType.let { out.writeLn("$CATEGORIES${activity.dbHelper.getEventType(it)?.title}") }
|
event.eventType.let { out.writeLn("$CATEGORIES${activity.dbHelper.getEventType(it)?.title}") }
|
||||||
event.lastUpdated.let { out.writeLn("$LAST_MODIFIED:${Formatter.getExportedTime(it)}") }
|
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("$DTSTART;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.startTS)}")
|
||||||
out.writeLn("$DTEND;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.endTS + DAY)}")
|
out.writeLn("$DTEND;$VALUE=$DATE:${Formatter.getDayCodeFromTS(event.endTS + DAY)}")
|
||||||
} else {
|
} else {
|
||||||
|
@@ -101,7 +101,7 @@ class IcsImporter {
|
|||||||
curImportId, curFlags, curRepeatLimit, curRepeatRule, curEventType, lastUpdated = curLastModified,
|
curImportId, curFlags, curRepeatLimit, curRepeatRule, curEventType, lastUpdated = curLastModified,
|
||||||
source = SOURCE_IMPORTED_ICS)
|
source = SOURCE_IMPORTED_ICS)
|
||||||
|
|
||||||
if (event.isAllDay && curEnd > curStart) {
|
if (event.getIsAllDay() && curEnd > curStart) {
|
||||||
event.endTS -= DAY
|
event.endTS -= DAY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -92,13 +92,13 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var
|
|||||||
return addedProperOrder
|
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 }
|
fun getReminders() = setOf(reminder1Minutes, reminder2Minutes, reminder3Minutes).filter { it != REMINDER_OFF }
|
||||||
|
|
||||||
// properly return the start time of all-day events as midnight
|
// properly return the start time of all-day events as midnight
|
||||||
fun getEventStartTS(): Int {
|
fun getEventStartTS(): Int {
|
||||||
return if (isAllDay) {
|
return if (getIsAllDay()) {
|
||||||
Formatter.getDateTimeFromTS(startTS).withTime(0, 0, 0, 0).seconds()
|
Formatter.getDateTimeFromTS(startTS).withTime(0, 0, 0, 0).seconds()
|
||||||
} else {
|
} else {
|
||||||
startTS
|
startTS
|
||||||
|
Reference in New Issue
Block a user