Skip to content

Commit 0a6702e

Browse files
Simplify the code in the base class
1 parent 5ba31a7 commit 0a6702e

File tree

7 files changed

+28
-43
lines changed

7 files changed

+28
-43
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package com.dylanc.loadingstateview
1818

1919
import android.view.View
2020

21-
interface Decorative {
21+
interface Decorative : OnReloadListener {
2222
val isDecorated: Boolean get() = true
2323
val contentView: View? get() = null
2424
}

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,17 @@ import android.view.View
2121
import androidx.annotation.StringRes
2222
import androidx.fragment.app.Fragment
2323

24-
interface LoadingState {
24+
interface LoadingState : Decorative, OnReloadListener {
2525

26-
fun Activity.decorateContentView(listener: OnReloadListener? = null, decorative: Decorative? = null)
26+
@Deprecated("Use Activity.decorateContentView(this) instead", ReplaceWith("decorateContentView(decorative)"))
27+
fun Activity.decorateContentView(listener: OnReloadListener, decorative: Decorative) = decorateContentView(decorative)
2728

28-
fun View.decorate(listener: OnReloadListener? = null, decorative: Decorative? = null): View
29+
fun Activity.decorateContentView(decorative: Decorative)
30+
31+
@Deprecated("Use View.decorate(this) instead", ReplaceWith("decorate(decorative)"))
32+
fun View.decorate(listener: OnReloadListener, decorative: Decorative): View = decorate(decorative)
33+
34+
fun View.decorate(decorative: Decorative): View
2935

3036
fun registerView(vararg viewDelegates: LoadingStateView.ViewDelegate)
3137

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ import androidx.fragment.app.Fragment
2525
class LoadingStateDelegate : LoadingState {
2626
private var loadingStateView: LoadingStateView? = null
2727

28-
override fun Activity.decorateContentView(listener: OnReloadListener?, decorative: Decorative?) {
29-
findViewById<ViewGroup>(android.R.id.content).getChildAt(0).decorate(listener, decorative)
28+
override fun Activity.decorateContentView(decorative: Decorative) {
29+
findViewById<ViewGroup>(android.R.id.content).getChildAt(0).decorate(decorative)
3030
}
3131

32-
override fun View.decorate(listener: OnReloadListener?, decorative: Decorative?): View =
32+
override fun View.decorate(decorative: Decorative): View =
3333
when {
34-
decorative?.isDecorated == false -> this
35-
decorative?.contentView == null ->
36-
LoadingStateView(this, listener).also { loadingStateView = it }.decorView
34+
!decorative.isDecorated -> this
35+
decorative.contentView == null ->
36+
LoadingStateView(this, decorative).also { loadingStateView = it }.decorView
3737
else -> {
38-
loadingStateView = LoadingStateView(decorative.contentView!!, listener)
38+
loadingStateView = LoadingStateView(decorative.contentView!!, decorative)
3939
this
4040
}
4141
}
@@ -57,7 +57,7 @@ class LoadingStateDelegate : LoadingState {
5757
}
5858

5959
override fun Fragment.setToolbar(title: String?, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
60-
loadingStateView?.setHeaders(ToolbarViewDelegate(title, navBtnType, block))
60+
loadingStateView?.addChildHeaders(ToolbarViewDelegate(title, navBtnType, block))
6161
}
6262

6363
override fun Activity.setHeaders(vararg delegates: LoadingStateView.ViewDelegate) {

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,14 @@ package com.dylanc.loadingstateview.sample.kotlin.base
1818

1919
import android.os.Bundle
2020
import androidx.appcompat.app.AppCompatActivity
21-
import com.dylanc.loadingstateview.Decorative
2221
import com.dylanc.loadingstateview.LoadingState
2322
import com.dylanc.loadingstateview.LoadingStateDelegate
24-
import com.dylanc.loadingstateview.OnReloadListener
2523

26-
abstract class BaseActivity(private val layoutRes: Int) : AppCompatActivity(),
27-
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative {
24+
abstract class BaseActivity(private val layoutRes: Int) : AppCompatActivity(), LoadingState by LoadingStateDelegate() {
2825

2926
override fun onCreate(savedInstanceState: Bundle?) {
3027
super.onCreate(savedInstanceState)
3128
setContentView(layoutRes)
32-
decorateContentView(this, this)
29+
decorateContentView(this)
3330
}
3431
}

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,17 @@ package com.dylanc.loadingstateview.sample.kotlin.base
1919
import android.os.Bundle
2020
import androidx.appcompat.app.AppCompatActivity
2121
import androidx.viewbinding.ViewBinding
22-
import com.dylanc.loadingstateview.Decorative
2322
import com.dylanc.loadingstateview.LoadingState
2423
import com.dylanc.loadingstateview.LoadingStateDelegate
25-
import com.dylanc.loadingstateview.OnReloadListener
2624
import com.dylanc.viewbinding.base.ActivityBinding
2725
import com.dylanc.viewbinding.base.ActivityBindingDelegate
2826

2927
abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity(),
30-
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative,
31-
ActivityBinding<VB> by ActivityBindingDelegate() {
28+
LoadingState by LoadingStateDelegate(), ActivityBinding<VB> by ActivityBindingDelegate() {
3229

3330
override fun onCreate(savedInstanceState: Bundle?) {
3431
super.onCreate(savedInstanceState)
3532
setContentViewWithBinding()
36-
binding.root.decorate(this, this)
33+
binding.root.decorate(this)
3734
}
3835
}

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

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,17 @@ package com.dylanc.loadingstateview.sample.kotlin.base
1818

1919
import android.os.Bundle
2020
import android.view.LayoutInflater
21-
import android.view.View
2221
import android.view.ViewGroup
2322
import androidx.fragment.app.Fragment
2423
import androidx.viewbinding.ViewBinding
25-
import com.dylanc.loadingstateview.Decorative
2624
import com.dylanc.loadingstateview.LoadingState
2725
import com.dylanc.loadingstateview.LoadingStateDelegate
28-
import com.dylanc.loadingstateview.OnReloadListener
2926
import com.dylanc.viewbinding.base.FragmentBinding
3027
import com.dylanc.viewbinding.base.FragmentBindingDelegate
3128

32-
abstract class BaseBindingFragment<VB : ViewBinding> : Fragment(),
33-
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative,
29+
abstract class BaseBindingFragment<VB : ViewBinding> : Fragment(), LoadingState by LoadingStateDelegate(),
3430
FragmentBinding<VB> by FragmentBindingDelegate() {
3531

36-
override fun onCreateView(
37-
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
38-
): View? {
39-
return createViewWithBinding(inflater, container).decorate(this, this)
40-
}
32+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) =
33+
createViewWithBinding(inflater, container).decorate(this)
4134
}

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

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,13 @@ package com.dylanc.loadingstateview.sample.kotlin.base
1818

1919
import android.os.Bundle
2020
import android.view.LayoutInflater
21-
import android.view.View
2221
import android.view.ViewGroup
2322
import androidx.fragment.app.Fragment
24-
import com.dylanc.loadingstateview.Decorative
2523
import com.dylanc.loadingstateview.LoadingState
2624
import com.dylanc.loadingstateview.LoadingStateDelegate
27-
import com.dylanc.loadingstateview.OnReloadListener
2825

29-
abstract class BaseFragment(private val layoutRes: Int) : Fragment(),
30-
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative {
26+
abstract class BaseFragment(private val layoutRes: Int) : Fragment(), LoadingState by LoadingStateDelegate() {
3127

32-
override fun onCreateView(
33-
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
34-
): View? {
35-
val root = inflater.inflate(layoutRes, container, false)
36-
return root.decorate(this, this)
37-
}
28+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) =
29+
inflater.inflate(layoutRes, container, false).decorate(this)
3830
}

0 commit comments

Comments
 (0)