From dbea9ce516f0ca5af2ac8089eee60f7394c6488d Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 9 Jun 2021 20:15:32 +0200 Subject: [PATCH] minor fixes --- .../res/layout/fragment_avatar_overview.xml | 81 +++++++++---------- Habitica/res/values/strings.xml | 1 + .../AvatarCustomizationFragment.kt | 21 +++-- .../customization/AvatarEquipmentFragment.kt | 20 +++-- .../equipment/EquipmentDetailFragment.kt | 19 +++-- .../stable/MountDetailRecyclerFragment.kt | 19 +++-- .../stable/PetDetailRecyclerFragment.kt | 20 +++-- .../stable/StableRecyclerFragment.kt | 24 ++++-- .../social/guilds/GuildListFragment.kt | 3 - .../social/party/PartyDetailFragment.kt | 8 +- .../tasks/TaskRecyclerViewFragment.kt | 15 +--- .../ui/fragments/tasks/TasksFragment.kt | 3 +- 12 files changed, 135 insertions(+), 99 deletions(-) diff --git a/Habitica/res/layout/fragment_avatar_overview.xml b/Habitica/res/layout/fragment_avatar_overview.xml index 4c4b1fa98..0a6b3a683 100644 --- a/Habitica/res/layout/fragment_avatar_overview.xml +++ b/Habitica/res/layout/fragment_avatar_overview.xml @@ -32,7 +32,6 @@ android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center_vertical"> - - + + + + + + + + - - - - - - - - - Fill out this 5 minute survey to help us grow and receive an achievement! You must purchase the previous items in this sequence to unlock You caused damage to the boss + Style 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 81c9d817d..2ccf7b07e 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 @@ -5,11 +5,12 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.GridLayoutManager +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.CustomizationRepository import com.habitrpg.android.habitica.data.InventoryRepository -import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding +import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.user.User @@ -17,15 +18,15 @@ import com.habitrpg.android.habitica.ui.adapter.CustomizationRecyclerViewAdapter import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import com.habitrpg.android.habitica.ui.helpers.MarginDecoration import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator -import io.reactivex.rxjava3.core.Flowable import javax.inject.Inject -class AvatarCustomizationFragment : BaseMainFragment() { +class AvatarCustomizationFragment : BaseMainFragment(), + SwipeRefreshLayout.OnRefreshListener { - override var binding: FragmentRecyclerviewBinding? = null + override var binding: FragmentRefreshRecyclerviewBinding? = null - override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding { - return FragmentRecyclerviewBinding.inflate(inflater, container, false) + override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding { + return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false) } @Inject @@ -82,7 +83,7 @@ class AvatarCustomizationFragment : BaseMainFragment() { +class AvatarEquipmentFragment : BaseMainFragment(), + SwipeRefreshLayout.OnRefreshListener { @Inject lateinit var inventoryRepository: InventoryRepository - override var binding: FragmentRecyclerviewBinding? = null + override var binding: FragmentRefreshRecyclerviewBinding? = null - override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding { - return FragmentRecyclerviewBinding.inflate(inflater, container, false) + override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding { + return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false) } var type: String? = null @@ -70,7 +72,7 @@ class AvatarEquipmentFragment : BaseMainFragment() category = args.category } } - + binding?.refreshLayout?.setOnRefreshListener(this) setGridSpanCount(view.width) val layoutManager = GridLayoutManager(activity, 4) layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { @@ -136,4 +138,10 @@ class AvatarEquipmentFragment : BaseMainFragment() this.adapter.activeEquipment = activeEquipment } } + + override fun onRefresh() { + compositeSubscription.add(userRepository.retrieveUser(false, true).subscribe({ + binding?.refreshLayout?.isRefreshing = false + }, RxErrorHandler.handleEmptyError())) + } } \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.kt index 7fc8d1244..141d147e4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.kt @@ -6,24 +6,26 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.InventoryRepository -import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding +import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.ui.adapter.inventory.EquipmentRecyclerViewAdapter import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import javax.inject.Inject -class EquipmentDetailFragment : BaseMainFragment() { +class EquipmentDetailFragment : BaseMainFragment(), + SwipeRefreshLayout.OnRefreshListener { @Inject lateinit var inventoryRepository: InventoryRepository - override var binding: FragmentRecyclerviewBinding? = null + override var binding: FragmentRefreshRecyclerviewBinding? = null - override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding { - return FragmentRecyclerviewBinding.inflate(inflater, container, false) + override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding { + return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false) } var type: String? = null @@ -49,6 +51,7 @@ class EquipmentDetailFragment : BaseMainFragment() isCostume = args.isCostume equippedGear = args.equippedGear } + binding?.refreshLayout?.setOnRefreshListener(this) this.adapter.equippedGear = this.equippedGear this.adapter.isCostume = this.isCostume @@ -70,4 +73,10 @@ class EquipmentDetailFragment : BaseMainFragment() override fun injectFragment(component: UserComponent) { component.inject(this) } + + override fun onRefresh() { + compositeSubscription.add(userRepository.retrieveUser(false, true).subscribe({ + binding?.refreshLayout?.isRefreshing = false + }, RxErrorHandler.handleEmptyError())) + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt index 702be0320..75bf2051e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt @@ -4,10 +4,11 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.InventoryRepository -import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding +import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding import com.habitrpg.android.habitica.extensions.getTranslatedType import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.inventory.Mount @@ -19,7 +20,8 @@ import com.habitrpg.android.habitica.ui.helpers.MarginDecoration import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import javax.inject.Inject -class MountDetailRecyclerFragment : BaseMainFragment() { +class MountDetailRecyclerFragment : BaseMainFragment(), + SwipeRefreshLayout.OnRefreshListener { @Inject internal lateinit var inventoryRepository: InventoryRepository @@ -30,10 +32,10 @@ class MountDetailRecyclerFragment : BaseMainFragment() { +class PetDetailRecyclerFragment : BaseMainFragment(), + SwipeRefreshLayout.OnRefreshListener { @Inject lateinit var inventoryRepository: InventoryRepository @@ -40,10 +41,10 @@ class PetDetailRecyclerFragment : BaseMainFragment( private var animalColor: String? = null internal var layoutManager: androidx.recyclerview.widget.GridLayoutManager? = null - override var binding: FragmentRecyclerviewBinding? = null + override var binding: FragmentRefreshRecyclerviewBinding? = null - override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding { - return FragmentRecyclerviewBinding.inflate(inflater, container, false) + override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding { + return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false) } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -75,6 +76,7 @@ class PetDetailRecyclerFragment : BaseMainFragment( animalType = args.type animalColor = args.color } + binding?.refreshLayout?.setOnRefreshListener(this) layoutManager = androidx.recyclerview.widget.GridLayoutManager(getActivity(), 2) layoutManager?.spanSizeLookup = object : androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup() { @@ -196,4 +198,10 @@ class PetDetailRecyclerFragment : BaseMainFragment( companion object { private const val ANIMAL_TYPE_KEY = "ANIMAL_TYPE_KEY" } + + override fun onRefresh() { + compositeSubscription.add(userRepository.retrieveUser(false, true).subscribe({ + binding?.refreshLayout?.isRefreshing = false + }, RxErrorHandler.handleEmptyError())) + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt index d5d66f591..e6e9ddfc4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt @@ -4,10 +4,12 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.InventoryRepository -import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding +import com.habitrpg.android.habitica.data.UserRepository +import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding import com.habitrpg.android.habitica.extensions.getTranslatedType import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.RxErrorHandler @@ -26,11 +28,14 @@ import io.reactivex.rxjava3.kotlin.combineLatest import java.util.* import javax.inject.Inject -class StableRecyclerFragment : BaseFragment() { +class StableRecyclerFragment : BaseFragment(), + SwipeRefreshLayout.OnRefreshListener { @Inject lateinit var inventoryRepository: InventoryRepository @Inject + lateinit var userRepository: UserRepository + @Inject lateinit var configManager: AppConfigManager var adapter: StableRecyclerAdapter? = null @@ -39,10 +44,10 @@ class StableRecyclerFragment : BaseFragment() { var user: User? = null internal var layoutManager: androidx.recyclerview.widget.GridLayoutManager? = null - override var binding: FragmentRecyclerviewBinding? = null + override var binding: FragmentRefreshRecyclerviewBinding? = null - override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding { - return FragmentRecyclerviewBinding.inflate(inflater, container, false) + override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding { + return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false) } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -66,7 +71,8 @@ class StableRecyclerFragment : BaseFragment() { super.onViewCreated(view, savedInstanceState) binding?.recyclerView?.setEmptyView(binding?.emptyView) - binding?.emptyView?.text = getString(R.string.empty_items, itemTypeText) + binding?.emptyViewTitle?.text = getString(R.string.empty_items, itemTypeText) + binding?.refreshLayout?.setOnRefreshListener(this) layoutManager = androidx.recyclerview.widget.GridLayoutManager(activity, 2) layoutManager?.spanSizeLookup = object : androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup() { @@ -243,4 +249,10 @@ class StableRecyclerFragment : BaseFragment() { private const val ITEM_TYPE_KEY = "CLASS_TYPE_KEY" private const val HEADER_VIEW_TYPE = 0 } + + override fun onRefresh() { + compositeSubscription.add(userRepository.retrieveUser(false, true).subscribe({ + binding?.refreshLayout?.isRefreshing = false + }, RxErrorHandler.handleEmptyError())) + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt index 92002899e..b6c31e634 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt @@ -7,9 +7,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.databinding.FragmentGuildListBinding -import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding -import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding -import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.ui.adapter.social.GuildListAdapter import com.habitrpg.android.habitica.ui.fragments.BaseFragment diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt index 3e0a3860a..22d5da5a9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt @@ -28,6 +28,7 @@ import com.habitrpg.android.habitica.ui.AvatarView import com.habitrpg.android.habitica.ui.activities.FullProfileActivity import com.habitrpg.android.habitica.ui.activities.MainActivity import com.habitrpg.android.habitica.ui.fragments.BaseFragment +import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemDialogFragment import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemRecyclerFragment import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard @@ -73,8 +74,6 @@ class PartyDetailFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - - binding?.refreshLayout?.setOnRefreshListener { this.refreshParty() } binding?.questAcceptButton?.setOnClickListener { onQuestAccept() } @@ -320,14 +319,15 @@ class PartyDetailFragment : BaseFragment() { dialog?.addButton(android.R.string.cancel, false) { _, _ -> activity?.dismissKeyboard() } dialog?.setTitle(context?.getString(R.string.remove_member_confirm, displayName)) dialog?.show() + dialog?.show() } private fun inviteNewQuest() { - val fragment = ItemRecyclerFragment() + val fragment = ItemDialogFragment() fragment.itemType = "quests" fragment.itemTypeText = getString(R.string.quest) fragment.isModal = true - //fragment.show(parentFragmentManager, "questDialog") + fragment.show(parentFragmentManager, "questDialog") } internal fun leaveParty() { 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 535bf0ea2..131e6d67e 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 @@ -173,7 +173,6 @@ open class TaskRecyclerViewFragment : BaseFragment(), SearchView.O binding?.viewPager?.adapter = object : FragmentStateAdapter(fragmentManager, lifecycle) { - override fun createFragment(position: Int): androidx.fragment.app.Fragment { + override fun createFragment(position: Int): Fragment { val fragment: TaskRecyclerViewFragment = when (position) { 0 -> TaskRecyclerViewFragment.newInstance(context, Task.TYPE_HABIT) 1 -> TaskRecyclerViewFragment.newInstance(context, Task.TYPE_DAILY)