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