mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
Prepare for new menu
This commit is contained in:
parent
5ae7f9bbb7
commit
e3f66e57df
11 changed files with 18 additions and 121 deletions
|
|
@ -147,7 +147,7 @@ android {
|
|||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
minSdkVersion min_sdk
|
||||
applicationId "com.habitrpg.android.habitica"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
buildConfigField "String", "STORE", "\"google\""
|
||||
|
|
|
|||
|
|
@ -1,13 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
style="@style/Body1"
|
||||
<Space xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="22dp"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="@dimen/drawer_padding"
|
||||
android:paddingEnd="@dimen/drawer_padding"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp"
|
||||
tools:text="Social" />
|
||||
android:layout_height="30dp" />
|
||||
|
|
@ -4,16 +4,6 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/main_nav"
|
||||
app:startDestination="@id/tasksFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/equipmentOverviewFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentOverviewFragment"
|
||||
android:label="@string/sidebar_equipment" >
|
||||
<deepLink app:uri="habitica.com/inventory/equipment" />
|
||||
<action
|
||||
android:id="@+id/openEquipmentDetail"
|
||||
app:destination="@id/equipmentDetailFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/equipmentDetailFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentDetailFragment"
|
||||
|
|
@ -121,8 +111,8 @@
|
|||
android:id="@+id/openAvatarDetail"
|
||||
app:destination="@id/avatarCustomizationFragment" />
|
||||
<action
|
||||
android:id="@+id/openAvatarEquipment"
|
||||
app:destination="@id/avatarEquipmentFragment" />
|
||||
android:id="@+id/openEquipmentDetail"
|
||||
app:destination="@id/equipmentDetailFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/itemsFragment"
|
||||
|
|
@ -298,17 +288,6 @@
|
|||
android:name="category"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/avatarEquipmentFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarEquipmentFragment"
|
||||
android:label="@string/sidebar_avatar" >
|
||||
<argument
|
||||
android:name="type"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="category"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<activity
|
||||
android:id="@+id/prefsActivity"
|
||||
android:name="com.habitrpg.android.habitica.ui.activities.PrefsActivity"
|
||||
|
|
|
|||
|
|
@ -52,10 +52,8 @@ import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment;
|
|||
import com.habitrpg.android.habitica.ui.fragments.PromoWebFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.StatsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarCustomizationFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarEquipmentFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarOverviewFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentDetailFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentOverviewFragment;
|
||||
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.fragments.inventory.items.ItemsFragment;
|
||||
|
|
@ -165,8 +163,6 @@ public interface UserComponent {
|
|||
|
||||
void inject(EquipmentDetailFragment equipmentDetailFragment);
|
||||
|
||||
void inject(EquipmentOverviewFragment equipmentOverviewFragment);
|
||||
|
||||
void inject(ItemRecyclerFragment itemRecyclerFragment);
|
||||
|
||||
void inject(ItemsFragment itemsFragment);
|
||||
|
|
@ -333,8 +329,6 @@ public interface UserComponent {
|
|||
|
||||
void inject(BugFixFragment bugFixFragment);
|
||||
|
||||
void inject(AvatarEquipmentFragment avatarEquipmentFragment);
|
||||
|
||||
void inject(FAQDetailFragment faqDetailFragment);
|
||||
|
||||
void inject(AdventureGuideActivity adventureGuideFragment);
|
||||
|
|
|
|||
|
|
@ -4,19 +4,16 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.common.habitica.extensions.dpToPx
|
||||
import com.habitrpg.android.habitica.extensions.inflate
|
||||
import com.habitrpg.android.habitica.models.TeamPlan
|
||||
import com.habitrpg.android.habitica.models.promotions.HabiticaPromotion
|
||||
import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment
|
||||
import com.habitrpg.android.habitica.ui.menu.HabiticaDrawerItem
|
||||
import com.habitrpg.android.habitica.ui.views.promo.PromoMenuView
|
||||
import com.habitrpg.android.habitica.ui.views.promo.PromoMenuViewHolder
|
||||
import com.habitrpg.android.habitica.ui.views.promo.SubscriptionBuyGemsPromoView
|
||||
import com.habitrpg.android.habitica.ui.views.promo.SubscriptionBuyGemsPromoViewHolder
|
||||
import com.habitrpg.common.habitica.extensions.dpToPx
|
||||
import io.reactivex.rxjava3.core.BackpressureStrategy
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
import io.reactivex.rxjava3.subjects.PublishSubject
|
||||
|
|
@ -29,19 +26,6 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int) : Recycl
|
|||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
var backgroundTintColor: Int = backgroundTintColor
|
||||
set(value) {
|
||||
field = value
|
||||
for (item in items) {
|
||||
if (item.isHeader) {
|
||||
val visiblePosition = getVisibleItemPosition(item.identifier)
|
||||
if (visiblePosition >= 0) {
|
||||
notifyItemChanged(visiblePosition)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal val items: MutableList<HabiticaDrawerItem> = ArrayList()
|
||||
var selectedItem: Int? = null
|
||||
set(value) {
|
||||
|
|
@ -77,32 +61,6 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int) : Recycl
|
|||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
fun setTeams(teams: List<TeamPlan>) {
|
||||
var teamHeaderIndex = -1
|
||||
var nextHeaderIndex = -1
|
||||
for ((index, item) in items.withIndex()) {
|
||||
if (teamHeaderIndex != -1 && item.isHeader) {
|
||||
nextHeaderIndex = index
|
||||
break
|
||||
} else if (item.identifier == NavigationDrawerFragment.SIDEBAR_TEAMS) {
|
||||
teamHeaderIndex = index
|
||||
}
|
||||
}
|
||||
if (teamHeaderIndex != -1 && nextHeaderIndex != -1) {
|
||||
for (x in nextHeaderIndex - 1 downTo teamHeaderIndex + 1) {
|
||||
items.removeAt(x)
|
||||
notifyItemRemoved(x)
|
||||
}
|
||||
for ((index, team) in teams.withIndex()) {
|
||||
val item = HabiticaDrawerItem(R.id.tasksFragment, team.id, team.summary)
|
||||
item.bundle = bundleOf(Pair("ownerID", team.id))
|
||||
val newIndex = teamHeaderIndex + index + 1
|
||||
items.add(newIndex, item)
|
||||
notifyItemInserted(newIndex)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
|
||||
val drawerItem = getItem(position)
|
||||
when {
|
||||
|
|
@ -112,10 +70,6 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int) : Recycl
|
|||
itemHolder?.bind(drawerItem, drawerItem.transitionId == selectedItem)
|
||||
itemHolder?.itemView?.setOnClickListener { itemSelectedEvents.onNext(drawerItem) }
|
||||
}
|
||||
getItemViewType(position) == 1 -> {
|
||||
(holder as? SectionHeaderViewHolder)?.backgroundTintColor = backgroundTintColor
|
||||
(holder as? SectionHeaderViewHolder)?.bind(drawerItem)
|
||||
}
|
||||
getItemViewType(position) == 5 -> {
|
||||
activePromo?.let { promo ->
|
||||
(holder as? PromoMenuViewHolder)?.bind(promo)
|
||||
|
|
@ -216,10 +170,5 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int) : Recycl
|
|||
class SectionHeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
|
||||
var backgroundTintColor: Int = 0
|
||||
|
||||
fun bind(drawerItem: HabiticaDrawerItem) {
|
||||
(itemView as? TextView)?.text = drawerItem.text
|
||||
itemView.setBackgroundColor(backgroundTintColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ import io.reactivex.rxjava3.disposables.CompositeDisposable
|
|||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.Calendar
|
||||
import java.util.Date
|
||||
|
|
@ -176,19 +175,6 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
)
|
||||
)
|
||||
|
||||
if (configManager.enableTeamBoards()) {
|
||||
lifecycleScope.launch(ExceptionHandler.coroutine()) {
|
||||
userRepository.getTeamPlans()
|
||||
.distinctUntilChanged()
|
||||
.collect {
|
||||
getItemWithIdentifier(SIDEBAR_TEAMS)?.isVisible = it.isNotEmpty()
|
||||
adapter.setTeams(it)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
getItemWithIdentifier(SIDEBAR_TEAMS)?.isVisible = false
|
||||
}
|
||||
|
||||
userViewModel.user.observe(viewLifecycleOwner) {
|
||||
if (it != null) {
|
||||
updateUser(it)
|
||||
|
|
@ -356,9 +342,7 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
items.add(HabiticaDrawerItem(R.id.statsFragment, SIDEBAR_STATS, context.getString(R.string.sidebar_stats)))
|
||||
items.add(HabiticaDrawerItem(R.id.achievementsFragment, SIDEBAR_ACHIEVEMENTS, context.getString(R.string.sidebar_achievements)))
|
||||
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_TEAMS, context.getString(R.string.sidebar_teams), true))
|
||||
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_INVENTORY, context.getString(R.string.sidebar_shops), true))
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_INVENTORY, context.getString(R.string.sidebar_shops), isHeader = true))
|
||||
items.add(HabiticaDrawerItem(R.id.marketFragment, SIDEBAR_SHOPS_MARKET, context.getString(R.string.market)))
|
||||
items.add(HabiticaDrawerItem(R.id.questShopFragment, SIDEBAR_SHOPS_QUEST, context.getString(R.string.questShop)))
|
||||
val seasonalShopEntry = HabiticaDrawerItem(R.id.seasonalShopFragment, SIDEBAR_SHOPS_SEASONAL, context.getString(R.string.seasonalShop))
|
||||
|
|
@ -366,20 +350,20 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
items.add(seasonalShopEntry)
|
||||
items.add(HabiticaDrawerItem(R.id.timeTravelersShopFragment, SIDEBAR_SHOPS_TIMETRAVEL, context.getString(R.string.timeTravelers)))
|
||||
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_INVENTORY, context.getString(R.string.sidebar_section_inventory), true))
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_INVENTORY, context.getString(R.string.sidebar_section_inventory), isHeader = true))
|
||||
items.add(HabiticaDrawerItem(R.id.avatarOverviewFragment, SIDEBAR_AVATAR, context.getString(R.string.sidebar_avatar_equipment)))
|
||||
items.add(HabiticaDrawerItem(R.id.itemsFragment, SIDEBAR_ITEMS, context.getString(R.string.sidebar_items)))
|
||||
items.add(HabiticaDrawerItem(R.id.stableFragment, SIDEBAR_STABLE, context.getString(R.string.sidebar_stable)))
|
||||
items.add(HabiticaDrawerItem(R.id.gemPurchaseActivity, SIDEBAR_GEMS, context.getString(R.string.sidebar_gems)))
|
||||
items.add(HabiticaDrawerItem(R.id.subscriptionPurchaseActivity, SIDEBAR_SUBSCRIPTION, context.getString(R.string.sidebar_subscription)))
|
||||
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_SOCIAL, context.getString(R.string.sidebar_section_social), true))
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_SOCIAL, context.getString(R.string.sidebar_section_social), isHeader = true))
|
||||
items.add(HabiticaDrawerItem(R.id.partyFragment, SIDEBAR_PARTY, context.getString(R.string.sidebar_party)))
|
||||
items.add(HabiticaDrawerItem(R.id.tavernFragment, SIDEBAR_TAVERN, context.getString(R.string.sidebar_tavern)))
|
||||
items.add(HabiticaDrawerItem(R.id.guildOverviewFragment, SIDEBAR_GUILDS, context.getString(R.string.sidebar_guilds)))
|
||||
items.add(HabiticaDrawerItem(R.id.challengesOverviewFragment, SIDEBAR_CHALLENGES, context.getString(R.string.sidebar_challenges)))
|
||||
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_ABOUT_HEADER, context.getString(R.string.sidebar_about), true))
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_ABOUT_HEADER, context.getString(R.string.sidebar_about), isHeader = true))
|
||||
items.add(HabiticaDrawerItem(R.id.newsFragment, SIDEBAR_NEWS, context.getString(R.string.sidebar_news)))
|
||||
items.add(HabiticaDrawerItem(R.id.supportMainFragment, SIDEBAR_HELP, context.getString(R.string.sidebar_help)))
|
||||
items.add(HabiticaDrawerItem(R.id.aboutFragment, SIDEBAR_ABOUT, context.getString(R.string.sidebar_about)))
|
||||
|
|
@ -634,7 +618,6 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
const val SIDEBAR_SKILLS = "skills"
|
||||
const val SIDEBAR_STATS = "stats"
|
||||
const val SIDEBAR_ACHIEVEMENTS = "achievements"
|
||||
const val SIDEBAR_TEAMS = "teams"
|
||||
const val SIDEBAR_SOCIAL = "social"
|
||||
const val SIDEBAR_TAVERN = "tavern"
|
||||
const val SIDEBAR_PARTY = "party"
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ import com.habitrpg.android.habitica.databinding.FragmentComposeScrollingBinding
|
|||
import com.habitrpg.android.habitica.helpers.ExceptionHandler
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentOverviewFragmentDirections
|
||||
import com.habitrpg.android.habitica.ui.theme.HabiticaTheme
|
||||
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
||||
import com.habitrpg.android.habitica.ui.views.AvatarCustomizationOverviewView
|
||||
|
|
@ -83,7 +82,7 @@ class AvatarOverviewFragment : BaseMainFragment<FragmentComposeScrollingBinding>
|
|||
}
|
||||
|
||||
private fun displayEquipmentFragment(type: String, equipped: String?, isCostume: Boolean = false) {
|
||||
MainNavigationController.navigate(EquipmentOverviewFragmentDirections.openEquipmentDetail(type, isCostume, equipped ?: ""))
|
||||
MainNavigationController.navigate(AvatarOverviewFragmentDirections.openEquipmentDetail(type, isCostume, equipped ?: ""))
|
||||
}
|
||||
|
||||
override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ data class HabiticaDrawerItem(
|
|||
var transitionId: Int,
|
||||
val identifier: String,
|
||||
val text: String,
|
||||
val icon: Drawable? = null,
|
||||
val isHeader: Boolean = false
|
||||
) {
|
||||
constructor(transitionId: Int, identifier: String) : this(transitionId, identifier, "")
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
buildscript {
|
||||
ext {
|
||||
min_sdk = 21
|
||||
target_sdk = 33
|
||||
app_version_name = ''
|
||||
app_version_code = 0
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ plugins {
|
|||
}
|
||||
|
||||
android {
|
||||
compileSdk 32
|
||||
compileSdk target_sdk
|
||||
|
||||
defaultConfig {
|
||||
minSdk 21
|
||||
targetSdk 32
|
||||
minSdk min_sdk
|
||||
targetSdkVersion target_sdk
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles "consumer-rules.pro"
|
||||
|
|
|
|||
|
|
@ -54,11 +54,11 @@ kotlin {
|
|||
}
|
||||
|
||||
android {
|
||||
compileSdk = 32
|
||||
compileSdk = 33
|
||||
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
|
||||
defaultConfig {
|
||||
minSdk = 21
|
||||
targetSdk = 32
|
||||
targetSdk = 33
|
||||
}
|
||||
namespace = "com.habitrpg.shared.habitica"
|
||||
}
|
||||
Loading…
Reference in a new issue