mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 12:49:02 +00:00
Merge branch 'hafiz/settings-version' into hafiz/settings-updates
This commit is contained in:
commit
bb1c2c9072
5 changed files with 97 additions and 15 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
26
wearos/src/main/res/layout/row_footer.xml
Normal file
26
wearos/src/main/res/layout/row_footer.xml
Normal 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>
|
||||
|
|
@ -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>
|
||||
Loading…
Reference in a new issue