Merge branch 'hafiz/settings-version' into hafiz/settings-updates

This commit is contained in:
Hafiz 2022-06-28 12:22:30 -04:00
commit bb1c2c9072
5 changed files with 97 additions and 15 deletions

View file

@ -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<ActivitySettingsBinding, SettingsViewModel>
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)

View file

@ -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<RecyclerView.ViewHolder>() {
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<RecyclerView.ViewHolder>() {
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
}
}

View file

@ -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<String>(itemView) {
private val binding = RowFooterBinding.bind(itemView)
override fun bind(data: String) {
binding.textView.text = data
}
}

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="45dp">
<ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_above="@id/text_view"
android:layout_centerHorizontal="true"
android:layout_marginBottom="2dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:fontFamily="sans-serif"
android:textColor="@color/watch_purple_200"
android:textSize="12sp"
tools:text="Footer Text" />
</RelativeLayout>

View file

@ -29,4 +29,5 @@
<string name="save">Save</string>
<string name="sync_data">Sync Data</string>
<string name="hide_task_rewards">Hide task rewards</string>
<string name="version_info">Version %1$s (%2$d)</string>
</resources>