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) {