Skip to content

Commit 6b1c669

Browse files
Optimize code
1 parent 159ad95 commit 6b1c669

File tree

2 files changed

+111
-88
lines changed

2 files changed

+111
-88
lines changed

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

Lines changed: 2 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ import androidx.fragment.app.Fragment
2424

2525
interface LoadingState {
2626

27-
fun Activity.decorateContentView(listener: OnReloadListener, isDecorated: Boolean)
27+
fun Activity.decorateContentView(listener: OnReloadListener, isDecorated: Boolean = true)
2828

29-
fun View.decorate(listener: OnReloadListener, isDecorated: Boolean): View
29+
fun View.decorate(listener: OnReloadListener, isDecorated: Boolean = true): View
3030

3131
fun registerView(vararg viewDelegates: LoadingStateView.ViewDelegate)
3232

@@ -63,90 +63,4 @@ interface LoadingState {
6363
fun ToolbarViewDelegate(
6464
title: String? = null, navBtnType: NavBtnType = NavBtnType.ICON, block: (ToolbarConfig.() -> Unit)? = null
6565
): ToolbarViewDelegate
66-
}
67-
68-
class LoadingStateImpl : LoadingState {
69-
private var loadingStateView: LoadingStateView? = null
70-
71-
override fun Activity.decorateContentView(listener: OnReloadListener, isDecorated: Boolean) {
72-
findViewById<ViewGroup>(android.R.id.content).getChildAt(0).decorate(listener, isDecorated)
73-
}
74-
75-
override fun View.decorate(listener: OnReloadListener, isDecorated: Boolean): View =
76-
if (isDecorated) {
77-
LoadingStateView(this, listener).also { loadingStateView = it }.decorView
78-
} else {
79-
this
80-
}
81-
82-
override fun registerView(vararg viewDelegates: LoadingStateView.ViewDelegate) {
83-
loadingStateView?.register(*viewDelegates)
84-
}
85-
86-
override fun Activity.setToolbar(@StringRes titleId: Int, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
87-
setToolbar(getString(titleId), navBtnType, block)
88-
}
89-
90-
override fun Activity.setToolbar(title: String?, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
91-
loadingStateView?.setHeaders(ToolbarViewDelegate(title, navBtnType, block))
92-
}
93-
94-
override fun Fragment.setToolbar(@StringRes titleId: Int, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
95-
setToolbar(getString(titleId), navBtnType, block)
96-
}
97-
98-
override fun Fragment.setToolbar(title: String?, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
99-
loadingStateView?.setHeaders(ToolbarViewDelegate(title, navBtnType, block))
100-
}
101-
102-
override fun Activity.setHeaders(vararg delegates: LoadingStateView.ViewDelegate) {
103-
loadingStateView?.setHeaders(*delegates)
104-
}
105-
106-
override fun Fragment.setHeaders(vararg delegates: LoadingStateView.ViewDelegate) {
107-
loadingStateView?.addChildHeaders(*delegates)
108-
}
109-
110-
override fun Activity.setDecorView(delegate: LoadingStateView.DecorViewDelegate) {
111-
loadingStateView?.setDecorView(delegate)
112-
}
113-
114-
override fun Fragment.setDecorView(delegate: LoadingStateView.DecorViewDelegate) {
115-
loadingStateView?.addChildDecorView(delegate)
116-
}
117-
118-
override fun showLoadingView() {
119-
loadingStateView?.showLoadingView()
120-
}
121-
122-
override fun showContentView() {
123-
loadingStateView?.showContentView()
124-
}
125-
126-
override fun showErrorView() {
127-
loadingStateView?.showErrorView()
128-
}
129-
130-
override fun showEmptyView() {
131-
loadingStateView?.showEmptyView()
132-
}
133-
134-
override fun showCustomView(viewType: Any) {
135-
loadingStateView?.showView(viewType)
136-
}
137-
138-
override fun updateToolbar(block: ToolbarConfig.() -> Unit) {
139-
updateView<ToolbarViewDelegate>(ViewType.TITLE) { bind(config.apply(block)) }
140-
}
141-
142-
override fun <T : LoadingStateView.ViewDelegate> updateView(viewType: Any, block: T.() -> Unit) {
143-
loadingStateView?.getViewDelegate<T>(viewType)?.apply(block)
144-
}
145-
146-
override fun ToolbarViewDelegate(title: String?, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) =
147-
requireNotNull(loadingStateView?.getViewDelegate<ToolbarViewDelegate>(ViewType.TITLE)) {
148-
"ToolbarViewDelegate must be registered before."
149-
}.apply {
150-
config = ToolbarConfig(title, navBtnType).apply { block?.invoke(this) }
151-
}
15266
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
/*
2+
* Copyright (c) 2019. Dylan Cai
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.dylanc.loadingstateview
18+
19+
import android.app.Activity
20+
import android.view.View
21+
import android.view.ViewGroup
22+
import androidx.annotation.StringRes
23+
import androidx.fragment.app.Fragment
24+
25+
class LoadingStateImpl : LoadingState {
26+
private var loadingStateView: LoadingStateView? = null
27+
28+
override fun Activity.decorateContentView(listener: OnReloadListener, isDecorated: Boolean) {
29+
findViewById<ViewGroup>(android.R.id.content).getChildAt(0).decorate(listener, isDecorated)
30+
}
31+
32+
override fun View.decorate(listener: OnReloadListener, isDecorated: Boolean): View =
33+
if (isDecorated) {
34+
LoadingStateView(this, listener).also { loadingStateView = it }.decorView
35+
} else {
36+
this
37+
}
38+
39+
override fun registerView(vararg viewDelegates: LoadingStateView.ViewDelegate) {
40+
loadingStateView?.register(*viewDelegates)
41+
}
42+
43+
override fun Activity.setToolbar(@StringRes titleId: Int, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
44+
setToolbar(getString(titleId), navBtnType, block)
45+
}
46+
47+
override fun Activity.setToolbar(title: String?, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
48+
loadingStateView?.setHeaders(ToolbarViewDelegate(title, navBtnType, block))
49+
}
50+
51+
override fun Fragment.setToolbar(@StringRes titleId: Int, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
52+
setToolbar(getString(titleId), navBtnType, block)
53+
}
54+
55+
override fun Fragment.setToolbar(title: String?, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) {
56+
loadingStateView?.setHeaders(ToolbarViewDelegate(title, navBtnType, block))
57+
}
58+
59+
override fun Activity.setHeaders(vararg delegates: LoadingStateView.ViewDelegate) {
60+
loadingStateView?.setHeaders(*delegates)
61+
}
62+
63+
override fun Fragment.setHeaders(vararg delegates: LoadingStateView.ViewDelegate) {
64+
loadingStateView?.addChildHeaders(*delegates)
65+
}
66+
67+
override fun Activity.setDecorView(delegate: LoadingStateView.DecorViewDelegate) {
68+
loadingStateView?.setDecorView(delegate)
69+
}
70+
71+
override fun Fragment.setDecorView(delegate: LoadingStateView.DecorViewDelegate) {
72+
loadingStateView?.addChildDecorView(delegate)
73+
}
74+
75+
override fun showLoadingView() {
76+
loadingStateView?.showLoadingView()
77+
}
78+
79+
override fun showContentView() {
80+
loadingStateView?.showContentView()
81+
}
82+
83+
override fun showErrorView() {
84+
loadingStateView?.showErrorView()
85+
}
86+
87+
override fun showEmptyView() {
88+
loadingStateView?.showEmptyView()
89+
}
90+
91+
override fun showCustomView(viewType: Any) {
92+
loadingStateView?.showView(viewType)
93+
}
94+
95+
override fun updateToolbar(block: ToolbarConfig.() -> Unit) {
96+
updateView<ToolbarViewDelegate>(ViewType.TITLE) { bind(config.apply(block)) }
97+
}
98+
99+
override fun <T : LoadingStateView.ViewDelegate> updateView(viewType: Any, block: T.() -> Unit) {
100+
loadingStateView?.getViewDelegate<T>(viewType)?.apply(block)
101+
}
102+
103+
override fun ToolbarViewDelegate(title: String?, navBtnType: NavBtnType, block: (ToolbarConfig.() -> Unit)?) =
104+
requireNotNull(loadingStateView?.getViewDelegate<ToolbarViewDelegate>(ViewType.TITLE)) {
105+
"ToolbarViewDelegate must be registered before."
106+
}.apply {
107+
config = ToolbarConfig(title, navBtnType).apply { block?.invoke(this) }
108+
}
109+
}

0 commit comments

Comments
 (0)