Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kotlin extension & modify ignore file #524

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
/.idea
.DS_Store
/build
/captures
Expand All @@ -23,7 +21,6 @@ gen/
out/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
Expand All @@ -41,9 +38,5 @@ proguard/
# Android Studio captures folder
captures/

# Intellij
*.iml
.idea/workspace.xml

# Keystore files
*.jks
*.jks
28 changes: 0 additions & 28 deletions .idea/codeStyles/Project.xml

This file was deleted.

4 changes: 0 additions & 4 deletions .idea/encodings.xml

This file was deleted.

22 changes: 0 additions & 22 deletions .idea/gradle.xml

This file was deleted.

39 changes: 0 additions & 39 deletions .idea/misc.xml

This file was deleted.

10 changes: 0 additions & 10 deletions .idea/modules.xml

This file was deleted.

12 changes: 0 additions & 12 deletions .idea/runConfigurations.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

2 changes: 1 addition & 1 deletion calendarview/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
127 changes: 127 additions & 0 deletions kotlin/src/main/java/com/haibin/calendarview/CalendarView.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
package com.haibin.calendarview

import android.app.Activity
import android.view.View

/**
*@Author xuyang
*@Email [email protected]
*@Date 2019/8/5.
*@Description
*/
inline fun findCalendarView(activity: Activity, id: Int, action: CalendarView.() -> Unit): CalendarView {
val calendarView = activity.findViewById<CalendarView>(id)
action(calendarView)
return calendarView
}

inline fun findCalendarView(view: View, id: Int, action: CalendarView.() -> Unit): CalendarView {
val calendarView = view.findViewById<CalendarView>(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<reified T : BaseMonthView> CalendarView.setMonthView() = setMonthView(T::class.java)

inline fun<reified T : BaseWeekView> CalendarView.setWeekView() = setWeekView(T::class.java)
2 changes: 1 addition & 1 deletion kotlin/src/main/java/com/haibin/calendarview/Scheme.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ package com.haibin.calendarview
import com.haibin.calendarview.Calendar.Scheme

@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
inline fun<reified T : Any> Scheme.getObj():T = obj as T
inline fun<reified T> Scheme.getObj():T = obj as T