Skip to content

Commit a01d73d

Browse files
authored
Use core library desugaring in JSR310 module (#231)
* Enable core library desugaring in JSR310 module As a consequence, the minSdkVersion for this module has been reduced from 26 to 21. * Address a few compiler warnings
1 parent f85d24b commit a01d73d

File tree

10 files changed

+82
-27
lines changed

10 files changed

+82
-27
lines changed

core/src/main/java/com/alamkanak/weekview/Renderers.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.alamkanak.weekview
22

33
import android.graphics.Canvas
4+
import java.util.Calendar
45

56
internal interface Updater {
67
fun update()
@@ -10,10 +11,14 @@ internal interface Drawer {
1011
fun draw(canvas: Canvas)
1112
}
1213

14+
typealias DateFormatter = (Calendar) -> String
15+
1316
internal interface DateFormatterDependent {
1417
fun onDateFormatterChanged(formatter: DateFormatter)
1518
}
1619

20+
typealias TimeFormatter = (Int) -> String
21+
1722
internal interface TimeFormatterDependent {
1823
fun onTimeFormatterChanged(formatter: TimeFormatter)
1924
}

core/src/main/java/com/alamkanak/weekview/ViewState.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ import kotlin.math.ceil
1313
import kotlin.math.max
1414
import kotlin.math.min
1515

16-
typealias DateFormatter = (Calendar) -> String
17-
typealias TimeFormatter = (Int) -> String
18-
1916
internal class ViewState {
2017

2118
// View

dependencies.gradle

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,36 @@
33
ext {
44
buildConfig = [
55
minSdk : 15,
6-
minSdkJsr310: 26,
6+
minSdkJsr310: 21,
77
compileSdk : 30,
88
targetSdk : 30,
99
]
1010
versions = [
11-
androidxjUnit : '1.1.1',
12-
androidxTestRunner: '1.2.0',
13-
appCompat : '1.1.0',
14-
emoji : '1.1.0',
15-
jodaTime : '2.10.6',
16-
jodaTimeAndroid : '2.10.6',
17-
jUnit : '4.13',
18-
kotlin : '1.4.21',
19-
mockito : '3.3.3',
20-
robolectric : '4.3.1',
21-
startup : '1.0.0',
22-
threeTen : '1.4.4',
23-
threeTenAbp : '1.2.4',
11+
androidxjUnit : '1.1.1',
12+
androidxTestRunner : '1.2.0',
13+
appCompat : '1.1.0',
14+
coreLibraryDesugaring: '1.1.1',
15+
emoji : '1.1.0',
16+
jodaTime : '2.10.6',
17+
jodaTimeAndroid : '2.10.6',
18+
jUnit : '4.13',
19+
kotlin : '1.4.21',
20+
mockito : '3.3.3',
21+
robolectric : '4.3.1',
22+
startup : '1.0.0',
23+
threeTen : '1.4.4',
24+
threeTenAbp : '1.2.4',
2425
]
2526
libraries = [
26-
appCompat : "androidx.appcompat:appcompat:${versions.appCompat}",
27-
emoji : "androidx.emoji:emoji-bundled:${versions.emoji}",
28-
jodaTime : "joda-time:joda-time:${versions.jodaTime}",
29-
jodaTimeAndroid: "net.danlew:android.joda:${versions.jodaTimeAndroid}",
30-
kotlin : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${versions.kotlin}",
31-
startup : "androidx.startup:startup-runtime:${versions.startup}",
32-
threeTen : "org.threeten:threetenbp:${versions.threeTen}",
33-
threeTenAbp : "com.jakewharton.threetenabp:threetenabp:${versions.threeTenAbp}",
27+
appCompat : "androidx.appcompat:appcompat:${versions.appCompat}",
28+
coreLibraryDesugaring: "com.android.tools:desugar_jdk_libs:${versions.coreLibraryDesugaring}",
29+
emoji : "androidx.emoji:emoji-bundled:${versions.emoji}",
30+
jodaTime : "joda-time:joda-time:${versions.jodaTime}",
31+
jodaTimeAndroid : "net.danlew:android.joda:${versions.jodaTimeAndroid}",
32+
kotlin : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${versions.kotlin}",
33+
startup : "androidx.startup:startup-runtime:${versions.startup}",
34+
threeTen : "org.threeten:threetenbp:${versions.threeTen}",
35+
threeTenAbp : "com.jakewharton.threetenabp:threetenabp:${versions.threeTenAbp}",
3436
]
3537
testing = [
3638
androidxjUnit : "androidx.test.ext:junit:${versions.androidxjUnit}",

jodatime/src/main/java/com/alamkanak/weekview/jodatime/JodaTimeAdapters.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alamkanak.weekview.jodatime
22

3+
import com.alamkanak.weekview.PublicApi
34
import com.alamkanak.weekview.WeekView
45
import java.util.Calendar
56
import org.joda.time.LocalDate
@@ -15,6 +16,7 @@ import org.joda.time.LocalDateTime
1516
*
1617
* @param T The type of elements that are displayed in the corresponding [WeekView].
1718
*/
19+
@PublicApi
1820
abstract class WeekViewSimpleAdapterJodaTime<T> : WeekView.SimpleAdapter<T>() {
1921
final override fun onEmptyViewClick(time: Calendar) {
2022
onEmptyViewClick(time.toLocalDateTime())
@@ -67,6 +69,7 @@ abstract class WeekViewSimpleAdapterJodaTime<T> : WeekView.SimpleAdapter<T>() {
6769
*
6870
* @param T The type of elements that are displayed in the corresponding [WeekView].
6971
*/
72+
@PublicApi
7073
abstract class WeekViewPagingAdapterJodaTime<T> : WeekView.PagingAdapter<T>() {
7174

7275
final override fun onEmptyViewClick(time: Calendar) {

jodatime/src/main/java/com/alamkanak/weekview/jodatime/WeekViewExtensions.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
package com.alamkanak.weekview.jodatime
22

3+
import com.alamkanak.weekview.PublicApi
34
import com.alamkanak.weekview.WeekView
45
import com.alamkanak.weekview.WeekViewEntity
56
import org.joda.time.LocalDate
67
import org.joda.time.LocalDateTime
78
import org.joda.time.LocalTime
89

10+
@PublicApi
911
fun <T : Any> WeekViewEntity.Event.Builder<T>.setStartTime(
1012
startTime: LocalDateTime
1113
) = setStartTime(startTime.toCalendar())
1214

15+
@PublicApi
1316
fun <T : Any> WeekViewEntity.Event.Builder<T>.setEndTime(
1417
endTime: LocalDateTime
1518
) = setEndTime(endTime.toCalendar())
1619

20+
@PublicApi
1721
fun WeekViewEntity.BlockedTime.Builder.setStartTime(
1822
startTime: LocalDateTime
1923
) = setStartTime(startTime.toCalendar())
2024

25+
@PublicApi
2126
fun WeekViewEntity.BlockedTime.Builder.setEndTime(
2227
endTime: LocalDateTime
2328
) = setEndTime(endTime.toCalendar())
@@ -26,6 +31,7 @@ fun WeekViewEntity.BlockedTime.Builder.setEndTime(
2631
* Returns the minimum date that [WeekView] will display as a [LocalDate], or null if none is set.
2732
* Events before this date will not be shown.
2833
*/
34+
@PublicApi
2935
var WeekView.minDateAsLocalDate: LocalDate?
3036
get() = minDate?.toLocalDate()
3137
set(value) {
@@ -36,6 +42,7 @@ var WeekView.minDateAsLocalDate: LocalDate?
3642
* Returns the maximum date that [WeekView] will display as a [LocalDate], or null if none is set.
3743
* Events after this date will not be shown.
3844
*/
45+
@PublicApi
3946
var WeekView.maxDateAsLocalDate: LocalDate?
4047
get() = maxDate?.toLocalDate()
4148
set(value) {
@@ -45,12 +52,14 @@ var WeekView.maxDateAsLocalDate: LocalDate?
4552
/**
4653
* Returns the first visible date as a [LocalDate].
4754
*/
55+
@PublicApi
4856
val WeekView.firstVisibleDateAsLocalDate: LocalDate
4957
get() = firstVisibleDate.toLocalDate()
5058

5159
/**
5260
* Returns the last visible date as a [LocalDate].
5361
*/
62+
@PublicApi
5463
val WeekView.lastVisibleDateAsLocalDate: LocalDate
5564
get() = lastVisibleDate.toLocalDate()
5665

@@ -74,6 +83,7 @@ fun WeekView.goToDate(date: LocalDate) {
7483
*
7584
* @param date The [LocalDate] to scroll to.
7685
*/
86+
@PublicApi
7787
fun WeekView.scrollToDate(date: LocalDate) {
7888
scrollToDate(date.toCalendar())
7989
}
@@ -85,6 +95,7 @@ fun WeekView.scrollToDate(date: LocalDate) {
8595
*
8696
* @param dateTime The [LocalDateTime] to scroll to.
8797
*/
98+
@PublicApi
8899
fun WeekView.scrollToDateTime(dateTime: LocalDateTime) {
89100
scrollToDateTime(dateTime.toCalendar())
90101
}
@@ -95,10 +106,12 @@ fun WeekView.scrollToDateTime(dateTime: LocalDateTime) {
95106
*
96107
* @param time The [LocalTime] to scroll to.
97108
*/
109+
@PublicApi
98110
fun WeekView.scrollToTime(time: LocalTime) {
99111
scrollToTime(time.hourOfDay, time.secondOfMinute)
100112
}
101113

114+
@PublicApi
102115
fun WeekView.setDateFormatter(formatter: (LocalDate) -> String) {
103116
setDateFormatter { formatter(it.toLocalDate()) }
104117
}

jsr310/build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,22 @@ android {
1010
defaultConfig {
1111
minSdkVersion buildConfig.minSdkJsr310
1212
targetSdkVersion buildConfig.targetSdk
13+
multiDexEnabled true
1314
}
1415
compileOptions {
1516
sourceCompatibility JavaVersion.VERSION_1_8
1617
targetCompatibility JavaVersion.VERSION_1_8
18+
coreLibraryDesugaringEnabled true
1719
}
1820
}
1921

2022
dependencies {
2123
implementation project(':core')
22-
2324
implementation libraries.kotlin
2425
implementation libraries.appCompat
2526

27+
coreLibraryDesugaring libraries.coreLibraryDesugaring
28+
2629
testImplementation testing.jUnit
2730
testImplementation testing.mockitoCore
2831
testImplementation testing.mockitoInline

jsr310/src/main/java/com/alamkanak/weekview/jsr310/Jsr310Adapters.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alamkanak.weekview.jsr310
22

3+
import com.alamkanak.weekview.PublicApi
34
import com.alamkanak.weekview.WeekView
45
import java.time.LocalDate
56
import java.time.LocalDateTime
@@ -15,6 +16,7 @@ import java.util.Calendar
1516
*
1617
* @param T The type of elements that are displayed in the corresponding [WeekView].
1718
*/
19+
@PublicApi
1820
abstract class WeekViewSimpleAdapterJsr310<T> : WeekView.SimpleAdapter<T>() {
1921
final override fun onEmptyViewClick(time: Calendar) {
2022
onEmptyViewClick(time.toLocalDateTime())
@@ -67,7 +69,8 @@ abstract class WeekViewSimpleAdapterJsr310<T> : WeekView.SimpleAdapter<T>() {
6769
*
6870
* @param T The type of elements that are displayed in the corresponding [WeekView].
6971
*/
70-
abstract class WeekViewPagingAdapterJodaTime<T> : WeekView.PagingAdapter<T>() {
72+
@PublicApi
73+
abstract class WeekViewPagingAdapterJsr310<T> : WeekView.PagingAdapter<T>() {
7174

7275
final override fun onEmptyViewClick(time: Calendar) {
7376
onEmptyViewClick(time.toLocalDateTime())

jsr310/src/main/java/com/alamkanak/weekview/jsr310/WeekViewExtensions.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
package com.alamkanak.weekview.jsr310
22

3+
import com.alamkanak.weekview.PublicApi
34
import com.alamkanak.weekview.WeekView
45
import com.alamkanak.weekview.WeekViewEntity
56
import java.time.LocalDate
67
import java.time.LocalDateTime
78
import java.time.LocalTime
89

10+
@PublicApi
911
fun <T : Any> WeekViewEntity.Event.Builder<T>.setStartTime(
1012
startTime: LocalDateTime
1113
) = setStartTime(startTime.toCalendar())
1214

15+
@PublicApi
1316
fun <T : Any> WeekViewEntity.Event.Builder<T>.setEndTime(
1417
endTime: LocalDateTime
1518
) = setEndTime(endTime.toCalendar())
1619

20+
@PublicApi
1721
fun WeekViewEntity.BlockedTime.Builder.setStartTime(
1822
startTime: LocalDateTime
1923
) = setStartTime(startTime.toCalendar())
2024

25+
@PublicApi
2126
fun WeekViewEntity.BlockedTime.Builder.setEndTime(
2227
endTime: LocalDateTime
2328
) = setEndTime(endTime.toCalendar())
@@ -26,6 +31,7 @@ fun WeekViewEntity.BlockedTime.Builder.setEndTime(
2631
* Returns the minimum date that [WeekView] will display as a [LocalDate], or null if none is set.
2732
* Events before this date will not be shown.
2833
*/
34+
@PublicApi
2935
var WeekView.minDateAsLocalDate: LocalDate?
3036
get() = minDate?.toLocalDate()
3137
set(value) {
@@ -36,6 +42,7 @@ var WeekView.minDateAsLocalDate: LocalDate?
3642
* Returns the maximum date that [WeekView] will display as a [LocalDate], or null if none is set.
3743
* Events after this date will not be shown.
3844
*/
45+
@PublicApi
3946
var WeekView.maxDateAsLocalDate: LocalDate?
4047
get() = maxDate?.toLocalDate()
4148
set(value) {
@@ -45,12 +52,14 @@ var WeekView.maxDateAsLocalDate: LocalDate?
4552
/**
4653
* Returns the first visible date as a [LocalDate].
4754
*/
55+
@PublicApi
4856
val WeekView.firstVisibleDateAsLocalDate: LocalDate
4957
get() = firstVisibleDate.toLocalDate()
5058

5159
/**
5260
* Returns the last visible date as a [LocalDate].
5361
*/
62+
@PublicApi
5463
val WeekView.lastVisibleDateAsLocalDate: LocalDate
5564
get() = lastVisibleDate.toLocalDate()
5665

@@ -74,6 +83,7 @@ fun WeekView.goToDate(date: LocalDate) {
7483
*
7584
* @param date The [LocalDate] to scroll to.
7685
*/
86+
@PublicApi
7787
fun WeekView.scrollToDate(date: LocalDate) {
7888
scrollToDate(date.toCalendar())
7989
}
@@ -85,6 +95,7 @@ fun WeekView.scrollToDate(date: LocalDate) {
8595
*
8696
* @param dateTime The [LocalDateTime] to scroll to.
8797
*/
98+
@PublicApi
8899
fun WeekView.scrollToDateTime(dateTime: LocalDateTime) {
89100
scrollToDateTime(dateTime.toCalendar())
90101
}
@@ -95,10 +106,12 @@ fun WeekView.scrollToDateTime(dateTime: LocalDateTime) {
95106
*
96107
* @param time The [LocalTime] to scroll to.
97108
*/
109+
@PublicApi
98110
fun WeekView.scrollToTime(time: LocalTime) {
99111
scrollToTime(time.hour, time.minute)
100112
}
101113

114+
@PublicApi
102115
fun WeekView.setDateFormatter(formatter: (LocalDate) -> String) {
103116
setDateFormatter { formatter(it.toLocalDate()) }
104117
}

threetenabp/src/main/java/com/alamkanak/weekview/threetenabp/ThreeTenAbpAdapters.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alamkanak.weekview.threetenabp
22

3+
import com.alamkanak.weekview.PublicApi
34
import com.alamkanak.weekview.WeekView
45
import java.util.Calendar
56
import org.threeten.bp.LocalDate
@@ -15,6 +16,7 @@ import org.threeten.bp.LocalDateTime
1516
*
1617
* @param T The type of elements that are displayed in the corresponding [WeekView].
1718
*/
19+
@PublicApi
1820
abstract class WeekViewSimpleAdapterThreeTenAbp<T> : WeekView.SimpleAdapter<T>() {
1921

2022
final override fun onEmptyViewClick(time: Calendar) {
@@ -68,6 +70,7 @@ abstract class WeekViewSimpleAdapterThreeTenAbp<T> : WeekView.SimpleAdapter<T>()
6870
*
6971
* @param T The type of elements that are displayed in the corresponding [WeekView].
7072
*/
73+
@PublicApi
7174
abstract class WeekViewPagingAdapterThreeTenAbp<T> : WeekView.PagingAdapter<T>() {
7275

7376
final override fun onEmptyViewClick(time: Calendar) {

0 commit comments

Comments
 (0)