Skip to content

Commit

Permalink
- Developed: Parcels Auto-refreshing UI/UX implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
danggai committed May 10, 2021
1 parent 449b0f2 commit b9d3670
Show file tree
Hide file tree
Showing 7 changed files with 181 additions and 1 deletion.
2 changes: 2 additions & 0 deletions app/src/main/java/danggai/app/parcelwhere/Constant.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,6 @@ object Constant {

const val PREF_IS_FIRST_RUN = "PREF_IS_FIRST_RUN"
const val PREF_ALLOW_GET_NOTI = "PREF_ALLOW_GET_NOTI"
const val PREF_AUTO_REFRESH = "PREF_AUTO_REFRESH"
const val PREF_AUTO_REFRESH_TERM = "PREF_AUTO_REFRESH_TERM"
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ class SettingFragment : BindingFragment<SettingFragmentBinding>() {
context?.let {
mVM.lvIsAllowAccessNoti.value = isNotificationPermissionAllowed()
mVM.lvIsAllowGetNoti.value = PreferenceManager.getBooleanDefaultTrue(it, Constant.PREF_ALLOW_GET_NOTI)
mVM.lvIsAllowAutoRefresh.value = PreferenceManager.getBooleanDefaultTrue(it, Constant.PREF_AUTO_REFRESH)
mVM.lvAutoRefreshTerm.value = PreferenceManager.getInt(it, Constant.PREF_AUTO_REFRESH_TERM)
}

when(mVM.lvAutoRefreshTerm.value) {
15 -> binding.rb15m.isChecked = true
30 -> binding.rb30m.isChecked = true
60 -> binding.rb1h.isChecked = true
120 -> binding.rb2h.isChecked = true
}
}

Expand Down Expand Up @@ -96,5 +105,20 @@ class SettingFragment : BindingFragment<SettingFragmentBinding>() {
}
}
})

mVM.lvSetAutoRefresh.observe(viewLifecycleOwner, EventObserver { allowed ->
log.e()
activity?.let { act ->
PreferenceManager.setBoolean(act, Constant.PREF_AUTO_REFRESH, !allowed)
mVM.lvIsAllowAutoRefresh.value = !allowed
}
})

mVM.lvSetAutoRefreshTerm.observe(viewLifecycleOwner, EventObserver { term ->
activity?.let { act ->
log.e(term)
PreferenceManager.setInt(act, Constant.PREF_AUTO_REFRESH_TERM, term)
}
})
}
}
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
package danggai.app.parcelwhere.ui.setting

import android.app.Application
import android.view.View
import androidx.databinding.ViewDataBinding
import androidx.lifecycle.MutableLiveData
import danggai.app.parcelwhere.R
import danggai.app.parcelwhere.ui.base.BaseViewModel
import danggai.app.parcelwhere.data.api.ApiRepository
import danggai.app.parcelwhere.data.db.track.TrackDao
import danggai.app.parcelwhere.databinding.SettingFragmentBinding
import danggai.app.parcelwhere.util.Event
import danggai.app.parcelwhere.util.NonNullMutableLiveData
import danggai.app.parcelwhere.util.log
import kotlinx.android.synthetic.main.setting_fragment.view.*


