diff options
11 files changed, 61 insertions, 33 deletions
diff --git a/about/src/main/kotlin/ca/allanwang/kau/about/FaqIItem.kt b/about/src/main/kotlin/ca/allanwang/kau/about/FaqIItem.kt index 629aa52..5595aed 100644 --- a/about/src/main/kotlin/ca/allanwang/kau/about/FaqIItem.kt +++ b/about/src/main/kotlin/ca/allanwang/kau/about/FaqIItem.kt @@ -1,5 +1,6 @@ package ca.allanwang.kau.about +import android.annotation.SuppressLint import android.support.v7.widget.RecyclerView import android.text.method.LinkMovementMethod import android.view.View @@ -22,9 +23,7 @@ class FaqIItem(val content: FaqItem) : KauIItem<LibraryIItem, FaqIItem.ViewHolde ), ThemableIItem by ThemableIItemDelegate() { companion object { - - - @JvmStatic fun bindEvents(fastAdapter: FastAdapter<IItem<*, *>>) { + fun bindEvents(fastAdapter: FastAdapter<IItem<*, *>>) { fastAdapter.withSelectable(false) .withEventHook(object : ClickEventHook<IItem<*, *>>() { @@ -43,6 +42,7 @@ class FaqIItem(val content: FaqItem) : KauIItem<LibraryIItem, FaqIItem.ViewHolde private var isExpanded = false + @SuppressLint("SetTextI18n") override fun bindView(holder: ViewHolder, payloads: MutableList<Any>?) { super.bindView(holder, payloads) with(holder) { diff --git a/about/src/main/kotlin/ca/allanwang/kau/about/LibraryIItem.kt b/about/src/main/kotlin/ca/allanwang/kau/about/LibraryIItem.kt index e50460e..88e6f9b 100644 --- a/about/src/main/kotlin/ca/allanwang/kau/about/LibraryIItem.kt +++ b/about/src/main/kotlin/ca/allanwang/kau/about/LibraryIItem.kt @@ -25,7 +25,7 @@ class LibraryIItem(val lib: Library) : KauIItem<LibraryIItem, LibraryIItem.ViewH ), ThemableIItem by ThemableIItemDelegate() { companion object { - @JvmStatic fun bindEvents(fastAdapter: FastAdapter<IItem<*, *>>) { + fun bindEvents(fastAdapter: FastAdapter<IItem<*, *>>) { fastAdapter.withSelectable(false) .withOnClickListener { v, _, item, _ -> if (item !is LibraryIItem) false @@ -53,11 +53,11 @@ class LibraryIItem(val lib: Library) : KauIItem<LibraryIItem, LibraryIItem.ViewH Html.fromHtml(lib.libraryDescription, Html.FROM_HTML_MODE_LEGACY) else Html.fromHtml(lib.libraryDescription) bottomDivider.gone() - if (lib.libraryVersion?.isNotBlank() ?: false) { + if (lib.libraryVersion?.isNotBlank() == true) { bottomDivider.visible() version.visible().text = lib.libraryVersion } - if (lib.license?.licenseName?.isNotBlank() ?: false) { + if (lib.license?.licenseName?.isNotBlank() == true) { bottomDivider.visible() license.visible().text = lib.license?.licenseName } diff --git a/adapter/src/main/kotlin/ca/allanwang/kau/iitems/CardIItem.kt b/adapter/src/main/kotlin/ca/allanwang/kau/iitems/CardIItem.kt index eb658df..9865c70 100644 --- a/adapter/src/main/kotlin/ca/allanwang/kau/iitems/CardIItem.kt +++ b/adapter/src/main/kotlin/ca/allanwang/kau/iitems/CardIItem.kt @@ -31,7 +31,7 @@ class CardIItem( ), ThemableIItem by ThemableIItemDelegate() { companion object { - @JvmStatic fun bindClickEvents(fastAdapter: FastAdapter<IItem<*, *>>) { + fun bindClickEvents(fastAdapter: FastAdapter<IItem<*, *>>) { fastAdapter.withEventHook(object : ClickEventHook<IItem<*, *>>() { override fun onBindMany(viewHolder: RecyclerView.ViewHolder): List<View>? { return if (viewHolder is ViewHolder) listOf(viewHolder.card, viewHolder.button) else null diff --git a/colorpicker/src/main/kotlin/ca/allanwang/kau/colorpicker/CircleView.kt b/colorpicker/src/main/kotlin/ca/allanwang/kau/colorpicker/CircleView.kt index d697c8b..ed98090 100644 --- a/colorpicker/src/main/kotlin/ca/allanwang/kau/colorpicker/CircleView.kt +++ b/colorpicker/src/main/kotlin/ca/allanwang/kau/colorpicker/CircleView.kt @@ -194,7 +194,6 @@ class CircleView @JvmOverloads constructor(context: Context, attrs: AttributeSet companion object { @ColorInt - @JvmStatic private fun translucentColor(color: Int): Int { val factor = 0.7f val alpha = Math.round(Color.alpha(color) * factor) @@ -205,7 +204,6 @@ class CircleView @JvmOverloads constructor(context: Context, attrs: AttributeSet } @ColorInt - @JvmStatic fun shiftColor(@ColorInt color: Int, @FloatRange(from = 0.0, to = 2.0) by: Float): Int { if (by == 1f) return color @@ -215,11 +213,9 @@ class CircleView @JvmOverloads constructor(context: Context, attrs: AttributeSet } @ColorInt - @JvmStatic fun shiftColorDown(@ColorInt color: Int): Int = shiftColor(color, 0.9f) @ColorInt - @JvmStatic fun shiftColorUp(@ColorInt color: Int): Int = shiftColor(color, 1.1f) } }
\ No newline at end of file diff --git a/core-ui/src/main/kotlin/ca/allanwang/kau/ui/views/CutoutView.kt b/core-ui/src/main/kotlin/ca/allanwang/kau/ui/views/CutoutView.kt index 9e8ac11..fc03563 100644 --- a/core-ui/src/main/kotlin/ca/allanwang/kau/ui/views/CutoutView.kt +++ b/core-ui/src/main/kotlin/ca/allanwang/kau/ui/views/CutoutView.kt @@ -147,14 +147,16 @@ class CutoutView @JvmOverloads constructor( paint.textSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, mid, metrics) val maxLineWidth = paint.measureText(text) - return if (high - low < precision) low - else if (maxLineWidth > targetWidth) getSingleLineTextSize(text, paint, targetWidth, low, mid, precision, metrics) - else if (maxLineWidth < targetWidth) getSingleLineTextSize(text, paint, targetWidth, mid, high, precision, metrics) - else mid + return when { + high - low < precision -> low + maxLineWidth > targetWidth -> getSingleLineTextSize(text, paint, targetWidth, low, mid, precision, metrics) + maxLineWidth < targetWidth -> getSingleLineTextSize(text, paint, targetWidth, mid, high, precision, metrics) + else -> mid + } } private fun createBitmap() { - if (!(cutout?.isRecycled ?: true)) + if (cutout?.isRecycled == false) cutout?.recycle() if (width == 0 || height == 0) return cutout = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) diff --git a/core/src/main/kotlin/ca/allanwang/kau/logging/KauLogger.kt b/core/src/main/kotlin/ca/allanwang/kau/logging/KauLogger.kt index 14655f0..61f0708 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/logging/KauLogger.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/logging/KauLogger.kt @@ -11,14 +11,34 @@ import android.util.Log * * Base logger class with a predefined tag * This may be extended by an object to effectively replace [Log] + * Almost everything is opened to make everything customizable */ open class KauLogger(val tag: String) { + /** + * Global toggle to enable the whole logger + */ open var enabled = true + + /** + * Global toggle to show private text + */ open var showPrivateText = false + + /** + * If both msg and priv msg are accepted, output the combined output + */ open var messageJoiner: (msg: String, privMsg: String) -> String = { msg, privMsg -> "$msg: $privMsg" } /** + * Open hook to change the output of the logger (for instance, output to stdout rather than Android log files + * Does not use reference notation to avoid constructor leaks + */ + open var logFun: (priority: Int, message: String?, privateMessage: String?, t: Throwable?) -> Unit = { p, m, pm, t -> + logImpl(p, m, pm, t) + } + + /** * Filter pass-through to decide what we wish to log * By default, we will ignore verbose and debug logs * @returns {@code true} to log the message, {@code false} to ignore @@ -35,14 +55,20 @@ open class KauLogger(val tag: String) { showPrivateText = enable } - open fun log(priority: Int, message: String?, privateMessage: String?, t: Throwable? = null) { + private fun log(priority: Int, message: String?, privateMessage: String?, t: Throwable? = null) { if (!shouldLog(priority, message, privateMessage, t)) return logImpl(priority, message, privateMessage, t) } + /** + * Condition to pass to allow the input to be logged + */ protected open fun shouldLog(priority: Int, message: String?, privateMessage: String?, t: Throwable?): Boolean = enabled && filter(priority) + /** + * Base implementation of the Android logger + */ protected open fun logImpl(priority: Int, message: String?, privateMessage: String?, t: Throwable?) { val text = if (showPrivateText) { if (message == null) privateMessage diff --git a/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt b/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt index 5fe0ddf..18f3e41 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt @@ -18,8 +18,8 @@ import java.lang.ref.WeakReference */ internal object PermissionManager { - var requestInProgress = false - val pendingResults: MutableList<WeakReference<PermissionResult>> by lazy { mutableListOf<WeakReference<PermissionResult>>() } + private var requestInProgress = false + private val pendingResults: MutableList<WeakReference<PermissionResult>> by lazy { mutableListOf<WeakReference<PermissionResult>>() } /** * Retrieve permissions requested in our manifest @@ -63,7 +63,7 @@ internal object PermissionManager { val iter = pendingResults.iterator() while (iter.hasNext()) { val action = iter.next().get() - if ((0 until count).any { action?.onResult(permissions[it], grantResults[it]) ?: true }) + if ((0 until count).any { action?.onResult(permissions[it], grantResults[it]) != false }) iter.remove() } if (pendingResults.isEmpty()) diff --git a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackLayout.kt b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackLayout.kt index c0875d1..065f4bb 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackLayout.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackLayout.kt @@ -349,7 +349,7 @@ internal class SwipeBackLayout @JvmOverloads constructor(context: Context, attrs listeners.forEach { it.get()?.onScroll(scrollPercent, contentOffset, edgeFlag) } if (scrollPercent >= 1) { - if (!(activity?.isFinishing ?: true)) { + if (activity?.isFinishing == false) { if (scrollPercent >= scrollThreshold && isScrollOverValid) { isScrollOverValid = false listeners.forEach { it.get()?.onScrollToClose(edgeFlag) } @@ -390,15 +390,19 @@ internal class SwipeBackLayout @JvmOverloads constructor(context: Context, attrs } override fun clampViewPositionHorizontal(child: View, left: Int, dx: Int): Int { - return if (edgeFlag == SWIPE_EDGE_RIGHT) Math.min(0, Math.max(left, -child.width)) - else if (edgeFlag == SWIPE_EDGE_LEFT) Math.min(child.width, Math.max(left, 0)) - else 0 + return when (edgeFlag) { + SWIPE_EDGE_RIGHT -> Math.min(0, Math.max(left, -child.width)) + SWIPE_EDGE_LEFT -> Math.min(child.width, Math.max(left, 0)) + else -> 0 + } } override fun clampViewPositionVertical(child: View, top: Int, dy: Int): Int { - return if (edgeFlag == SWIPE_EDGE_BOTTOM) Math.min(0, Math.max(top, -child.height)) - else if (edgeFlag == SWIPE_EDGE_TOP) Math.min(child.height, Math.max(top, 0)) - else 0 + return when (edgeFlag) { + SWIPE_EDGE_BOTTOM -> Math.min(0, Math.max(top, -child.height)) + SWIPE_EDGE_TOP -> Math.min(child.height, Math.max(top, 0)) + else -> 0 + } } } diff --git a/core/src/main/kotlin/ca/allanwang/kau/xml/Changelog.kt b/core/src/main/kotlin/ca/allanwang/kau/xml/Changelog.kt index 4bf1836..58f1ccc 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/xml/Changelog.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/xml/Changelog.kt @@ -87,7 +87,7 @@ internal enum class ChangelogType(val tag: String, val attr: String, @LayoutRes ITEM("item", "text", R.layout.kau_changelog_content); companion object { - @JvmStatic val values = values() + val values = values() } /** diff --git a/sample/src/main/kotlin/ca/allanwang/kau/sample/MainActivity.kt b/sample/src/main/kotlin/ca/allanwang/kau/sample/MainActivity.kt index ca75ebb..482c911 100644 --- a/sample/src/main/kotlin/ca/allanwang/kau/sample/MainActivity.kt +++ b/sample/src/main/kotlin/ca/allanwang/kau/sample/MainActivity.kt @@ -277,7 +277,7 @@ class MainActivity : KPrefActivity() { } override fun onBackPressed() { - if (!(searchView?.onBackPressed() ?: false)) super.onBackPressed() + if (searchView?.onBackPressed() != true) super.onBackPressed() } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/searchview/src/main/kotlin/ca/allanwang/kau/searchview/SearchItem.kt b/searchview/src/main/kotlin/ca/allanwang/kau/searchview/SearchItem.kt index 75d9b27..29341af 100644 --- a/searchview/src/main/kotlin/ca/allanwang/kau/searchview/SearchItem.kt +++ b/searchview/src/main/kotlin/ca/allanwang/kau/searchview/SearchItem.kt @@ -34,8 +34,8 @@ class SearchItem(val key: String, ) { companion object { - @JvmStatic var foregroundColor: Int = 0xdd000000.toInt() - @JvmStatic var backgroundColor: Int = 0xfffafafa.toInt() + var foregroundColor: Int = 0xdd000000.toInt() + var backgroundColor: Int = 0xfffafafa.toInt() } var styledContent: SpannableStringBuilder? = null @@ -44,7 +44,7 @@ class SearchItem(val key: String, * Highlight the subText if it is present in the content */ fun withHighlights(subText: String) { - val index = content.indexOf(subText) + val index = content.indexOf(subText, ignoreCase = true) if (index == -1) return styledContent = SpannableStringBuilder(content) styledContent!!.setSpan(StyleSpan(Typeface.BOLD), index, index + subText.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) @@ -60,7 +60,7 @@ class SearchItem(val key: String, holder.container.setRippleBackground(foregroundColor, backgroundColor) holder.title.text = styledContent ?: content - if (description?.isNotBlank() ?: false) holder.desc.visible().text = description + if (description?.isNotBlank() == true) holder.desc.visible().text = description } override fun unbindView(holder: ViewHolder) { |