Skip to content

Commit 159ad95

Browse files
Optimize code
1 parent 049130c commit 159ad95

File tree

14 files changed

+148
-166
lines changed

14 files changed

+148
-166
lines changed

loadingstateview-ktx/src/main/java/com/dylanc/loadingstateview/LoadingState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,4 @@ class LoadingStateImpl : LoadingState {
149149
}.apply {
150150
config = ToolbarConfig(title, navBtnType).apply { block?.invoke(this) }
151151
}
152-
}
152+
}

loadingstateview-ktx/src/main/java/com/dylanc/loadingstateview/ToolbarConfig.kt

Lines changed: 26 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -20,85 +20,55 @@ package com.dylanc.loadingstateview
2020

2121
import android.app.Activity
2222
import android.view.View
23-
import androidx.annotation.ColorInt
2423
import androidx.annotation.DrawableRes
24+
import kotlin.properties.ReadWriteProperty
25+
import kotlin.reflect.KProperty
2526

2627
enum class NavBtnType {
2728
ICON, TEXT, ICON_TEXT, NONE
2829
}
2930

30-
open class ToolbarConfig(
31+
class ToolbarConfig(
3132
var title: String? = null,
3233
var navBtnType: NavBtnType = NavBtnType.ICON,
34+
@DrawableRes var navIcon: Int? = null,
3335
var navText: String? = null,
34-
@DrawableRes var navIcon: Int = ToolbarUI.navIcon,
35-
var navClickListener: View.OnClickListener = View.OnClickListener {
36-
if (it.context is Activity) (it.context as Activity).finish()
36+
var onNavClickListener: View.OnClickListener = View.OnClickListener {
37+
val context = it.context
38+
if (context is Activity) context.finish()
3739
},
38-
@DrawableRes var rightIcon: Int = -1,
40+
@DrawableRes var rightIcon: Int? = null,
3941
var rightText: String? = null,
40-
var rightClickListener: View.OnClickListener? = null,
41-
@DrawableRes var rightSecondIcon: Int = -1,
42-
var rightSecondClickListener: View.OnClickListener? = null,
43-
var height: Float = ToolbarUI.height,
44-
var titleTextSize: Float = ToolbarUI.titleTextSize,
45-
var rightTextSize: Float = ToolbarUI.rightTextSize,
46-
var rightSecondTextSize: Float = ToolbarUI.rightSecondTextSize,
47-
@ColorInt var titleTextColor: Int = ToolbarUI.titleTextColor,
48-
@ColorInt var navTextColor: Int = ToolbarUI.navTextColor,
49-
@ColorInt var rightTextColor: Int = ToolbarUI.rightTextColor,
50-
@ColorInt var backgroundColor: Int = ToolbarUI.backgroundColor,
51-
var navIconSize: Float = ToolbarUI.navIconSize,
52-
var rightIconSize: Float = ToolbarUI.rightIconSize,
53-
var rightSecondIconSize: Float = ToolbarUI.rightSecondIconSize,
42+
var onRightClickListener: View.OnClickListener? = null,
43+
val extras: HashMap<String, Any?> = HashMap()
5444
)
5545

56-
fun ToolbarConfig.navText(text: String, listener: View.OnClickListener) {
57-
navText = text
58-
navClickListener = listener
59-
}
60-
6146
fun ToolbarConfig.navIcon(@DrawableRes icon: Int, listener: View.OnClickListener) {
6247
navIcon = icon
63-
navClickListener = listener
48+
onNavClickListener = listener
49+
}
50+
51+
fun ToolbarConfig.navText(text: String, listener: View.OnClickListener) {
52+
navText = text
53+
onNavClickListener = listener
6454
}
6555

6656
fun ToolbarConfig.rightIcon(@DrawableRes icon: Int, listener: View.OnClickListener) {
6757
rightIcon = icon
68-
rightClickListener = listener
58+
onRightClickListener = listener
6959
}
7060

7161
fun ToolbarConfig.rightText(text: String, listener: View.OnClickListener) {
7262
rightText = text
73-
rightClickListener = listener
63+
onRightClickListener = listener
7464
}
7565

76-
fun ToolbarConfig.rightSecondIcon(@DrawableRes icon: Int, listener: View.OnClickListener) {
77-
rightSecondIcon = icon
78-
rightSecondClickListener = listener
79-
}
80-
81-
object ToolbarUI {
82-
var height = -1f
83-
var titleTextSize = -1f
84-
var rightTextSize = -1f
85-
var rightSecondTextSize = -1f
86-
87-
@ColorInt
88-
var titleTextColor = -1
89-
90-
@ColorInt
91-
var navTextColor = -1
66+
fun <T> toolbarExtras() = object : ReadWriteProperty<ToolbarConfig, T?> {
67+
@Suppress("UNCHECKED_CAST")
68+
override fun getValue(thisRef: ToolbarConfig, property: KProperty<*>): T? =
69+
thisRef.extras[property.name] as? T
9270

93-
@ColorInt
94-
var rightTextColor = -1
95-
96-
@ColorInt
97-
var backgroundColor = -1
98-
99-
@DrawableRes
100-
var navIcon: Int = -1
101-
var navIconSize = -1f
102-
var rightIconSize = -1f
103-
var rightSecondIconSize = -1f
104-
}
71+
override fun setValue(thisRef: ToolbarConfig, property: KProperty<*>, value: T?) {
72+
thisRef.extras[property.name] = value
73+
}
74+
}

loadingstateview-ktx/src/main/java/com/dylanc/loadingstateview/ToolbarViewDelegate.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
@file:Suppress("unused")
18-
1917
package com.dylanc.loadingstateview
2018

2119
import android.view.LayoutInflater
@@ -31,4 +29,4 @@ abstract class ToolbarViewDelegate : LoadingStateView.ViewDelegate(ViewType.TITL
3129
abstract fun onCreateToolbar(inflater: LayoutInflater, parent: ViewGroup): View
3230

3331
abstract fun bind(config: ToolbarConfig)
34-
}
32+
}

loadingstateview-toolbar/src/main/java/com/dylanc/loadingstateview/toolbar/SimpleToolbarViewDelegate.kt

Lines changed: 0 additions & 75 deletions
This file was deleted.

sample-kotlin/build.gradle

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,9 @@ android {
3636

3737
dependencies {
3838
implementation project(':loadingstateview-ktx')
39-
implementation project(':loadingstateview-toolbar')
4039
implementation 'androidx.appcompat:appcompat:1.3.1'
41-
implementation 'androidx.recyclerview:recyclerview:1.2.1'
42-
implementation 'androidx.cardview:cardview:1.0.0'
4340
implementation 'com.google.android.material:material:1.4.0'
4441
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
45-
implementation 'com.github.bumptech.glide:glide:4.12.0'
4642
implementation 'com.github.DylanCaiCoding.ViewBindingKTX:viewbinding-base:2.0.5'
4743
testImplementation 'junit:junit:4.13.2'
4844
androidTestImplementation 'androidx.test.ext:junit:1.1.3'

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/App.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import android.app.Application
44
import com.dylanc.loadingstateview.LoadingStateView
55
import com.dylanc.loadingstateview.sample.kotlin.delegate.ErrorViewDelegate
66
import com.dylanc.loadingstateview.sample.kotlin.delegate.LoadingViewDelegate
7-
import com.dylanc.loadingstateview.toolbar.SimpleToolbarViewDelegate
7+
import com.dylanc.loadingstateview.sample.kotlin.delegate.DefaultToolbarViewDelegate
88

99
class App : Application() {
1010

1111
override fun onCreate() {
1212
super.onCreate()
1313
LoadingStateView.setViewDelegatePool {
14-
register(SimpleToolbarViewDelegate(), LoadingViewDelegate(), ErrorViewDelegate())
14+
register(DefaultToolbarViewDelegate(), LoadingViewDelegate(), ErrorViewDelegate())
1515
}
1616
}
1717
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ import com.dylanc.loadingstateview.OnReloadListener
2525
abstract class BaseActivity(private val layoutRes: Int) : AppCompatActivity(),
2626
LoadingState by LoadingStateImpl(), OnReloadListener {
2727

28+
open val isDecorated = true
29+
2830
override fun onCreate(savedInstanceState: Bundle?) {
2931
super.onCreate(savedInstanceState)
3032
setContentView(layoutRes)
3133
decorateContentView(this, isDecorated)
3234
}
33-
34-
open val isDecorated = true
3535
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseBindingActivity.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity(),
2929

3030
lateinit var binding: VB private set
3131

32+
open val contentView get() = binding.root
33+
34+
open val isDecorated = true
35+
3236
override fun onCreate(savedInstanceState: Bundle?) {
3337
super.onCreate(savedInstanceState)
3438
binding = ViewBindingUtil.inflateWithGeneric(this, layoutInflater)
35-
setContentView(binding.root)
36-
binding.root.decorate(this, isDecorated)
39+
setContentView(contentView)
40+
contentView.decorate(this, isDecorated)
3741
}
38-
39-
open val isDecorated = true
4042
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseBindingFragment.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ abstract class BaseBindingFragment<VB : ViewBinding> : Fragment(),
3232

3333
lateinit var binding: VB private set
3434

35+
open val contentView get() = binding.root
36+
37+
open val isDecorated = true
38+
3539
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
3640
binding = ViewBindingUtil.inflateWithGeneric(this, inflater, container, false)
37-
return binding.root.decorate(this, isDecorated)
41+
return contentView.decorate(this, isDecorated)
3842
}
39-
40-
open val isDecorated = true
4143
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ import com.dylanc.loadingstateview.OnReloadListener
2828
abstract class BaseFragment(private val layoutRes: Int) : Fragment(),
2929
LoadingState by LoadingStateImpl(), OnReloadListener {
3030

31+
open val isDecorated = true
32+
3133
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
3234
val root = inflater.inflate(layoutRes, container, false)
3335
return root.decorate(this, isDecorated)
3436
}
35-
36-
open val isDecorated = true
3737
}

0 commit comments

Comments
 (0)