From c457bb36b5a7c33ffab329a5c9e77e246e6440af Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 13 Mar 2019 15:39:42 +0100 Subject: [PATCH] make more use of Attendees model class --- .../calendar/pro/activities/EventActivity.kt | 29 ++++++++++++------- .../calendar/pro/databases/EventsDatabase.kt | 2 +- .../calendar/pro/helpers/CalDAVHelper.kt | 4 ++- .../calendar/pro/helpers/IcsImporter.kt | 2 +- .../calendar/pro/models/Event.kt | 2 +- 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt index 1ad0f5910..35fb59513 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt @@ -12,15 +12,14 @@ import android.view.WindowManager import android.widget.ImageView import android.widget.RelativeLayout import androidx.core.app.NotificationManagerCompat +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.dialogs.* import com.simplemobiletools.calendar.pro.extensions.* import com.simplemobiletools.calendar.pro.helpers.* import com.simplemobiletools.calendar.pro.helpers.Formatter -import com.simplemobiletools.calendar.pro.models.CalDAVCalendar -import com.simplemobiletools.calendar.pro.models.Event -import com.simplemobiletools.calendar.pro.models.EventType -import com.simplemobiletools.calendar.pro.models.Reminder +import com.simplemobiletools.calendar.pro.models.* import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.* @@ -67,6 +66,7 @@ class EventActivity : SimpleActivity() { private var mEventOccurrenceTS = 0L private var mEventCalendarId = STORED_LOCALLY_ONLY private var mWasActivityInitialized = false + private var mAttendees = ArrayList() private var mAttendeeViews = ArrayList() private lateinit var mEventStartDateTime: DateTime @@ -238,7 +238,7 @@ class EventActivity : SimpleActivity() { putInt(REPEAT_RULE, mRepeatRule) putLong(REPEAT_LIMIT, mRepeatLimit) - putStringArrayList(ATTENDEES, getAllAttendees()) + putString(ATTENDEES, getAllAttendees()) putLong(EVENT_TYPE_ID, mEventTypeId) putInt(EVENT_CALENDAR_ID, mEventCalendarId) @@ -269,7 +269,8 @@ class EventActivity : SimpleActivity() { mRepeatRule = getInt(REPEAT_RULE) mRepeatLimit = getLong(REPEAT_LIMIT) - mEvent.attendees = getStringArrayList(ATTENDEES) as ArrayList + mAttendees = Gson().fromJson>(getString(ATTENDEES), object : TypeToken>() {}.type) + ?: ArrayList() mEventTypeId = getLong(EVENT_TYPE_ID) mEventCalendarId = getInt(EVENT_CALENDAR_ID) @@ -313,6 +314,7 @@ class EventActivity : SimpleActivity() { mRepeatRule = mEvent.repeatRule mEventTypeId = mEvent.eventType mEventCalendarId = mEvent.getCalDAVCalendarId() + mAttendees = Gson().fromJson>(mEvent.attendees, object : TypeToken>() {}.type) ?: ArrayList() checkRepeatTexts(mRepeatInterval) } @@ -892,7 +894,7 @@ class EventActivity : SimpleActivity() { flags = mEvent.flags.addBitIf(event_all_day.isChecked, FLAG_ALL_DAY) repeatLimit = if (repeatInterval == 0) 0 else mRepeatLimit repeatRule = mRepeatRule - attendees = if (mEventCalendarId == STORED_LOCALLY_ONLY) ArrayList() else getAllAttendees() + attendees = if (mEventCalendarId == STORED_LOCALLY_ONLY) "" else getAllAttendees() eventType = newEventType lastUpdated = System.currentTimeMillis() source = newSource @@ -1109,8 +1111,8 @@ class EventActivity : SimpleActivity() { } private fun updateAttendees() { - mEvent.attendees.forEach { - addAttendee(it) + mAttendees.forEach { + addAttendee(it.getPublicName()) } addAttendee() @@ -1140,7 +1142,14 @@ class EventActivity : SimpleActivity() { } } - private fun getAllAttendees() = mAttendeeViews.map { it.value }.filter { it.isNotEmpty() }.toMutableList() as ArrayList + private fun getAllAttendees(): String { + val attendeeEmails = mAttendeeViews.map { it.value }.filter { it.isNotEmpty() }.toMutableList() as ArrayList + val attendees = ArrayList() + attendeeEmails.mapTo(attendees) { + Attendee("", it, 0) + } + return Gson().toJson(attendees) + } private fun updateIconColors() { val textColor = config.textColor diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/databases/EventsDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/databases/EventsDatabase.kt index 19f0a72f0..19440190c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/databases/EventsDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/databases/EventsDatabase.kt @@ -67,7 +67,7 @@ abstract class EventsDatabase : RoomDatabase() { execSQL("ALTER TABLE events ADD COLUMN reminder_1_type INTEGER NOT NULL DEFAULT 0") execSQL("ALTER TABLE events ADD COLUMN reminder_2_type INTEGER NOT NULL DEFAULT 0") execSQL("ALTER TABLE events ADD COLUMN reminder_3_type INTEGER NOT NULL DEFAULT 0") - execSQL("ALTER TABLE events ADD COLUMN attendees TEXT NOT NULL DEFAULT '[]'") + execSQL("ALTER TABLE events ADD COLUMN attendees TEXT NOT NULL DEFAULT ''") } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/CalDAVHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/CalDAVHelper.kt index 65f1a4980..81a1174f8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/CalDAVHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/CalDAVHelper.kt @@ -8,6 +8,7 @@ import android.database.Cursor import android.provider.CalendarContract import android.provider.CalendarContract.Reminders import android.util.SparseIntArray +import com.google.gson.Gson import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.extensions.* import com.simplemobiletools.calendar.pro.models.* @@ -203,6 +204,7 @@ class CalDAVHelper(val context: Context) { val originalId = cursor.getStringValue(CalendarContract.Events.ORIGINAL_ID) val originalInstanceTime = cursor.getLongValue(CalendarContract.Events.ORIGINAL_INSTANCE_TIME) val reminders = getCalDAVEventReminders(id) + val attendees = Gson().toJson(getCalDAVEventAttendees(id)) if (endTS == 0L) { val duration = cursor.getStringValue(CalendarContract.Events.DURATION) ?: "" @@ -219,7 +221,7 @@ class CalDAVHelper(val context: Context) { 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(), ArrayList(), importId, allDay, eventTypeId, source = source) + repeatRule.repeatLimit, ArrayList(), attendees, importId, allDay, eventTypeId, source = source) if (event.getIsAllDay()) { event.startTS = Formatter.getShiftedImportTimestamp(event.startTS) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/IcsImporter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/IcsImporter.kt index d9e8506f2..c834bb5dd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/IcsImporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/IcsImporter.kt @@ -166,7 +166,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, ArrayList(), curImportId, curFlags, curEventTypeId, 0, curLastModified, source) + curRepeatLimit, curRepeatExceptions, "", curImportId, curFlags, curEventTypeId, 0, curLastModified, source) if (event.getIsAllDay() && curEnd > curStart) { event.endTS -= DAY diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt index 842eb6d46..72c2dd1f7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt @@ -29,7 +29,7 @@ data class Event( @ColumnInfo(name = "repeat_rule") var repeatRule: Int = 0, @ColumnInfo(name = "repeat_limit") var repeatLimit: Long = 0L, @ColumnInfo(name = "repetition_exceptions") var repetitionExceptions: ArrayList = ArrayList(), - @ColumnInfo(name = "attendees") var attendees: ArrayList = ArrayList(), + @ColumnInfo(name = "attendees") var attendees: String = "", @ColumnInfo(name = "import_id") var importId: String = "", @ColumnInfo(name = "flags") var flags: Int = 0, @ColumnInfo(name = "event_type") var eventType: Long = REGULAR_EVENT_TYPE_ID,