diff options
author | Allan Wang <me@allanwang.ca> | 2017-12-21 02:16:34 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-21 02:16:34 -0500 |
commit | d683cae6ffe644a9f63eea6cf3b7e59d2bde617b (patch) | |
tree | 517fe1d44c27084ccd87507d9804ba28f15c1647 /app/src/main/kotlin/com/pitchedapps/frost/contracts/FrostThemable.kt | |
parent | 82f9aca96493316bc62008f2b3167d34a6029b38 (diff) | |
download | frost-d683cae6ffe644a9f63eea6cf3b7e59d2bde617b.tar.gz frost-d683cae6ffe644a9f63eea6cf3b7e59d2bde617b.tar.bz2 frost-d683cae6ffe644a9f63eea6cf3b7e59d2bde617b.zip |
Enhancement/fragment interface (#564)
* Begin fragment interfaces and themable contracts
* Prepare swiperefresh interface
* Snapshot
* Add compilable version
* Revamp once more
* Finalize layouts
* Cleanup
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/contracts/FrostThemable.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/contracts/FrostThemable.kt | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/contracts/FrostThemable.kt b/app/src/main/kotlin/com/pitchedapps/frost/contracts/FrostThemable.kt new file mode 100644 index 00000000..3322f62e --- /dev/null +++ b/app/src/main/kotlin/com/pitchedapps/frost/contracts/FrostThemable.kt @@ -0,0 +1,29 @@ +package com.pitchedapps.frost.contracts + +import android.view.View +import android.widget.TextView + +/** + * Created by Allan Wang on 2017-11-07. + * + * Should be implemented by all views in [com.pitchedapps.frost.activities.MainActivity] + * to allow for instant view reloading + */ +interface FrostThemable { + + /** + * Change all necessary view components to the new theme + * and call whatever other children that also implement [FrostThemable] + */ + fun reloadTheme() + + fun setTextColors(color: Int, vararg textViews: TextView?) = + themeViews(color, *textViews) { setTextColor(it) } + + fun setBackgrounds(color: Int, vararg views: View?) = + themeViews(color, *views) { setBackgroundColor(it) } + + fun <T : View> themeViews(color: Int, vararg views: T?, action: T.(Int) -> Unit) = + views.filterNotNull().forEach { it.action(color) } + +}
\ No newline at end of file |