Loading .gitlab-ci.yml +1 −1 Original line number Diff line number Diff line image: registry.gitlab.com/bitfireat/davdroid:latest image: registry.gitlab.com/bitfireat/davx5-ose:latest before_script: - export GRADLE_USER_HOME=`pwd`/.gradle; chmod +x gradlew Loading build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ apply plugin: 'kotlin-android' apply plugin: 'org.jetbrains.dokka-android' ext { ical4j_version = '2.2.1' ical4j_version = '2.2.3' } android { Loading src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt +11 −11 Original line number Diff line number Diff line Loading @@ -80,17 +80,17 @@ class AndroidEventTest { fun testAddEvent() { // build and write recurring event to calendar provider val event = Event() event.uid = ("sample1@testAddEvent") event.summary = ("Sample event") event.description = ("Sample event with date/time") event.location = ("Sample location") event.dtStart = (DtStart("20150501T120000", tzVienna)) event.dtEnd = (DtEnd("20150501T130000", tzVienna)) event.organizer = (Organizer(URI("mailto:organizer@example.com"))) event.rRule = (RRule("FREQ=DAILY;COUNT=10")) event.classification = (Clazz.PRIVATE) event.status = (Status.VEVENT_CONFIRMED) event.color = (EventColor.aliceblue) event.uid = "sample1@testAddEvent" event.summary = "Sample event" event.description = "Sample event with date/time" event.location = "Sample location" event.dtStart = DtStart("20150501T120000", tzVienna) event.dtEnd = DtEnd("20150501T130000", tzVienna) event.organizer = Organizer(URI("mailto:organizer@example.com")) event.rRule = RRule("FREQ=DAILY;COUNT=10") event.classification = Clazz.PRIVATE event.status = Status.VEVENT_CONFIRMED event.color = Css3Color.aliceblue assertFalse(event.isAllDay()) // TODO test rDates, exDate, duration Loading src/main/java/at/bitfire/ical4android/AndroidCalendar.kt +3 −3 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ abstract class AndroidCalendar<out T: AndroidEvent>( fun insertColors(provider: ContentProviderClient, account: Account) { provider.query(syncAdapterURI(Colors.CONTENT_URI, account), arrayOf(Colors.COLOR_KEY), null, null, null)?.use { cursor -> if (cursor.count == EventColor.values().size) if (cursor.count == Css3Color.values().size) // colors already inserted and up to date return } Loading @@ -60,9 +60,9 @@ abstract class AndroidCalendar<out T: AndroidEvent>( values.put(CalendarContract.Colors.ACCOUNT_NAME, account.name) values.put(CalendarContract.Colors.ACCOUNT_TYPE, account.type) values.put(Colors.COLOR_TYPE, Colors.TYPE_EVENT) for (color in EventColor.values()) { for (color in Css3Color.values()) { values.put(Colors.COLOR_KEY, color.name) values.put(Colors.COLOR, color.rgba) values.put(Colors.COLOR, color.argb) provider.insert(syncAdapterURI(Colors.CONTENT_URI, account), values) } } Loading src/main/java/at/bitfire/ical4android/AndroidEvent.kt +10 −7 Original line number Diff line number Diff line Loading @@ -53,6 +53,9 @@ abstract class AndroidEvent( const val EXT_UNKNOWN_PROPERTY = "unknown-property" const val MAX_UNKNOWN_PROPERTY_SIZE = 25000 // not declared in ical4j Parameters class yet private const val PARAMETER_EMAIL = "EMAIL" } var id: Long? = null Loading Loading @@ -144,7 +147,7 @@ abstract class AndroidEvent( row.getAsString(Events.EVENT_COLOR_KEY)?.let { name -> try { event.color = EventColor.valueOf(name) event.color = Css3Color.valueOf(name) } catch(e: IllegalArgumentException) { Constants.log.warning("Ignoring unknown color $name from Calendar Provider") } Loading Loading @@ -258,7 +261,7 @@ abstract class AndroidEvent( if (idNS != null || id != null) { // attendee identified by namespace and ID attendee = Attendee(URI(idNS, id, null)) email?.let { attendee.parameters.add(ICalendar.Email(it)) } email?.let { attendee.parameters.add(Email(it)) } } else // attendee identified by email address attendee = Attendee(URI("mailto", email, null)) Loading Loading @@ -581,7 +584,7 @@ abstract class AndroidEvent( email = if (uri.scheme.equals("mailto", true)) uri.schemeSpecificPart else { val emailParam = organizer.getParameter(ICalendar.Email.PARAMETER_NAME) as ICalendar.Email? val emailParam = organizer.getParameter(PARAMETER_EMAIL) as? Email emailParam?.value } if (email != null) Loading Loading @@ -639,7 +642,7 @@ abstract class AndroidEvent( // attendee identified by other URI builder .withValue(Attendees.ATTENDEE_ID_NAMESPACE, member.scheme) .withValue(Attendees.ATTENDEE_IDENTITY, member.schemeSpecificPart) (attendee.getParameter(ICalendar.Email.PARAMETER_NAME) as ICalendar.Email?)?.let { email -> (attendee.getParameter(PARAMETER_EMAIL) as? Email)?.let { email -> builder.withValue(Attendees.ATTENDEE_EMAIL, email.value) } } Loading @@ -649,13 +652,13 @@ abstract class AndroidEvent( } var type = Attendees.TYPE_NONE val cutype = attendee.getParameter(Parameter.CUTYPE) as CuType? val cutype = attendee.getParameter(Parameter.CUTYPE) as? CuType if (cutype in arrayOf(CuType.RESOURCE, CuType.ROOM)) // "attendee" is a (physical) resource type = Attendees.TYPE_RESOURCE else { // attendee is not a (physical) resource val role = attendee.getParameter(Parameter.ROLE) as Role? val role = attendee.getParameter(Parameter.ROLE) as? Role val relationship: Int if (role == Role.CHAIR) relationship = Attendees.RELATIONSHIP_ORGANIZER Loading @@ -669,7 +672,7 @@ abstract class AndroidEvent( builder.withValue(Attendees.ATTENDEE_RELATIONSHIP, relationship) } val partStat = attendee.getParameter(Parameter.PARTSTAT) as PartStat? val partStat = attendee.getParameter(Parameter.PARTSTAT) as? PartStat val status = when(partStat) { null, PartStat.NEEDS_ACTION -> Attendees.ATTENDEE_STATUS_INVITED Loading Loading
.gitlab-ci.yml +1 −1 Original line number Diff line number Diff line image: registry.gitlab.com/bitfireat/davdroid:latest image: registry.gitlab.com/bitfireat/davx5-ose:latest before_script: - export GRADLE_USER_HOME=`pwd`/.gradle; chmod +x gradlew Loading
build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ apply plugin: 'kotlin-android' apply plugin: 'org.jetbrains.dokka-android' ext { ical4j_version = '2.2.1' ical4j_version = '2.2.3' } android { Loading
src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt +11 −11 Original line number Diff line number Diff line Loading @@ -80,17 +80,17 @@ class AndroidEventTest { fun testAddEvent() { // build and write recurring event to calendar provider val event = Event() event.uid = ("sample1@testAddEvent") event.summary = ("Sample event") event.description = ("Sample event with date/time") event.location = ("Sample location") event.dtStart = (DtStart("20150501T120000", tzVienna)) event.dtEnd = (DtEnd("20150501T130000", tzVienna)) event.organizer = (Organizer(URI("mailto:organizer@example.com"))) event.rRule = (RRule("FREQ=DAILY;COUNT=10")) event.classification = (Clazz.PRIVATE) event.status = (Status.VEVENT_CONFIRMED) event.color = (EventColor.aliceblue) event.uid = "sample1@testAddEvent" event.summary = "Sample event" event.description = "Sample event with date/time" event.location = "Sample location" event.dtStart = DtStart("20150501T120000", tzVienna) event.dtEnd = DtEnd("20150501T130000", tzVienna) event.organizer = Organizer(URI("mailto:organizer@example.com")) event.rRule = RRule("FREQ=DAILY;COUNT=10") event.classification = Clazz.PRIVATE event.status = Status.VEVENT_CONFIRMED event.color = Css3Color.aliceblue assertFalse(event.isAllDay()) // TODO test rDates, exDate, duration Loading
src/main/java/at/bitfire/ical4android/AndroidCalendar.kt +3 −3 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ abstract class AndroidCalendar<out T: AndroidEvent>( fun insertColors(provider: ContentProviderClient, account: Account) { provider.query(syncAdapterURI(Colors.CONTENT_URI, account), arrayOf(Colors.COLOR_KEY), null, null, null)?.use { cursor -> if (cursor.count == EventColor.values().size) if (cursor.count == Css3Color.values().size) // colors already inserted and up to date return } Loading @@ -60,9 +60,9 @@ abstract class AndroidCalendar<out T: AndroidEvent>( values.put(CalendarContract.Colors.ACCOUNT_NAME, account.name) values.put(CalendarContract.Colors.ACCOUNT_TYPE, account.type) values.put(Colors.COLOR_TYPE, Colors.TYPE_EVENT) for (color in EventColor.values()) { for (color in Css3Color.values()) { values.put(Colors.COLOR_KEY, color.name) values.put(Colors.COLOR, color.rgba) values.put(Colors.COLOR, color.argb) provider.insert(syncAdapterURI(Colors.CONTENT_URI, account), values) } } Loading
src/main/java/at/bitfire/ical4android/AndroidEvent.kt +10 −7 Original line number Diff line number Diff line Loading @@ -53,6 +53,9 @@ abstract class AndroidEvent( const val EXT_UNKNOWN_PROPERTY = "unknown-property" const val MAX_UNKNOWN_PROPERTY_SIZE = 25000 // not declared in ical4j Parameters class yet private const val PARAMETER_EMAIL = "EMAIL" } var id: Long? = null Loading Loading @@ -144,7 +147,7 @@ abstract class AndroidEvent( row.getAsString(Events.EVENT_COLOR_KEY)?.let { name -> try { event.color = EventColor.valueOf(name) event.color = Css3Color.valueOf(name) } catch(e: IllegalArgumentException) { Constants.log.warning("Ignoring unknown color $name from Calendar Provider") } Loading Loading @@ -258,7 +261,7 @@ abstract class AndroidEvent( if (idNS != null || id != null) { // attendee identified by namespace and ID attendee = Attendee(URI(idNS, id, null)) email?.let { attendee.parameters.add(ICalendar.Email(it)) } email?.let { attendee.parameters.add(Email(it)) } } else // attendee identified by email address attendee = Attendee(URI("mailto", email, null)) Loading Loading @@ -581,7 +584,7 @@ abstract class AndroidEvent( email = if (uri.scheme.equals("mailto", true)) uri.schemeSpecificPart else { val emailParam = organizer.getParameter(ICalendar.Email.PARAMETER_NAME) as ICalendar.Email? val emailParam = organizer.getParameter(PARAMETER_EMAIL) as? Email emailParam?.value } if (email != null) Loading Loading @@ -639,7 +642,7 @@ abstract class AndroidEvent( // attendee identified by other URI builder .withValue(Attendees.ATTENDEE_ID_NAMESPACE, member.scheme) .withValue(Attendees.ATTENDEE_IDENTITY, member.schemeSpecificPart) (attendee.getParameter(ICalendar.Email.PARAMETER_NAME) as ICalendar.Email?)?.let { email -> (attendee.getParameter(PARAMETER_EMAIL) as? Email)?.let { email -> builder.withValue(Attendees.ATTENDEE_EMAIL, email.value) } } Loading @@ -649,13 +652,13 @@ abstract class AndroidEvent( } var type = Attendees.TYPE_NONE val cutype = attendee.getParameter(Parameter.CUTYPE) as CuType? val cutype = attendee.getParameter(Parameter.CUTYPE) as? CuType if (cutype in arrayOf(CuType.RESOURCE, CuType.ROOM)) // "attendee" is a (physical) resource type = Attendees.TYPE_RESOURCE else { // attendee is not a (physical) resource val role = attendee.getParameter(Parameter.ROLE) as Role? val role = attendee.getParameter(Parameter.ROLE) as? Role val relationship: Int if (role == Role.CHAIR) relationship = Attendees.RELATIONSHIP_ORGANIZER Loading @@ -669,7 +672,7 @@ abstract class AndroidEvent( builder.withValue(Attendees.ATTENDEE_RELATIONSHIP, relationship) } val partStat = attendee.getParameter(Parameter.PARTSTAT) as PartStat? val partStat = attendee.getParameter(Parameter.PARTSTAT) as? PartStat val status = when(partStat) { null, PartStat.NEEDS_ACTION -> Attendees.ATTENDEE_STATUS_INVITED Loading