mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-22 05:38:55 +00:00
add contributor info to FAQ
This commit is contained in:
parent
dcca5f9918
commit
18750829b9
14 changed files with 81 additions and 13 deletions
BIN
Habitica/res/drawable-hdpi/contributor_icon.png
Normal file
BIN
Habitica/res/drawable-hdpi/contributor_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 987 B |
BIN
Habitica/res/drawable-mdpi/contributor_icon.png
Normal file
BIN
Habitica/res/drawable-mdpi/contributor_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 695 B |
BIN
Habitica/res/drawable-xxhdpi/contributor_icon.png
Normal file
BIN
Habitica/res/drawable-xxhdpi/contributor_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Habitica/res/drawable-xxxhdpi/contributor_icon.png
Normal file
BIN
Habitica/res/drawable-xxxhdpi/contributor_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
|
|
@ -4,5 +4,5 @@
|
|||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="@color/offset_background"/>
|
||||
<corners android:radius="6dp" />
|
||||
<corners android:radius="8dp" />
|
||||
</shape>
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
android:textSize="12sp"
|
||||
android:textColor="@color/white"
|
||||
style="@style/Pill.Purple"
|
||||
tools:text="Moderator"
|
||||
tools:text="Staff"
|
||||
android:layout_marginStart="@dimen/spacing_small"/>
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
|
|
@ -149,4 +149,4 @@
|
|||
android:drawablePadding="@dimen/spacing_small"/>
|
||||
</com.google.android.flexbox.FlexboxLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
|||
|
|
@ -98,7 +98,17 @@
|
|||
android:layout_marginEnd="@dimen/spacing_medium"
|
||||
android:layout_marginBottom="@dimen/spacing_medium"
|
||||
app:description="@string/stat_description"/>
|
||||
|
||||
<com.habitrpg.android.habitica.ui.views.SupportCollapsibleSection
|
||||
android:id="@+id/contrib_tier_section"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:subtitle="Habitica helpers"
|
||||
app:title="@string/contributor_tiers"
|
||||
app:titleColor="@color/text_teal"
|
||||
android:layout_marginStart="@dimen/spacing_medium"
|
||||
android:layout_marginEnd="@dimen/spacing_medium"
|
||||
android:layout_marginBottom="@dimen/spacing_medium"
|
||||
app:description="@string/contrib_tier_description"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -139,4 +149,4 @@
|
|||
android:gravity="center"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</ScrollView>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package com.habitrpg.android.habitica.extensions
|
|||
import android.content.res.Configuration
|
||||
import android.content.res.Resources
|
||||
import android.os.Build
|
||||
import com.google.firebase.crashlytics.ktx.crashlytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import com.habitrpg.android.habitica.ui.activities.BaseActivity
|
||||
import java.util.Locale
|
||||
|
||||
|
|
@ -14,4 +16,6 @@ fun Resources.forceLocale(activity: BaseActivity, locale: Locale) {
|
|||
activity.createConfigurationContext(configuration)
|
||||
}
|
||||
updateConfiguration(configuration, displayMetrics)
|
||||
|
||||
Firebase.crashlytics.setCustomKey("language", locale.toLanguageTag())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@ import androidx.navigation.NavDestination
|
|||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import com.google.android.gms.wearable.Wearable
|
||||
import com.google.firebase.crashlytics.ktx.crashlytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import com.google.firebase.perf.FirebasePerformance
|
||||
import com.habitrpg.android.habitica.BuildConfig
|
||||
import com.habitrpg.android.habitica.R
|
||||
|
|
@ -476,6 +478,10 @@ open class MainActivity : BaseActivity(), SnackbarActivity {
|
|||
}
|
||||
preferences?.sound?.let { soundManager.soundTheme = it }
|
||||
|
||||
val crashlytics = Firebase.crashlytics
|
||||
crashlytics.setCustomKey("day_start", user.preferences?.dayStart ?: 0)
|
||||
crashlytics.setCustomKey("timezone_offset", user.preferences?.timezoneOffset ?: 0)
|
||||
|
||||
displayDeathDialogIfNeeded()
|
||||
YesterdailyDialog.showDialogIfNeeded(this, user.id, userRepository, taskRepository)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,14 @@ package com.habitrpg.android.habitica.ui.fragments.support
|
|||
|
||||
import android.os.Bundle
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
|
|
@ -17,9 +21,12 @@ import com.habitrpg.android.habitica.helpers.AppConfigManager
|
|||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.UsernameLabel
|
||||
import com.habitrpg.common.habitica.extensions.dpToPx
|
||||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||
import com.habitrpg.common.habitica.helpers.setMarkdown
|
||||
import com.habitrpg.common.habitica.models.PlayerTier
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -77,6 +84,9 @@ class FAQOverviewFragment : BaseMainFragment<FragmentFaqOverviewBinding>() {
|
|||
HabiticaIconsHelper.imageOfStats()
|
||||
)
|
||||
|
||||
binding?.contribTierSection?.findViewById<ImageView>(R.id.icon_view)?.setImageResource(R.drawable.contributor_icon)
|
||||
addPlayerTiers()
|
||||
|
||||
binding?.moreHelpTextView?.setMarkdown(context?.getString(R.string.need_help_header_description, "[Habitica Help Guild](https://habitica.com/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a)"))
|
||||
binding?.moreHelpTextView?.setOnClickListener { MainNavigationController.navigate(R.id.guildFragment, bundleOf("groupID" to "5481ccf3-5d2d-48a9-a871-70a7380cee5a")) }
|
||||
binding?.moreHelpTextView?.movementMethod = LinkMovementMethod.getInstance()
|
||||
|
|
@ -111,4 +121,32 @@ class FAQOverviewFragment : BaseMainFragment<FragmentFaqOverviewBinding>() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun addPlayerTiers() {
|
||||
val tiers = PlayerTier.getTiers()
|
||||
for (tier in tiers) {
|
||||
context?.let {
|
||||
val container = FrameLayout(it)
|
||||
container.background = ContextCompat.getDrawable(it, R.drawable.rounded_border)
|
||||
container.background.setTint(PlayerTier.getColorForTier(it, tier.id))
|
||||
container.background.alpha = 50
|
||||
val label = UsernameLabel(it, null)
|
||||
label.tier = tier.id
|
||||
label.username = tier.title
|
||||
val params = FrameLayout.LayoutParams(
|
||||
FrameLayout.LayoutParams.WRAP_CONTENT,
|
||||
FrameLayout.LayoutParams.WRAP_CONTENT,
|
||||
Gravity.CENTER
|
||||
)
|
||||
container.addView(label, params)
|
||||
container.isVisible = false
|
||||
binding?.contribTierSection?.addView(container)
|
||||
val containerParams = container.layoutParams as LinearLayout.LayoutParams
|
||||
containerParams.setMargins(12.dpToPx(context), 0, 12.dpToPx(context), if (tiers.last() == tier) 12.dpToPx(context) else 6.dpToPx(context))
|
||||
val padding = context?.resources?.getDimension(R.dimen.spacing_medium)?.toInt() ?: 0
|
||||
container.setPadding(0, padding, 0, padding)
|
||||
}
|
||||
}
|
||||
(binding?.contribTierSection?.parent as? ViewGroup)?.invalidate()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ import android.util.AttributeSet
|
|||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.children
|
||||
import androidx.core.view.isVisible
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.SupportCollapsibleSectionBinding
|
||||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
|
|
@ -41,12 +43,17 @@ class SupportCollapsibleSection : LinearLayout {
|
|||
a.recycle()
|
||||
|
||||
setOnClickListener {
|
||||
binding.descriptionView.visibility = if (binding.descriptionView.visibility == View.VISIBLE) {
|
||||
binding.caretView.setImageResource(R.drawable.ic_keyboard_arrow_down_black_24dp)
|
||||
View.GONE
|
||||
} else {
|
||||
val shouldBeVisible = binding.descriptionView.visibility != View.VISIBLE
|
||||
if (shouldBeVisible) {
|
||||
binding.caretView.setImageResource(R.drawable.ic_keyboard_arrow_up_black_24dp)
|
||||
View.VISIBLE
|
||||
} else {
|
||||
binding.caretView.setImageResource(R.drawable.ic_keyboard_arrow_down_black_24dp)
|
||||
}
|
||||
val descriptionIndex = children.indexOf(binding.descriptionView)
|
||||
children.forEachIndexed { index, view ->
|
||||
if (index >= descriptionIndex) {
|
||||
view.isVisible = shouldBeVisible
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package com.habitrpg.android.habitica.ui.views
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Typeface
|
||||
import android.os.Build
|
||||
import android.util.AttributeSet
|
||||
import android.util.TypedValue
|
||||
import android.view.Gravity
|
||||
|
|
@ -75,6 +77,9 @@ class UsernameLabel @JvmOverloads constructor(
|
|||
val padding = context.resources.getDimension(R.dimen.spacing_small).toInt()
|
||||
textView.setPadding(0, 0, padding, 0)
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
textView.typeface = Typeface.create(null,600,false)
|
||||
}
|
||||
val iconViewParams = LayoutParams(
|
||||
FrameLayout.LayoutParams.WRAP_CONTENT,
|
||||
FrameLayout.LayoutParams.WRAP_CONTENT
|
||||
|
|
@ -84,7 +89,6 @@ class UsernameLabel @JvmOverloads constructor(
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Composable
|
||||
fun ComposableUsernameLabel(
|
||||
username: String,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ class PlayerTier(val title: String, val id: Int) {
|
|||
PlayerTier("Tier 5 (Champion)", 5),
|
||||
PlayerTier("Tier 6 (Champion)", 6),
|
||||
PlayerTier("Tier 7 (Legendary)", 7),
|
||||
PlayerTier("Moderator (Guardian)", 8),
|
||||
PlayerTier("Staff (Heroic)", 9)
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
NAME=4.2
|
||||
CODE=6021
|
||||
CODE=6031
|
||||
Loading…
Reference in a new issue