diff --git a/.gitignore b/.gitignore index f03807b4..f6db2dc2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ *.iml .gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries +/.idea .DS_Store /build /captures @@ -23,7 +21,6 @@ gen/ out/ # Gradle files -.gradle/ build/ # Local configuration file (sdk path, etc) @@ -41,9 +38,5 @@ proguard/ # Android Studio captures folder captures/ -# Intellij -*.iml -.idea/workspace.xml - # Keystore files -*.jks \ No newline at end of file +*.jks diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 565c3479..00000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 15a15b21..00000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 8d72a95f..00000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index b5c78bcb..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index ca9de94e..00000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460d..00000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1ddf..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/calendarview/build.gradle b/calendarview/build.gradle index 607b96b1..c3751154 100644 --- a/calendarview/build.gradle +++ b/calendarview/build.gradle @@ -39,7 +39,7 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) //noinspection GradleDependency - implementation 'androidx.appcompat:appcompat:1.0.0' + implementation 'androidx.appcompat:appcompat:1.0.2' //noinspection GradleDependency implementation 'androidx.recyclerview:recyclerview:1.0.0' testImplementation 'junit:junit:4.12' diff --git a/kotlin/src/main/java/com/haibin/calendarview/CalendarView.kt b/kotlin/src/main/java/com/haibin/calendarview/CalendarView.kt new file mode 100644 index 00000000..6cb8d013 --- /dev/null +++ b/kotlin/src/main/java/com/haibin/calendarview/CalendarView.kt @@ -0,0 +1,127 @@ +package com.haibin.calendarview + +import android.app.Activity +import android.view.View + +/** + *@Author xuyang + *@Email xuyang@prudencemed.com + *@Date 2019/8/5. + *@Description + */ +inline fun findCalendarView(activity: Activity, id: Int, action: CalendarView.() -> Unit): CalendarView { + val calendarView = activity.findViewById(id) + action(calendarView) + return calendarView +} + +inline fun findCalendarView(view: View, id: Int, action: CalendarView.() -> Unit): CalendarView { + val calendarView = view.findViewById(id) + action(calendarView) + return calendarView +} + +inline fun CalendarView.doOnCalendarSelect(crossinline action: (calendar: Calendar?, isClick: Boolean) -> Unit) = + setOnCalendarSelectListener(onCalendarSelect = action) + +inline fun CalendarView.doOnCalendarOutOfRange(crossinline action: (calendar: Calendar?) -> Unit) = + setOnCalendarSelectListener(onCalendarOutOfRange = action) + +inline fun CalendarView.setOnCalendarSelectListener( + crossinline onCalendarOutOfRange: (outCalendar: Calendar?) -> Unit = {}, + crossinline onCalendarSelect: (calendar: Calendar?, isClick: Boolean) -> Unit = { _, _ -> } +): CalendarView.OnCalendarSelectListener { + val listener = object : CalendarView.OnCalendarSelectListener { + override fun onCalendarOutOfRange(calendar: Calendar?) = onCalendarOutOfRange(calendar) + override fun onCalendarSelect(calendar: Calendar?, isClick: Boolean) = onCalendarSelect(calendar, isClick) + } + setOnCalendarSelectListener(listener) + return listener +} + +inline fun CalendarView.doOnCalendarIntercept(crossinline action: (calendar: Calendar?) -> Boolean) = + setOnCalendarInterceptListener(onCalendarIntercept = action) + +inline fun CalendarView.doOnCalendarInterceptClick(crossinline action: (calendar: Calendar?, isClick: Boolean) -> Unit) = + setOnCalendarInterceptListener(onCalendarInterceptClick = action) + +inline fun CalendarView.setOnCalendarInterceptListener( + crossinline onCalendarIntercept: (calendar: Calendar?) -> Boolean = { false }, + crossinline onCalendarInterceptClick: (calendar: Calendar?, isClick: Boolean) -> Unit = { _, _ -> } +): CalendarView.OnCalendarInterceptListener { + val listener = object : CalendarView.OnCalendarInterceptListener { + override fun onCalendarIntercept(calendar: Calendar?): Boolean = onCalendarIntercept(calendar) + override fun onCalendarInterceptClick(calendar: Calendar?, isClick: Boolean) = onCalendarInterceptClick(calendar, isClick) + } + setOnCalendarInterceptListener(listener) + return listener +} + +inline fun CalendarView.doOnCalendarLongClickOutOfRange(crossinline action: (calendar: Calendar?) -> Unit) = + setOnCalendarLongClickListener(onCalendarLongClickOutOfRange = action) + +inline fun CalendarView.doOnCalendarLongClick(crossinline action: (calendar: Calendar?) -> Unit) = + setOnCalendarLongClickListener(onCalendarLongClick = action) + +inline fun CalendarView.setOnCalendarLongClickListener( + crossinline onCalendarLongClickOutOfRange: (calendar: Calendar?) -> Unit = {}, + crossinline onCalendarLongClick: (calendar: Calendar?) -> Unit = {}, + preventLongPressedSelected: Boolean = false +): CalendarView.OnCalendarLongClickListener { + val listener = object : CalendarView.OnCalendarLongClickListener { + override fun onCalendarLongClickOutOfRange(calendar: Calendar?) = onCalendarLongClickOutOfRange(calendar) + override fun onCalendarLongClick(calendar: Calendar?) = onCalendarLongClick(calendar) + } + setOnCalendarLongClickListener(listener, preventLongPressedSelected) + return listener +} + +inline fun CalendarView.doOnCalendarMultiSelectOutOfRange(crossinline action: (calendar: Calendar?) -> Unit) = + setOnCalendarMultiSelectListener(onCalendarMultiSelectOutOfRange = action) + +inline fun CalendarView.doOnMultiSelectOutOfSize(crossinline action: (calendar: Calendar?, maxSize: Int) -> Unit) = + setOnCalendarMultiSelectListener(onMultiSelectOutOfSize = action) + +inline fun CalendarView.doOnCalendarMultiSelect(crossinline action: (calendar: Calendar?, curSize: Int, maxSize: Int) -> Unit) = + setOnCalendarMultiSelectListener(onCalendarMultiSelect = action) + +inline fun CalendarView.setOnCalendarMultiSelectListener( + crossinline onCalendarMultiSelectOutOfRange: (calendar: Calendar?) -> Unit = {}, + crossinline onMultiSelectOutOfSize: (calendar: Calendar?, maxSize: Int) -> Unit = { _, _ -> }, + crossinline onCalendarMultiSelect: (calendar: Calendar?, curSize: Int, maxSize: Int) -> Unit = { _, _, _ -> } +): CalendarView.OnCalendarMultiSelectListener { + val listener = object : CalendarView.OnCalendarMultiSelectListener { + override fun onCalendarMultiSelectOutOfRange(calendar: Calendar?) = onCalendarMultiSelectOutOfRange(calendar) + override fun onMultiSelectOutOfSize(calendar: Calendar?, maxSize: Int) = onMultiSelectOutOfSize(calendar, maxSize) + override fun onCalendarMultiSelect(calendar: Calendar?, curSize: Int, maxSize: Int) = onCalendarMultiSelect(calendar, curSize, maxSize) + } + setOnCalendarMultiSelectListener(listener) + return listener +} + +inline fun CalendarView.doOnCalendarSelectOutOfRange(crossinline action: (calendar: Calendar?) -> Unit) = + setOnCalendarRangeSelectListener(onCalendarSelectOutOfRange = action) + +inline fun CalendarView.doOnSelectOutOfRange(crossinline action: (calendar: Calendar?, isOutOfMinRange: Boolean) -> Unit) = + setOnCalendarRangeSelectListener(onSelectOutOfRange = action) + +inline fun CalendarView.doOnCalendarRangeSelect(crossinline action: (calendar: Calendar?, isEnd: Boolean) -> Unit) = + setOnCalendarRangeSelectListener(onCalendarRangeSelect = action) + +inline fun CalendarView.setOnCalendarRangeSelectListener( + crossinline onCalendarSelectOutOfRange: (calendar: Calendar?) -> Unit = {}, + crossinline onSelectOutOfRange: (calendar: Calendar?, isOutOfMinRange: Boolean) -> Unit = { _, _ -> }, + crossinline onCalendarRangeSelect: (calendar: Calendar?, isEnd: Boolean) -> Unit = { _, _ -> } +): CalendarView.OnCalendarRangeSelectListener { + val listener = object : CalendarView.OnCalendarRangeSelectListener { + override fun onCalendarSelectOutOfRange(calendar: Calendar?) = onCalendarSelectOutOfRange(calendar) + override fun onSelectOutOfRange(calendar: Calendar?, isOutOfMinRange: Boolean) = onSelectOutOfRange(calendar, isOutOfMinRange) + override fun onCalendarRangeSelect(calendar: Calendar?, isEnd: Boolean) = onCalendarRangeSelect(calendar, isEnd) + } + setOnCalendarRangeSelectListener(listener) + return listener +} + +inline fun CalendarView.setMonthView() = setMonthView(T::class.java) + +inline fun CalendarView.setWeekView() = setWeekView(T::class.java) \ No newline at end of file diff --git a/kotlin/src/main/java/com/haibin/calendarview/Scheme.kt b/kotlin/src/main/java/com/haibin/calendarview/Scheme.kt index e56abdbd..1b561005 100644 --- a/kotlin/src/main/java/com/haibin/calendarview/Scheme.kt +++ b/kotlin/src/main/java/com/haibin/calendarview/Scheme.kt @@ -9,4 +9,4 @@ package com.haibin.calendarview import com.haibin.calendarview.Calendar.Scheme @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun Scheme.getObj():T = obj as T \ No newline at end of file +inline fun Scheme.getObj():T = obj as T \ No newline at end of file