diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt index c4f5f7a9e..e9bf0c3e4 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt @@ -2,6 +2,7 @@ package com.habitrpg.wearos.habitica.ui.activities import android.app.AlertDialog import android.content.Intent +import android.content.pm.PackageManager import android.os.Bundle import androidx.activity.viewModels import androidx.wear.widget.WearableLinearLayoutManager @@ -80,10 +81,42 @@ class SettingsActivity: BaseActivity null ) { showLogoutConfirmation() + }, + SettingsItem( + "spacer", + getString(R.string.settings), + SettingsItem.Types.SPACER, + null + ) { + }, + SettingsItem( + "footer", + getString(R.string.version_info, versionName, versionCode), + SettingsItem.Types.FOOTER, + null + ){ } ) } + private val versionName: String by lazy { + try { + @Suppress("DEPRECATION") + packageManager?.getPackageInfo(packageName ?: "", 0)?.versionName ?: "" + } catch (e: PackageManager.NameNotFoundException) { + "" + } + } + + private val versionCode: Int by lazy { + try { + @Suppress("DEPRECATION") + packageManager?.getPackageInfo(packageName ?: "", 0)?.versionCode ?: 0 + } catch (e: PackageManager.NameNotFoundException) { + 0 + } + } + private fun showLogoutConfirmation() { AlertDialog.Builder(this) .setTitle(R.string.are_you_sure) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/SettingsAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/SettingsAdapter.kt index baa255043..6eecc08f7 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/SettingsAdapter.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/SettingsAdapter.kt @@ -7,12 +7,14 @@ import android.widget.RadioButton import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.databinding.RowFooterBinding import com.habitrpg.android.habitica.databinding.RowHeaderBinding import com.habitrpg.android.habitica.databinding.RowSettingsBinding import com.habitrpg.android.habitica.databinding.RowSpacerBinding import com.habitrpg.common.habitica.extensions.dpToPx import com.habitrpg.common.habitica.extensions.layoutInflater import com.habitrpg.wearos.habitica.ui.viewHolders.BindableViewHolder +import com.habitrpg.wearos.habitica.ui.viewHolders.FooterViewHolder import com.habitrpg.wearos.habitica.ui.viewHolders.HeaderViewHolder import com.habitrpg.wearos.habitica.ui.viewHolders.SpacerViewHolder @@ -23,22 +25,28 @@ class SettingsAdapter: RecyclerView.Adapter() { notifyDataSetChanged() } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - if (viewType == 0) { - return HeaderViewHolder(RowHeaderBinding.inflate(parent.context.layoutInflater, parent, false).root) - } else if (viewType == 1) { - return SpacerViewHolder(RowSpacerBinding.inflate(parent.context.layoutInflater, parent, false).root) - } else { - return SettingsViewHolder(RowSettingsBinding.inflate(parent.context.layoutInflater, parent, false).root) + return when (viewType) { + 0 -> { HeaderViewHolder(RowHeaderBinding.inflate(parent.context.layoutInflater, parent, false).root) } + 1 -> { FooterViewHolder(RowFooterBinding.inflate(parent.context.layoutInflater, parent, false).root) } + 2 -> { SpacerViewHolder(RowSpacerBinding.inflate(parent.context.layoutInflater, parent, false).root) } + else -> { SettingsViewHolder(RowSettingsBinding.inflate(parent.context.layoutInflater, parent, false).root) } } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - if (holder is SettingsViewHolder) { - holder.bind(data[position]) - } else if (holder is HeaderViewHolder) { - holder.bind(data[position].title) - } else if (holder is SpacerViewHolder) { - holder.bind(16.dpToPx(holder.itemView.context)) + when (holder) { + is SettingsViewHolder -> { + holder.bind(data[position]) + } + is HeaderViewHolder -> { + holder.bind(data[position].title) + } + is FooterViewHolder -> { + holder.bind(data[position].title) + } + is SpacerViewHolder -> { + holder.bind(16.dpToPx(holder.itemView.context)) + } } } @@ -48,8 +56,9 @@ class SettingsAdapter: RecyclerView.Adapter() { val item = data[position] return when (item.type) { SettingsItem.Types.HEADER -> 0 - SettingsItem.Types.SPACER -> 1 - else -> 2 + SettingsItem.Types.FOOTER -> 1 + SettingsItem.Types.SPACER -> 2 + else -> 3 } } } @@ -105,6 +114,7 @@ data class SettingsItem( DESTRUCTIVE_BUTTON, SPACER, TOGGLE, - HEADER + HEADER, + FOOTER } } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/FooterViewHolder.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/FooterViewHolder.kt new file mode 100644 index 000000000..45c064dd9 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/FooterViewHolder.kt @@ -0,0 +1,12 @@ +package com.habitrpg.wearos.habitica.ui.viewHolders + +import android.view.View +import com.habitrpg.android.habitica.databinding.RowFooterBinding + +class FooterViewHolder(itemView: View): BindableViewHolder(itemView) { + private val binding = RowFooterBinding.bind(itemView) + + override fun bind(data: String) { + binding.textView.text = data + } +} \ No newline at end of file diff --git a/wearos/src/main/res/layout/row_footer.xml b/wearos/src/main/res/layout/row_footer.xml new file mode 100644 index 000000000..1c0e7523b --- /dev/null +++ b/wearos/src/main/res/layout/row_footer.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/wearos/src/main/res/values/strings.xml b/wearos/src/main/res/values/strings.xml index 79fea9643..8fcd2caee 100644 --- a/wearos/src/main/res/values/strings.xml +++ b/wearos/src/main/res/values/strings.xml @@ -29,4 +29,5 @@ Save Sync Data Hide task rewards + Version %1$s (%2$d) \ No newline at end of file