AlarmListActivity 문자열 리소스화
This commit is contained in:
@@ -37,10 +37,13 @@ class AlarmAdapter(
|
|||||||
private val binding: ItemAlarmBinding
|
private val binding: ItemAlarmBinding
|
||||||
) : RecyclerView.ViewHolder(binding.root) {
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(alarm: Alarm) {
|
fun bind(alarm: Alarm) {
|
||||||
|
val context = binding.root.context
|
||||||
binding.tvTitle.text = alarm.title
|
binding.tvTitle.text = alarm.title
|
||||||
binding.tvAmpm.text = SimpleDateFormat("a", Locale.getDefault())
|
val amPmPattern = context.getString(R.string.alarm_list_ampm_format)
|
||||||
|
binding.tvAmpm.text = SimpleDateFormat(amPmPattern, Locale.getDefault())
|
||||||
.format(alarm.time)
|
.format(alarm.time)
|
||||||
binding.tvTime.text = SimpleDateFormat("hh:mm", Locale.getDefault())
|
val timePattern = context.getString(R.string.alarm_list_time_format)
|
||||||
|
binding.tvTime.text = SimpleDateFormat(timePattern, Locale.getDefault())
|
||||||
.format(alarm.time)
|
.format(alarm.time)
|
||||||
binding.tvDays.text = if (alarm.days.isNotEmpty()) {
|
binding.tvDays.text = if (alarm.days.isNotEmpty()) {
|
||||||
alarm.getDaysText()
|
alarm.getDaysText()
|
||||||
@@ -52,9 +55,9 @@ class AlarmAdapter(
|
|||||||
val pattern = if (
|
val pattern = if (
|
||||||
currentCalendar.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR)
|
currentCalendar.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR)
|
||||||
) {
|
) {
|
||||||
"M월 d일 (E)"
|
context.getString(R.string.alarm_list_date_same_year_format)
|
||||||
} else {
|
} else {
|
||||||
"yyyy년 M월 d일 (E)"
|
context.getString(R.string.alarm_list_date_diff_year_format)
|
||||||
}
|
}
|
||||||
|
|
||||||
SimpleDateFormat(pattern, Locale.getDefault())
|
SimpleDateFormat(pattern, Locale.getDefault())
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import androidx.core.app.NotificationManagerCompat
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.gun0912.tedpermission.PermissionListener
|
import com.gun0912.tedpermission.PermissionListener
|
||||||
import com.gun0912.tedpermission.normal.TedPermission
|
import com.gun0912.tedpermission.normal.TedPermission
|
||||||
|
import kr.co.vividnext.sodalive.R
|
||||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||||
import kr.co.vividnext.sodalive.base.SodaDialog
|
import kr.co.vividnext.sodalive.base.SodaDialog
|
||||||
import kr.co.vividnext.sodalive.common.Constants
|
import kr.co.vividnext.sodalive.common.Constants
|
||||||
@@ -27,6 +28,7 @@ import kr.co.vividnext.sodalive.databinding.ActivityAlarmListBinding
|
|||||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||||
import kr.co.vividnext.sodalive.mypage.alarm.db.Alarm
|
import kr.co.vividnext.sodalive.mypage.alarm.db.Alarm
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
|
import androidx.core.net.toUri
|
||||||
|
|
||||||
class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
||||||
ActivityAlarmListBinding::inflate
|
ActivityAlarmListBinding::inflate
|
||||||
@@ -55,13 +57,14 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun checkAndRequestOverlayPermission() {
|
private fun checkAndRequestOverlayPermission() {
|
||||||
|
val permissionMessage = getString(R.string.alarm_list_overlay_permission_required)
|
||||||
requestOverlayPermissionLauncher = registerForActivityResult(
|
requestOverlayPermissionLauncher = registerForActivityResult(
|
||||||
ActivityResultContracts.StartActivityForResult()
|
ActivityResultContracts.StartActivityForResult()
|
||||||
) {
|
) {
|
||||||
if (!Settings.canDrawOverlays(this)) {
|
if (!Settings.canDrawOverlays(this)) {
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
this,
|
this,
|
||||||
"알람서비스를 이용하시려면 다른 앱 위에 표시 권한을 허용하셔야 합니다.",
|
permissionMessage,
|
||||||
Toast.LENGTH_SHORT
|
Toast.LENGTH_SHORT
|
||||||
).show()
|
).show()
|
||||||
|
|
||||||
@@ -72,12 +75,12 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||||||
if (!Settings.canDrawOverlays(this)) {
|
if (!Settings.canDrawOverlays(this)) {
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
this,
|
this,
|
||||||
"알람서비스를 이용하시려면 다른 앱 위에 표시 권한을 허용하셔야 합니다.",
|
permissionMessage,
|
||||||
Toast.LENGTH_SHORT
|
Toast.LENGTH_SHORT
|
||||||
).show()
|
).show()
|
||||||
val intent = Intent(
|
val intent = Intent(
|
||||||
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
||||||
Uri.parse("package:$packageName")
|
"package:$packageName".toUri()
|
||||||
)
|
)
|
||||||
requestOverlayPermissionLauncher.launch(intent)
|
requestOverlayPermissionLauncher.launch(intent)
|
||||||
}
|
}
|
||||||
@@ -85,6 +88,7 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.S)
|
@RequiresApi(Build.VERSION_CODES.S)
|
||||||
private fun checkAndRequestExactAlarmPermission() {
|
private fun checkAndRequestExactAlarmPermission() {
|
||||||
|
val permissionMessage = getString(R.string.alarm_list_exact_alarm_permission_required)
|
||||||
requestExactAlarmPermissionLauncher = registerForActivityResult(
|
requestExactAlarmPermissionLauncher = registerForActivityResult(
|
||||||
ActivityResultContracts.StartActivityForResult()
|
ActivityResultContracts.StartActivityForResult()
|
||||||
) {
|
) {
|
||||||
@@ -92,7 +96,7 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||||||
if (!alarmManager.canScheduleExactAlarms()) {
|
if (!alarmManager.canScheduleExactAlarms()) {
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
this,
|
this,
|
||||||
"알람서비스를 이용하시려면 권한을 허용하셔야 합니다.",
|
permissionMessage,
|
||||||
Toast.LENGTH_SHORT
|
Toast.LENGTH_SHORT
|
||||||
).show()
|
).show()
|
||||||
finish()
|
finish()
|
||||||
@@ -109,7 +113,7 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||||||
override fun setupView() {
|
override fun setupView() {
|
||||||
loadingDialog = LoadingDialog(this, layoutInflater)
|
loadingDialog = LoadingDialog(this, layoutInflater)
|
||||||
|
|
||||||
binding.tvBack.text = "보이스 모닝콜 등록"
|
binding.tvBack.text = getString(R.string.alarm_list_title)
|
||||||
binding.tvBack.setOnClickListener { finish() }
|
binding.tvBack.setOnClickListener { finish() }
|
||||||
binding.ivPlus.setOnClickListener {
|
binding.ivPlus.setOnClickListener {
|
||||||
startActivity(
|
startActivity(
|
||||||
@@ -209,7 +213,7 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setDeniedMessage(
|
.setDeniedMessage(
|
||||||
"권한을 거부하시면 알람서비스를 이용하실 수 없습니다."
|
getString(R.string.alarm_list_post_notification_denied)
|
||||||
)
|
)
|
||||||
.setPermissions(*permissions.toTypedArray())
|
.setPermissions(*permissions.toTypedArray())
|
||||||
.check()
|
.check()
|
||||||
@@ -220,19 +224,19 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||||||
SodaDialog(
|
SodaDialog(
|
||||||
this,
|
this,
|
||||||
layoutInflater,
|
layoutInflater,
|
||||||
title = "알림",
|
title = getString(R.string.dialog_alert_title),
|
||||||
desc = "알람을 삭제하시겠습니까?",
|
desc = getString(R.string.alarm_list_delete_desc),
|
||||||
confirmButtonTitle = "삭제",
|
confirmButtonTitle = getString(R.string.confirm_delete_title),
|
||||||
confirmButtonClick = {
|
confirmButtonClick = {
|
||||||
alarmViewModel.delete(alarm)
|
alarmViewModel.delete(alarm)
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
applicationContext,
|
applicationContext,
|
||||||
"알람이 삭제되었습니다.",
|
getString(R.string.alarm_list_delete_toast),
|
||||||
Toast.LENGTH_SHORT
|
Toast.LENGTH_SHORT
|
||||||
).show()
|
).show()
|
||||||
adapterRefresh()
|
adapterRefresh()
|
||||||
},
|
},
|
||||||
cancelButtonTitle = "취소",
|
cancelButtonTitle = getString(R.string.cancel),
|
||||||
).show(screenWidth)
|
).show(screenWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,11 +244,11 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||||||
SodaDialog(
|
SodaDialog(
|
||||||
this,
|
this,
|
||||||
layoutInflater,
|
layoutInflater,
|
||||||
title = "알림",
|
title = getString(R.string.dialog_alert_title),
|
||||||
desc = "추가 슬롯을 구매하시겠습니까?",
|
desc = getString(R.string.alarm_list_buy_desc),
|
||||||
confirmButtonTitle = "구매",
|
confirmButtonTitle = getString(R.string.alarm_list_buy_confirm),
|
||||||
confirmButtonClick = { viewModel.buyExtraSlot() },
|
confirmButtonClick = { viewModel.buyExtraSlot() },
|
||||||
cancelButtonTitle = "취소",
|
cancelButtonTitle = getString(R.string.cancel),
|
||||||
).show(screenWidth)
|
).show(screenWidth)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
android:textSize="18.3sp"
|
android:textSize="18.3sp"
|
||||||
app:drawableStartCompat="@drawable/ic_back"
|
app:drawableStartCompat="@drawable/ic_back"
|
||||||
tools:ignore="RelativeOverlap"
|
tools:ignore="RelativeOverlap"
|
||||||
tools:text="보이스온" />
|
tools:text="@string/alarm_list_title" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/iv_plus"
|
android:id="@+id/iv_plus"
|
||||||
@@ -41,16 +41,16 @@
|
|||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="13.3dp"
|
android:layout_marginHorizontal="13.3dp"
|
||||||
android:layout_marginVertical="10dp"
|
android:layout_marginVertical="10dp"
|
||||||
android:fontFamily="@font/gmarket_sans_medium"
|
android:fontFamily="@font/gmarket_sans_medium"
|
||||||
android:lineSpacingExtra="4sp"
|
android:lineSpacingExtra="4sp"
|
||||||
android:text="※ 소장중인 콘텐츠만 알람 콘텐츠로 설정할 수 있습니다. 알람 설정 전 콘텐츠 마켓에서 원하는 콘텐츠를 먼저 구매(소장)하세요. "
|
android:text="@string/alarm_list_notice_owned_only"
|
||||||
android:textColor="@android:color/darker_gray"
|
android:textColor="@android:color/darker_gray"
|
||||||
android:textSize="13.5sp" />
|
android:textSize="13.5sp" />
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/scroll_view"
|
android:id="@+id/scroll_view"
|
||||||
@@ -97,9 +97,10 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text=" 으로"
|
android:text="@string/alarm_extra_slot_price_suffix"
|
||||||
android:textColor="@color/color_eeeeee"
|
android:textColor="@color/color_eeeeee"
|
||||||
android:textSize="14.7sp" />
|
android:textSize="14.7sp" />
|
||||||
|
|
||||||
@@ -107,9 +108,10 @@
|
|||||||
android:id="@+id/tv_infinity"
|
android:id="@+id/tv_infinity"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text=" 무제한"
|
android:text="@string/alarm_extra_slot_unlimited"
|
||||||
android:textColor="@color/color_ff5c49"
|
android:textColor="@color/color_ff5c49"
|
||||||
android:textSize="14.7sp"
|
android:textSize="14.7sp"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
@@ -117,9 +119,10 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text=" 슬롯 구매하기"
|
android:text="@string/alarm_extra_slot_purchase_suffix"
|
||||||
android:textColor="@color/color_eeeeee"
|
android:textColor="@color/color_eeeeee"
|
||||||
android:textSize="14.7sp" />
|
android:textSize="14.7sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -132,7 +135,7 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:fontFamily="@font/gmarket_sans_medium"
|
android:fontFamily="@font/gmarket_sans_medium"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="알람이 없습니다"
|
android:text="@string/alarm_list_empty"
|
||||||
android:textColor="@android:color/darker_gray"
|
android:textColor="@android:color/darker_gray"
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
|
|||||||
@@ -436,4 +436,21 @@
|
|||||||
<string name="alarm_time_format">hh:mm</string>
|
<string name="alarm_time_format">hh:mm</string>
|
||||||
<string name="alarm_date_format">MMM d</string>
|
<string name="alarm_date_format">MMM d</string>
|
||||||
<string name="alarm_stop_content_description">Stop alarm button</string>
|
<string name="alarm_stop_content_description">Stop alarm button</string>
|
||||||
|
<string name="alarm_list_title">Set Voice morning call</string>
|
||||||
|
<string name="alarm_list_overlay_permission_required">To use the alarm service, allow display over other apps.</string>
|
||||||
|
<string name="alarm_list_exact_alarm_permission_required">To use the alarm service, allow the exact alarm permission.</string>
|
||||||
|
<string name="alarm_list_post_notification_denied">You cannot use the alarm service if you deny the permission.</string>
|
||||||
|
<string name="alarm_list_delete_desc">Delete this alarm?</string>
|
||||||
|
<string name="alarm_list_delete_toast">Alarm deleted.</string>
|
||||||
|
<string name="alarm_list_buy_desc">Purchase an extra slot?</string>
|
||||||
|
<string name="alarm_list_buy_confirm">Purchase</string>
|
||||||
|
<string name="alarm_list_notice_owned_only">※ Only owned content can be set as an alarm. Please purchase the content in the market before setting an alarm.</string>
|
||||||
|
<string name="alarm_list_empty">No alarms</string>
|
||||||
|
<string name="alarm_list_ampm_format">a</string>
|
||||||
|
<string name="alarm_list_time_format">hh:mm</string>
|
||||||
|
<string name="alarm_list_date_same_year_format">MMM d (EEE)</string>
|
||||||
|
<string name="alarm_list_date_diff_year_format">yyyy MMM d (EEE)</string>
|
||||||
|
<string name="alarm_extra_slot_price_suffix">to get</string>
|
||||||
|
<string name="alarm_extra_slot_unlimited">unlimited</string>
|
||||||
|
<string name="alarm_extra_slot_purchase_suffix">slot(s)</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -436,4 +436,21 @@
|
|||||||
<string name="alarm_time_format">hh:mm</string>
|
<string name="alarm_time_format">hh:mm</string>
|
||||||
<string name="alarm_date_format">M月 d日</string>
|
<string name="alarm_date_format">M月 d日</string>
|
||||||
<string name="alarm_stop_content_description">アラーム停止ボタン</string>
|
<string name="alarm_stop_content_description">アラーム停止ボタン</string>
|
||||||
|
<string name="alarm_list_title">ボイスモーニングコール登録</string>
|
||||||
|
<string name="alarm_list_overlay_permission_required">アラームサービスを利用するには、他のアプリの上に表示する権限を許可してください。</string>
|
||||||
|
<string name="alarm_list_exact_alarm_permission_required">アラームサービスを利用するには、権限を許可してください。</string>
|
||||||
|
<string name="alarm_list_post_notification_denied">権限を拒否するとアラームサービスを利用できません。</string>
|
||||||
|
<string name="alarm_list_delete_desc">アラームを削除しますか?</string>
|
||||||
|
<string name="alarm_list_delete_toast">アラームを削除しました。</string>
|
||||||
|
<string name="alarm_list_buy_desc">追加スロットを購入しますか?</string>
|
||||||
|
<string name="alarm_list_buy_confirm">購入</string>
|
||||||
|
<string name="alarm_list_notice_owned_only">※所有中のコンテンツのみアラームコンテンツに設定できます。アラーム設定前にコンテンツマーケットで目的のコンテンツを購入(所有)してください。</string>
|
||||||
|
<string name="alarm_list_empty">アラームがありません</string>
|
||||||
|
<string name="alarm_list_ampm_format">a</string>
|
||||||
|
<string name="alarm_list_time_format">hh:mm</string>
|
||||||
|
<string name="alarm_list_date_same_year_format">M月 d日 (E)</string>
|
||||||
|
<string name="alarm_list_date_diff_year_format">yyyy年 M月 d日 (E)</string>
|
||||||
|
<string name="alarm_extra_slot_price_suffix">で</string>
|
||||||
|
<string name="alarm_extra_slot_unlimited">無制限</string>
|
||||||
|
<string name="alarm_extra_slot_purchase_suffix">スロットを購入</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -435,4 +435,21 @@
|
|||||||
<string name="alarm_time_format">hh:mm</string>
|
<string name="alarm_time_format">hh:mm</string>
|
||||||
<string name="alarm_date_format">MM월 dd일</string>
|
<string name="alarm_date_format">MM월 dd일</string>
|
||||||
<string name="alarm_stop_content_description">알람 끄기 버튼</string>
|
<string name="alarm_stop_content_description">알람 끄기 버튼</string>
|
||||||
|
<string name="alarm_list_title">보이스 모닝콜 등록</string>
|
||||||
|
<string name="alarm_list_overlay_permission_required">알람서비스를 이용하시려면 다른 앱 위에 표시 권한을 허용하셔야 합니다.</string>
|
||||||
|
<string name="alarm_list_exact_alarm_permission_required">알람서비스를 이용하시려면 권한을 허용하셔야 합니다.</string>
|
||||||
|
<string name="alarm_list_post_notification_denied">권한을 거부하시면 알람서비스를 이용하실 수 없습니다.</string>
|
||||||
|
<string name="alarm_list_delete_desc">알람을 삭제하시겠습니까?</string>
|
||||||
|
<string name="alarm_list_delete_toast">알람이 삭제되었습니다.</string>
|
||||||
|
<string name="alarm_list_buy_desc">추가 슬롯을 구매하시겠습니까?</string>
|
||||||
|
<string name="alarm_list_buy_confirm">구매</string>
|
||||||
|
<string name="alarm_list_notice_owned_only">※ 소장중인 콘텐츠만 알람 콘텐츠로 설정할 수 있습니다. 알람 설정 전 콘텐츠 마켓에서 원하는 콘텐츠를 먼저 구매(소장)하세요.</string>
|
||||||
|
<string name="alarm_list_empty">알람이 없습니다</string>
|
||||||
|
<string name="alarm_list_ampm_format">a</string>
|
||||||
|
<string name="alarm_list_time_format">hh:mm</string>
|
||||||
|
<string name="alarm_list_date_same_year_format">M월 d일 (E)</string>
|
||||||
|
<string name="alarm_list_date_diff_year_format">yyyy년 M월 d일 (E)</string>
|
||||||
|
<string name="alarm_extra_slot_price_suffix">으로</string>
|
||||||
|
<string name="alarm_extra_slot_unlimited">무제한</string>
|
||||||
|
<string name="alarm_extra_slot_purchase_suffix">슬롯 구매하기</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user