Skip to content

Commit 6aa67b6

Browse files
committed
AndroidExtensions: setters
Signed-off-by: Fung <fython@163.com>
1 parent 66c2fdf commit 6aa67b6

File tree

1 file changed

+89
-1
lines changed

1 file changed

+89
-1
lines changed
Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,91 @@
11
package moe.feng.kotlinyan.common
22

3-
interface AndroidExtensions : ActivityExtensions, ViewExtensions, ResourcesExtensions, FragmentExtensions
3+
import android.annotation.SuppressLint
4+
import android.content.Intent
5+
import android.os.Build
6+
import android.os.Bundle
7+
import android.os.IBinder
8+
import android.os.Parcelable
9+
import android.util.Size
10+
import android.util.SizeF
11+
import java.io.Serializable
12+
13+
interface AndroidExtensions : ActivityExtensions, ViewExtensions, ResourcesExtensions, FragmentExtensions {
14+
15+
operator fun Intent.set(key: String, value: Any) {
16+
when (value) {
17+
is Int -> putExtra(key, value)
18+
is String -> putExtra(key, value)
19+
is Short -> putExtra(key, value)
20+
is Long -> putExtra(key, value)
21+
is Byte -> putExtra(key, value)
22+
is Char -> putExtra(key, value)
23+
is CharSequence -> putExtra(key, value)
24+
is Boolean -> putExtra(key, value)
25+
is Float -> putExtra(key, value)
26+
is Double -> putExtra(key, value)
27+
is Bundle -> putExtra(key, value)
28+
is Parcelable -> putExtra(key, value)
29+
is IntArray -> putExtra(key, value)
30+
is FloatArray -> putExtra(key, value)
31+
is CharArray -> putExtra(key, value)
32+
is LongArray -> putExtra(key, value)
33+
is ByteArray -> putExtra(key, value)
34+
is ShortArray -> putExtra(key, value)
35+
is DoubleArray -> putExtra(key, value)
36+
is Serializable -> putExtra(key, value)
37+
is Array<*> -> putExtra(key, value)
38+
is ArrayList<*> -> when (value.getOrNull(0)) {
39+
is Int -> putIntegerArrayListExtra(key, value as java.util.ArrayList<Int>)
40+
is Integer -> putIntegerArrayListExtra(key, value as java.util.ArrayList<Int>)
41+
is CharSequence -> putCharSequenceArrayListExtra(key, value as java.util.ArrayList<CharSequence>)
42+
is String -> putStringArrayListExtra(key, value as java.util.ArrayList<String>)
43+
is Parcelable -> putParcelableArrayListExtra(key, value as java.util.ArrayList<Parcelable>)
44+
}
45+
else -> throw UnsupportedOperationException("Unsupported type ${value.javaClass.name} in params")
46+
}
47+
}
48+
49+
@SuppressLint("NewApi")
50+
operator fun Bundle.set(key: String, value: Any) {
51+
when (value) {
52+
is Boolean -> putBoolean(key, value)
53+
is Byte -> putByte(key, value)
54+
is ByteArray -> putByteArray(key, value)
55+
is IBinder -> putBinder(key, value)
56+
is Char -> putChar(key, value)
57+
is CharArray -> putCharArray(key, value)
58+
is CharSequence -> putCharSequence(key, value)
59+
is Double -> putDouble(key, value)
60+
is DoubleArray -> putDoubleArray(key, value)
61+
is Float -> putFloat(key, value)
62+
is FloatArray -> putFloatArray(key, value)
63+
is Int -> putInt(key, value)
64+
is IntArray -> putIntArray(key, value)
65+
is Long -> putLong(key, value)
66+
is Short -> putShort(key, value)
67+
is ShortArray -> putShortArray(key, value)
68+
is Parcelable -> putParcelable(key, value)
69+
is Serializable -> putSerializable(key, value)
70+
is String -> putString(key, value)
71+
is Array<*> -> when (value.getOrNull(0)) {
72+
is CharSequence -> putCharSequenceArray(key, value as Array<out CharSequence>)
73+
is String -> putStringArray(key, value as Array<out String>)
74+
is Parcelable -> putParcelableArray(key, value as Array<out Parcelable>)
75+
}
76+
is ArrayList<*> -> when (value.getOrNull(0)) {
77+
is Int -> putIntegerArrayList(key, value as java.util.ArrayList<Int>)
78+
is Integer -> putIntegerArrayList(key, value as java.util.ArrayList<Int>)
79+
is CharSequence -> putCharSequenceArrayList(key, value as java.util.ArrayList<CharSequence>)
80+
is String -> putStringArrayList(key, value as java.util.ArrayList<String>)
81+
is Parcelable -> putParcelableArrayList(key, value as java.util.ArrayList<Parcelable>)
82+
}
83+
Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP -> when (value) {
84+
is Size -> putSize(key, value)
85+
is SizeF -> putSizeF(key, value)
86+
}
87+
else -> throw UnsupportedOperationException("Unsupported type ${value.javaClass.name} in params")
88+
}
89+
}
90+
91+
}

0 commit comments

Comments
 (0)