class SettingViewModel(override val app: Application, private val api: ApiRepository, private val dao: TrackDao) : BaseViewModel(app) {

var lvStartAccessNotiSetting = MutableLiveData<Event<Boolean>>()
var lvIsAllowAccessNoti: NonNullMutableLiveData<Boolean> = NonNullMutableLiveData(false) // denied: -1, granted: 0
var lvIsAllowAutoRefresh: NonNullMutableLiveData<Boolean> = NonNullMutableLiveData(false) // denied: -1, granted: 0
var lvAutoRefreshTerm: NonNullMutableLiveData<Int> = NonNullMutableLiveData(15) // denied: -1, granted: 0

var lvStartGetNotiSetting = MutableLiveData<Event<Boolean>>()
var lvIsAllowGetNoti: NonNullMutableLiveData<Boolean> = NonNullMutableLiveData(false)

var lvStartNotiFailForm = MutableLiveData<Event<Boolean>>()

var lvSetAutoRefresh = MutableLiveData<Event<Boolean>>()
var lvSetAutoRefreshTerm = MutableLiveData<Event<Int>>()

var lvAppVersion: NonNullMutableLiveData<String> = NonNullMutableLiveData("1.0.0")

init {
Expand All @@ -41,4 +51,21 @@ class SettingViewModel(override val app: Application, private val api: ApiReposi
lvStartNotiFailForm.value = Event(true)
}

fun onClickSetAutoRefresh() {
log.e()
lvSetAutoRefresh.value = Event(lvIsAllowAutoRefresh.value)
}

fun onClickSetAutoRefreshTerm(view: View) {
log.e()
val term = when (view.id) {
R.id.rb_15m -> 15
R.id.rb_30m -> 30
R.id.rb_1h -> 60
R.id.rb_2h -> 120
else -> -1
}

lvSetAutoRefreshTerm.value = Event(term)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ object PreferenceManager {
const val PREFERENCES_NAME = "danggai.app.parcelwhere"
private const val DEFAULT_VALUE_STRING = ""
private const val DEFAULT_VALUE_BOOLEAN = false
private const val DEFAULT_VALUE_INT = -1
private const val DEFAULT_VALUE_INT = 60
private const val DEFAULT_VALUE_LONG = -1L
private const val DEFAULT_VALUE_FLOAT = -1f
private fun getPreferences(context: Context): SharedPreferences {
Expand Down
111 changes: 111 additions & 0 deletions app/src/main/res/layout/setting_fragment.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools">

<data>
<import type="android.view.View"/>
<variable
name="vm"
type="danggai.app.parcelwhere.ui.setting.SettingViewModel"/>
Expand Down Expand Up @@ -132,6 +133,116 @@

</androidx.constraintlayout.widget.ConstraintLayout>

<View style="@style/LinearDevider.15dp" />

<androidx.appcompat.widget.AppCompatTextView
style="@style/TextView"
android:layout_width="match_parent"
android:text="@string/manage_parcel"
android:textSize="24sp"
android:textColor="@color/c1"
android:textStyle="bold"
android:paddingTop="30dp"
android:paddingBottom="12dp"
android:paddingLeft="20dp"
/>

<View style="@style/LinearDevider"
android:layout_height="3dp"/>
<View style="@style/AreaDevider" />

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="20dp"
android:paddingHorizontal="30dp"
>

<androidx.appcompat.widget.AppCompatTextView
style="@style/TextView"
android:text="@string/parcel_auto_refresh"
android:textSize="16sp"
android:textColor="@color/c1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>

<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/sm_auto_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{vm.lvIsAllowAutoRefresh}"
android:onClick="@{() -> vm.onClickSetAutoRefresh()}"
android:theme="@style/Switch"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>

</androidx.constraintlayout.widget.ConstraintLayout>

<View style="@style/LinearDevider.15dp" />

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="20dp"
android:paddingHorizontal="30dp"
android:visibility="@{vm.lvIsAllowAutoRefresh ?View.VISIBLE :View.GONE}"
>

<androidx.appcompat.widget.AppCompatTextView
style="@style/TextView"
android:text="@string/auto_refresh_term"
android:textSize="16sp"
android:textColor="@color/c1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>

<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
>

<RadioButton
android:id="@+id/rb_15m"
style="@style/radioButton"
android:text="15분"
android:onClick="@{(v) -> vm.onClickSetAutoRefreshTerm(v)}"
/>

<RadioButton
android:id="@+id/rb_30m"
style="@style/radioButton"
android:text="30분"
android:onClick="@{(v) -> vm.onClickSetAutoRefreshTerm(v)}"
/>

<RadioButton
android:id="@+id/rb_1h"
style="@style/radioButton"
android:text="1시간"
android:onClick="@{(v) -> vm.onClickSetAutoRefreshTerm(v)}"
/>

<RadioButton
android:id="@+id/rb_2h"
style="@style/radioButton"
android:text="2시간"
android:onClick="@{(v) -> vm.onClickSetAutoRefreshTerm(v)}"
/>

</RadioGroup>

</androidx.constraintlayout.widget.ConstraintLayout>


<View style="@style/LinearDevider.15dp" />

<androidx.appcompat.widget.AppCompatTextView
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
<string name="get_notification">운송장 자동 등록 시 알림 수신</string>
<string name="notification_catch_fail">앱이 알림을 인식하지 못하나요?</string>

<string name="manage_parcel">운송장 관리</string>
<string name="parcel_auto_refresh">운송장 자동 새로고침</string>
<string name="auto_refresh_term">자동 새로고침 주기</string>


<string name="app_info">앱 정보</string>

<!-- 다이얼로그 -->
Expand Down
11 changes: 11 additions & 0 deletions app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,15 @@
<item name="android:background">@color/c4</item>
</style>

<style name="radioButton">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">@color/c1</item>
<item name="android:buttonTint">@color/c1</item>
<item name="android:layout_marginTop">-8dp</item>
<item name="android:layout_marginBottom">-8dp</item>
<item name="android:paddingTop">-8dp</item>
<item name="android:paddingBottom">-8dp</item>
</style>

</resources>

0 comments on commit b9d3670

Please sign in to comment.