diff --git a/Habitica/res/drawable/radio_button_text_color.xml b/Habitica/res/drawable/radio_button_text_color.xml
index 5ef737485..ab6413ce0 100644
--- a/Habitica/res/drawable/radio_button_text_color.xml
+++ b/Habitica/res/drawable/radio_button_text_color.xml
@@ -1,5 +1,6 @@
+
\ No newline at end of file
diff --git a/Habitica/res/layout/bottom_sheet_backgrounds_filter.xml b/Habitica/res/layout/bottom_sheet_backgrounds_filter.xml
index b33f4e8f9..4e0804dbd 100644
--- a/Habitica/res/layout/bottom_sheet_backgrounds_filter.xml
+++ b/Habitica/res/layout/bottom_sheet_backgrounds_filter.xml
@@ -13,7 +13,7 @@
android:layout_marginBottom="@dimen/spacing_large">
diff --git a/Habitica/res/layout/dialog_habitica_account.xml b/Habitica/res/layout/dialog_habitica_account.xml
index 33c105a03..1358379c4 100644
--- a/Habitica/res/layout/dialog_habitica_account.xml
+++ b/Habitica/res/layout/dialog_habitica_account.xml
@@ -1,104 +1,109 @@
-
+ android:layout_height="wrap_content">
-
+ android:layout_height="match_parent">
-
+ android:layout_height="?attr/actionBarSize"
+ app:cardBackgroundColor="@color/gray_2_alpha"
+ app:cardCornerRadius="0dp"
+ app:cardElevation="0dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
-
+
-
+
-
+
+
+
-
+
-
-
-
-
-
-
-
-
+ android:layout_below="@id/toolbar_cardview"
+ android:layout_marginStart="@dimen/spacing_large"
+ android:layout_marginTop="@dimen/spacing_large"
+ android:layout_marginEnd="@dimen/spacing_large"
+ android:text="@string/are_you_sure_you_want_to_delete" />
+
+
+
+
+
+
+
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/Habitica/res/values-night/colors.xml b/Habitica/res/values-night/colors.xml
index 3d743674e..95dc3cd34 100644
--- a/Habitica/res/values-night/colors.xml
+++ b/Habitica/res/values-night/colors.xml
@@ -46,6 +46,7 @@
#40ffffff
#3D3945
#FFFFB445
+ #FFFFFF
#f21A181D
#cc1A181D
diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml
index 41be15f0e..4005339f6 100644
--- a/Habitica/res/values/colors.xml
+++ b/Habitica/res/values/colors.xml
@@ -99,6 +99,7 @@
#99FFFFFF
@color/gray_600
#99edecee
+ #000000
#f2ffffff
#ccffffff
diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml
index 42d8d4a17..e27e852b0 100644
--- a/Habitica/res/values/styles.xml
+++ b/Habitica/res/values/styles.xml
@@ -392,6 +392,7 @@
- @color/gray_2_alpha
- @android:style/Animation.Dialog
- @color/account_dialog_bars
+ - adjustResize
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/CustomizationSet.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/CustomizationSet.kt
index 415f3ef7f..6804720a8 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/CustomizationSet.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/CustomizationSet.kt
@@ -6,4 +6,18 @@ class CustomizationSet {
var price: Int = 0
var hasPurchasable = false
var customizations: MutableList = mutableListOf()
+ var ownedCustomizations: MutableList = mutableListOf()
+
+ fun isSetDeal(): Boolean {
+ var total = 0
+ for (customization in customizations) {
+ if (!ownedCustomizations.contains(customization)) {
+ customization.price?.let { total += it }
+ }
+ }
+ if (total >= price) {
+ return true
+ }
+ return false
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt
index c9d4c5205..e254ec07b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt
@@ -115,7 +115,7 @@ class ArmoireActivity : BaseActivity() {
finish()
}
binding.equipButton.setOnClickListener {
- equipmentKey?.let { it1 -> inventoryRepository.equip("gear", it1).subscribe({}, RxErrorHandler.handleEmptyError()) }
+ equipmentKey?.let { it1 -> inventoryRepository.equip("equipped", it1).subscribe({}, RxErrorHandler.handleEmptyError()) }
finish()
}
binding.dropRateButton.setOnClickListener {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt
index 85fb907af..9e06994b9 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt
@@ -134,7 +134,10 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
customizationList.add(customization)
lastSet.customizations.add(customization)
if (customization.isUsable(ownedCustomizations.contains(customization.id)) && lastSet.hasPurchasable) {
- lastSet.hasPurchasable = false
+ lastSet.ownedCustomizations.add(customization)
+ if (!lastSet.isSetDeal()) {
+ lastSet.hasPurchasable = false
+ }
}
}
this.notifyDataSetChanged()
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
index 17bf14d5a..56088fbf2 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
@@ -1,6 +1,7 @@
package com.habitrpg.android.habitica.ui.fragments.inventory.customization
import android.graphics.PorterDuff
+import android.graphics.Typeface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
@@ -308,6 +309,7 @@ class AvatarCustomizationFragment :
binding.monthReleasedWrapper.visibility = View.GONE
}
dialog.setContentView(binding.root)
+ dialog.setOnDismissListener { updateFilterIcon() }
dialog.show()
}
@@ -317,8 +319,10 @@ class AvatarCustomizationFragment :
button.text
button.setOnCheckedChangeListener { _, isChecked ->
if (!isChecked && filter.months.contains(identifier)) {
+ button.typeface = Typeface.create("sans-serif", Typeface.NORMAL)
filter.months.remove(identifier)
} else if (isChecked && !filter.months.contains(identifier)) {
+ button.typeface = Typeface.create("sans-serif-medium", Typeface.NORMAL)
filter.months.add(identifier)
}
currentFilter.onNext(filter)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/HabiticaAccountDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/HabiticaAccountDialog.kt
index 702865ea3..166be181b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/HabiticaAccountDialog.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/HabiticaAccountDialog.kt
@@ -7,6 +7,7 @@ import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.view.WindowManager
import androidx.core.content.ContextCompat
import androidx.fragment.app.DialogFragment
import com.habitrpg.android.habitica.R
@@ -14,7 +15,7 @@ import com.habitrpg.android.habitica.databinding.DialogHabiticaAccountBinding
import com.habitrpg.android.habitica.models.user.User
-class HabiticaAccountDialog(private var thisContext: Context, ) : DialogFragment(R.layout.dialog_habitica_account) {
+class HabiticaAccountDialog(private var thisContext: Context) : DialogFragment(R.layout.dialog_habitica_account) {
private var _binding: DialogHabiticaAccountBinding? = null
private val binding get() = _binding!!
@@ -31,6 +32,7 @@ class HabiticaAccountDialog(private var thisContext: Context, ) : DialogFragment
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+
when (accountAction) {
"reset_account" -> setResetAccountViews()
"delete_account" -> setDeleteAccountViews()
@@ -48,7 +50,7 @@ class HabiticaAccountDialog(private var thisContext: Context, ) : DialogFragment
binding.confirmationInputEdittext.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
- binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.gray_10))
+ binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.gray_300))
binding.confirmActionTextview.alpha = .4f
}
@@ -57,7 +59,7 @@ class HabiticaAccountDialog(private var thisContext: Context, ) : DialogFragment
binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.red_100))
binding.confirmActionTextview.alpha = 1.0f
} else {
- binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.gray_10))
+ binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.gray_300))
binding.confirmActionTextview.alpha = .4f
}
}
@@ -85,19 +87,19 @@ class HabiticaAccountDialog(private var thisContext: Context, ) : DialogFragment
binding.confirmationInputEdittext.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
- binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.gray_10))
+ binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.gray_300))
binding.confirmActionTextview.alpha = .4f
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
if (binding.confirmationInputEdittext.text.toString().length > 5) {
if ((user?.authentication?.hasPassword != true && binding.confirmationInputEdittext.text.toString() == context?.getString(R.string.delete_caps)) ||
- user?.authentication?.hasPassword == true) {
+ user?.authentication?.hasPassword == true) {
binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.red_100))
binding.confirmActionTextview.alpha = 1.0f
}
} else {
- binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.gray_10))
+ binding.confirmActionTextview.setTextColor(ContextCompat.getColor(thisContext, R.color.gray_300))
binding.confirmActionTextview.alpha = .4f
}
}
diff --git a/common/src/main/java/com/habitrpg/common/habitica/helpers/MarkdownParser.kt b/common/src/main/java/com/habitrpg/common/habitica/helpers/MarkdownParser.kt
index 7a3acce50..9e73249fa 100644
--- a/common/src/main/java/com/habitrpg/common/habitica/helpers/MarkdownParser.kt
+++ b/common/src/main/java/com/habitrpg/common/habitica/helpers/MarkdownParser.kt
@@ -150,7 +150,11 @@ private fun handleUrlClicks(context: Context, url: String) {
val webpage = if (url.startsWith("/")) {
Uri.parse("${context.getString(R.string.base_url)}$url")
} else {
- Uri.parse(url)
+ if (Uri.parse(url).scheme == null) {
+ Uri.parse("http://$url");
+ } else {
+ Uri.parse(url)
+ }
}
val intent = Intent(Intent.ACTION_VIEW, webpage)
if (intent.resolveActivity(context.packageManager) != null) {