Skip to content

Commit f8150f3

Browse files
committed
출석체크화면 UserType 따른 UI 처리
1 parent b8563dc commit f8150f3

File tree

16 files changed

+148
-77
lines changed

16 files changed

+148
-77
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,18 @@
1414
android:theme="@style/AppTheme"
1515
tools:ignore="GoogleAppIndexingWarning">
1616
<activity android:name=".ui.LoginActivity"
17+
android:theme="@style/AppTheme"
1718
android:screenOrientation="portrait"
1819
android:windowSoftInputMode="adjustResize|stateHidden">
1920
</activity>
2021
<activity
21-
android:name=".ui.MainActivity"
22-
android:screenOrientation="portrait" />
22+
android:theme="@style/MainTheme"
23+
android:name=".ui.MainActivity"
24+
android:screenOrientation="portrait"/>
2325
<activity
24-
android:name=".ui.SplashActivity"
25-
android:screenOrientation="portrait">
26+
android:name=".ui.SplashActivity"
27+
android:theme="@style/AppTheme"
28+
android:screenOrientation="portrait">
2629
<intent-filter>
2730
<action android:name="android.intent.action.MAIN" />
2831

app/src/main/java/com/ddd/attendance/check/common/DDDDialog.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import android.view.ViewGroup
1010
import kotlinx.android.synthetic.main.dialog_ddd.*
1111

1212

13-
class DDDDialog(context: Context) : Dialog(context) {
14-
lateinit var dddDialogEventListener: DDDDialogEventListener
13+
class DDDDialog(context: Context, userType: UserType) : Dialog(context) {
14+
private lateinit var dddDialogEventListener: DDDDialogEventListener
1515
override fun onCreate(savedInstanceState: Bundle?) {
1616
super.onCreate(savedInstanceState)
1717
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.ddd.attendance.check.common
2+
3+
enum class UserType {
4+
DEFAULT, ADMIN, BASIC
5+
}

app/src/main/java/com/ddd/attendance/check/ui/MainActivity.kt

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package com.ddd.attendance.check.ui
22

33
import android.app.Dialog
4+
import android.graphics.Color
45
import android.os.Bundle
6+
import android.view.View
7+
import android.view.WindowManager
8+
import androidx.core.content.ContextCompat
9+
import androidx.lifecycle.Observer
510
import androidx.lifecycle.ViewModelProvider
611
import androidx.lifecycle.ViewModelProviders
712
import com.ddd.attendance.check.R
@@ -24,18 +29,35 @@ class MainActivity : DDDActivity<ActivityMainBinding, MainViewModel>() {
2429
override fun onCreate(savedInstanceState: Bundle?) {
2530
super.onCreate(savedInstanceState)
2631
setDataBinding()
27-
setUpDialog()
28-
}
32+
setUpLiveData()
33+
viewModel.checkUserType()
2934

30-
private fun setUpDialog() {
3135
btnAttendance.setOnClickListener {
32-
DDDDialog(this)
36+
viewModel.showDDDDialog()
37+
}
38+
}
39+
40+
private fun setUpLiveData() {
41+
viewModel.showDDDDialog.observe(this, Observer { userType ->
42+
DDDDialog(this, userType)
3343
.setDialogListener(object : DDDDialog.DDDDialogEventListener {
3444
override fun onClick(dialog: Dialog) {
3545
dialog.dismiss()
3646
}
3747
}).show()
38-
}
48+
})
49+
50+
viewModel.isAdmin.observe(this, Observer { isAdmin ->
51+
val view = window.decorView
52+
if (isAdmin) {
53+
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
54+
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
55+
window.statusBarColor = ContextCompat.getColor(this, R.color.attendance_admin_background_color)
56+
} else {
57+
view.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
58+
window.statusBarColor = Color.WHITE
59+
}
60+
})
3961
}
4062

4163
private fun setDataBinding() {

app/src/main/java/com/ddd/attendance/check/vm/MainViewModel.kt

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,54 @@ import androidx.databinding.ObservableField
44
import androidx.lifecycle.LiveData
55
import androidx.lifecycle.MutableLiveData
66
import androidx.lifecycle.ViewModel
7+
import com.ddd.attendance.check.common.UserType
8+
import com.ddd.attendance.check.data.UserRepository
9+
import com.ddd.attendance.check.utill.SingleLiveEvent
10+
import kotlinx.coroutines.GlobalScope
11+
import kotlinx.coroutines.launch
712
import javax.inject.Inject
813

9-
class MainViewModel @Inject constructor() : ViewModel() {
14+
class MainViewModel @Inject constructor(private val userRepository: UserRepository) : ViewModel() {
1015

1116

17+
private val _isAdmin = MutableLiveData<Boolean>()
1218
private val _btnEnableLogin = MutableLiveData<Boolean>()
1319

20+
val isAdmin: LiveData<Boolean> = _isAdmin
1421
val editNumberAttendance = ObservableField<String>()
1522
val btnEnableAttendance: LiveData<Boolean> get() = _btnEnableLogin
23+
val showDDDDialog = SingleLiveEvent<UserType>()
1624

1725
fun onInputNumberTextChanged(input: CharSequence) {
1826
editNumberAttendance.set(input.toString())
1927
_btnEnableLogin.value = !editNumberAttendance.get().isNullOrEmpty()
2028
}
2129

30+
fun checkUserType() {
31+
GlobalScope.launch {
32+
userRepository.getUsers()
33+
.map { it.type }
34+
.map { userType ->
35+
if (userType == UserType.BASIC.ordinal) basicUserUI() else adminUserUI()
36+
}
37+
}
38+
}
39+
40+
private fun basicUserUI() {
41+
_isAdmin.postValue(false)
42+
_btnEnableLogin.postValue(false)
43+
}
44+
45+
private fun adminUserUI() {
46+
_isAdmin.postValue(true)
47+
_btnEnableLogin.postValue(true)
48+
}
49+
50+
fun attendance() {
51+
52+
}
53+
54+
fun showDDDDialog() {
55+
56+
}
2257
}
19.5 KB
Loading
11.1 KB
Loading
27.5 KB
Loading
47.4 KB
Loading
70.6 KB
Loading

0 commit comments

Comments
 (0)