From 4cb2c7212f9194063f0249aba808701e666f47fd Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 5 Apr 2022 14:50:34 +0200 Subject: [PATCH 01/25] Prototype ad implementation --- Habitica/AndroidManifest.xml | 3 + Habitica/build.gradle | 1 + Habitica/res/values/strings.xml | 1 + .../android/habitica/helpers/AdHandler.kt | 119 ++++++++++++++++++ .../habitica/ui/activities/MainActivity.kt | 11 ++ 5 files changed, 135 insertions(+) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AdHandler.kt diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index d453c944a..2a946b5e5 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -30,6 +30,9 @@ + Compact Minimal + Watch Ad diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AdHandler.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AdHandler.kt new file mode 100644 index 000000000..0074a8d6d --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AdHandler.kt @@ -0,0 +1,119 @@ +package com.habitrpg.android.habitica.helpers + +import android.app.Activity +import android.content.Context +import android.util.Log +import com.google.android.gms.ads.AdRequest +import com.google.android.gms.ads.FullScreenContentCallback +import com.google.android.gms.ads.LoadAdError +import com.google.android.gms.ads.MobileAds +import com.google.android.gms.ads.OnUserEarnedRewardListener +import com.google.android.gms.ads.rewarded.RewardItem +import com.google.android.gms.ads.rewarded.RewardedAd +import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback + + +class AdHandler(var activity: Activity, var rewardAction: (Boolean) -> Unit): OnUserEarnedRewardListener { + private var rewardedAd: RewardedAd? = null + + companion object { + private enum class AdStatus { + UNINITIALIZED, + INITIALIZING, + READY, + DISABLED + } + + const val TAG = "AdHandler" + const val adUnitID = "ca-app-pub-3940256099942544/5224354917" + + private var currentAdStatus = AdStatus.UNINITIALIZED + + fun initialize(context: Context, onComplete: () -> Unit) { + if (currentAdStatus != AdStatus.UNINITIALIZED) return + currentAdStatus = AdStatus.INITIALIZING + MobileAds.initialize(context) { + currentAdStatus = AdStatus.READY + onComplete() + } + } + + fun whenAdsInitialized(context: Context, onComplete: () -> Unit) { + when (currentAdStatus) { + AdStatus.READY -> { + onComplete() + } + AdStatus.DISABLED -> { + return + } + AdStatus.UNINITIALIZED -> { + initialize(context) { + onComplete() + } + } + AdStatus.INITIALIZING -> { + return + } + } + } + } + + fun prepare() { + whenAdsInitialized(activity) { + val adRequest = AdRequest.Builder().build() + + RewardedAd.load(activity, adUnitID, adRequest, object : RewardedAdLoadCallback() { + override fun onAdFailedToLoad(adError: LoadAdError) { + rewardAction(false) + } + + override fun onAdLoaded(rewardedAd: RewardedAd) { + this@AdHandler.rewardedAd = rewardedAd + configureReward() + } + }) + } + } + + fun show() { + when (currentAdStatus) { + AdStatus.READY -> { + showRewardedAd() + } + AdStatus.DISABLED -> { + rewardAction(false) + return + } + AdStatus.UNINITIALIZED -> { + initialize(activity) { + showRewardedAd() + } + } + AdStatus.INITIALIZING -> { + return + } + } + } + + private fun configureReward() { + rewardedAd?.run { + fullScreenContentCallback = object : FullScreenContentCallback() { + } + } + } + + private fun showRewardedAd() { + if (rewardedAd != null) { + rewardedAd?.show(activity, this) + } else { + Log.d(TAG, "The rewarded ad wasn't ready yet.") + } + } + + override fun onUserEarnedReward(rewardItem: RewardItem) { + val rewardAmount = rewardItem.amount + val rewardType = rewardItem.type + Log.d(TAG, "User earned the reward. ${rewardAmount}, ${rewardType}") + rewardAction(true) + } +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index 18b328682..795b85c08 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -9,6 +9,7 @@ import android.content.pm.PackageManager import android.content.res.Configuration import android.os.Build import android.os.Bundle +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import android.view.View @@ -35,6 +36,7 @@ import com.habitrpg.android.habitica.extensions.hideKeyboard import com.habitrpg.android.habitica.extensions.isUsingNightModeResources import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.extensions.updateStatusBarColor +import com.habitrpg.android.habitica.helpers.AdHandler import com.habitrpg.android.habitica.helpers.AmplitudeManager import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.MainNavigationController @@ -445,6 +447,11 @@ open class MainActivity : BaseActivity(), SnackbarActivity { } if (this.faintDialog == null && !this.isFinishing) { + val handler = AdHandler(this) { + Log.d("AdHandler", "Reviving user") + compositeSubscription.add(userRepository.updateUser("stats.hp", 50).subscribe({}, RxErrorHandler.handleEmptyError())) + } + handler.prepare() val binding = DialogFaintBinding.inflate(this.layoutInflater) binding.hpBar.setLightBackground(true) binding.hpBar.setIcon(HabiticaIconsHelper.imageOfHeartLightBg()) @@ -457,6 +464,10 @@ open class MainActivity : BaseActivity(), SnackbarActivity { faintDialog = null userRepository.revive().subscribe({ }, RxErrorHandler.handleEmptyError()) } + faintDialog?.addButton(R.string.watch_ad, true) { _, _ -> + faintDialog = null + handler.show() + } soundManager.loadAndPlayAudio(SoundManager.SoundDeath) this.faintDialog?.enqueue() } From 448b5cd7d944e7cb632c94251520f1b9d12073eb Mon Sep 17 00:00:00 2001 From: Hafiz Date: Wed, 23 Mar 2022 04:01:42 -0400 Subject: [PATCH 02/25] Setting active filters tied to user ViewModel --- .../fragments/tasks/TaskRecyclerViewFragment.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt index fb6df1912..1ce585700 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt @@ -455,13 +455,22 @@ open class TaskRecyclerViewFragment : BaseFragment taskFilterHelper.setActiveFilter(TaskType.TODO, Task.FILTER_ACTIVE) TaskType.DAILY -> { - val user = (activity as? MainActivity)?.viewModel?.user?.value - if (user?.isValid == true && user.preferences?.dailyDueDefaultView == true) { - taskFilterHelper.setActiveFilter(TaskType.DAILY, Task.FILTER_ACTIVE) + val user = mainActivity?.viewModel?.user?.value + if (user != null) { + if (user.isValid && user.preferences?.dailyDueDefaultView == true) { + taskFilterHelper.setActiveFilter(TaskType.DAILY, Task.FILTER_ACTIVE) + } + } else { + mainActivity?.viewModel?.user?.observe(mainActivity){ + if (it?.isValid == true && it.preferences?.dailyDueDefaultView == true) { + taskFilterHelper.setActiveFilter(TaskType.DAILY, Task.FILTER_ACTIVE) + } + } } } } From 3a0c3a73cc76053f44e2d5eac866dca4788a8d2f Mon Sep 17 00:00:00 2001 From: Hafiz Date: Wed, 23 Mar 2022 04:28:59 -0400 Subject: [PATCH 03/25] Set to always populate dailies on user observer --- .../ui/fragments/tasks/TaskRecyclerViewFragment.kt | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt index 1ce585700..54cf14652 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt @@ -460,17 +460,10 @@ open class TaskRecyclerViewFragment : BaseFragment taskFilterHelper.setActiveFilter(TaskType.TODO, Task.FILTER_ACTIVE) TaskType.DAILY -> { - val user = mainActivity?.viewModel?.user?.value - if (user != null) { - if (user.isValid && user.preferences?.dailyDueDefaultView == true) { + mainActivity?.viewModel?.user?.observe(mainActivity){ + if (it?.isValid == true && it.preferences?.dailyDueDefaultView == true) { taskFilterHelper.setActiveFilter(TaskType.DAILY, Task.FILTER_ACTIVE) } - } else { - mainActivity?.viewModel?.user?.observe(mainActivity){ - if (it?.isValid == true && it.preferences?.dailyDueDefaultView == true) { - taskFilterHelper.setActiveFilter(TaskType.DAILY, Task.FILTER_ACTIVE) - } - } } } } From f503e86379fb2ac6bc4c46dcc072a7d0858b0736 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 19 Apr 2022 17:14:59 +0200 Subject: [PATCH 04/25] livedata extension add livedata extension to remove observer after initial callback --- .../extensions/BaseViewModel-Extensions.kt | 14 ++++++++++++++ .../fragments/tasks/TaskRecyclerViewFragment.kt | 17 ++++++++++------- .../habitica/ui/viewmodels/BaseViewModel.kt | 9 +++++++++ 3 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/extensions/BaseViewModel-Extensions.kt diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/BaseViewModel-Extensions.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/BaseViewModel-Extensions.kt new file mode 100644 index 000000000..6059f4cc4 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/BaseViewModel-Extensions.kt @@ -0,0 +1,14 @@ +package com.habitrpg.android.habitica.extensions + +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer + +fun LiveData.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer) { + observe(lifecycleOwner, object : Observer { + override fun onChanged(t: T?) { + observer.onChanged(t) + removeObserver(this) + } + }) +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt index 54cf14652..5545c5fc2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt @@ -21,6 +21,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.data.TaskRepository import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding +import com.habitrpg.android.habitica.extensions.observeOnce import com.habitrpg.android.habitica.extensions.setScaledPadding import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.helpers.AmplitudeManager @@ -455,13 +456,15 @@ open class TaskRecyclerViewFragment : BaseFragment taskFilterHelper.setActiveFilter(TaskType.TODO, Task.FILTER_ACTIVE) - TaskType.DAILY -> { - mainActivity?.viewModel?.user?.observe(mainActivity){ - if (it?.isValid == true && it.preferences?.dailyDueDefaultView == true) { + (activity as? MainActivity)?.viewModel?.user?.observeOnce(this) { + if (it != null) { + when (taskType) { + TaskType.TODO -> taskFilterHelper.setActiveFilter( + TaskType.TODO, + Task.FILTER_ACTIVE + ) + TaskType.DAILY -> { + if (it.isValid && it.preferences?.dailyDueDefaultView == true) { taskFilterHelper.setActiveFilter(TaskType.DAILY, Task.FILTER_ACTIVE) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt index 78c3fc71a..86796007a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt @@ -43,4 +43,13 @@ abstract class BaseViewModel(initializeComponent: Boolean = true) : ViewModel() .subscribe({ }, RxErrorHandler.handleEmptyError()) ) } + + fun LiveData.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer) { + observe(lifecycleOwner, object : Observer { + override fun onChanged(t: T?) { + observer.onChanged(t) + removeObserver(this) + } + }) + } } From 59da0213878195737cae07a595e0ffc8d5c3a3ac Mon Sep 17 00:00:00 2001 From: Hafiz Date: Thu, 7 Apr 2022 01:52:11 -0400 Subject: [PATCH 05/25] Remove duplicate observeOnce --- .../android/habitica/ui/viewmodels/BaseViewModel.kt | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt index 86796007a..78c3fc71a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt @@ -43,13 +43,4 @@ abstract class BaseViewModel(initializeComponent: Boolean = true) : ViewModel() .subscribe({ }, RxErrorHandler.handleEmptyError()) ) } - - fun LiveData.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer) { - observe(lifecycleOwner, object : Observer { - override fun onChanged(t: T?) { - observer.onChanged(t) - removeObserver(this) - } - }) - } } From ce0fb93fc6d1b046f54d94ca1c9fddb23070d600 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Thu, 7 Apr 2022 03:24:20 -0400 Subject: [PATCH 06/25] Observe user and set adapter after --- .../inventory/items/ItemDialogFragment.kt | 91 +++++++++++-------- .../inventory/items/ItemRecyclerFragment.kt | 62 ++++++++----- 2 files changed, 89 insertions(+), 64 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemDialogFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemDialogFragment.kt index 3216a8bc7..17233908d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemDialogFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemDialogFragment.kt @@ -13,6 +13,7 @@ import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.FragmentItemsBinding import com.habitrpg.android.habitica.extensions.addCloseButton +import com.habitrpg.android.habitica.extensions.observeOnce import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.RxErrorHandler @@ -33,6 +34,7 @@ import com.habitrpg.android.habitica.ui.fragments.BaseDialogFragment import com.habitrpg.android.habitica.ui.helpers.EmptyItem import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import com.habitrpg.android.habitica.ui.helpers.loadImage +import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel import com.habitrpg.android.habitica.ui.views.dialogs.OpenedMysteryitemDialog import io.reactivex.rxjava3.disposables.CompositeDisposable import javax.inject.Inject @@ -51,6 +53,8 @@ class ItemDialogFragment : BaseDialogFragment(), SwipeRefr lateinit var hatchPetUseCase: HatchPetUseCase @Inject lateinit var feedPetUseCase: FeedPetUseCase + @Inject + lateinit var userViewModel: MainUserViewModel var adapter: ItemRecyclerAdapter? = null var itemType: String? = null @@ -106,10 +110,56 @@ class ItemDialogFragment : BaseDialogFragment(), SwipeRefr openMarket() } - val context = activity - layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context) binding?.recyclerView?.layoutManager = layoutManager + activity?.let { + binding?.recyclerView?.addItemDecoration(androidx.recyclerview.widget.DividerItemDecoration(it, androidx.recyclerview.widget.DividerItemDecoration.VERTICAL)) + } + binding?.recyclerView?.itemAnimator = SafeDefaultItemAnimator() + + userViewModel.user.observeOnce(this) { + if (it != null){ + user = it + setAdapter() + } + } + + if (savedInstanceState != null) { + this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "") + } + + when { + this.isHatching -> { + binding?.titleTextView?.text = getString(R.string.hatch_with, this.hatchingItem?.text) + binding?.titleTextView?.visibility = View.VISIBLE + binding?.footerTextView?.text = getString(R.string.hatching_market_info) + binding?.footerTextView?.visibility = View.VISIBLE + binding?.openMarketButton?.visibility = View.VISIBLE + } + this.isFeeding -> { + binding?.titleTextView?.text = getString(R.string.dialog_feeding, this.feedingPet?.text) + binding?.titleTextView?.visibility = View.VISIBLE + binding?.footerTextView?.text = getString(R.string.feeding_market_info) + binding?.footerTextView?.visibility = View.VISIBLE + binding?.openMarketButton?.visibility = View.VISIBLE + } + else -> { + binding?.titleTextView?.visibility = View.GONE + binding?.footerTextView?.visibility = View.GONE + binding?.openMarketButton?.visibility = View.GONE + } + } + + binding?.openMarketButton?.setOnClickListener { + dismiss() + openMarket() + } + + this.loadItems() + } + + private fun setAdapter(){ + val context = activity adapter = binding?.recyclerView?.adapter as? ItemRecyclerAdapter if (adapter == null) { @@ -174,43 +224,6 @@ class ItemDialogFragment : BaseDialogFragment(), SwipeRefr compositeSubscription.add(adapter.feedPetEvents.subscribeWithErrorHandler { feedPet(it) }) } } - activity?.let { - binding?.recyclerView?.addItemDecoration(androidx.recyclerview.widget.DividerItemDecoration(it, androidx.recyclerview.widget.DividerItemDecoration.VERTICAL)) - } - binding?.recyclerView?.itemAnimator = SafeDefaultItemAnimator() - - if (savedInstanceState != null) { - this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "") - } - - when { - this.isHatching -> { - binding?.titleTextView?.text = getString(R.string.hatch_with, this.hatchingItem?.text) - binding?.titleTextView?.visibility = View.VISIBLE - binding?.footerTextView?.text = getString(R.string.hatching_market_info) - binding?.footerTextView?.visibility = View.VISIBLE - binding?.openMarketButton?.visibility = View.VISIBLE - } - this.isFeeding -> { - binding?.titleTextView?.text = getString(R.string.dialog_feeding, this.feedingPet?.text) - binding?.titleTextView?.visibility = View.VISIBLE - binding?.footerTextView?.text = getString(R.string.feeding_market_info) - binding?.footerTextView?.visibility = View.VISIBLE - binding?.openMarketButton?.visibility = View.VISIBLE - } - else -> { - binding?.titleTextView?.visibility = View.GONE - binding?.footerTextView?.visibility = View.GONE - binding?.openMarketButton?.visibility = View.GONE - } - } - - binding?.openMarketButton?.setOnClickListener { - dismiss() - openMarket() - } - - this.loadItems() } private fun feedPet(food: Food) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt index f8121ad71..008770076 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt @@ -16,6 +16,7 @@ import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.FragmentItemsBinding import com.habitrpg.android.habitica.extensions.addCloseButton +import com.habitrpg.android.habitica.extensions.observeOnce import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.RxErrorHandler @@ -29,6 +30,7 @@ import com.habitrpg.android.habitica.models.inventory.SpecialItem import com.habitrpg.android.habitica.models.responses.SkillResponse import com.habitrpg.android.habitica.models.user.OwnedItem import com.habitrpg.android.habitica.models.user.OwnedPet +import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.activities.BaseActivity import com.habitrpg.android.habitica.ui.activities.MainActivity import com.habitrpg.android.habitica.ui.activities.SkillMemberActivity @@ -57,6 +59,7 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL @Inject lateinit var userViewModel: MainUserViewModel + var user: User? = null var adapter: ItemRecyclerAdapter? = null var itemType: String? = null var transformationItems: MutableList = mutableListOf() @@ -96,15 +99,42 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL } } - val context = activity - layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context) binding?.recyclerView?.layoutManager = layoutManager + activity?.let { + binding?.recyclerView?.addItemDecoration(androidx.recyclerview.widget.DividerItemDecoration(it, androidx.recyclerview.widget.DividerItemDecoration.VERTICAL)) + } + binding?.recyclerView?.itemAnimator = SafeDefaultItemAnimator() + + userViewModel.user.observeOnce(this) { + if (it != null){ + user = it + setAdapter() + } + } + + if (savedInstanceState != null) { + this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "") + } + + binding?.titleTextView?.visibility = View.GONE + binding?.footerTextView?.visibility = View.GONE + binding?.openMarketButton?.visibility = View.GONE + + binding?.openMarketButton?.setOnClickListener { + openMarket() + } + + this.loadItems() + } + + private fun setAdapter(){ + val context = activity adapter = binding?.recyclerView?.adapter as? ItemRecyclerAdapter if (adapter == null) { context?.let { - adapter = ItemRecyclerAdapter(context, userViewModel.user.value) + adapter = ItemRecyclerAdapter(context, user) } binding?.recyclerView?.adapter = adapter adapter?.useSpecialEvents?.subscribeWithErrorHandler { onSpecialItemSelected(it) }?.let { compositeSubscription.add(it) } @@ -128,7 +158,7 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL ) compositeSubscription.add( adapter.getOpenMysteryItemFlowable() - .flatMap { inventoryRepository.openMysteryItem(userViewModel.user.value) } + .flatMap { inventoryRepository.openMysteryItem(user) } .doOnNext { val activity = activity as? MainActivity if (activity != null) { @@ -152,24 +182,6 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL compositeSubscription.addAll(adapter.startNewPartyEvents.subscribeWithErrorHandler { createNewParty(it) }) } } - activity?.let { - binding?.recyclerView?.addItemDecoration(androidx.recyclerview.widget.DividerItemDecoration(it, androidx.recyclerview.widget.DividerItemDecoration.VERTICAL)) - } - binding?.recyclerView?.itemAnimator = SafeDefaultItemAnimator() - - if (savedInstanceState != null) { - this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "") - } - - binding?.titleTextView?.visibility = View.GONE - binding?.footerTextView?.visibility = View.GONE - binding?.openMarketButton?.visibility = View.GONE - - binding?.openMarketButton?.setOnClickListener { - openMarket() - } - - this.loadItems() } private fun showHatchingDialog(item: Item) { @@ -221,9 +233,9 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL alert?.setMessage(R.string.quest_party_required_description) alert?.addButton(R.string.create_new_party, true, false) { _, _ -> socialRepository.createGroup( - getString(R.string.usernames_party, userViewModel.user.value?.profile?.name), + getString(R.string.usernames_party, user?.profile?.name), "", - userViewModel.user.value?.id, + user?.id, "party", "", false @@ -243,7 +255,7 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL { MainNavigationController.navigate( R.id.partyFragment, - bundleOf(Pair("partyID", userViewModel.user.value?.party?.id)) + bundleOf(Pair("partyID", user?.party?.id)) ) }, RxErrorHandler.handleEmptyError() From c1b29a547abcea01a62b08dcf488c45a8fab71cc Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 19 Apr 2022 17:17:45 +0200 Subject: [PATCH 07/25] Implement new armoire screen --- Habitica/AndroidManifest.xml | 7 + Habitica/build.gradle | 2 +- .../res/drawable-hdpi/armoire_background.png | Bin 0 -> 3815 bytes Habitica/res/drawable-hdpi/armoire_circle.png | Bin 0 -> 4620 bytes .../res/drawable-hdpi/armoire_experience.png | Bin 0 -> 5654 bytes .../res/drawable-xhdpi/armoire_background.png | Bin 0 -> 5293 bytes .../res/drawable-xhdpi/armoire_circle.png | Bin 0 -> 6050 bytes .../res/drawable-xhdpi/armoire_experience.png | Bin 0 -> 6928 bytes .../drawable-xxhdpi/armoire_background.png | Bin 0 -> 9149 bytes .../res/drawable-xxhdpi/armoire_circle.png | Bin 0 -> 9598 bytes .../drawable-xxhdpi/armoire_experience.png | Bin 0 -> 10115 bytes .../drawable-xxxhdpi/armoire_background.png | Bin 0 -> 13974 bytes .../res/drawable-xxxhdpi/armoire_circle.png | Bin 0 -> 13485 bytes .../drawable-xxxhdpi/armoire_experience.png | Bin 0 -> 13105 bytes Habitica/res/drawable/pill_bg_yellow_500.xml | 6 + Habitica/res/layout/activity_armoire.xml | 122 ++++++++++++++++ Habitica/res/layout/gear_list_item.xml | 7 +- Habitica/res/navigation/navigation.xml | 17 +++ Habitica/res/values/strings.xml | 8 +- Habitica/res/values/styles.xml | 5 + .../habitica/components/UserComponent.java | 3 + .../habitica/helpers/NumberAbbreviator.kt | 4 +- .../habitica/ui/activities/ArmoireActivity.kt | 131 ++++++++++++++++++ .../habitica/ui/activities/MainActivity.kt | 3 + .../android/habitica/ui/views/CurrencyView.kt | 36 ++++- .../android/habitica/ui/views/ValueBar.kt | 17 ++- .../habitica/ui/views/shops/PurchaseDialog.kt | 10 +- build.gradle | 2 +- 28 files changed, 361 insertions(+), 19 deletions(-) create mode 100644 Habitica/res/drawable-hdpi/armoire_background.png create mode 100644 Habitica/res/drawable-hdpi/armoire_circle.png create mode 100644 Habitica/res/drawable-hdpi/armoire_experience.png create mode 100644 Habitica/res/drawable-xhdpi/armoire_background.png create mode 100644 Habitica/res/drawable-xhdpi/armoire_circle.png create mode 100644 Habitica/res/drawable-xhdpi/armoire_experience.png create mode 100644 Habitica/res/drawable-xxhdpi/armoire_background.png create mode 100644 Habitica/res/drawable-xxhdpi/armoire_circle.png create mode 100644 Habitica/res/drawable-xxhdpi/armoire_experience.png create mode 100644 Habitica/res/drawable-xxxhdpi/armoire_background.png create mode 100644 Habitica/res/drawable-xxxhdpi/armoire_circle.png create mode 100644 Habitica/res/drawable-xxxhdpi/armoire_experience.png create mode 100644 Habitica/res/drawable/pill_bg_yellow_500.xml create mode 100644 Habitica/res/layout/activity_armoire.xml create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index 2a946b5e5..3cce445e3 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -70,6 +70,13 @@ android:pathPattern="/settings/.*"/> + + 3v@o`)C9-pr`|x20Z9_WlYGcm6f5!Lm=!ffZUDxyR`sw|CU$58Wy79|tmmMm) zDgb~Tu0Nmh1^|u%0QO9Io1ARD&FqzL+X+AangD=C;r|xQ`0bBJKyoHpI?zL?l(Ej7FO&zUvg#K(=4C;t~86? zoHM?NwF`4aD1pb!WSsqn67yK!)h7jo0c}Vw3`FAN;+b#a;`HR_Ln8GPn<=pYp6k+( z>@K4@PfZl4hhHzv?)Q;CvWRVZG@pB55r?ypOWmzn4>u4mr6S*D^k|>}LE*X}dt}ks zR2p_lPAX-8lcYoCIgILZ50STVSgSP2$2eB@@W&qjCpRi3xbR%s5^1b>t0?}Lr!%q< z?c`;bflWBD4@VpA)SgR?Bj8pF+@4Ra!TRqqL>6w>ltDrH`M(9IGHUPN0rMG7SY9KVPY~|Sngff^*($yh;O^)+v@Db~w_&UZ0#IrJ-Y)p~% zod)@qH7@YUsA#VE7Bk>qyHVk*b_NTLLLM8=`AExLwGu(-5N}im$fUgXKT)s?#lP=) zqNVg+N^6F?x{-o^vQY>-I*L$uScq91h)(AJsmh69ez8@f2nviJF&HtD&$C`Nt%~G* zCf2W92)NKB$$!SaW25f2#<0O(y+)#?Rd`@;`&Ux35i|+ zv0CitfgosNp6yQ8Z(Cqa7dR8zs=qRO0#z%(UONZtuTP#OPkK-UDV}Z}gn)aAxTlKs z8{J1J`$O0AR-4-dh9R7Coi*#x>a?+fvcnoE8$rzYB^Qe|2Xc19J?_?ibj)B`ufElq z-C6Zuq-4LAm+UWV1n+iXJM%+o?J!*YYT25l!evHvn(xgh=cpuvzNpbe9SZe7x;f=l zZKoKlXod?Lw_H*|@FMbewd!$hv);H-Apf||T56S2R?`yg^H_!YEG6;)dXQIkNlTr- z3TiXh$e7!ZzgHsa8StAqc&Nt!J(wrh12xQt)kjf6P;xv8J(>LV042nun4R!MuxI#} zHEaKKl#n)w17p2qiRDK=Q{en+Wom(Bc`~%V8o_%#vP_Qq(ZNDkS0`Ir(XC-4eeo}8 zFBI<1_bzDK>Bw6GRgt(&`BeEVbg`uZlU5$q>UAq0i7yjABuGF(TS zM;e#5TN zEU6oveeiyOn?Y)dC}HHcRH=zBMy@S)T-ma_19wzqXmp&L{nT>M3Q|ER&3uW&mYYPc zKNn)|Sv%+k@wbN1r2gI@F9x+F_KjQhX!pjucR$&FY{%sJF7QsiM^27mMvB|kMkAFv zSj*FYTsZQ!wwfeP>d5y^y=(?vEmi| zz?`OYN2;nZKa08(J2u%jT)QL03}-!khtZ;#W2w{dyC(^cStG?=cjii`m!_H~i>!+L z&C{}0?qsD~tYWMUf2EV~aSdq=W1lpNuD=wI52fnWEB2V6eY^1fC`?}8i|Ow4S7ms! zKGYae>-OS4rA^F@nV}w`$!;o@YG*RWON~BvSyK5?W+!{VxVdQAFpkH=4!IM|9QCyr z?RhGyeY*7Mi#<=G$4F0EUj18~ynBIC;iIG~Hwo5ud5B-T&oan7sLj`&CA#*AaqZ>M za%lF3GAnVy-?qRcJ%*K3KL9j9suv|;k=og+hGBRb6AlO#!h#9=^*Q`J= z@o^eqZg?1zB3qGKIgKD}BJWhYAOrLra(UCC~HwEfRzQ@t1 zT);_s>_IRK!V-PpK+y0WBGe$j@y=UHF8Vs>NqBt)aJ>5#f`<rvH?Y4;6VT&PM-ZVEfn~v5CULY z9@ZKrXh25Gqqb|i8ZbEhP4cZS--hAaBl+eG|6g_pz~hcBm^s$NjPbiKL;f!XuFj`V J)j9=J{s9kZ(zyTt literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/armoire_circle.png b/Habitica/res/drawable-hdpi/armoire_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd176a0841c6ea152d7b7b0aa36a10498b90e71 GIT binary patch literal 4620 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-hdpi/armoire_experience.png b/Habitica/res/drawable-hdpi/armoire_experience.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbc6046b87c215947e18c477017d85a5aa24911 GIT binary patch literal 5654 zcmXwdcRbtQ_dhyR?HRQzibfmNzU@^zF%mmg(5lu)>`ke?D`seG7qwT~STSlVtr02& zRVCH%j$O0m$NTa9{c&IS`MT%abDrn<&pr1h8pHIMuk&4}p`l@hLbOfK=lt{0aP8{( zmz&E??R;YJf>`^~(6HrQ3|jFoO8=ZM()ya}Y0}h<3Q*2}EbyBdqtAppHTQN z>ofzj4j$JxKRtVR@c3aak2S~TfCxFsI9~5$y1VnVTFZ{JgttwZGgyoj94(fc1xaMp zv+r6|J{`g@Zx#&Uftwo#v|P}^<>=R`YJms%Wxc3AFC#OrM#}4& zEz&|2lhl#48VHDp7qbOR8NTGyG-nh#Hs3}^H^vnCQPo^g*X9Vp<`*lOZ@`3cN+9{4 zBip_Ij~H7nP_S;+D0BO;j5bvTsJ|NFPUd|ZP{3B^+f(PmWTFgDAk2QRx z+hx0Utqad6_B5;>EuF~~`Rpc2^_bkhP7$B)bo!QTYyw@MiA)eGF_#XNiGfAKDTc1< z&sbYK`Qx^ef7H;pXCT`=E|Ram>C-2gT~vxppC|k_y~u_GR)dUq|W2}>WG#y{-=vx zhDqDKi&U@h;&#BO{yB<6B4~Rz~P34zE+qPf764 zt6zGo_CO{_nuqZF4*yb<&uu$59yOX7d;fywToNU*GBiDV6fn!{AtfIy;M_*vaA@GA z(~O(sd~hUsJHH;wZV!^*yfTp{J{Jq&P8-VL{keZqXtBQh7M5~zo8_#viTzQWgrH@e_eob#%O4L!4}LG|awsC`z~neyPA}~(2bAEI`yW8{ zdMui!r#7`qTCVM^S-7~}jS}uN>U?<0ou29L!s~dPIUU{iblZ>cI(BkW((#Drj6Z8l z{BY;KlW1Xmy;=s=D8H{h9#=>mPbOxK!W2}0pAa?dTR|%*)ppiC8#z@&l`L3g4w9i< zZ)i}ciJk+PE5rq_REcnX)Sr1Fl7lA!sc^a}0$q#~5n0*~r;W{}Tbv2IeoO6|YVnjw ziw>mBbevOp-PqyyN`&1NhmZY#$46Bm(W&vql=Sb{lMdu1?S(>0SJj!xxK>5usWD93 z*{ec;3o1jcSoVh*)nz_KP1L11dht3b=%KY7aZ~f@V-DT>)?1%P-!zSU{z6;i;lNqz zL|EF@4bX_~r7Cj8}}@Q)?aU2-1{W&^j>`BbO9&kRT13 z5(3?&K!N`19|V`b&6;w(W|y^BR?OsWSOPcZu9ROwbm5P@n#i-tUnR=|(NT z{%Yux-r$!Bo(J4%K!HcuXqQAiy*J~JKX`G5-qgk73h#@FTC3Ttyomt@5!g#`&+l2< zE(wiOUh@u5zgSC4j0xSN{8gED9g}Fm4+IfpLAeb_8{s{li{o$R&M_i6on}eW#c-yY zP(y`d*rg%XuvRCL*Aff+)Iu$PBjvVIscjAs+mo`r*O3`;X}k5)XK!-m+?=w}7O+&* zHisC0$tFSO7%U7|h%!@t@7K>?AKgA1%$r#o#E_LDbMM?HT8QzgJ>f-_=b)beDK)>? zq`R>)S7A!JE;|$B3He?zl>s3Xmqz_$gtGbeyL~Zxxq*-RgV*fTNSb893=ds|vN+QJ zuaeu?+5C1LCF^p0xgMu9ztea487SYuDy`tn*;UAIr^9ur@A4i8yyNAEM$4Y${${%c zS$Xi0w7@6J^CM+-bxa4UAbNjQfW@$r56p+M9o@0>>k z)LS05%?LIfhF0IODOdh;YvvA@$k`~X9aR23YDkzO+QN$y#S&yfGgGIDae<0sIjYy! z4|a{)gJ-=h{gEE$5v28^2;wI7xg9N?JbVz-wwkilP2wH%!7 zpYMWcDCfE0wmQ3)&Q5*jdLVXMYx4OiDhMzwR_3vkpjN9FU31XVEn=XTiL%7`IxH&3 z8?|Q*xz^Yv_iAtN&q&3$sC8wo=jz-sO5oMRJR)v7>FNtL$;tcaAB3WKCaTX-A(E$D*)bg80UU?Sv9 zRkDF`;9Wr!4HQO6pg{qWha>keKRw~})_83w;0g7yiK6aDoPp)J(G^fXjC*(065j^} zXj30sDC$Pw4D2b_gi(O8VVnnZX+T&y>}cW>cyy91{9+oMjd8kcjvp^Gi>a-SWteG73QB= zE^_s_XGjI|j#TsJ`!`<8CtrL|Z17$N-?SeTyvno3e4eCpuuYm0ZUnE2Swez^JBBSG7n@I z)^`{ZgmKz(&3PSaAG{5L1D3DZDa{SbytPzrW`d9*a^#-I@aTc9T#?&_GV?BV^9>s@ z3-hFI#UZAyN;{QrxX|vL(N3S2ucqs|Fb{?X=Ds@D*?}%K0P+n}K9s*k5ktI!u(n5Z zm{F`xCBx`vnQEl4)T$)EMmZ$+D9f7<`T3Tt8y9eU9lB+>SU!wjk8-ZCPy;6A!C&MFl1;$?xkH zBq)3Ze;?j%z@$Es5O&9*;iz7#-|jQF(}S+?=D&(+9L9><=KIz@5T9#eoCUpcbHmn` z?Vh*GcCN&7Z$-*$WzX-;@^0jk>iYx$yffs6<8SvoxhoB;eyE-4p88^}|0SRItT%*5 zlHHt3+^D%>bg{~e{)b8)qn~eh+(V$pbI=V{f|6ZPOU1;p`h^|J^^R}eNW7XkI(~Jh z@g}E@pU_`}nOSh}=-<>SM(jVswrO+EwK?nKvHqjez$&-kX#(v$wwSK4hoQ z`|ishdfaoX)eqomh}CBPkGmtS8J@?S107oUv7XUi8be(N4=U~;-HpCA2VNZ*FSmC_ zjeWa?#~e9ug$MGf-y39s9q zMJZQu!V;H$j)BG-`M2vPP5TS&r@;B40fmHI>T{t7uo1!DXZ>0AOCf#H2QQmvr$@Iy znwYVs0CvUXcV(gfWa~K??eI&bIk-#5{)+fIAM>dN?2KAmpeFB&@^hp26)H*=Qkzn3 zco)jg5MlLx}y;HnV@#_fU3XK&Ziy49ruCE(0(wGk4t7dhy=@VNS9_p4flcO9rjcsZQF1%tz3v;OSgUabp^+C1$(Hl50vz4CR{EV|ZT2qTII!=E6-A8B_P{ED<@YuuccI$OnZQ1L>3vce;>J%oFWRjnZ`$t3jEgt=g; zu3+9aT+QDg;95b#vA=K@08Z^8b<9=?MwX4_+@mYg+2vWkpM_d11!{k!A4-xnj+=%! z>$&ubL??fmFWKLnuw1*m0m;@?^6bspobO@)&fb79dxzknrF9Clyd`Rc3wb7$r4E1A zL_HX8I^N`$!hEFv6{LLLQcAITm#%(W>>(jP3eVwsb=;I>nP1CHvL({x{NaFwZA>p$ zofy#`1cFBCP0%pc9MQmx)L}^SBXQwcZm_2k zi;SxzI8&sg=0tu)Ae614S~mCp4c@}}Xb)y)BS}ouzX_Ks zYi%`~)Fv7|h%(XP>po2Qo1AAWB}?f$N*^QDO~RcC69ZaD)3;u!9fu}|=g;?eFJXL*~2R_6D%EmDk`NZTbIDR9S z)LMxP$f&S*t&CLpVT|Vg={j|q=PwrIt4#{r<6@aYeWae4f?T!kVs$$xp`E$BH#x#X(ZB=V~Q`49tC5muZRSU(mTK4>cm^_y1- zBSD%0bUX4zY5{Fp3MA@dX@N|4+aaFI107tQ)UfYMgBp4J@0bKr;JWcS%L91u;|L!*$4(D-pT_lJ~vdRgN3W`|wVpBp}k@ zS*yphSGOZEPGaXhksbf%&VWxfcIyX*KU@JxeoZ(7A2KgPH8P0!oJ<5aVM=Un1K?^N zwyo2CFsi-cQIK6S;EmrrslUPJ?yRn9YV=#)vIzt@THYD{AzYrw(qA%|P!bwx*WSlb zweWMsK{mBH*@A2?qwC!Wd3!tW{jIbo$HPVfWr;NX!8F#ECiT*+Niid6a6Iy%>dDlYk zpWa!-C&{h|%hV0i^OS#;I2yPvUshks{pce@_%@$~K4(jNrf`I&)MNeCM8vSOo#&jV zs@Q!cX91q{-L*Db@p68X+vT{)QX?-Al%MyOox~mAJU-WD5Zx6nnSCG+*B zRGDtfu%_(M)`gls;Nxq|fFt*QjA1yqhzM^EH9Nj_+zTV+PiZ$KW*@dPZjRm6Uu=Dx z{;^vNLcE0>LD&(RtQtea^6mQk+gPQ0KNoWj96grgKeqx4R)9-M$)v~oTbxyXM+eec zg7PBbUNY550H;}AO{GGwY*q=Q^*DWV%JieY=oniwV`Gb zjXsm4F)RGnvMUuer@DXrxrn>_tA=y_GMOniOBoZgLq!B52hyHqRt6;RZa(a&!MHof zG2iHTtMyyi``jhYkdBTX_37OeGH&v)_MKpr*mCKPEg0<*C=$lN_xqI6Zl$&ngF8~%p~ZBZH(U|M>Bk> z1)7Zz8(~4c&rl<9PKFUi&9G9`gaA0&No5)UT#WgJJ+U<)gv0b=SyT{*T1d+qX4hogss{vVMTd=YTVX17v3W^f2MFom%mL)7k)&PN!xPg{}waONR zM3hBAh@v8k2Bne$27(|E7C{9BF+?yBNm#yX`(JzyKg`_c%*=c4yfb&soabIV?6x1h zPJ0~y0PS*M-!A|t2;g!+840%>IMIC%eyBtp@QwvQWBbJ{<42BsOr#} zf&n7bk?07(-Ak%Vfl2^u+Uv5<@kk;h8YYr`Jej;Vu{)36kSQ97*!RzpP&r+yoc)eJ zkeXUKU1xjLw1tkSO#NmGah-*$5xc9SJYDpWaVzLgh1+}na8No_Uz=#~vUJnVUjH3V zb8|`Hr%g`QgcD8N#zgUtCGe~JdN%s}cyQR$q^Qu=Ca=I?#5>r)-w9@jn*MNP@rx!eogWq({(hO}8@ z1Rj9**KE)?w0a81o9~tUH-&zHN=G=xMwSi{hkM?9=I5$R-ypx_p zCF%Ya&0JliC2&9H1Sa{VB{-0sl>j5tQuBrM;bI^+IBZ3Z@s&WrIoaBL`c;k2|pGGgdoG zoF(N(;UR|6D3@d0RAI5Ha+PJ%SC)>o_uvi;RUR3p%XnyAWtCX>FF=JXUf!=NV0{{`E z)ZDtkshPUjYCTJ1cx={({joSkPdQctFuu(z%FPrGfE4hq30(X zA6~7d)X$Z~W5A?dm+M}_2*J+s)IEoj!-~MNcN_B(D`o6MSbcX@2 zQ#<&EXBd7rh0PZzWl+G$3n3arg30Bh7~qxJ=Sj+)yEq8E@enOJ?H#>~F45lt4BhR@ zgqLFt3mATxfp@LYK=n$>F?( znodUhnbUCW+D^_j-HXy&x9}jtOc-HLqjKR5D9(SPF7S!8%*N_un}}0~{#XajRgyTF z2>dCmtll2*jAOKrg;?-`NQ==HOO*M zn8c4C7)sf~d?Q2P#o=D{bGPQz82mSrKPFl!FrBnCFuDqrcRC$XC<3+mW(YrWwl%nyEr(dZHDzDmwF>2*+&*sW;4LD4Fsk}Unp9&p2NT@Ns zhC`c%YVhCXrel%k=C`oDt*TT}4|7Oqe0{ceD8?>ISyBjtt!yCzgE~7W9F`XFl-Q_! z=8={Vzoi_bV=1z}=@9wE5Nw{9pVGo2&Sm1*!hKk4gyor7=5-bVU*LK`F(R0fxxm&P zir%U($z_yct_?wzuEU}Buan}rVMysm^JdBhfh6;a4Ws0?$3!TuQ*B3umd&u8`~`=G zz|*$hJbk{-G}zwYn0Y{j3Q1O#7UwHUJOZkwBHNDZfk-uC{^<+^-X|~y@mjb~_A~To zbpBW8oe96!K}INww?WV8j2oBrbD*+Q44 z@4vCoEnX3iM=hlG#mV2>_fwL6%^yij1{{4Bn5BzHlQOzXt@6}_|C?_p@Qd&_m%?Nrf@XxqgX zF3YY~D=&o7`SiV&n{+H^jTRc;;rY$U{cdEG+bT>N+ zld5&^r( zBx7-AMyVEAqcR%$U9S7U zifg+3x1Ju~*_x?^<0K3=Ba+-6bg!`+dm%WWP?@B08yW3;-C7$pYxw7-q9UfYw9oKf zdWq3U9MR^Q(gJsRg@x68RJ!M=z0l5nvYyPX3XCHrn69*kabW_q3h9I>uI!QXTo7~V zw(FL~SF!3rsl`YNdaCOSo%MuVI=wX>C--0dByE1y`%N1`PnlGO_o+>sKcU^eCEuw4 zIY0gFZxL3--Y zW_3iu^H!%iy6iK=GC%Yu#|HDH$5kHUJz7PN;RVTWOr`A>NcOU||Be-li8uOtzSGxd zC%-kkI`VgnFAtEPZ)*u1Io{|J^SX2SV=-&!LeeYwj%T2jT+4}`=ravB;OeZJd8cLP z6QgjYm^R;V9qxExJP`_bfRHc?=uP71)=ZJ1BB;z^_?cVeO|NSSdKOu~9&jiK$?yE$ z-9@Y8hRoq!_%?fukQh}wT^f^LX;q}3(Eu1h`K=aSVA6aNq7(m z2>vRQ3HVjP$Q7}YIUtOvOl~fJy7aa>R5Pc?AAm>%i3Tn1a6lLM~lza$0y7(Fu_qgdMvPRt; z0Izd?$osF>1CUdq3E9!*tm%8OlPb+bPipfWQj#g*Xh@z7gf7```K)>}N z42j2wfB<($h19hk&ezD0?F2IpjutA&U}OKj!aRt7+*bxTYJY>y( zNJ~&dT6xo;?nzPvO+9stBH!!FV{#9e3gq?|I(^2_W6oOw(8!hA!ZjuQzgNQ3T*%FoI7{o;F#!MK11?T(`>OT^ocSL_ C{k1^= literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/armoire_circle.png b/Habitica/res/drawable-xhdpi/armoire_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..4311171b5a1430f82d6046679eef4b21c9c6b47d GIT binary patch literal 6050 zcmZvAXH=6*(C`zAfCxemyi%k{2@nvG4oX53f?%ZgqV!G_kRBq)73m3~L!?PBp^22B zC|!^$y-05&ARr*{hWnlG{q^oSd!E^y^33ke%+Ahhr0xTT%j}l{0ASG4RMP_h5Q5y5 zXfKgx3iSSrlRtD`nx@YHfKA|{gS7Pce~~9a&-5Os0Oft0YvciyBU}d#09A4He{HD& z;JU1q8rOn1no5xrl%}Jj7t+!j)Y!|ITVRZQkHL#V znlS~p`l3-FNYO!-?DRvp^lBlPg3cJ>x5!DZdTr~cJg z>+F@&NhTf|Z%)7cw~CyMw}PYDV>D!s{z&*Ea7wq+PU<{%z47o}-ea>0W#iMu{g9Ek zurt$8$w$Ise*Kw>j@F0NDXPdP&PH4}xwzb;I~HObs*j4!N@5aU%@;$}%GPT{emjE+japx# z*!dvd1q*Krtq=K~u^a85hD4C3FWlz+&;A~9!Nr(xFWR90?C-n^asK$8citeX&-umA z)i(XpH;c@Mj_+v^o%8dykGRWCYf}uOO%kZz8D>lnw~^kjUJ^=qOW1u5j$Y}$x6l@O zAflmsto7ySMR4#b^N52FGfvueUXDFR#wTNE+aTtPrpn&ix-}#B1L`C=@=~-H^tMX1 z8EtoKZ|#UIU586bghS)>3>XK7-=Iy8uiDW#eJ>m>ZMar zAg09@T*yh=eVOQvIj+>&H=!RA(eIEX*+Q%3$Ta+0`&`8x0mQ0aehELS20n{ZVcaKj{r^HpxqFO0_&aK3lPtspFS8 zRxLg^UugWK#t@~h*n&~PpiUa)(xmLnb+emRWuG>Loc65GzN#m;x5~J~LY~KxzTOi) z6Fbi@J2zhs&r7|uR!pEIDw*;~RbwuoBOmmfk-iSC59+rNX zs>`-Kxxv;Xa7Y+_ogO2QHHnQ%F-$mqY1Ae1Pvr$pH+H9u6Hg-#V||TQV^4YXPh$`Z zJTg1z zarNOw9IGxqM+A@RA5=>>5_dY?&D`g7WJEnk96rup=(_cLV;&q(wVH4GwfX)Y=7rLA zvy6#zwBHId$l-?uf+aA!|Cn>9ZW3*kz?zQic;1S7e#pug;6uC*ZcTJ+wlBmgQQ7m2 zR|FdarO?#H2BEO7^AzcXOo6Nx(JX<_|di4%Srk-&J-H!*{G@Ll3{? z^7H#`?h1hB1{vJj>Q(7_rd|@|uW?XrzI)*^yCU$kYd4!~9!cLy&(Os{-@}Bzx^xrw z-BbFKuXjoY7yfin-fHaJTSi+boPRDU!k*SujJ~mabnH~#SNikj@G}k)r>kpAf#Eyq z;ujLv6BB?=?R?K*s1#&RLz5z+*v({A5JIO#xF&J~UrUQn0Yj3yBkX_C_qqFHUM=3@ zZHvh*teJY8EuIb~7fOxAfcJyDL7kt(g3z;qQ*g%()F8 zush-;<@^2n_lk|&8pZv#}hJ!9soxJ z@l!7Kll6Iv1!eUM@lr!P=|;g9G`XR&i|;~9y9R8_*g!x;wWYV=7{^RaZS)Vvzv5{b zEGsAPf}5@BdsawZ8np4UlN?qD`jKgMbLL6|-&+J@kAg_I&v+nVd}Bqb_V@dV@{_C! zZN*q9z17g%D9JLZCoUjaDQ5Em$@lR}-@m#@lo^VG~!*(`B zrX0Pi`HI z@EwL5qx_M?C}l9>UbTl(gtxj;CJ#60-7UszJYKR8b!N-R!5$Px?#oX0{7S z5!6dsD_Y_T{U|B+dn{%igu2Zu+8hSl13{3nxPCd zk!OFDz0Uy0#Jw2b2$>e0LqP3k+>=$M- z6fXtM6uaL2pUc+t2d{wr+$l{`tApo`xU1QE7HayN|L&*(JTE83i@PuU6X&`AmbB`h zNzb<(D!~SH5;k&*p_{0x{WrUAzjqgv>*N0}R;$YUg^hB+9A5f129q8Cik-Tv9{RlL z&Zcy_&e3T-UgNK-CC9cQl9A>;arh7Z{9ozcLBpd#7$7YG{il> z34pT-?<;&1)(XV*<(t!d;|Sbx4X)6hU1$=0c4Yosh&7%zB}*W4WSaj zW@`gRfF9Zm+)Iu^$#Kpwseobf&mZItEKAPDYa_{5A1u{L@HDt+<&EP6%9BJ| z+7V4O`O{H?08+BdXhUOSB_O+ZpbAY2-_Zh=umO4Ky^aHx z1a%<=8{+PP&`~DCA%S%Np^1g3zB2(rLe!@M0Fu|ScD7Hndohm(D8#k3wdq&)_#<8D zCRu>OEZ29ZVSA(Lij5$H;Ud3K#WF~PJu@uA=aFK-S7)TIAT|qtsb|VOUzLLRw6CUJ z4Dhyn?GRHoDjq5!F&323gy^l zKZJKh%cA4gID2cJ_9y z;m(n^wAwF$@G@7^denu%X;1)R9E_1AG)rz1oB+l3GESTVhZ@=MtV%|rh|!NP@YOl- zqZ~k=jcKyIKaw9{k~7y{TSwgiXpQir>6Y@qI!{gx6`Gp(vloOWj9<=%vI@ZI2y9Nx zARCYf0+2JW=M^QV$yET1;Tu^K3Mv5r3PV!-Uw|nF#RD+4fZ%k1Bgg+I&Tx-k3g2r1 zU~^I%7eW)DLK){GWU~9LWJ&P?kdq4~f68lbd{saIAFE4mK|pg?>OMIx5iHEjH|PN> z56RS0tBZr*Cm+vum)c9B*5UMx#qk03EM$SA0XEoBX@? z#|Lqx@UEYnz{j*LSnoC5F<&qU4UFyPemGsTi>Ngss%_1iJq zjuGL|0t(k$v9Y=yM&6+eoBNZJkCwgUE}@xfC%62tcg2XtxGs9~3O-dS(rYcOqpCW{ z>y``YDa8`(GQcn!-(?aHdF3e!sd#@$A^*qe-~0tPzk!$l#gU*hS0UDXhJe0`Cp75d zLFlCX*|vqwa#NKY3m~#t27Shcn+PG_K85dhUi>w}%iqYAf-2E4VU8k}@Ai>RKLhmu zAml*XVk7gs*>D;q2(~QB!qOqhUT5Tbcwg-Qx|yTg4kt`~Uoo>U347M+te*M@4iKL7 zr9Jh&iL03fMAnDp*;dMAd%^*O0j(a4LxwR9%0hvZekVqswsS|rc}sQy2NW;Pn})77 z?aPokiq+mUimvo$Z)YE@ScxDeJOM*nQy(Ku_S$n0x$&RVU_sW~ujlQeun3Coho)|>5~ zlZG%Ds{xRrVbzyb=G!;iN%hhaffT@!*Ls4B(2mt(_E7^02#b3o$#nfFky6ly95%@> zI&1k2rsxG!5hQgOgk+O>UHwo~m-GOY!@Bh9)e;LiVCRp&er7=q&jWgX$(ag36wX(u z&%1#-|3+MgHUohItzF`P^e8*Lq8$NTvnvvS@1e>dF@g$M1prmQnMjarF}~b7Jqw`f zP}0t*3J6Pv2o;a4X>r%up*F|_&B*g0wOC7EQ#}=WkXKAKXF2MEI%d~nDnL<$ZoTNVRl!7BcK6lT8QMRd)Mh-{5lgWe$`diX!mz zAd^%>Y`H4x_=6rFRD~uUZe7x~aUVmJV$Ik3IcocarghMbqT_+4uC+Ph-`8A#HtGZC z>U%vy++B8@H9e4LCszN$pqtS2V&_Ns{cjjblTP2mBbNq8#CQP5K^UdxN7tTv`rT23 z{3orM;_TE+_$JAm8n|;!#*D4Iz(pEjqM^x%m<;GA^UA?V!7|Cwt1>BYC$t;cT(pfX#_9r{4*)IkV(zu})#a%DRniGl*8gP>lgO1ZP z8jKCts%D)};jV{Hbd&^aWolPhoV|dOa|ijY$xAKQ@!17>tob(>BdyoQKHmc&wJtJW z>vIe2Ko54|-7{YNqx*`9&yM9DMb5U|_xm|juZKoNKklnOM@Ab{j9l0={b2T4l}wp} zTz;O2xRhU|^Xr&9UjG&Pvi}j^Y0bYnyH2o>t&`R_QX(8U zjdMzmJ63ezCDR_BT66{qkQl~a6VN}g09q*NDx$ijf#q z1=AkpCd&b>Lg-&qT(~+n&9*^212Y~lVtbBEvx^a+9|V;`{}80Q*tJWb@Bn5tbJLbc9 zDmA-zlpG@_{Ca{qKb2nFp$$aJ>QfnPc^^`8$ElrIh+Gru7mn$k{)R~LllOHyivGwVr38^dxi-pSE^y) zR-g4*K!}k|<{;GW-Ov%Hc^=Ji(3nTkPk$SpR}`!+?-?3;?omD7bPJ|4ZaL8(>e2m1 zIen<7+34+TEyqT5ZCqE%7LB*DxKraz?MLPZS*12fhYyf9?{YGhS-uy7eI2u$I6q!7 zD-NvJPt)zTI42HVr>P^o$<XAqj^)np;E2hLC+S&y<{;yJF1%?F5Sk=M2 zkWi{6y3M@jpTIu5C!RXrdF5Gj`nrr06TZg3nT*fS+CQTuzm-SLP^{wXb4UGRJNX0g zu89d^x4@4Eo0KuTSJ?2r4>^prd7j_4{*zvA;xo83=K8{XBV+lL87Dk80%ph8hi`a= znejpN2P>xrE1N{3&G}%-XKZgCq}E@aEa%#BoIkk*Nsh1iVQiWa`^_T2lW#^&jv5lX zRP`tE2U&_Xahm-2HARKWmC0eej&iG>&oFamWKh(6E>i75TqwvYup#FBg*m*|C*k~0 zh3a?Pwase;+&e}w(fyOBjbP}BzGMegpA58@z zO_g+FbwRuS>qsN2{0GsNIh$_ZQ*|CL`}^8O>7z5U6c#DU>K}B)W{H04l|!`mNysTF z)ySN9%+PEW$WeE$6{(6d;j+g0_I2Mq6Bwr$zfLfrG^ccP{AcX_hefy7WDyw(ivhe^243yZFCOYb(4adt%UdIiIBK}XZ-_T7J+{US2#QV|+s6=V+baFW~vTZ(Q zaV|!aDLOCUFI@4pnAygU$B&ItPAR@lpcLm|g_0#6X7~CgHkuyoe_ShsP$qDCRXS&H zZ*P0nnU$rRc^^>aJB~ahUJZ=2feK+HVMg}rZTL$Ld2#nts)L-$N+JkXOeFCQ0^ttA zOtB;C$kES1PJKEQ`@dZkyG6i%Y@Wu(wJ+>E+4ULl)3tY>B<~J0^DL(u4DsN)y8{6rtkR#!b z{(>d{l&$+0&;QXZX}2tHuO8oL#P02?vH9IO?LTkyR!3k6pH+;!T>v+eFTxcet;Qc- z+y_qWGIom2sEOJV4(b=bGx`799%6iS~^$tIolh$V&@^7*kYx8 uRFmB_Q*mr7d$om8ql}TpAkw7$9CRh1E4FuZwuM|$2ej06)yh?DF#iLs22>XS literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/armoire_experience.png b/Habitica/res/drawable-xhdpi/armoire_experience.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc7e208a9b206125a746ca486f588c6b222fc72 GIT binary patch literal 6928 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 V_FGdTt+^jFj literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/armoire_circle.png b/Habitica/res/drawable-xxhdpi/armoire_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..c54039f9f9db40caa8da7cb6d654e0f5f87ef5dd GIT binary patch literal 9598 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

ofGFLtOk7SncwTQvdNz##yDburD&>M@+j3!5g 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

Rw(y{LNd}0WaXEosrS4q=hk^eY>R=Al;I&~s3 z=<&R$;n?4VkJxuMD4o!hY@I=mXlPtG0C!_ZhkYuIewO;i}oz!Oc`1Fai&%6Y5X3$HwRt;T5$2u*jm` zB)7TD8j_S=fherN@_hU^X>fQ(v_xAE2pb~bm3jpmmZ7EJzX+--g{zA=0+F^7HoRqm zBv2(T##5^jKTmZfrw_P;6UDfU9U_*&8g+UBL%sm&7elw3s5#%txdUF25-NisOV^)) zn>&LU8YY<8hKcxWP-uz!h1>o4e7N}gbgwB%hAIVRjM;s&+hvjVM`o*>@99-%ACQux zbVHizwvNZG@ZAStqbf^$b5>2NYFR4&>CFWb#WD(GiVj*~u9j>=HH|)x0b-0JJmA*7 z=^bBl-66+;da()FY#~3{0YmC+;ZIb0prQ)7+_zw^bYE%LZklxz=Ra;Mrctovf@}cp zKYy$nErG3SafQNl=n+{bu+NTo2+D8fEc>Snq!=&oXKS{HH?N4P#Tx~S z;C2T?j-r&sz1swajcRUt2skP|Ta>+N7`U;`Fh1B?;A9_|`A3#Cas#U@YU#A%8W8E4 zzj(KrTeNyU(!3#DVQ%ZP24$@`cGIMkPrpA&q_?6^aZDrHM7nksTOYTBCgj<|x#z>O z3~z0IIW5!n=XK_$INR18AH@!Z(u(!dJVipI2FT)5viz<{yJph#qnQ_EM(PDv7!#Z+ z^=i&6)@ZVJhAZ>Rv>f%WQ5C$yQ14urO=eDKI*~7UQm25^rf~mO$1L{ZsZsZKIY#kO z*AaKGxqYMQsbcwGafZ=>_;!-+=ZT5pygb6r$8N?tZ|fQtdBnWT+rHQ5tkWF-R(ig* zsMp!uc8gv76^*5PO~weG*Sw$X0*&k66lCw$Dsn@I|IsVlL@Of^X%75#+v`K`U%yE| z3FVZ8WYpQ-6l?YSJ#NVCAO7_oaYexuQp}sgF3^8!?hZA(+!B}UP`s1-T}(|8ydJr2 zC#%6X`C?H(rtQla&B?)E3@vwaE*v95kHMKtDv)!v3Q5t)%Iy>dS=j093G|_TzIupm zL=#U8f;EZV&OoNeb0Da!VbS7p*UxWBM%8knacCj%x!-;hS4kkzd+n^jq%!wWr9xZ1!z% z0}8-n1iDYp^wB}ycJ<8O7Qgjd+KfUEH&hK2E-6WP^;bvz$C2rQ#`dL0q#B$)+2w|k zZ!7cI`(2cuC0uZOq_oGFuRVI!j{zvkGDRyxLM;nU-&mJuYMUy(60kS^=%gjH*6F8% z!6O{>-s&78feC&+rnojKH;-2Rf_SijAsCX_)e;*wxp3>0CDqF34WWkxE`vIOc<>I% z`x{Gu$4{0Zx$>_0Y6S~qm5S=+AkG-X$*#Ip){b&j@6Qgq*Y~*A)>tl$&E}hCyMAb8 z93Zg3nF`Ax?P5t!o&0k;OE1}veD``QwYvOC;}`@ydD``R@iisVs+N-NvmXCfgK6v- z8+dp1lMIUAgM;M9}gUvEf*ZvhP4w217Vd|#C1gHd!|5GW)snkh;CCmSx zIvI~EfDev=;X@~aM67(!A}0SQ__kwgGNzKnE@m)D{b_WZZKh;uACY^K4V3GE1U7d_ zI)X&10}Sc?ENWHu3wWtj2M$4%&;VfdVI|cnUtpD{3Fz(TsU-H%*ix|Wg`I>m`RH7y ziZWs8eqXZ#lnRN1 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxxhdpi/armoire_background.png b/Habitica/res/drawable-xxxhdpi/armoire_background.png new file mode 100644 index 0000000000000000000000000000000000000000..d7db8739604f1b9af0e24737e83965876659ae4e GIT binary patch literal 13974 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxxhdpi/armoire_experience.png b/Habitica/res/drawable-xxxhdpi/armoire_experience.png new file mode 100644 index 0000000000000000000000000000000000000000..9346537b4c726beb554b1de4ae2c1b1c5e7c7bac GIT binary patch literal 13105 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 + + + + + \ No newline at end of file diff --git a/Habitica/res/layout/activity_armoire.xml b/Habitica/res/layout/activity_armoire.xml new file mode 100644 index 000000000..6467cb8fb --- /dev/null +++ b/Habitica/res/layout/activity_armoire.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + +