mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-03-06 04:17:41 +01:00
addnig a new TimeZone column to events
This commit is contained in:
parent
479b73d181
commit
6b79dac671
@ -39,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_event.*
|
||||
import kotlinx.android.synthetic.main.activity_event.view.*
|
||||
import kotlinx.android.synthetic.main.item_attendee.view.*
|
||||
import org.joda.time.DateTime
|
||||
import org.joda.time.DateTimeZone
|
||||
import java.util.*
|
||||
import java.util.regex.Pattern
|
||||
import kotlin.collections.ArrayList
|
||||
@ -951,6 +952,7 @@ class EventActivity : SimpleActivity() {
|
||||
reminder3Type = mReminder3Type
|
||||
repeatInterval = mRepeatInterval
|
||||
importId = newImportId
|
||||
timeZone = DateTimeZone.getDefault().id
|
||||
flags = mEvent.flags.addBitIf(event_all_day.isChecked, FLAG_ALL_DAY)
|
||||
repeatLimit = if (repeatInterval == 0) 0 else mRepeatLimit
|
||||
repeatRule = mRepeatRule
|
||||
|
@ -46,6 +46,7 @@ import com.simplemobiletools.commons.models.RadioItem
|
||||
import com.simplemobiletools.commons.models.Release
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
import org.joda.time.DateTime
|
||||
import org.joda.time.DateTimeZone
|
||||
import java.io.FileOutputStream
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
@ -578,8 +579,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||
val source = if (birthdays) SOURCE_CONTACT_BIRTHDAY else SOURCE_CONTACT_ANNIVERSARY
|
||||
val lastUpdated = cursor.getLongValue(ContactsContract.CommonDataKinds.Event.CONTACT_LAST_UPDATED_TIMESTAMP)
|
||||
val event = Event(null, timestamp, timestamp, name, reminder1Minutes = reminders[0], reminder2Minutes = reminders[1],
|
||||
reminder3Minutes = reminders[2], importId = contactId, flags = FLAG_ALL_DAY, repeatInterval = YEAR, repeatRule = REPEAT_SAME_DAY,
|
||||
eventType = eventTypeId, source = source, lastUpdated = lastUpdated)
|
||||
reminder3Minutes = reminders[2], importId = contactId, timeZone = DateTimeZone.getDefault().id, flags = FLAG_ALL_DAY,
|
||||
repeatInterval = YEAR, repeatRule = REPEAT_SAME_DAY, eventType = eventTypeId, source = source, lastUpdated = lastUpdated)
|
||||
|
||||
val importIDsToDelete = ArrayList<String>()
|
||||
for ((key, value) in importIDs) {
|
||||
|
@ -17,7 +17,7 @@ import com.simplemobiletools.calendar.pro.models.Event
|
||||
import com.simplemobiletools.calendar.pro.models.EventType
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
@Database(entities = [Event::class, EventType::class], version = 2)
|
||||
@Database(entities = [Event::class, EventType::class], version = 3)
|
||||
@TypeConverters(Converters::class)
|
||||
abstract class EventsDatabase : RoomDatabase() {
|
||||
|
||||
@ -40,6 +40,7 @@ abstract class EventsDatabase : RoomDatabase() {
|
||||
}
|
||||
})
|
||||
.addMigrations(MIGRATION_1_2)
|
||||
.addMigrations(MIGRATION_2_3)
|
||||
.build()
|
||||
db!!.openHelper.setWriteAheadLoggingEnabled(true)
|
||||
}
|
||||
@ -71,5 +72,13 @@ abstract class EventsDatabase : RoomDatabase() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val MIGRATION_2_3 = object : Migration(2, 3) {
|
||||
override fun migrate(database: SupportSQLiteDatabase) {
|
||||
database.apply {
|
||||
execSQL("ALTER TABLE events ADD COLUMN time_zone TEXT NOT NULL DEFAULT ''")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -187,6 +187,8 @@ class CalDAVHelper(val context: Context) {
|
||||
CalendarContract.Events.ORIGINAL_ID,
|
||||
CalendarContract.Events.ORIGINAL_INSTANCE_TIME,
|
||||
CalendarContract.Events.EVENT_LOCATION,
|
||||
CalendarContract.Events.EVENT_TIMEZONE,
|
||||
CalendarContract.Events.CALENDAR_TIME_ZONE,
|
||||
CalendarContract.Events.DELETED)
|
||||
|
||||
val selection = "${CalendarContract.Events.CALENDAR_ID} = $calendarId"
|
||||
@ -222,13 +224,16 @@ class CalDAVHelper(val context: Context) {
|
||||
val reminder2 = reminders.getOrNull(1)
|
||||
val reminder3 = reminders.getOrNull(2)
|
||||
val importId = getCalDAVEventImportId(calendarId, id)
|
||||
val eventTimeZone = cursor.getStringValue(CalendarContract.Events.EVENT_TIMEZONE)
|
||||
?: cursor.getStringValue(CalendarContract.Events.CALENDAR_TIME_ZONE) ?: DateTimeZone.getDefault().id
|
||||
|
||||
val source = "$CALDAV-$calendarId"
|
||||
val repeatRule = Parser().parseRepeatInterval(rrule, startTS)
|
||||
val event = Event(null, startTS, endTS, title, location, description, reminder1?.minutes ?: REMINDER_OFF,
|
||||
reminder2?.minutes ?: REMINDER_OFF, reminder3?.minutes ?: REMINDER_OFF, reminder1?.type
|
||||
?: REMINDER_NOTIFICATION, reminder2?.type ?: REMINDER_NOTIFICATION, reminder3?.type
|
||||
?: REMINDER_NOTIFICATION, repeatRule.repeatInterval, repeatRule.repeatRule,
|
||||
repeatRule.repeatLimit, ArrayList(), attendees, importId, allDay, eventTypeId, source = source)
|
||||
repeatRule.repeatLimit, ArrayList(), attendees, importId, eventTimeZone, allDay, eventTypeId, source = source)
|
||||
|
||||
if (event.getIsAllDay()) {
|
||||
event.startTS = Formatter.getShiftedImportTimestamp(event.startTS)
|
||||
|
@ -174,7 +174,7 @@ class IcsImporter(val activity: SimpleActivity) {
|
||||
val source = if (calDAVCalendarId == 0 || eventType?.isSyncedEventType() == false) SOURCE_IMPORTED_ICS else "$CALDAV-$calDAVCalendarId"
|
||||
val event = Event(null, curStart, curEnd, curTitle, curLocation, curDescription, reminders[0].minutes,
|
||||
reminders[1].minutes, reminders[2].minutes, reminders[0].type, reminders[1].type, reminders[2].type, curRepeatInterval, curRepeatRule,
|
||||
curRepeatLimit, curRepeatExceptions, "", curImportId, curFlags, curEventTypeId, 0, curLastModified, source)
|
||||
curRepeatLimit, curRepeatExceptions, "", curImportId, "", curFlags, curEventTypeId, 0, curLastModified, source)
|
||||
|
||||
if (event.getIsAllDay() && curEnd > curStart) {
|
||||
event.endTS -= DAY
|
||||
|
@ -31,6 +31,7 @@ data class Event(
|
||||
@ColumnInfo(name = "repetition_exceptions") var repetitionExceptions: ArrayList<String> = ArrayList(),
|
||||
@ColumnInfo(name = "attendees") var attendees: String = "",
|
||||
@ColumnInfo(name = "import_id") var importId: String = "",
|
||||
@ColumnInfo(name = "time_zone") var timeZone: String = "",
|
||||
@ColumnInfo(name = "flags") var flags: Int = 0,
|
||||
@ColumnInfo(name = "event_type") var eventType: Long = REGULAR_EVENT_TYPE_ID,
|
||||
@ColumnInfo(name = "parent_id") var parentId: Long = 0,
|
||||
|
Loading…
x
Reference in New Issue
Block a user